about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <seebastien.chev@gmail.com>2023-09-16 13:49:09 +0200
committerptitSeb <seebastien.chev@gmail.com>2023-09-16 13:49:39 +0200
commit5903f0208689b3996ff8c6439ed5b25fc2f8666e (patch)
tree7faecc56ffcf9fc38df9dd093d3502cd2a6139d5 /src
parent28dcd34624afb9bd14d838d5c1ae6123c8dc49fd (diff)
downloadbox64-5903f0208689b3996ff8c6439ed5b25fc2f8666e.tar.gz
box64-5903f0208689b3996ff8c6439ed5b25fc2f8666e.zip
Improvd steam/proton handling, and gstreamer initialization and a large bunch of gtk improvments
Diffstat (limited to 'src')
-rw-r--r--src/include/gtkclass.h351
-rw-r--r--src/include/super80.h82
-rw-r--r--src/library_list.h10
-rw-r--r--src/main.c49
-rw-r--r--src/steam.c74
-rw-r--r--src/tools/gtkclass.c1366
-rw-r--r--src/wrapped/generated/functions_list.txt125
-rw-r--r--src/wrapped/generated/wrappedgio2types.h2
-rw-r--r--src/wrapped/generated/wrappedglib2types.h3
-rw-r--r--src/wrapped/generated/wrappedgstallocatorsdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstallocatorstypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstallocatorsundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstbasetypes.h10
-rw-r--r--src/wrapped/generated/wrappedgstcheckdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstchecktypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstcheckundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstcontrollerdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstcontrollertypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstcontrollerundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstfftdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstffttypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstfftundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstgltypes.h19
-rw-r--r--src/wrapped/generated/wrappedgstnetdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstnettypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstnetundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstpbutilsdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstpbutilstypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstpbutilsundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstreamertypes.h53
-rw-r--r--src/wrapped/generated/wrappedgstriffdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstrifftypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstriffundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstrtpdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstrtptypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstrtpundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstrtspdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstrtsptypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstrtspundefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstsdpdefs.h8
-rw-r--r--src/wrapped/generated/wrappedgstsdptypes.h17
-rw-r--r--src/wrapped/generated/wrappedgstsdpundefs.h8
-rw-r--r--src/wrapped/generated/wrapper.c84
-rw-r--r--src/wrapped/generated/wrapper.h34
-rw-r--r--src/wrapped/wrappedgio2.c5
-rw-r--r--src/wrapped/wrappedgio2_private.h28
-rw-r--r--src/wrapped/wrappedglib2.c15
-rw-r--r--src/wrapped/wrappedglib2_private.h16
-rw-r--r--src/wrapped/wrappedgobject2.c20
-rw-r--r--src/wrapped/wrappedgobject2_private.h2
-rw-r--r--src/wrapped/wrappedgstallocators.c22
-rw-r--r--src/wrapped/wrappedgstallocators_private.h18
-rw-r--r--src/wrapped/wrappedgstaudio.c25
-rw-r--r--src/wrapped/wrappedgstaudio_private.h45
-rw-r--r--src/wrapped/wrappedgstbase.c218
-rw-r--r--src/wrapped/wrappedgstbase_private.h104
-rw-r--r--src/wrapped/wrappedgstcheck.c22
-rw-r--r--src/wrapped/wrappedgstcheck_private.h203
-rw-r--r--src/wrapped/wrappedgstcontroller.c22
-rw-r--r--src/wrapped/wrappedgstcontroller_private.h31
-rw-r--r--src/wrapped/wrappedgstfft.c22
-rw-r--r--src/wrapped/wrappedgstfft_private.h25
-rw-r--r--src/wrapped/wrappedgstgl.c259
-rw-r--r--src/wrapped/wrappedgstgl_private.h324
-rw-r--r--src/wrapped/wrappedgstnet.c22
-rw-r--r--src/wrapped/wrappedgstnet_private.h33
-rw-r--r--src/wrapped/wrappedgstpbutils.c22
-rw-r--r--src/wrapped/wrappedgstpbutils_private.h195
-rw-r--r--src/wrapped/wrappedgstreamer.c617
-rw-r--r--src/wrapped/wrappedgstreamer_private.h217
-rw-r--r--src/wrapped/wrappedgstriff.c22
-rw-r--r--src/wrapped/wrappedgstriff_private.h19
-rw-r--r--src/wrapped/wrappedgstrtp.c22
-rw-r--r--src/wrapped/wrappedgstrtp_private.h215
-rw-r--r--src/wrapped/wrappedgstrtsp.c22
-rw-r--r--src/wrapped/wrappedgstrtsp_private.h170
-rw-r--r--src/wrapped/wrappedgstsdp.c22
-rw-r--r--src/wrapped/wrappedgstsdp_private.h178
-rw-r--r--src/wrapped/wrappedgsttag_private.h8
-rw-r--r--src/wrapped/wrappedgstvideo.c35
-rw-r--r--src/wrapped/wrappedgstvideo_private.h279
-rw-r--r--src/wrapped/wrappedlibogg_private.h4
-rw-r--r--src/wrapped/wrappedlibva_private.h6
83 files changed, 5526 insertions, 600 deletions
diff --git a/src/include/gtkclass.h b/src/include/gtkclass.h
index 8a88a0d2..4b9cd1f9 100644
--- a/src/include/gtkclass.h
+++ b/src/include/gtkclass.h
@@ -788,6 +788,314 @@ typedef struct my_GstTaskPoolClass_s {
   void*     _gst_reserved[4-1];
 } my_GstTaskPoolClass_t;
 
+typedef struct my_GstElementClass_s {
+  my_GstObjectClass_t   parent_class;
+  void*                 metadata;
+  void*                 elementfactory;
+  void*                 padtemplates;
+  int                   numpadtemplates;
+  uint32_t              pad_templ_cookie;
+  void                  (*pad_added)     (void* element, void* pad);
+  void                  (*pad_removed)   (void* element, void* pad);
+  void                  (*no_more_pads)  (void* element);
+  void*                 (*request_new_pad)      (void* element, void* templ, void* name, void* caps);
+  void                  (*release_pad)          (void* element, void* pad);
+  int                   (*get_state)            (void*  element, void* state, void* pending, uint64_t timeout);
+  int                   (*set_state)            (void* element, int state);
+  int                   (*change_state)         (void* element, int transition);
+  void                  (*state_changed)        (void* element, int oldstate, int newstate, int pending);
+  void                  (*set_bus)              (void*  element, void* bus);
+  void*                 (*provide_clock)        (void* element);
+  int                   (*set_clock)            (void* element, void* clock);
+  int                   (*send_event)           (void* element, void* event);
+  int                   (*query)                (void* element, void* query);
+  int                   (*post_message)         (void* element, void* message);
+  void                  (*set_context)          (void* element, void* context);
+  void* _gst_reserved[20-2];
+} my_GstElementClass_t;
+
+typedef struct my_GstBinClass_s {
+  my_GstElementClass_t parent_class;
+  void* pool;
+  void  (*element_added)        (void* bin, void* child);
+  void  (*element_removed)      (void* bin, void* child);
+  int   (*add_element)          (void* bin, void* element);
+  int   (*remove_element)       (void* bin, void* element);
+  void  (*handle_message)       (void* bin, void* message);
+  int   (*do_latency)           (void* bin);
+  void  (*deep_element_added)   (void* bin, void* sub_bin, void* child);
+  void  (*deep_element_removed) (void* bin, void* sub_bin, void* child);
+  void* _gst_reserved[4-2];
+} my_GstBinClass_t;
+
+typedef struct my_GstBaseTransformClass_s {
+  my_GstElementClass_t parent_class;
+  int passthrough_on_same_caps;
+  int transform_ip_on_passthrough;
+  void*  (*transform_caps) (void* trans, int direction, void* caps, void* filter);
+  void*  (*fixate_caps)    (void* trans, int direction, void* caps, void* othercaps);
+  int    (*accept_caps)    (void* trans, int direction, void* caps);
+  int    (*set_caps)       (void* trans, void* incaps, void* outcaps);
+  int    (*query)          (void* trans, int direction, void* query);
+  int    (*decide_allocation)  (void* trans, void* query);
+  int    (*filter_meta)        (void* trans, void* query, size_t api, void* params);
+  int    (*propose_allocation) (void* trans, void* decide_query, void* query);
+  int    (*transform_size) (void* trans, int direction, void* caps, size_t size, void* othercaps, void* othersize);
+  int    (*get_unit_size)  (void* trans, void* caps, void* size);
+  int    (*start)        (void* trans);
+  int    (*stop)         (void* trans);
+  int    (*sink_event)   (void* trans, void* event);
+  int    (*src_event)    (void* trans, void* event);
+  int    (*prepare_output_buffer) (void*  trans, void* input, void* outbuf);
+  int    (*copy_metadata)     (void* trans, void* input, void* outbuf);
+  int    (*transform_meta)    (void* trans, void* outbuf, void* meta, void* inbuf);
+  void   (*before_transform)  (void* trans, void* buffer);
+  int    (*transform)    (void* trans, void* inbuf, void* outbuf);
+  int    (*transform_ip) (void* trans, void* buf);
+  int    (*submit_input_buffer) (void* trans, int is_discont, void* input);
+  int    (*generate_output) (void* trans, void*   outbuf);
+  void* _gst_reserved[20-2];
+} my_GstBaseTransformClass_t;
+
+typedef struct my_GstVideoDecoderClass_s {
+  my_GstElementClass_t parent_class;
+  int      (*open)           (void* decoder);
+  int      (*close)          (void* decoder);
+  int      (*start)          (void* decoder);
+  int      (*stop)           (void* decoder);
+  int      (*parse)          (void* decoder, void* frame, void* adapter, int at_eos);
+  int      (*set_format)     (void* decoder, void* state);
+  int      (*reset)          (void* decoder, int hard);
+  int      (*finish)         (void* decoder);
+  int      (*handle_frame)   (void* decoder, void* frame);
+  int      (*sink_event)     (void* decoder, void* event);
+  int      (*src_event)      (void* decoder, void* event);
+  int      (*negotiate)      (void* decoder);
+  int      (*decide_allocation)  (void* decoder, void* query);
+  int      (*propose_allocation) (void* decoder, void*  query);
+  int      (*flush)              (void* decoder);
+  int      (*sink_query)     (void* decoder, void* query);
+  int      (*src_query)      (void* decoder, void* query);
+  void*    (*getcaps)        (void* decoder, void* filter);
+  int      (*drain)          (void* decoder);
+  int      (*transform_meta) (void* decoder, void* frame, void* meta);
+  int      (*handle_missing_data) (void* decoder, uint64_t timestamp, uint64_t duration);
+  void* padding[20-7];
+} my_GstVideoDecoderClass_t;
+
+typedef struct my_GstVideoEncoderClass_s {
+  my_GstElementClass_t  parent_class;
+  int      (*open)         (void* encoder);
+  int      (*close)        (void* encoder);
+  int      (*start)        (void* encoder);
+  int      (*stop)         (void* encoder);
+  int      (*set_format)   (void* encoder, void* state);
+  int      (*handle_frame) (void* encoder, void* frame);
+  int      (*reset)        (void* encoder, int hard);
+  int      (*finish)       (void* encoder);
+  int      (*pre_push)     (void* encoder, void* frame);
+  void*    (*getcaps)      (void* encoder, void* filter);
+  int      (*sink_event)   (void* encoder, void* event);
+  int      (*src_event)    (void* encoder, void* event);
+  int      (*negotiate)    (void* encoder);
+  int      (*decide_allocation)  (void* encoder, void* query);
+  int      (*propose_allocation) (void*  encoder, void*  query);
+  int      (*flush)              (void* encoder);
+  int      (*sink_query)     (void* encoder, void* query);
+  int      (*src_query)      (void* encoder, void* query);
+  int      (*transform_meta) (void* encoder, void* frame, void* meta);
+  void*  _gst_reserved[20-4];
+} my_GstVideoEncoderClass_t;
+
+typedef struct my_GstBaseSinkClass_s {
+  my_GstElementClass_t parent_class;
+  void*         (*get_caps)             (void* sink, void* filter);
+  int           (*set_caps)             (void* sink, void* caps);
+  void*         (*fixate)               (void* sink, void* caps);
+  int           (*activate_pull)        (void* sink, int active);
+  void          (*get_times)            (void* sink, void* buffer, void* start, void* end);
+  int           (*propose_allocation)   (void* sink, void* query);
+  int           (*start)                (void* sink);
+  int           (*stop)                 (void* sink);
+  int           (*unlock)               (void* sink);
+  int           (*unlock_stop)          (void* sink);
+  int           (*query)                (void* sink, void* query);
+  int           (*event)                (void* sink, void* event);
+  int           (*wait_event)           (void* sink, void* event);
+  int           (*prepare)              (void* sink, void* buffer);
+  int           (*prepare_list)         (void* sink, void* buffer_list);
+  int           (*preroll)              (void* sink, void* buffer);
+  int           (*render)               (void* sink, void* buffer);
+  int           (*render_list)          (void* sink, void* buffer_list);
+  void*       _gst_reserved[20];
+} my_GstBaseSinkClass_t;
+
+typedef struct my_GstVideoSinkClass_s
+{
+  my_GstBaseSinkClass_t parent_class;
+  int       (*show_frame) (void* video_sink, void* buf);
+  int       (*set_info)   (void* video_sink, void* caps, void* info);
+  void* _gst_reserved[4-1];
+} my_GstVideoSinkClass_t;
+
+typedef struct my_GstGLBaseFilterClass_s
+{
+  my_GstBaseTransformClass_t parent_class;
+  int supported_gl_api;
+  int      (*gl_start)          (void* filter);
+  void     (*gl_stop)           (void* filter);
+  int      (*gl_set_caps)       (void* filter, void* incaps, void* outcaps);
+  void* _padding[4];
+} my_GstGLBaseFilterClass_t;
+
+typedef struct my_GstGLFilterClass_s
+{
+  my_GstGLBaseFilterClass_t parent_class;
+  int      (*set_caps)                (void* filter, void* incaps, void* outcaps);
+  int      (*filter)                  (void* filter, void* inbuf, void* outbuf);
+  int      (*filter_texture)          (void* filter, void* input, void* output);
+  int      (*init_fbo)                (void* filter);
+  void*    (*transform_internal_caps) (void* filter, int direction, void* caps, void* filter_caps);
+  void*    _padding[4];
+} my_GstGLFilterClass_t;
+
+typedef struct my_GstAggregatorClass_s {
+  my_GstElementClass_t   parent_class;
+  int       (*flush)                (void* self);
+  void*     (*clip)                 (void* self, void* aggregator_pad, void* buf);
+  int       (*finish_buffer)        (void* self, void* buffer);
+  int       (*sink_event)           (void* self, void* aggregator_pad, void* event);
+  int       (*sink_query)           (void* self, void* aggregator_pad, void* query);
+  int       (*src_event)            (void* self, void* event);
+  int       (*src_query)            (void* self, void* query);
+  int       (*src_activate)         (void* self, int mode, int active);
+  int       (*aggregate)            (void* self, int timeout);
+  int       (*stop)                 (void* self);
+  int       (*start)                (void* self);
+  uint64_t  (*get_next_time)        (void* self);
+  void*     (*create_new_pad)       (void* self, void* templ, void* req_name, void* caps);
+  int       (*update_src_caps)      (void* self, void* caps, void* ret);
+  void*     (*fixate_src_caps)      (void* self, void* caps);
+  int       (*negotiated_src_caps)  (void* self, void* caps);
+  int       (*decide_allocation)    (void* self, void* query);
+  int       (*propose_allocation)   (void* self, void*pad, void* decide_query, void* query);
+  int       (*negotiate)            (void* self);
+  int       (*sink_event_pre_queue) (void* self, void* aggregator_pad, void* event);
+  int       (*sink_query_pre_queue) (void* self, void* aggregator_pad, void* query);
+  int       (*finish_buffer_list)   (void* self, void* bufferlist);
+  void      (*peek_next_sample)     (void* self, void* aggregator_pad);
+  void*      _gst_reserved[20-5];
+} my_GstAggregatorClass_t;
+
+typedef struct my_GstVideoAggregatorClass_s
+{
+  my_GstAggregatorClass_t parent_class;
+  void*     (*update_caps)               (void* vagg, void* caps);
+  int       (*aggregate_frames)          (void* vagg, void* outbuffer);
+  int       (*create_output_buffer)      (void* vagg, void* outbuffer);
+  void      (*find_best_format)          (void* vagg, void* downstream_caps, void* best_info, void* at_least_one_alpha);
+  void*      _gst_reserved[20];
+} my_GstVideoAggregatorClass_t;
+
+typedef struct my_GstPadClass_s {
+  my_GstObjectClass_t        parent_class;
+  void       (*linked)       (void* pad, void* peer);
+  void       (*unlinked)     (void* pad, void* peer);
+  void* _gst_reserved[4];
+} my_GstPadClass_t;
+
+typedef struct my_GstAggregatorPadClass_s
+{
+  my_GstPadClass_t   parent_class;
+  int      (*flush)       (void* aggpad, void* aggregator);
+  int      (*skip_buffer) (void* aggpad, void* aggregator, void* buffer);
+  void*      _gst_reserved[20];
+} my_GstAggregatorPadClass_t;
+
+typedef struct my_GstVideoAggregatorPadClass_s
+{
+  my_GstAggregatorPadClass_t parent_class;
+  void    (*update_conversion_info) (void* pad);
+  int     (*prepare_frame)          (void* pad, void* vagg, void* buffer, void* prepared_frame);
+  void    (*clean_frame)            (void* pad, void* vagg, void* prepared_frame);
+  void    (*prepare_frame_start)    (void* pad, void* vagg, void* buffer, void* prepared_frame);
+  void    (*prepare_frame_finish)   (void* pad, void* vagg, void* prepared_frame);
+  void*   _gst_reserved[20-2];
+} my_GstVideoAggregatorPadClass_t;
+
+typedef struct my_GstBaseSrcClass_s {
+  my_GstElementClass_t parent_class;
+  void*      (*get_caps)              (void* src, void* filter);
+  int        (*negotiate)             (void* src);
+  void*      (*fixate)                (void* src, void* caps);
+  int        (*set_caps)              (void* src, void* caps);
+  int        (*decide_allocation)     (void* src, void* query);
+  int        (*start)                 (void* src);
+  int        (*stop)                  (void* src);
+  void       (*get_times)             (void* src, void* buffer, void* start, void* end);
+  int        (*get_size)              (void* src, void* size);
+  int        (*is_seekable)           (void* src);
+  int        (*prepare_seek_segment)  (void* src, void* seek, void* segment);
+  int        (*do_seek)               (void* src, void* segment);
+  int        (*unlock)                (void* src);
+  int        (*unlock_stop)           (void* src);
+  int        (*query)                 (void* src, void* query);
+  int        (*event)                 (void* src, void* event);
+  int        (*create)                (void* src, uint64_t offset, uint32_t size, void* buf);
+  int        (*alloc)                 (void* src, uint64_t offset, uint32_t size, void* buf);
+  int        (*fill)                  (void* src, uint64_t offset, uint32_t size, void* buf);
+  void*       _gst_reserved[20];
+} my_GstBaseSrcClass_t;
+
+typedef struct my_GstPushSrcClass_s {
+  my_GstBaseSrcClass_t parent_class;
+  int (*create) (void* src, void* buf);
+  int (*alloc)  (void* src, void* buf);
+  int (*fill)   (void* src, void* buf);
+  void* _gst_reserved[4];
+} my_GstPushSrcClass_t;
+
+typedef struct my_GstGLBaseSrcClass_s {
+  my_GstPushSrcClass_t parent_class;
+  int supported_gl_api;
+  int      (*gl_start)          (void* src);
+  void     (*gl_stop)           (void* src);
+  int      (*fill_gl_memory)    (void* src, void* mem);
+  void*     _padding[4];
+} my_GstGLBaseSrcClass_t;
+
+typedef struct my_GstAudioDecoderClass_s
+{
+  my_GstElementClass_t parent_class;
+  int      (*start)              (void* dec);
+  int      (*stop)               (void* dec);
+  int      (*set_format)         (void* dec, void* caps);
+  int      (*parse)              (void* dec, void* adapter, void* offset, void* length);
+  int      (*handle_frame)       (void* dec, void* buffer);
+  void     (*flush)              (void* dec, int hard);
+  int      (*pre_push)           (void* dec, void* buffer);
+  int      (*sink_event)         (void* dec, void* event);
+  int      (*src_event)          (void* dec, void* event);
+  int      (*open)               (void* dec);
+  int      (*close)              (void* dec);
+  int      (*negotiate)          (void* dec);
+  int      (*decide_allocation)  (void* dec, void* query);
+  int      (*propose_allocation) (void* dec, void* query);
+  int      (*sink_query)         (void* dec, void* query);
+  int      (*src_query)          (void* dec, void* query);
+  void*    (*getcaps)            (void* dec, void*  filter);
+  int      (*transform_meta)     (void* enc, void* outbuf, void* meta, void* inbuf);
+  void*   _gst_reserved[20 - 4];
+} my_GstAudioDecoderClass_t;
+
+typedef struct my_GstVideoFilterClass_s {
+  my_GstBaseTransformClass_t parent_class;
+  int      (*set_info)           (void* filter, void* incaps, void* in_info, void* outcaps, void* out_info);
+  int      (*transform_frame)    (void* filter, void* inframe, void* outframe);
+  int      (*transform_frame_ip) (void* filter, void* frame);
+  void* _gst_reserved[4];
+} my_GstVideoFilterClass_t;
+
 typedef struct my_GDBusProxyClass_s {
   my_GObjectClass_t parent_class;
   void (*g_properties_changed) (void* proxy, void* changed_properties, const char* const* invalidated_properties);
@@ -795,6 +1103,20 @@ typedef struct my_GDBusProxyClass_s {
   void* padding[32];
 } my_GDBusProxyClass_t;
 
+typedef struct my_GTypeInterface_s {
+  size_t g_type;
+  size_t g_instance_type;
+} my_GTypeInterface_t;
+
+typedef struct my_GstURIHandlerInterface_s {
+  my_GTypeInterface_t parent;
+  int    (* get_type)           (size_t type);
+  void*  (* get_protocols)      (size_t type);
+  void*  (* get_uri)            (void* handler);
+  int    (* set_uri)            (void* handler, void* uri, void* error);
+} my_GstURIHandlerInterface_t;
+
+
 // GTypeValueTable
 typedef struct my_GTypeValueTable_s {
   void     (*value_init)         (void* value);
@@ -902,18 +1224,47 @@ GTKCLASS(GstObject)                 \
 GTKCLASS(GstAllocator)              \
 GTKCLASS(GstTaskPool)               \
 GTKCLASS(GDBusProxy)                \
+GTKCLASS(GstElement)                \
+GTKCLASS(GstBin)                    \
+GTKCLASS(GstBaseTransform)          \
+GTKCLASS(GstVideoDecoder)           \
+GTKCLASS(GstVideoEncoder)           \
+GTKCLASS(GstBaseSink)               \
+GTKCLASS(GstVideoSink)              \
+GTKCLASS(GstGLBaseFilter)           \
+GTKCLASS(GstGLFilter)               \
+GTKCLASS(GstAggregator)             \
+GTKCLASS(GstVideoAggregator)        \
+GTKCLASS(GstPad)                    \
+GTKCLASS(GstAggregatorPad)          \
+GTKCLASS(GstVideoAggregatorPad)     \
+GTKCLASS(GstBaseSrc)                \
+GTKCLASS(GstPushSrc)                \
+GTKCLASS(GstGLBaseSrc)              \
+GTKCLASS(GstAudioDecoder)           \
+GTKCLASS(GstVideoFilter)            \
+GTKIFACE(GstURIHandler)             \
 
 #define GTKCLASS(A) void Set##A##ID(size_t id);
+#define GTKIFACE(A) GTKCLASS(A)
 GTKCLASSES()
+#undef GTKIFACE
 #undef GTKCLASS
 
 void SetGTypeName(void* f);
+void SetGTypeParent(void* f);
 void SetGClassPeek(void* f);
 void AutoBridgeGtk(void*(*ref)(size_t), void(*unref)(void*));
 
 void* wrapCopyGTKClass(void* cl, size_t type);
 void* unwrapCopyGTKClass(void* klass, size_t type);
 
+void unwrapGTKInterface(void* cl, size_t type);
+void* wrapCopyGTKInterface(void* cl, size_t type);
+void* unwrapCopyGTKInterface(void* iface, size_t type);
+
+void addRegisteredClass(size_t klass, char* name);
+
 typedef struct my_signal_s {
     uint64_t sign;  // signature
     void* data;
diff --git a/src/include/super80.h b/src/include/super80.h
new file mode 100644
index 00000000..b6f7f965
--- /dev/null
+++ b/src/include/super80.h
@@ -0,0 +1,82 @@
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)   \
+GO(5)   \
+GO(6)   \
+GO(7)	\
+GO(8)	\
+GO(9)	\
+GO(10)	\
+GO(11)	\
+GO(12)  \
+GO(13)	\
+GO(14)	\
+GO(15)  \
+GO(16)  \
+GO(17)  \
+GO(18)  \
+GO(19)  \
+GO(20)	\
+GO(21)	\
+GO(22)  \
+GO(23)	\
+GO(24)	\
+GO(25)  \
+GO(26)  \
+GO(27)  \
+GO(28)  \
+GO(29)  \
+GO(30)	\
+GO(31)	\
+GO(32)  \
+GO(33)	\
+GO(34)	\
+GO(35)  \
+GO(36)  \
+GO(37)  \
+GO(38)  \
+GO(39)  \
+GO(40)	\
+GO(41)	\
+GO(42)  \
+GO(43)	\
+GO(44)	\
+GO(45)  \
+GO(46)  \
+GO(47)  \
+GO(48)  \
+GO(49)  \
+GO(50)	\
+GO(51)	\
+GO(52)  \
+GO(53)	\
+GO(54)	\
+GO(55)  \
+GO(56)  \
+GO(57)  \
+GO(58)  \
+GO(59)  \
+GO(60)	\
+GO(61)	\
+GO(62)  \
+GO(63)	\
+GO(64)	\
+GO(65)  \
+GO(66)  \
+GO(67)  \
+GO(68)  \
+GO(69)  \
+GO(70)	\
+GO(71)	\
+GO(72)  \
+GO(73)	\
+GO(74)	\
+GO(75)  \
+GO(76)  \
+GO(77)  \
+GO(78)  \
+GO(79)  \
+
diff --git a/src/library_list.h b/src/library_list.h
index 3ff62eac..4167549e 100644
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -195,11 +195,21 @@ GO("libsecret-1.so.0", secret1)
 GO("libpci.so.3", libpci)
 GO("libgmp.so.10", gmp)
 GO("libFAudio.so.0", faudio)
+GO("libgstallocators-1.0.so.0", gstallocators)
 GO("libgstapp-1.0.so.0", gstapp)
 GO("libgstaudio-1.0.so.0", gstaudio)
 GO("libgstbase-1.0.so.0", gstbase)
+GO("libgstcheck-1.0.so.0", gstcheck)
+GO("libgstcontroller-1.0.so.0", gstcontroller)
+GO("libgstfft-1.0.so.0", gstfft)
 GO("libgstgl-1.0.so.0", gstgl)
+GO("libgstnet-1.0.so.0", gstnet)
+GO("libgstpbutils-1.0.so.0", gstpbutils)
 GO("libgstreamer-1.0.so.0", gstreamer)
+GO("libgstriff-1.0.so.0", gstriff)
+GO("libgstrtp-1.0.so.0", gstrtp)
+GO("libgstrtsp-1.0.so.0", gstrtsp)
+GO("libgstsdp-1.0.so.0", gstsdp)
 GO("libgsttag-1.0.so.0", gsttag)
 GO("libgstvideo-1.0.so.0", gstvideo)
 GO("libxshmfence.so.1", xshmfence)
diff --git a/src/main.c b/src/main.c
index 377eea1f..e7957bf5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -129,6 +129,7 @@ int box64_showsegv = 0;
 int box64_showbt = 0;
 int box64_isglibc234 = 0;
 char* box64_libGL = NULL;
+char* box64_custom_gstreamer = NULL;
 uintptr_t fmod_smc_start = 0;
 uintptr_t fmod_smc_end = 0;
 uint32_t default_gs = 0x53;
@@ -874,13 +875,16 @@ void LoadEnvPath(path_collection_t *col, const char* defpath, const char* env)
 {
     const char* p = getenv(env);
     if(p) {
-        printf_log(LOG_INFO, "%s: ", env);
         ParseList(p, col, 1);
     } else {
-        printf_log(LOG_INFO, "Using default %s: ", env);
         ParseList(defpath, col, 1);
     }
+}
+
+void PrintCollection(path_collection_t* col, const char* env)
+{
     if(LOG_INFO<=box64_log) {
+        printf_log(LOG_INFO, "%s: ", env);
         for(int i=0; i<col->size; i++)
             printf_log(LOG_INFO, "%s%s", col->paths[i], (i==col->size-1)?"\n":":");
     }
@@ -1280,6 +1284,10 @@ void endBox64()
         box_free(box64_libGL);
         box64_libGL = NULL;
     }
+    if(box64_custom_gstreamer) {
+        box_free(box64_custom_gstreamer);
+        box64_custom_gstreamer = NULL;
+    }
 }
 
 
@@ -1305,7 +1313,7 @@ static void load_rcfiles()
     }
 }
 
-void pressure_vessel(int argc, const char** argv, int nextarg);
+void pressure_vessel(int argc, const char** argv, int nextarg, const char* prog);
 extern char** environ;
 int main(int argc, const char **argv, char **env) {
     init_malloc_hook();
@@ -1383,18 +1391,18 @@ int main(int argc, const char **argv, char **env) {
     #if 1
     // pre-check for pressure-vessel-wrap
     if(strstr(prog, "pressure-vessel-wrap")==(prog+strlen(prog)-strlen("pressure-vessel-wrap"))) {
-        // pressure-vessel-wrap detecter, skipping it and all -- args until "--" if needed
         printf_log(LOG_INFO, "BOX64: pressure-vessel-wrap detected\n");
-        pressure_vessel(argc, argv, nextarg+1);
+        pressure_vessel(argc, argv, nextarg+1, prog);
     }
     #endif
     int ld_libs_args = -1;
+    int is_custom_gstreamer = 0;
     // check if this is wine
     if(!strcmp(prog, "wine64")
-     || !strcmp(prog, "wine64-development")
-     || !strcmp(prog, "wine")
-     || (strlen(prog)>5 && !strcmp(prog+strlen(prog)-strlen("/wine"), "/wine"))
-     || (strlen(prog)>7 && !strcmp(prog+strlen(prog)-strlen("/wine64"), "/wine64"))) {
+     || !strcmp(prog, "wine64-development") 
+     || !strcmp(prog, "wine") 
+     || (strrchr(prog, '/') && !strcmp(strrchr(prog,'/'), "/wine"))
+     || (strrchr(prog, '/') && !strcmp(strrchr(prog,'/'), "/wine64"))) {
         const char* prereserve = getenv("WINEPRELOADRESERVE");
         printf_log(LOG_INFO, "BOX64: Wine64 detected, WINEPRELOADRESERVE=\"%s\"\n", prereserve?prereserve:"");
         if(wine_preloaded)
@@ -1410,9 +1418,23 @@ int main(int argc, const char **argv, char **env) {
             }
         }
         box64_wine = 1;
-    } else
+        // check if it's proton, with it's custom gstreamer build, to disable gtk3 loading
+        char tmp[strlen(prog)+100];
+        strcpy(tmp, prog);
+        char* pp = strrchr(tmp, '/');
+        if(pp) {
+            *pp = '\0'; // remove the wine binary call
+            strcat(tmp, "/../lib64/gstreamer-1.0");
+            // check if it exist
+            if(FileExist(tmp, 0)) {
+                //printf_log(LOG_INFO, "BOX64: Custom gstreamer detected, disable gtk wrapping\n");
+                //box64_nogtk = 1;
+                //is_custom_gstreamer = 1;
+                box64_custom_gstreamer = box_strdup(tmp);
+            }
+        }
+    } else if(strstr(prog, "ld-musl-x86_64.so.1")) {
     // check if ld-musl-x86_64.so.1 is used
-    if(strstr(prog, "ld-musl-x86_64.so.1")) {
         printf_log(LOG_INFO, "BOX64: ld-musl detected, trying to workaround and use system ld-linux\n");
         box64_musl = 1;
         // skip ld-musl and go through args unti "--" is found, handling "--library-path" to add some libs to BOX64_LD_LIBRARY
@@ -1443,6 +1465,8 @@ int main(int argc, const char **argv, char **env) {
     // Append ld_list if it exist
     if(ld_libs_args!=-1)
         PrependList(&my_context->box64_ld_lib, argv[ld_libs_args], 1);
+    if(is_custom_gstreamer)
+        AddPath("libwayland-client.so.0", &my_context->box64_emulated_libs, 0);
 
     my_context->box64path = ResolveFile(argv[0], &my_context->box64_path);
     // prepare all other env. var
@@ -1486,6 +1510,9 @@ int main(int argc, const char **argv, char **env) {
             }
         }
     }
+    // print PATH and LD_LIB used
+    PrintCollection(&my_context->box64_ld_lib, "BOX64 LIB PATH");
+    PrintCollection(&my_context->box64_path, "BOX64 BIN PATH");
     // lets build argc/argv stuff
     printf_log(LOG_INFO, "Looking for %s\n", prog);
     my_context->argv[0] = ResolveFile(prog, &my_context->box64_path);
diff --git a/src/steam.c b/src/steam.c
index 6a955e43..2bbbe6cb 100644
--- a/src/steam.c
+++ b/src/steam.c
@@ -9,7 +9,11 @@
 #include "box64context.h"
 #include "fileutils.h"
 
-void pressure_vessel(int argc, const char** argv, int nextarg)
+#ifndef MAX_PATH
+#define MAX_PATH 4096
+#endif
+
+void pressure_vessel(int argc, const char** argv, int nextarg, const char* prog)
 {
     // skip all the parameter, but parse some of them
     const char* runtime = getenv("PRESSURE_VESSEL_RUNTIME");
@@ -29,11 +33,6 @@ void pressure_vessel(int argc, const char** argv, int nextarg)
                     strcat(tmp, argv[nextarg]+strlen("--env-if-host=PRESSURE_VESSEL_APP_"));
                     char *p = strchr(tmp, '=');
                     *p ='\0'; ++p;
-                    if(runtime) {
-                        memmove(p+strlen(runtime), p, strlen(p));
-                        memmove(p, runtime, strlen(runtime));
-                        p[strlen(runtime)]= ':';
-                    }
                     ld_lib_path = 1;
                     setenv(tmp, p, 1);
                     printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", tmp, p);
@@ -62,12 +61,67 @@ void pressure_vessel(int argc, const char** argv, int nextarg)
             }
             ++nextarg;
         }
-    if(runtime && !ld_lib_path) {
-        setenv("LD_LIBRARY_PATH", runtime, 1);
-        printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", "LD_LIBRARY_PATH", runtime);
+    if(runtime) {
+        char sniper[MAX_PATH] = {0};
+        // build sniper path
+        strcpy(sniper, prog);
+        char* p = strrchr(sniper, '/');
+        if(p) {
+            *p = '\0';
+            strcat(sniper, "/../../");
+            strcat(sniper, runtime);
+        } else {
+            printf_log(LOG_INFO, "Warning, could not guess sniper runtime path\n");
+            strcpy(sniper, runtime);    // it's wrong...
+        }
+        printf_log(LOG_DEBUG, "pressure-vessel sniper env: %s\n", sniper);
+        // TODO: read metadata from sniper folder and analyse [Environment] section
+        strcat(sniper, "/files");  // this is the sniper root
+        // do LD_LIBRARY_PATH
+        {
+            char tmp[MAX_PATH*4] = {0};
+            // prepare folders, using ldconfig
+            snprintf(tmp, sizeof(tmp), "ldconfig -i -n %s/lib/x86_64-linux-gnu", sniper);
+            if(system(tmp)<0) printf_log(LOG_INFO, "%s failed\n", tmp);
+            snprintf(tmp, sizeof(tmp), "ldconfig -i -n %s/lib/i386-linux-gnu", sniper);
+            if(system(tmp)<0) printf_log(LOG_INFO, "%s failed\n", tmp);
+            snprintf(tmp, sizeof(tmp), "ldconfig -i -n %s/lib", sniper);
+            if(system(tmp)<0) printf_log(LOG_INFO, "%s failed\n", tmp);
+            // setup LD_LIBRARY_PATH
+            const char* ld = getenv("LD_LIBRARY_PATH");
+            snprintf(tmp, sizeof(tmp), "%s/lib/x86_64-linux-gnu:%s/lib/i386-linux-gnu:%s/lib:%s", sniper, sniper, sniper, ld?ld:"");
+            setenv("LD_LIBRARY_PATH", tmp, 1);
+            printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", "LD_LIBRARY_PATH", tmp);
+        }
+        // do XDG_DATA_DIRS
+        {
+            char tmp[MAX_PATH*4] = {0};
+            const char* xdg = getenv("XDG_DATA_DIRS");
+            snprintf(tmp, sizeof(tmp), "%s/share:%s", sniper, xdg?xdg:"");
+            setenv("XDG_DATA_DIRS", tmp, 1);
+            printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", "XDG_DATA_DIRS", tmp);
+        }
+        // disabled GI_TYPELIB_PATH for now
+        if(0)
+        {
+            char tmp[MAX_PATH*4] = {0};
+            snprintf(tmp, sizeof(tmp), "%s/lib/x86_64-linux-gnu/girepository-1.0:%s/lib/i386-linux-gnu/girepository-1.0:%s/lib/girepository-1.0", sniper, sniper, sniper);
+            setenv("GI_TYPELIB_PATH", tmp, 1);
+            printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", "GI_TYPELIB_PATH", tmp);
+        }
+        // disabled GST_PLUGIN_SYSTEM_PATH
+        if(0)
+        {
+            char tmp[MAX_PATH*4] = {0};
+            snprintf(tmp, sizeof(tmp), "%s/lib/x86_64-linux-gnu/gstreamer-1.0:%s/lib/i386-linux-gnu/gstreamer-1.0:%s/lib/gstreamer-1.0", sniper, sniper, sniper);
+            setenv("GST_PLUGIN_SYSTEM_PATH", tmp, 1);
+            printf_log(LOG_DEBUG, "setenv(%s, %s, 1)\n", "GST_PLUGIN_SYSTEM_PATH", tmp);
+        }
+        // should disable native gtk on box86 for now, until better wrapping of gstreamer is done on box86 too
+        // setenv("BOX86_NOGTK", "1", 1);
     }
     printf_log(LOG_DEBUG, "Ready to launch \"%s\", nextarg=%d, argc=%d\n", argv[nextarg], nextarg, argc);
-    const char* prog = argv[nextarg];
+    prog = argv[nextarg];
     my_context = NewBox64Context(argc - nextarg);
     int x86 = my_context->box86path?FileIsX86ELF(argv[nextarg]):0;
     int x64 = my_context->box64path?FileIsX64ELF(argv[nextarg]):0;
diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c
index 269d8429..35f37bd8 100644
--- a/src/tools/gtkclass.c
+++ b/src/tools/gtkclass.c
@@ -21,9 +21,12 @@ int is_gtk3 = 0;
 
 static bridge_t*        my_bridge           = NULL;
 static const char* (*g_type_name)(size_t)   = NULL;
+static size_t (*g_type_parent)(size_t)      = NULL;
 static void* (*g_type_class_peek)(size_t)   = NULL;
 #define GTKCLASS(A) static size_t my_##A    = (size_t)-1;
+#define GTKIFACE(A) GTKCLASS(A)
 GTKCLASSES()
+#undef GTKIFACE
 #undef GTKCLASS
 
 KHASH_SET_INIT_INT(signalmap)
@@ -42,21 +45,11 @@ typedef struct sigoffset_array_s {
 KHASH_MAP_INIT_INT64(sigoffset, sigoffset_array_t)
 static kh_sigoffset_t *my_sigoffset = NULL;
 
+KHASH_MAP_INIT_INT64(customclass, char*)
+static kh_customclass_t *my_customclass = NULL;
+
 // ---- Defining the multiple functions now -----
-#define SUPER() \
-GO(0)   \
-GO(1)   \
-GO(2)   \
-GO(3)   \
-GO(4)   \
-GO(5)   \
-GO(6)   \
-GO(7)	\
-GO(8)	\
-GO(9)	\
-GO(10)	\
-GO(11)	\
-GO(12)
+#include "super80.h"
 
 #define WRAPPED(A, NAME, RET, DEF, FMT, ...)  \
 static uintptr_t my_##NAME##_fct_##A = 0;   \
@@ -80,6 +73,38 @@ static void* find_##NAME##_##A(void* fct)                           \
     if(my_##NAME##_##A##_fct_5 == (uintptr_t)fct) return my_##NAME##_##A##_5;   \
     if(my_##NAME##_##A##_fct_6 == (uintptr_t)fct) return my_##NAME##_##A##_6;   \
     if(my_##NAME##_##A##_fct_7 == (uintptr_t)fct) return my_##NAME##_##A##_7;   \
+    if(my_##NAME##_##A##_fct_8 == (uintptr_t)fct) return my_##NAME##_##A##_8;   \
+    if(my_##NAME##_##A##_fct_9 == (uintptr_t)fct) return my_##NAME##_##A##_9;   \
+    if(my_##NAME##_##A##_fct_10 == (uintptr_t)fct) return my_##NAME##_##A##_10;   \
+    if(my_##NAME##_##A##_fct_11 == (uintptr_t)fct) return my_##NAME##_##A##_11;   \
+    if(my_##NAME##_##A##_fct_12 == (uintptr_t)fct) return my_##NAME##_##A##_12;   \
+    if(my_##NAME##_##A##_fct_13 == (uintptr_t)fct) return my_##NAME##_##A##_13;   \
+    if(my_##NAME##_##A##_fct_14 == (uintptr_t)fct) return my_##NAME##_##A##_14;   \
+    if(my_##NAME##_##A##_fct_15 == (uintptr_t)fct) return my_##NAME##_##A##_15;   \
+    if(my_##NAME##_##A##_fct_16 == (uintptr_t)fct) return my_##NAME##_##A##_16;   \
+    if(my_##NAME##_##A##_fct_17 == (uintptr_t)fct) return my_##NAME##_##A##_17;   \
+    if(my_##NAME##_##A##_fct_18 == (uintptr_t)fct) return my_##NAME##_##A##_18;   \
+    if(my_##NAME##_##A##_fct_19 == (uintptr_t)fct) return my_##NAME##_##A##_19;   \
+    if(my_##NAME##_##A##_fct_20 == (uintptr_t)fct) return my_##NAME##_##A##_20;   \
+    if(my_##NAME##_##A##_fct_21 == (uintptr_t)fct) return my_##NAME##_##A##_21;   \
+    if(my_##NAME##_##A##_fct_22 == (uintptr_t)fct) return my_##NAME##_##A##_22;   \
+    if(my_##NAME##_##A##_fct_23 == (uintptr_t)fct) return my_##NAME##_##A##_23;   \
+    if(my_##NAME##_##A##_fct_24 == (uintptr_t)fct) return my_##NAME##_##A##_24;   \
+    if(my_##NAME##_##A##_fct_25 == (uintptr_t)fct) return my_##NAME##_##A##_25;   \
+    if(my_##NAME##_##A##_fct_26 == (uintptr_t)fct) return my_##NAME##_##A##_26;   \
+    if(my_##NAME##_##A##_fct_27 == (uintptr_t)fct) return my_##NAME##_##A##_27;   \
+    if(my_##NAME##_##A##_fct_28 == (uintptr_t)fct) return my_##NAME##_##A##_28;   \
+    if(my_##NAME##_##A##_fct_29 == (uintptr_t)fct) return my_##NAME##_##A##_29;   \
+    if(my_##NAME##_##A##_fct_30 == (uintptr_t)fct) return my_##NAME##_##A##_30;   \
+    if(my_##NAME##_##A##_fct_31 == (uintptr_t)fct) return my_##NAME##_##A##_31;   \
+    if(my_##NAME##_##A##_fct_32 == (uintptr_t)fct) return my_##NAME##_##A##_32;   \
+    if(my_##NAME##_##A##_fct_33 == (uintptr_t)fct) return my_##NAME##_##A##_33;   \
+    if(my_##NAME##_##A##_fct_34 == (uintptr_t)fct) return my_##NAME##_##A##_34;   \
+    if(my_##NAME##_##A##_fct_35 == (uintptr_t)fct) return my_##NAME##_##A##_35;   \
+    if(my_##NAME##_##A##_fct_36 == (uintptr_t)fct) return my_##NAME##_##A##_36;   \
+    if(my_##NAME##_##A##_fct_37 == (uintptr_t)fct) return my_##NAME##_##A##_37;   \
+    if(my_##NAME##_##A##_fct_38 == (uintptr_t)fct) return my_##NAME##_##A##_38;   \
+    if(my_##NAME##_##A##_fct_39 == (uintptr_t)fct) return my_##NAME##_##A##_39;   \
     if(my_##NAME##_##A##_fct_0 == 0) {my_##NAME##_##A##_fct_0 = (uintptr_t)fct; return my_##NAME##_##A##_0; } \
     if(my_##NAME##_##A##_fct_1 == 0) {my_##NAME##_##A##_fct_1 = (uintptr_t)fct; return my_##NAME##_##A##_1; } \
     if(my_##NAME##_##A##_fct_2 == 0) {my_##NAME##_##A##_fct_2 = (uintptr_t)fct; return my_##NAME##_##A##_2; } \
@@ -88,7 +113,39 @@ static void* find_##NAME##_##A(void* fct)                           \
     if(my_##NAME##_##A##_fct_5 == 0) {my_##NAME##_##A##_fct_5 = (uintptr_t)fct; return my_##NAME##_##A##_5; } \
     if(my_##NAME##_##A##_fct_6 == 0) {my_##NAME##_##A##_fct_6 = (uintptr_t)fct; return my_##NAME##_##A##_6; } \
     if(my_##NAME##_##A##_fct_7 == 0) {my_##NAME##_##A##_fct_7 = (uintptr_t)fct; return my_##NAME##_##A##_7; } \
-    printf_log(LOG_NONE, "Warning, no more slot for " #NAME " gtkclass callback\n");    \
+    if(my_##NAME##_##A##_fct_8 == 0) {my_##NAME##_##A##_fct_8 = (uintptr_t)fct; return my_##NAME##_##A##_8; } \
+    if(my_##NAME##_##A##_fct_9 == 0) {my_##NAME##_##A##_fct_9 = (uintptr_t)fct; return my_##NAME##_##A##_9; } \
+    if(my_##NAME##_##A##_fct_10 == 0) {my_##NAME##_##A##_fct_10 = (uintptr_t)fct; return my_##NAME##_##A##_10; } \
+    if(my_##NAME##_##A##_fct_11 == 0) {my_##NAME##_##A##_fct_11 = (uintptr_t)fct; return my_##NAME##_##A##_11; } \
+    if(my_##NAME##_##A##_fct_12 == 0) {my_##NAME##_##A##_fct_12 = (uintptr_t)fct; return my_##NAME##_##A##_12; } \
+    if(my_##NAME##_##A##_fct_13 == 0) {my_##NAME##_##A##_fct_13 = (uintptr_t)fct; return my_##NAME##_##A##_13; } \
+    if(my_##NAME##_##A##_fct_14 == 0) {my_##NAME##_##A##_fct_14 = (uintptr_t)fct; return my_##NAME##_##A##_14; } \
+    if(my_##NAME##_##A##_fct_15 == 0) {my_##NAME##_##A##_fct_15 = (uintptr_t)fct; return my_##NAME##_##A##_15; } \
+    if(my_##NAME##_##A##_fct_16 == 0) {my_##NAME##_##A##_fct_16 = (uintptr_t)fct; return my_##NAME##_##A##_16; } \
+    if(my_##NAME##_##A##_fct_17 == 0) {my_##NAME##_##A##_fct_17 = (uintptr_t)fct; return my_##NAME##_##A##_17; } \
+    if(my_##NAME##_##A##_fct_18 == 0) {my_##NAME##_##A##_fct_18 = (uintptr_t)fct; return my_##NAME##_##A##_18; } \
+    if(my_##NAME##_##A##_fct_19 == 0) {my_##NAME##_##A##_fct_19 = (uintptr_t)fct; return my_##NAME##_##A##_19; } \
+    if(my_##NAME##_##A##_fct_20 == 0) {my_##NAME##_##A##_fct_20 = (uintptr_t)fct; return my_##NAME##_##A##_20; } \
+    if(my_##NAME##_##A##_fct_21 == 0) {my_##NAME##_##A##_fct_21 = (uintptr_t)fct; return my_##NAME##_##A##_21; } \
+    if(my_##NAME##_##A##_fct_22 == 0) {my_##NAME##_##A##_fct_22 = (uintptr_t)fct; return my_##NAME##_##A##_22; } \
+    if(my_##NAME##_##A##_fct_23 == 0) {my_##NAME##_##A##_fct_23 = (uintptr_t)fct; return my_##NAME##_##A##_23; } \
+    if(my_##NAME##_##A##_fct_24 == 0) {my_##NAME##_##A##_fct_24 = (uintptr_t)fct; return my_##NAME##_##A##_24; } \
+    if(my_##NAME##_##A##_fct_25 == 0) {my_##NAME##_##A##_fct_25 = (uintptr_t)fct; return my_##NAME##_##A##_25; } \
+    if(my_##NAME##_##A##_fct_26 == 0) {my_##NAME##_##A##_fct_26 = (uintptr_t)fct; return my_##NAME##_##A##_26; } \
+    if(my_##NAME##_##A##_fct_27 == 0) {my_##NAME##_##A##_fct_27 = (uintptr_t)fct; return my_##NAME##_##A##_27; } \
+    if(my_##NAME##_##A##_fct_28 == 0) {my_##NAME##_##A##_fct_28 = (uintptr_t)fct; return my_##NAME##_##A##_28; } \
+    if(my_##NAME##_##A##_fct_29 == 0) {my_##NAME##_##A##_fct_29 = (uintptr_t)fct; return my_##NAME##_##A##_29; } \
+    if(my_##NAME##_##A##_fct_30 == 0) {my_##NAME##_##A##_fct_30 = (uintptr_t)fct; return my_##NAME##_##A##_30; } \
+    if(my_##NAME##_##A##_fct_31 == 0) {my_##NAME##_##A##_fct_31 = (uintptr_t)fct; return my_##NAME##_##A##_31; } \
+    if(my_##NAME##_##A##_fct_32 == 0) {my_##NAME##_##A##_fct_32 = (uintptr_t)fct; return my_##NAME##_##A##_32; } \
+    if(my_##NAME##_##A##_fct_33 == 0) {my_##NAME##_##A##_fct_33 = (uintptr_t)fct; return my_##NAME##_##A##_33; } \
+    if(my_##NAME##_##A##_fct_34 == 0) {my_##NAME##_##A##_fct_34 = (uintptr_t)fct; return my_##NAME##_##A##_34; } \
+    if(my_##NAME##_##A##_fct_35 == 0) {my_##NAME##_##A##_fct_35 = (uintptr_t)fct; return my_##NAME##_##A##_35; } \
+    if(my_##NAME##_##A##_fct_36 == 0) {my_##NAME##_##A##_fct_36 = (uintptr_t)fct; return my_##NAME##_##A##_36; } \
+    if(my_##NAME##_##A##_fct_37 == 0) {my_##NAME##_##A##_fct_37 = (uintptr_t)fct; return my_##NAME##_##A##_37; } \
+    if(my_##NAME##_##A##_fct_38 == 0) {my_##NAME##_##A##_fct_38 = (uintptr_t)fct; return my_##NAME##_##A##_38; } \
+    if(my_##NAME##_##A##_fct_39 == 0) {my_##NAME##_##A##_fct_39 = (uintptr_t)fct; return my_##NAME##_##A##_39; } \
+    printf_log(LOG_NONE, "Warning, no more slot for " #A " " #NAME " gtkclass callback\n");    \
     return NULL;    \
 }
 
@@ -104,6 +161,38 @@ static void* reverse_##NAME##_##A(wrapper_t W, void* fct)
     if((void*)my_##NAME##_##A##_5 == fct) return (void*)my_##NAME##_##A##_fct_5;\
     if((void*)my_##NAME##_##A##_6 == fct) return (void*)my_##NAME##_##A##_fct_6;\
     if((void*)my_##NAME##_##A##_7 == fct) return (void*)my_##NAME##_##A##_fct_7;\
+    if((void*)my_##NAME##_##A##_8 == fct) return (void*)my_##NAME##_##A##_fct_8;\
+    if((void*)my_##NAME##_##A##_9 == fct) return (void*)my_##NAME##_##A##_fct_9;\
+    if((void*)my_##NAME##_##A##_10 == fct) return (void*)my_##NAME##_##A##_fct_10;\
+    if((void*)my_##NAME##_##A##_11 == fct) return (void*)my_##NAME##_##A##_fct_11;\
+    if((void*)my_##NAME##_##A##_12 == fct) return (void*)my_##NAME##_##A##_fct_12;\
+    if((void*)my_##NAME##_##A##_13 == fct) return (void*)my_##NAME##_##A##_fct_13;\
+    if((void*)my_##NAME##_##A##_14 == fct) return (void*)my_##NAME##_##A##_fct_14;\
+    if((void*)my_##NAME##_##A##_15 == fct) return (void*)my_##NAME##_##A##_fct_15;\
+    if((void*)my_##NAME##_##A##_16 == fct) return (void*)my_##NAME##_##A##_fct_16;\
+    if((void*)my_##NAME##_##A##_17 == fct) return (void*)my_##NAME##_##A##_fct_17;\
+    if((void*)my_##NAME##_##A##_18 == fct) return (void*)my_##NAME##_##A##_fct_18;\
+    if((void*)my_##NAME##_##A##_19 == fct) return (void*)my_##NAME##_##A##_fct_19;\
+    if((void*)my_##NAME##_##A##_20 == fct) return (void*)my_##NAME##_##A##_fct_20;\
+    if((void*)my_##NAME##_##A##_21 == fct) return (void*)my_##NAME##_##A##_fct_21;\
+    if((void*)my_##NAME##_##A##_22 == fct) return (void*)my_##NAME##_##A##_fct_22;\
+    if((void*)my_##NAME##_##A##_23 == fct) return (void*)my_##NAME##_##A##_fct_23;\
+    if((void*)my_##NAME##_##A##_24 == fct) return (void*)my_##NAME##_##A##_fct_24;\
+    if((void*)my_##NAME##_##A##_25 == fct) return (void*)my_##NAME##_##A##_fct_25;\
+    if((void*)my_##NAME##_##A##_26 == fct) return (void*)my_##NAME##_##A##_fct_26;\
+    if((void*)my_##NAME##_##A##_27 == fct) return (void*)my_##NAME##_##A##_fct_27;\
+    if((void*)my_##NAME##_##A##_28 == fct) return (void*)my_##NAME##_##A##_fct_28;\
+    if((void*)my_##NAME##_##A##_29 == fct) return (void*)my_##NAME##_##A##_fct_29;\
+    if((void*)my_##NAME##_##A##_30 == fct) return (void*)my_##NAME##_##A##_fct_30;\
+    if((void*)my_##NAME##_##A##_31 == fct) return (void*)my_##NAME##_##A##_fct_31;\
+    if((void*)my_##NAME##_##A##_32 == fct) return (void*)my_##NAME##_##A##_fct_32;\
+    if((void*)my_##NAME##_##A##_33 == fct) return (void*)my_##NAME##_##A##_fct_33;\
+    if((void*)my_##NAME##_##A##_34 == fct) return (void*)my_##NAME##_##A##_fct_34;\
+    if((void*)my_##NAME##_##A##_35 == fct) return (void*)my_##NAME##_##A##_fct_35;\
+    if((void*)my_##NAME##_##A##_36 == fct) return (void*)my_##NAME##_##A##_fct_36;\
+    if((void*)my_##NAME##_##A##_37 == fct) return (void*)my_##NAME##_##A##_fct_37;\
+    if((void*)my_##NAME##_##A##_38 == fct) return (void*)my_##NAME##_##A##_fct_38;\
+    if((void*)my_##NAME##_##A##_39 == fct) return (void*)my_##NAME##_##A##_fct_39;\
     Dl_info info;                                                               \
     if(dladdr(fct, &info))                                                      \
         return (void*)AddCheckBridge(my_bridge, W, fct, 0, NULL);               \
@@ -121,14 +210,46 @@ static void autobridge_##NAME##_##A(wrapper_t W, void* fct)         \
 }
 
 #define WRAPPER(A, NAME, RET, DEF, FMT, ...)        \
-WRAPPED(0, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
-WRAPPED(1, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
-WRAPPED(2, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
-WRAPPED(3, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
-WRAPPED(4, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
-WRAPPED(5, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
-WRAPPED(6, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
-WRAPPED(7, NAME##_##A, RET, DEF, FMT, __VA_ARGS__)  \
+WRAPPED( 0, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 1, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 2, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 3, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 4, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 5, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 6, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 7, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 8, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED( 9, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(10, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(11, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(12, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(13, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(14, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(15, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(16, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(17, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(18, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(19, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(20, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(21, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(22, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(23, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(24, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(25, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(26, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(27, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(28, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(29, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(30, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(31, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(32, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(33, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(34, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(35, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(36, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(37, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(38, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
+WRAPPED(39, NAME##_##A, RET, DEF, FMT, __VA_ARGS__) \
 FIND(A, NAME)                                       \
 REVERSE(A, NAME)                                    \
 AUTOBRIDGE(A, NAME)
@@ -2440,6 +2561,975 @@ static void bridgeGstTaskPoolClass(my_GstTaskPoolClass_t* class)
 
 #undef SUPERGO
 
+// ----- GstElementClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstElement,pad_added, void, (void* element, void* pad), "pp", element, pad);
+WRAPPER(GstElement,pad_removed, void, (void* element, void* pad), "pp", element, pad);
+WRAPPER(GstElement,no_more_pads, void, (void* element), "p", element);
+WRAPPER(GstElement,request_new_pad, void*, (void* element, void* templ, void* name, void* caps), "pppp", element, templ, name, caps);
+WRAPPER(GstElement,release_pad, void, (void* element, void* pad), "pp", element, pad);
+WRAPPER(GstElement,get_state, int, (void*  element, void* state, void* pending, uint64_t timeout), "pppU", element, state, pending, timeout);
+WRAPPER(GstElement,set_state, int, (void* element, int state), "pi", element, state);
+WRAPPER(GstElement,change_state, int, (void* element, int transition), "pi", element, transition);
+WRAPPER(GstElement,state_changed, void, (void* element, int oldstate, int newstate, int pending), "piii", element, oldstate, newstate, pending);
+WRAPPER(GstElement,set_bus, void, (void*  element, void* bus), "pp", element, bus);
+WRAPPER(GstElement,provide_clock, void*, (void* element), "p", element);
+WRAPPER(GstElement,set_clock, int, (void* element, void* clock), "pp", element, clock);
+WRAPPER(GstElement,send_event, int, (void* element, void* event), "pp", element, event);
+WRAPPER(GstElement,query, int, (void* element, void* query), "pp", element, query);
+WRAPPER(GstElement,post_message, int, (void* element, void* message), "pp", element, message);
+WRAPPER(GstElement,set_context, void, (void* element, void* context), "pp", element, context);
+
+#define SUPERGO()               \
+    GO(pad_added, vFpp);        \
+    GO(pad_removed, vFpp);      \
+    GO(no_more_pads, vFp);      \
+    GO(request_new_pad, pFpppp);\
+    GO(release_pad, vFpp);      \
+    GO(get_state, iFppU);       \
+    GO(set_state, iFpi);        \
+    GO(change_state, iFpi);     \
+    GO(state_changed, vFpiii);  \
+    GO(set_bus, vFpp);          \
+    GO(provide_clock, pFp);     \
+    GO(set_clock, iFpp);        \
+    GO(send_event, iFpp);       \
+    GO(query, iFpp);            \
+    GO(post_message, iFpp);     \
+    GO(set_context, vFpp);      \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstElementClass(my_GstElementClass_t* class)
+{
+    wrapGstObjectClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstElement (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstElementClass(my_GstElementClass_t* class)
+{
+    unwrapGstObjectClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstElement (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstElementClass(my_GstElementClass_t* class)
+{
+    bridgeGstObjectClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstElement (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
+// ----- GstBinClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstBin,element_added, void, (void* bin, void* child), "pp", bin, child);
+WRAPPER(GstBin,element_removed, void, (void* bin, void* child), "pp", bin, child);
+WRAPPER(GstBin,add_element, int, (void* bin, void* element), "pp", bin, element);
+WRAPPER(GstBin,remove_element, int, (void* bin, void* element), "pp", bin, element);
+WRAPPER(GstBin,handle_message, void, (void* bin, void* message), "pp", bin, message);
+WRAPPER(GstBin,do_latency, int, (void* bin), "p", bin);
+WRAPPER(GstBin,deep_element_added, void, (void* bin, void* sub_bin, void* child), "ppp", bin, sub_bin, child);
+WRAPPER(GstBin,deep_element_removed, void, (void* bin, void* sub_bin, void* child), "ppp", bin, sub_bin, child);
+
+#define SUPERGO()                   \
+    GO(element_added, vFpp);        \
+    GO(element_removed, vFpp);      \
+    GO(add_element, iFpp);          \
+    GO(remove_element, iFpp);       \
+    GO(handle_message, vFpp);       \
+    GO(do_latency, iFp);            \
+    GO(deep_element_added, vFppp);  \
+    GO(deep_element_removed, vFppp);\
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstBinClass(my_GstBinClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstBin (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstBinClass(my_GstBinClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstBin (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstBinClass(my_GstBinClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstBin (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+
+// ----- GstBaseTransformClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstBaseTransform, transform_caps, void*, (void* trans, int direction, void* caps, void* filter), "pipp", trans, direction, caps, filter);
+WRAPPER(GstBaseTransform, fixate_caps, void*, (void* trans, int direction, void* caps, void* othercaps), "pipp", trans, direction, caps, othercaps);
+WRAPPER(GstBaseTransform, accept_caps, int, (void* trans, int direction, void* caps), "pip", trans, direction, caps);
+WRAPPER(GstBaseTransform, set_caps, int, (void* trans, void* incaps, void* outcaps), "ppp", trans, incaps, outcaps);
+WRAPPER(GstBaseTransform, query, int, (void* trans, int direction, void* query), "pip", trans, direction, query);
+WRAPPER(GstBaseTransform, decide_allocation, int, (void* trans, void* query), "pp", trans, query );
+WRAPPER(GstBaseTransform, filter_meta, int, (void* trans, void* query, size_t api, void* params), "ppLp", trans, query, api, params);
+WRAPPER(GstBaseTransform, propose_allocation, int, (void* trans, void* decide_query, void* query), "ppp", trans, decide_query, query );
+WRAPPER(GstBaseTransform, transform_size, int, (void* trans, int direction, void* caps, size_t size, void* othercaps, void* othersize), "pipLpp", trans, direction, caps, size, othercaps, othersize);
+WRAPPER(GstBaseTransform, get_unit_size, int, (void* trans, void* caps, void* size), "ppp", trans, caps, size);
+WRAPPER(GstBaseTransform, start, int, (void* trans), "p", trans);
+WRAPPER(GstBaseTransform, stop, int, (void* trans), "p", trans);
+WRAPPER(GstBaseTransform, sink_event, int, (void* trans, void* event), "pp", trans, event );
+WRAPPER(GstBaseTransform, src_event, int, (void* trans, void* event), "pp", trans, event );
+WRAPPER(GstBaseTransform, prepare_output_buffer, int, (void*  trans, void* input, void* outbuf), "ppp", trans, input, outbuf );
+WRAPPER(GstBaseTransform, copy_metadata, int, (void* trans, void* input, void* outbuf), "ppp", trans, input, outbuf );
+WRAPPER(GstBaseTransform, transform_meta, int, (void* trans, void* outbuf, void* meta, void* inbuf), "pppp", trans, outbuf, meta, inbuf );
+WRAPPER(GstBaseTransform, before_transform, void, (void* trans, void* buffer), "pp", trans, buffer );
+WRAPPER(GstBaseTransform, transform, int, (void* trans, void* inbuf, void* outbuf), "ppp", trans, inbuf, outbuf );
+WRAPPER(GstBaseTransform, transform_ip, int, (void* trans, void* buf), "pp", trans, buf );
+WRAPPER(GstBaseTransform, submit_input_buffer, int, (void* trans, int is_discont, void* input), "pip", trans, is_discont, input );
+WRAPPER(GstBaseTransform, generate_output, int, (void* trans, void* outbuf), "pp", trans, outbuf );
+
+#define SUPERGO()                       \
+    GO(transform_caps, pFpipp);         \
+    GO(fixate_caps, pFpipp);            \
+    GO(accept_caps, iFpip);             \
+    GO(set_caps, iFppp);                \
+    GO(query, iFpip);                   \
+    GO(decide_allocation, iFpp);        \
+    GO(filter_meta, iFppLp);            \
+    GO(propose_allocation, iFppp);      \
+    GO(transform_size, iFpipLpp);       \
+    GO(get_unit_size, iFppp);           \
+    GO(start, iFp);                     \
+    GO(stop, iFp);                      \
+    GO(sink_event, iFpp);               \
+    GO(src_event, iFpp);                \
+    GO(prepare_output_buffer, iFppp);   \
+    GO(copy_metadata, iFppp);           \
+    GO(transform_meta, iFpppp);         \
+    GO(before_transform, vFpp);         \
+    GO(transform, iFppp);               \
+    GO(transform_ip, iFpp);             \
+    GO(submit_input_buffer, iFpip);     \
+    GO(generate_output, iFpp);          \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstBaseTransformClass(my_GstBaseTransformClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstBaseTransform (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstBaseTransformClass(my_GstBaseTransformClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstBaseTransform (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstBaseTransformClass(my_GstBaseTransformClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstBaseTransform (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+// ----- GstVideoDecoderClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstVideoDecoder, open, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, close, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, start, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, stop, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, parse, int, (void* decoder, void* frame, void* adapter, int at_eos), "pppi", decoder, frame, adapter, at_eos);
+WRAPPER(GstVideoDecoder, set_format, int, (void* decoder, void* state), "pp", decoder, state);
+WRAPPER(GstVideoDecoder, reset, int, (void* decoder, int hard), "pi", decoder, hard);
+WRAPPER(GstVideoDecoder, finish, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, handle_frame, int, (void* decoder, void* frame), "pp", decoder, frame);
+WRAPPER(GstVideoDecoder, sink_event, int, (void* decoder, void* event), "pp", decoder, event);
+WRAPPER(GstVideoDecoder, src_event, int, (void* decoder, void* event), "pp", decoder, event);
+WRAPPER(GstVideoDecoder, negotiate, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, decide_allocation, int, (void* decoder, void* query), "pp", decoder, query);
+WRAPPER(GstVideoDecoder, propose_allocation, int, (void* decoder, void*  query), "pp", decoder, query);
+WRAPPER(GstVideoDecoder, flush, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, sink_query, int, (void* decoder, void* query), "pp", decoder, query);
+WRAPPER(GstVideoDecoder, src_query, int, (void* decoder, void* query), "pp", decoder, query);
+WRAPPER(GstVideoDecoder, getcaps, void*, (void* decoder, void* filter), "pp", decoder, filter);
+WRAPPER(GstVideoDecoder, drain, int, (void* decoder), "p", decoder);
+WRAPPER(GstVideoDecoder, transform_meta, int, (void* decoder, void* frame, void* meta), "ppp", decoder, frame, meta);
+WRAPPER(GstVideoDecoder, handle_missing_data, int, (void* decoder, uint64_t timestamp, uint64_t duration), "pUU", decoder, timestamp, duration);
+
+#define SUPERGO()                       \
+    GO(open, iFp);                      \
+    GO(close, iFp);                     \
+    GO(start, iFp);                     \
+    GO(stop, iFp);                      \
+    GO(parse, iFpppi);                  \
+    GO(set_format, iFpp);               \
+    GO(reset, iFp);                     \
+    GO(finish, iFp);                    \
+    GO(handle_frame, iFpp);             \
+    GO(sink_event, iFpp);               \
+    GO(src_event, iFpp);                \
+    GO(negotiate, iFp);                 \
+    GO(decide_allocation, iFpp);        \
+    GO(propose_allocation, iFpp);       \
+    GO(flush, iFp);                     \
+    GO(sink_query, iFpp);               \
+    GO(src_query, iFpp);                \
+    GO(getcaps, pFpp);                  \
+    GO(drain, iFp);                     \
+    GO(transform_meta, iFppp);          \
+    GO(handle_missing_data, iFpUU);     \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstVideoDecoderClass(my_GstVideoDecoderClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstVideoDecoder (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstVideoDecoderClass(my_GstVideoDecoderClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstVideoDecoder (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstVideoDecoderClass(my_GstVideoDecoderClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstVideoDecoder (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+// ----- GstVideoEncoderClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstVideoEncoder, open, int, (void* encoder), "p", encoder);
+WRAPPER(GstVideoEncoder, close, int, (void* encoder), "p", encoder);
+WRAPPER(GstVideoEncoder, start, int, (void* encoder), "p", encoder);
+WRAPPER(GstVideoEncoder, stop, int, (void* encoder), "p", encoder);
+WRAPPER(GstVideoEncoder, set_format, int, (void* encoder, void* state), "pp", encoder, state);
+WRAPPER(GstVideoEncoder, handle_frame, int, (void* encoder, void* frame), "pp", encoder, frame);
+WRAPPER(GstVideoEncoder, reset, int, (void* encoder, int hard), "pi", encoder, hard);
+WRAPPER(GstVideoEncoder, finish, int, (void* encoder), "p", encoder);
+WRAPPER(GstVideoEncoder, pre_push, int, (void* encoder, void* frame), "pp", encoder, frame);
+WRAPPER(GstVideoEncoder, getcaps, void*, (void* encoder, void* filter), "pp", encoder, filter);
+WRAPPER(GstVideoEncoder, sink_event, int, (void* encoder, void* event), "pp", encoder, event);
+WRAPPER(GstVideoEncoder, src_event, int, (void* encoder, void* event), "pp", encoder, event);
+WRAPPER(GstVideoEncoder, negotiate, int, (void* encoder), "p", encoder);
+WRAPPER(GstVideoEncoder, decide_allocation, int, (void* encoder, void* query), "pp", encoder, query);
+WRAPPER(GstVideoEncoder, propose_allocation, int, (void* encoder, void*  query), "pp", encoder, query);
+WRAPPER(GstVideoEncoder, flush, int, (void* encoder), "p", encoder);
+WRAPPER(GstVideoEncoder, sink_query, int, (void* encoder, void* query), "pp", encoder, query);
+WRAPPER(GstVideoEncoder, src_query, int, (void* encoder, void* query), "pp", encoder, query);
+WRAPPER(GstVideoEncoder, transform_meta, int, (void* encoder, void* frame, void* meta), "ppp", encoder, frame, meta);
+
+#define SUPERGO()                       \
+    GO(open, iFp);                      \
+    GO(close, iFp);                     \
+    GO(start, iFp);                     \
+    GO(stop, iFp);                      \
+    GO(set_format, iFpp);               \
+    GO(handle_frame, iFpp);             \
+    GO(reset, iFp);                     \
+    GO(finish, iFp);                    \
+    GO(pre_push, iFpp);                 \
+    GO(getcaps, pFpp);                  \
+    GO(sink_event, iFpp);               \
+    GO(src_event, iFpp);                \
+    GO(negotiate, iFp);                 \
+    GO(decide_allocation, iFpp);        \
+    GO(propose_allocation, iFpp);       \
+    GO(flush, iFp);                     \
+    GO(sink_query, iFpp);               \
+    GO(src_query, iFpp);                \
+    GO(transform_meta, iFppp);          \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstVideoEncoderClass(my_GstVideoEncoderClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstVideoEncoder (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstVideoEncoderClass(my_GstVideoEncoderClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstVideoEncoder (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstVideoEncoderClass(my_GstVideoEncoderClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstVideoEncoder (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+
+#undef SUPERGO
+// ----- GstBaseSinkClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstBaseSink, get_caps, void*, (void* sink, void* filter), "pp", sink, filter);
+WRAPPER(GstBaseSink, set_caps, int, (void* sink, void* caps), "pp", sink, caps);
+WRAPPER(GstBaseSink, fixate, void* , (void* sink, void* caps), "pp", sink, caps);
+WRAPPER(GstBaseSink, activate_pull, int, (void* sink, int active), "pi", sink, active);
+WRAPPER(GstBaseSink, get_times, void, (void* sink, void* buffer, void* start, void* end), "pppp", sink, buffer, start, end);
+WRAPPER(GstBaseSink, propose_allocation, int, (void* sink, void* query), "pp", sink, query);
+WRAPPER(GstBaseSink, start, int, (void* sink), "p", sink);
+WRAPPER(GstBaseSink, stop, int, (void* sink), "p", sink);
+WRAPPER(GstBaseSink, unlock, int, (void* sink), "p", sink);
+WRAPPER(GstBaseSink, unlock_stop, int, (void* sink), "p", sink);
+WRAPPER(GstBaseSink, query, int, (void* sink, void* query), "pp", sink, query);
+WRAPPER(GstBaseSink, event, int, (void* sink, void* event), "pp", sink, event);
+WRAPPER(GstBaseSink, wait_event, int, (void* sink, void* event), "pp", sink, event);
+WRAPPER(GstBaseSink, prepare, int, (void* sink, void* buffer), "pp", sink, buffer);
+WRAPPER(GstBaseSink, prepare_list, int, (void* sink, void* buffer_list), "pp", sink, buffer_list);
+WRAPPER(GstBaseSink, preroll, int, (void* sink, void* buffer), "pp", sink, buffer);
+WRAPPER(GstBaseSink, render, int, (void* sink, void* buffer), "pp", sink, buffer);
+WRAPPER(GstBaseSink, render_list, int, (void* sink, void* buffer_list), "pp", sink, buffer_list);
+
+#define SUPERGO()                       \
+    GO(get_caps, pFpp);                 \
+    GO(set_caps, iFpp);                 \
+    GO(fixate, pFpp);                   \
+    GO(activate_pull, iFpi);            \
+    GO(get_times, vFpppp);              \
+    GO(propose_allocation, iFpp);       \
+    GO(start, iFp);                     \
+    GO(stop, iFp);                      \
+    GO(unlock, iFp);                    \
+    GO(unlock_stop, iFp);               \
+    GO(query, iFpp);                    \
+    GO(event, iFpp);                    \
+    GO(wait_event, iFpp);               \
+    GO(prepare, iFpp);                  \
+    GO(prepare_list, iFpp);             \
+    GO(preroll, iFpp);                  \
+    GO(render, iFpp);                   \
+    GO(render_list, iFpp);              \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstBaseSinkClass(my_GstBaseSinkClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstBaseSink (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstBaseSinkClass(my_GstBaseSinkClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstBaseSink (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstBaseSinkClass(my_GstBaseSinkClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstBaseSink (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstVideoSinkClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstVideoSink, show_frame, int, (void* video_sink, void* buf), "pp", video_sink, buf);
+WRAPPER(GstVideoSink, set_info, int, (void* video_sink, void* caps, void* info), "ppp", video_sink, caps, info);
+
+#define SUPERGO()                       \
+    GO(show_frame, iFpp);               \
+    GO(set_info, iFppp);                \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstVideoSinkClass(my_GstVideoSinkClass_t* class)
+{
+    wrapGstBaseSinkClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstVideoSink (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstVideoSinkClass(my_GstVideoSinkClass_t* class)
+{
+    unwrapGstBaseSinkClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstVideoSink (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstVideoSinkClass(my_GstVideoSinkClass_t* class)
+{
+    bridgeGstBaseSinkClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstVideoSink (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstGLBaseFilterClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstGLBaseFilter, gl_start, int, (void* filter), "p", filter);
+WRAPPER(GstGLBaseFilter, gl_stop, void, (void* filter), "p", filter);
+WRAPPER(GstGLBaseFilter, gl_set_caps, int, (void* filter, void* incaps, void* outcaps), "ppp", filter, incaps, outcaps);
+
+#define SUPERGO()                       \
+    GO(gl_start, iFp);                  \
+    GO(gl_stop, vFp);                   \
+    GO(gl_set_caps, iFppp);             \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstGLBaseFilterClass(my_GstGLBaseFilterClass_t* class)
+{
+    wrapGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstGLBaseFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstGLBaseFilterClass(my_GstGLBaseFilterClass_t* class)
+{
+    unwrapGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstGLBaseFilter (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstGLBaseFilterClass(my_GstGLBaseFilterClass_t* class)
+{
+    bridgeGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstGLBaseFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstGLFilterClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstGLFilter, set_caps, int, (void* filter, void* incaps, void* outcaps), "ppp", filter, incaps, outcaps);
+WRAPPER(GstGLFilter, filter, int, (void* filter, void* inbuf, void* outbuf), "ppp", filter, inbuf, outbuf);
+WRAPPER(GstGLFilter, filter_texture, int, (void* filter, void* input, void* output), "ppp", filter, input, output);
+WRAPPER(GstGLFilter, init_fbo, int, (void* filter), "p", filter);
+WRAPPER(GstGLFilter, transform_internal_caps, void*, (void* filter, int direction, void* caps, void* filter_caps), "pipp", filter, direction, caps, filter_caps);
+
+#define SUPERGO()                       \
+    GO(set_caps, iFppp);                \
+    GO(filter, iFppp);                  \
+    GO(filter_texture, iFppp);          \
+    GO(init_fbo, iFp);                  \
+    GO(transform_internal_caps, pFpipp);\
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstGLFilterClass(my_GstGLFilterClass_t* class)
+{
+    wrapGstGLBaseFilterClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstGLFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstGLFilterClass(my_GstGLFilterClass_t* class)
+{
+    unwrapGstGLBaseFilterClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstGLFilter (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstGLFilterClass(my_GstGLFilterClass_t* class)
+{
+    bridgeGstGLBaseFilterClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstGLFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstAggregatorClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstAggregator, flush, int, (void* self), "p", self);
+WRAPPER(GstAggregator, clip, void*, (void* self, void* aggregator_pad, void* buf), "ppp", self, aggregator_pad, buf);
+WRAPPER(GstAggregator, finish_buffer, int, (void* self, void* buffer), "pp", self, buffer);
+WRAPPER(GstAggregator, sink_event, int, (void* self, void* aggregator_pad, void* event), "ppp", self, aggregator_pad, event);
+WRAPPER(GstAggregator, sink_query, int, (void* self, void* aggregator_pad, void* query), "ppp", self, aggregator_pad, query);
+WRAPPER(GstAggregator, src_event, int, (void* self, void* event), "pp", self, event);
+WRAPPER(GstAggregator, src_query, int, (void* self, void* query), "pp", self, query);
+WRAPPER(GstAggregator, src_activate, int, (void* self, int mode, int active), "pii", self, mode, active);
+WRAPPER(GstAggregator, aggregate, int, (void* self, int timeout), "pi", self, timeout);
+WRAPPER(GstAggregator, stop, int, (void* self), "p", self);
+WRAPPER(GstAggregator, start, int, (void* self), "p", self);
+WRAPPER(GstAggregator, get_next_time, uint64_t, (void* self), "p", self);
+WRAPPER(GstAggregator, create_new_pad, void*, (void* self, void* templ, void* req_name, void* caps), "pppp", self, templ, req_name, caps);
+WRAPPER(GstAggregator, update_src_caps, int, (void* self, void* caps, void* ret), "ppp", self, caps, ret);
+WRAPPER(GstAggregator, fixate_src_caps, void*, (void* self, void* caps), "pp", self, caps);
+WRAPPER(GstAggregator, negotiated_src_caps, int, (void* self, void* caps), "pp", self, caps);
+WRAPPER(GstAggregator, decide_allocation, int, (void* self, void* query), "pp", self, query);
+WRAPPER(GstAggregator, propose_allocation, int, (void* self, void* pad, void* decide_query, void* query), "pppp", self, pad, decide_query, query);
+WRAPPER(GstAggregator, negotiate, int, (void* self), "p", self);
+WRAPPER(GstAggregator, sink_event_pre_queue, int, (void* self, void* aggregator_pad, void* event), "ppp", self, aggregator_pad, event);
+WRAPPER(GstAggregator, sink_query_pre_queue, int, (void* self, void* aggregator_pad, void* query), "ppp", self, aggregator_pad, query);
+WRAPPER(GstAggregator, finish_buffer_list, int, (void* self, void* bufferlist), "pp", self, bufferlist);
+WRAPPER(GstAggregator, peek_next_sample, void, (void* self, void* aggregator_pad), "pp", self, aggregator_pad);
+
+#define SUPERGO()                       \
+    GO(flush, iFp);                     \
+    GO(clip, pFppp);                    \
+    GO(finish_buffer, iFpp);            \
+    GO(sink_event, iFppp);              \
+    GO(sink_query, iFppp);              \
+    GO(src_event, iFpp);                \
+    GO(src_query, iFpp);                \
+    GO(src_activate, iFpii);            \
+    GO(aggregate, iFpi);                \
+    GO(stop, iFp);                      \
+    GO(start, iFp);                     \
+    GO(get_next_time, UFp);             \
+    GO(create_new_pad, pFpppp);         \
+    GO(update_src_caps, iFppp);         \
+    GO(fixate_src_caps, pFpp);          \
+    GO(negotiated_src_caps, iFpp);      \
+    GO(decide_allocation, iFpp);        \
+    GO(propose_allocation, iFpppp);     \
+    GO(negotiate, iFp);                 \
+    GO(sink_event_pre_queue, iFppp);    \
+    GO(sink_query_pre_queue, iFppp);    \
+    GO(finish_buffer_list, iFpp);       \
+    GO(peek_next_sample, vFpp);         \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstAggregatorClass(my_GstAggregatorClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstAggregator (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstAggregatorClass(my_GstAggregatorClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstAggregator (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstAggregatorClass(my_GstAggregatorClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstAggregator (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstVideoAggregatorClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstVideoAggregator, update_caps, void*, (void* vagg, void* caps), "pp", vagg, caps);
+WRAPPER(GstVideoAggregator, aggregate_frames, int, (void* vagg, void* outbuffer), "pp", vagg, outbuffer);
+WRAPPER(GstVideoAggregator, create_output_buffer, int, (void* vagg, void* outbuffer), "pp", vagg, outbuffer);
+WRAPPER(GstVideoAggregator, find_best_format, void, (void* vagg, void* downstream_caps, void* best_info, void* at_least_one_alpha), "pppp", vagg, downstream_caps, best_info, at_least_one_alpha);
+
+#define SUPERGO()                       \
+    GO(update_caps, pFpp);              \
+    GO(aggregate_frames, iFpp);         \
+    GO(create_output_buffer, iFpp);     \
+    GO(find_best_format, vFpppp);       \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstVideoAggregatorClass(my_GstVideoAggregatorClass_t* class)
+{
+    wrapGstAggregatorClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstVideoAggregator (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstVideoAggregatorClass(my_GstVideoAggregatorClass_t* class)
+{
+    unwrapGstAggregatorClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstVideoAggregator (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstVideoAggregatorClass(my_GstVideoAggregatorClass_t* class)
+{
+    bridgeGstAggregatorClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstVideoAggregator (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstPadClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstPad, linked, void, (void* pad, void* peer), "pp", pad, peer);
+WRAPPER(GstPad, unlinked, void, (void* pad, void* peer), "pp", pad, peer);
+
+#define SUPERGO()               \
+    GO(linked, vFpp);           \
+    GO(unlinked, vFpp);         \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstPadClass(my_GstPadClass_t* class)
+{
+    wrapGstObjectClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstPad (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstPadClass(my_GstPadClass_t* class)
+{
+    unwrapGstObjectClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstPad (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstPadClass(my_GstPadClass_t* class)
+{
+    bridgeGstObjectClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstPad (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstAggregatorPadClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstAggregatorPad, flush, int, (void* aggpad, void* aggregator), "pp", aggpad, aggregator);
+WRAPPER(GstAggregatorPad, skip_buffer, int, (void* aggpad, void* aggregator, void* buffer), "ppp", aggpad, aggregator, buffer);
+
+#define SUPERGO()                       \
+    GO(flush, iFpp);                    \
+    GO(skip_buffer, iFppp);             \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstAggregatorPadClass(my_GstAggregatorPadClass_t* class)
+{
+    wrapGstPadClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstAggregatorPad (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstAggregatorPadClass(my_GstAggregatorPadClass_t* class)
+{
+    unwrapGstPadClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstAggregatorPad (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstAggregatorPadClass(my_GstAggregatorPadClass_t* class)
+{
+    bridgeGstPadClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstAggregatorPad (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstVideoAggregatorPadClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstVideoAggregatorPad, update_conversion_info, void, (void* pad), "p", pad);
+WRAPPER(GstVideoAggregatorPad, prepare_frame, int, (void* pad, void* vagg, void* buffer, void* prepared_frame), "pppp", pad, vagg, buffer, prepared_frame);
+WRAPPER(GstVideoAggregatorPad, clean_frame, void, (void* pad, void* vagg, void* prepared_frame), "ppp", pad, vagg, prepared_frame);
+WRAPPER(GstVideoAggregatorPad, prepare_frame_start, void, (void* pad, void* vagg, void* buffer, void* prepared_frame), "pppp", pad, vagg, buffer, prepared_frame);
+WRAPPER(GstVideoAggregatorPad, prepare_frame_finish, void, (void* pad, void* vagg, void* prepared_frame), "ppp", pad, vagg, prepared_frame);
+
+#define SUPERGO()                       \
+    GO(update_conversion_info, vFp);    \
+    GO(prepare_frame, iFpppp);          \
+    GO(clean_frame, vFppp);             \
+    GO(prepare_frame_start, vFpppp);    \
+    GO(prepare_frame_finish, vFppp);    \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstVideoAggregatorPadClass(my_GstVideoAggregatorPadClass_t* class)
+{
+    wrapGstAggregatorPadClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstVideoAggregatorPad (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstVideoAggregatorPadClass(my_GstVideoAggregatorPadClass_t* class)
+{
+    unwrapGstAggregatorPadClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstVideoAggregatorPad (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstVideoAggregatorPadClass(my_GstVideoAggregatorPadClass_t* class)
+{
+    bridgeGstAggregatorPadClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstVideoAggregatorPad (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstBaseSrcClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstBaseSrc, get_caps, void*, (void* src, void* filter), "pp", src, filter);
+WRAPPER(GstBaseSrc, negotiate, int, (void* src), "p", src);
+WRAPPER(GstBaseSrc, fixate, void*, (void* src, void* caps), "pp", src, caps);
+WRAPPER(GstBaseSrc, set_caps, int, (void* src, void* caps), "pp", src, caps);
+WRAPPER(GstBaseSrc, decide_allocation, int, (void* src, void* query), "pp", src, query);
+WRAPPER(GstBaseSrc, start, int, (void* src), "p", src);
+WRAPPER(GstBaseSrc, stop, int, (void* src), "p", src);
+WRAPPER(GstBaseSrc, get_times, void , (void* src, void* buffer, void* start, void* end), "pppp", src, buffer, start, end);
+WRAPPER(GstBaseSrc, get_size, int, (void* src, void* size), "pp", src, size);
+WRAPPER(GstBaseSrc, is_seekable, int, (void* src), "p", src);
+WRAPPER(GstBaseSrc, prepare_seek_segment, int, (void* src, void* seek, void* segment), "ppp", src, seek, segment);
+WRAPPER(GstBaseSrc, do_seek, int, (void* src, void* segment), "pp", src, segment);
+WRAPPER(GstBaseSrc, unlock, int, (void* src), "p", src);
+WRAPPER(GstBaseSrc, unlock_stop, int, (void* src), "p", src);
+WRAPPER(GstBaseSrc, query, int, (void* src, void* query), "pp", src, query);
+WRAPPER(GstBaseSrc, event, int, (void* src, void* event), "pp", src, event);
+WRAPPER(GstBaseSrc, create, int, (void* src, uint64_t offset, uint32_t size, void* buf), "pUup", src, offset, size, buf);
+WRAPPER(GstBaseSrc, alloc, int, (void* src, uint64_t offset, uint32_t size, void* buf), "pUup", src, offset, size, buf);
+WRAPPER(GstBaseSrc, fill, int, (void* src, uint64_t offset, uint32_t size, void* buf), "pUup", src, offset, size, buf);
+
+#define SUPERGO()                       \
+    GO(get_caps, pFpp);                 \
+    GO(negotiate, iFp);                 \
+    GO(fixate, pFpp);                   \
+    GO(set_caps, iFpp);                 \
+    GO(decide_allocation, iFpp);        \
+    GO(start, iFp);                     \
+    GO(stop, iFp);                      \
+    GO(get_times, vFpppp);              \
+    GO(get_size, iFpp);                 \
+    GO(is_seekable, iFp);               \
+    GO(prepare_seek_segment, iFppp);    \
+    GO(do_seek, iFpp);                  \
+    GO(unlock, iFp);                    \
+    GO(unlock_stop, iFp);               \
+    GO(query, iFpp);                    \
+    GO(event, iFpp);                    \
+    GO(create, iFpUup);                 \
+    GO(alloc, iFpUup);                  \
+    GO(fill, iFpUup);                   \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstBaseSrcClass(my_GstBaseSrcClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstBaseSrc (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstBaseSrcClass(my_GstBaseSrcClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstBaseSrc (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstBaseSrcClass(my_GstBaseSrcClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstBaseSrc (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstPushSrcClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstPushSrc, create, int, (void* src, void* buf), "pp", src, buf);
+WRAPPER(GstPushSrc, alloc, int, (void* src, void* buf), "pp", src, buf);
+WRAPPER(GstPushSrc, fill, int, (void* src, void* buf), "pp", src, buf);
+
+#define SUPERGO()               \
+    GO(create, iFpp);           \
+    GO(alloc, iFpp);            \
+    GO(fill, iFpp);             \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstPushSrcClass(my_GstPushSrcClass_t* class)
+{
+    wrapGstBaseSrcClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstPushSrc (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstPushSrcClass(my_GstPushSrcClass_t* class)
+{
+    unwrapGstBaseSrcClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstPushSrc (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstPushSrcClass(my_GstPushSrcClass_t* class)
+{
+    bridgeGstBaseSrcClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstPushSrc (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstGLBaseSrcClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstGLBaseSrc, gl_start, int, (void* src), "p", src);
+WRAPPER(GstGLBaseSrc, gl_stop, void, (void* src), "p", src);
+WRAPPER(GstGLBaseSrc, fill_gl_memory, int, (void* src, void* mem), "pp", src, mem);
+
+#define SUPERGO()               \
+    GO(gl_start, iFp);          \
+    GO(gl_stop, vFp);           \
+    GO(fill_gl_memory, iFpp);   \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstGLBaseSrcClass(my_GstGLBaseSrcClass_t* class)
+{
+    wrapGstPushSrcClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstGLBaseSrc (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstGLBaseSrcClass(my_GstGLBaseSrcClass_t* class)
+{
+    unwrapGstPushSrcClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstGLBaseSrc (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstGLBaseSrcClass(my_GstGLBaseSrcClass_t* class)
+{
+    bridgeGstPushSrcClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstGLBaseSrc (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstAudioDecoderClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstAudioDecoder, start, int,(void* dec), "p", dec);
+WRAPPER(GstAudioDecoder, stop, int,(void* dec), "p", dec);
+WRAPPER(GstAudioDecoder, set_format, int,(void* dec, void* caps), "pp", dec, caps);
+WRAPPER(GstAudioDecoder, parse, int,(void* dec, void* adapter, void* offset, void* length), "pppp", dec, adapter, offset, length);
+WRAPPER(GstAudioDecoder, handle_frame, int,(void* dec, void* buffer), "pp", dec, buffer);
+WRAPPER(GstAudioDecoder, flush, void ,(void* dec, int hard), "pi", dec, hard);
+WRAPPER(GstAudioDecoder, pre_push, int,(void* dec, void* buffer), "pp", dec, buffer);
+WRAPPER(GstAudioDecoder, sink_event, int,(void* dec, void* event), "pp", dec, event);
+WRAPPER(GstAudioDecoder, src_event, int,(void* dec, void* event), "pp", dec, event);
+WRAPPER(GstAudioDecoder, open, int,(void* dec), "p", dec);
+WRAPPER(GstAudioDecoder, close, int,(void* dec), "p", dec);
+WRAPPER(GstAudioDecoder, negotiate, int,(void* dec), "p", dec);
+WRAPPER(GstAudioDecoder, decide_allocation, int,(void* dec, void* query), "pp", dec, query);
+WRAPPER(GstAudioDecoder, propose_allocation, int,(void* dec, void* query), "pp", dec, query);
+WRAPPER(GstAudioDecoder, sink_query, int,(void* dec, void* query), "pp", dec, query);
+WRAPPER(GstAudioDecoder, src_query, int,(void* dec, void* query), "pp", dec, query);
+WRAPPER(GstAudioDecoder, getcaps, void*,(void* dec, void*  filter), "pp", dec, filter);
+WRAPPER(GstAudioDecoder, transform_meta, int,(void* enc, void* outbuf, void* meta, void* inbuf), "pppp", enc, outbuf, meta, inbuf);
+
+#define SUPERGO()                       \
+    GO(start, iFp);                     \
+    GO(stop, iFp);                      \
+    GO(set_format, iFpp);               \
+    GO(parse, iFpppp);                  \
+    GO(handle_frame, iFpp);             \
+    GO(flush, vFpi);                    \
+    GO(pre_push, iFpp);                 \
+    GO(sink_event, iFpp);               \
+    GO(src_event, iFpp);                \
+    GO(open, iFp);                      \
+    GO(close, iFp);                     \
+    GO(negotiate, iFp);                 \
+    GO(decide_allocation, iFpp);        \
+    GO(propose_allocation, iFpp);       \
+    GO(sink_query, iFpp);               \
+    GO(src_query, iFpp);                \
+    GO(getcaps, vFpp);                  \
+    GO(transform_meta, iFpppp);         \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstAudioDecoderClass(my_GstAudioDecoderClass_t* class)
+{
+    wrapGstElementClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstAudioDecoder (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstAudioDecoderClass(my_GstAudioDecoderClass_t* class)
+{
+    unwrapGstElementClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstAudioDecoder (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstAudioDecoderClass(my_GstAudioDecoderClass_t* class)
+{
+    bridgeGstElementClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstAudioDecoder (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
+// ----- GstVideoFilterClass ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstVideoFilter, set_info, int, (void* filter, void* incaps, void* in_info, void* outcaps, void* out_info), "ppppp", filter, incaps, in_info, outcaps, out_info);
+WRAPPER(GstVideoFilter, transform_frame, int, (void* filter, void* inframe, void* outframe), "ppp", filter, inframe, outframe);
+WRAPPER(GstVideoFilter, transform_frame_ip, int, (void* filter, void* frame), "pp", filter, frame);
+
+#define SUPERGO()                       \
+    GO(set_info, iFppppp);              \
+    GO(transform_frame, iFppp);         \
+    GO(transform_frame_ip, iFpp);       \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstVideoFilterClass(my_GstVideoFilterClass_t* class)
+{
+    wrapGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W) class->A = reverse_##A##_GstVideoFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstVideoFilterClass(my_GstVideoFilterClass_t* class)
+{
+    unwrapGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W)   class->A = find_##A##_GstVideoFilter (class->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstVideoFilterClass(my_GstVideoFilterClass_t* class)
+{
+    bridgeGstBaseTransformClass(&class->parent_class);
+    #define GO(A, W) autobridge_##A##_GstVideoFilter (W, class->A)
+    SUPERGO()
+    #undef GO
+}
+#undef SUPERGO
 // ----- GDBusProxyClass ------
 // wrapper x86 -> natives of callbacks
 WRAPPER(GDBusProxy, g_properties_changed, void, (void* proxy, void* changed_properties, const char* const* invalidated_properties), "ppp", proxy, changed_properties, invalidated_properties);
@@ -2475,16 +3565,77 @@ static void bridgeGDBusProxyClass(my_GDBusProxyClass_t* class)
 }
 
 #undef SUPERGO
+// ----- GstURIHandlerInterface ------
+// wrapper x86 -> natives of callbacks
+WRAPPER(GstURIHandler,get_type, int, (size_t type), "L", type);
+WRAPPER(GstURIHandler,get_protocols, void*, (size_t type), "L", type);
+WRAPPER(GstURIHandler,get_uri, void*, (void* handler), "p", handler);
+WRAPPER(GstURIHandler,set_uri, int, (void* handler, void* uri, void* error), "ppp", handler, uri, error);
+
+#define SUPERGO()                       \
+    GO(get_type, iFL);                  \
+    GO(get_protocols, pFL);             \
+    GO(get_uri, pFp);                   \
+    GO(set_uri, iFppp);                 \
+
+// wrap (so bridge all calls, just in case)
+static void wrapGstURIHandlerInterface(my_GstURIHandlerInterface_t* iface)
+{
+    // parent don't need wrazpping
+    #define GO(A, W) iface->A = reverse_##A##_GstURIHandler (W, iface->A)
+    SUPERGO()
+    #undef GO
+}
+// unwrap (and use callback if not a native call anymore)
+static void unwrapGstURIHandlerInterface(my_GstURIHandlerInterface_t* iface)
+{
+    // parent don't need wrazpping
+    #define GO(A, W)   iface->A = find_##A##_GstURIHandler (iface->A)
+    SUPERGO()
+    #undef GO
+}
+// autobridge
+static void bridgeGstURIHandlerInterface(my_GstURIHandlerInterface_t* iface)
+{
+    // parent don't need wrazpping
+    #define GO(A, W) autobridge_##A##_GstURIHandler (W, iface->A)
+    SUPERGO()
+    #undef GO
+}
 
+#undef SUPERGO
 // No more wrap/unwrap
 #undef WRAPPER
 #undef FIND
 #undef REVERSE
 #undef WRAPPED
 
+// a class to collection of custom defined class...
+void addRegisteredClass(size_t klass, char* name)
+{
+    if(!klass)
+        return;
+    if(!my_customclass) {
+        my_customclass = kh_init(customclass);
+    }
+    khint_t k;
+    int ret;
+    k = kh_put(customclass, my_customclass, klass, &ret);
+    kh_value(my_customclass, k) = strdup(name);
+}
+
+int checkRegisteredClass(size_t klass)
+{
+    if(!my_customclass)
+        return 0;
+    khint_t k = kh_get(customclass, my_customclass, klass);
+    return (k==kh_end(my_customclass))?0:1;
+}
+
 // g_type_class_peek_parent
 static void wrapGTKClass(void* cl, size_t type)
 {
+    #define GTKIFACE(A)
     #define GTKCLASS(A)                             \
     if(type==my_##A)                                \
         wrap##A##Class((my_##A##Class_t*)cl);       \
@@ -2498,13 +3649,15 @@ static void wrapGTKClass(void* cl, size_t type)
             my_MetaFrames2 = type;
             wrapMetaFrames2Class((my_MetaFrames2Class_t*)cl);
         } else
-            printf_log(LOG_NONE, "Warning, Custom Class initializer with unknown class type %zd (%s)\n", type, g_type_name(type));
+            printf_log(LOG_NONE, "Warning, Custom Class initializer with unknown class type 0w%zx (%s)\n", type, g_type_name(type));
     }
     #undef GTKCLASS
+    #undef GTKIFACE
 }
 
 static void unwrapGTKClass(void* cl, size_t type)
 {
+    #define GTKIFACE(A)
     #define GTKCLASS(A)                             \
     if(type==my_##A)                                \
         unwrap##A##Class((my_##A##Class_t*)cl);     \
@@ -2516,10 +3669,12 @@ static void unwrapGTKClass(void* cl, size_t type)
     else
     {}  // else no warning, one is enough...
     #undef GTKCLASS
+    #undef GTKIFACE
 }
 
 static void bridgeGTKClass(void* cl, size_t type)
 {
+    #define GTKIFACE(A)
     #define GTKCLASS(A)                             \
     if(type==my_##A)                                \
         bridge##A##Class((my_##A##Class_t*)cl);     \
@@ -2529,15 +3684,70 @@ static void bridgeGTKClass(void* cl, size_t type)
     GTKCLASSES()
     if(type==8) {}  // GInterface have no structure
     else {
-        printf_log(LOG_NONE, "Warning, AutoBridge GTK Class with unknown class type %zd (%s)\n", type, g_type_name(type));
+        printf_log(LOG_NONE, "Warning, AutoBridge GTK Class with unknown class type 0w%zx (%s)\n", type, g_type_name(type));
     }
     #undef GTKCLASS
+    #undef GTKIFACE
 }
 
+static void wrapGTKInterface(void* cl, size_t type)
+{
+    #define GTKCLASS(A)
+    #define GTKIFACE(A)                                 \
+    if(type==my_##A)                                    \
+        wrap##A##Interface((my_##A##Interface_t*)cl);   \
+    else
+
+    printf_log(LOG_DEBUG, "wrapGTKInterface(%p, %zd (%s))\n", cl, type, g_type_name(type));
+    GTKCLASSES()
+    if(type==8) {}  // GInterface have no structure
+    else {
+        printf_log(LOG_NONE, "Warning, Custom Interface initializer with unknown class type 0x%zx (%s)\n", type, g_type_name(type));
+    }
+    #undef GTKIFACE
+    #undef GTKCLASS
+}
+
+void unwrapGTKInterface(void* cl, size_t type)
+{
+    #define GTKCLASS(A)
+    #define GTKIFACE(A)                                 \
+    if(type==my_##A)                                    \
+        unwrap##A##Interface((my_##A##Interface_t*)cl); \
+    else
+
+    printf_log(LOG_DEBUG, "unwrapGTKInterface(%p, %zd (%s))\n", cl, type, g_type_name(type));
+    GTKCLASSES()
+    if(type==8) {}  // GInterface have no structure
+    else
+    {}  // else no warning, one is enough...
+    #undef GTKIFACE
+    #undef GTKCLASS
+}
+
+static void bridgeGTKInterface(void* cl, size_t type)
+{
+    #define GTKCLASS(A)
+    #define GTKIFACE(A)                                 \
+    if(type==my_##A)                                    \
+        bridge##A##Interface((my_##A##Interface_t*)cl); \
+    else
+
+    printf_log(LOG_DEBUG, "bridgeGTKInterface(%p, %zd (%s))\n", cl, type, g_type_name(type));
+    GTKCLASSES()
+    if(type==8) {}  // GInterface have no structure
+    else {
+        printf_log(LOG_NONE, "Warning, AutoBridge GTK Interface with unknown class type 0x%zx (%s)\n", type, g_type_name(type));
+    }
+    #undef GTKCLASS
+    #undef GTKIFACE
+}
 
 typedef union my_GClassAll_s {
     #define GTKCLASS(A) my_##A##Class_t A;
+    #define GTKIFACE(A) my_##A##Interface_t A;
     GTKCLASSES()
+    #undef GTKIFACE
     #undef GTKCLASS
 } my_GClassAll_t;
 
@@ -2551,19 +3761,23 @@ SUPER()
 void* unwrapCopyGTKClass(void* klass, size_t type)
 {
     if(!klass) return klass;
+    if(checkRegisteredClass(type))
+        return klass;
     #define GO(A) if(klass == my_gclassall_ref_##A) return &my_gclassall_##A;
     SUPER()
     #undef GO
     // check if class is the exact type we know
     size_t sz = 0;
+    #define GTKIFACE(A)
     #define GTKCLASS(A) if(type==my_##A) sz = sizeof(my_##A##Class_t); else
     GTKCLASSES()
     if(type==8) {}  // GInterface have no structure
     else {
-        printf_log(LOG_NONE, "Warning, unwrapCopyGTKClass called with unknown class type %zu (%s)\n", type, g_type_name(type));
+        printf_log(LOG_NONE, "Warning, unwrapCopyGTKClass called with unknown class type 0x%zx (%s)\n", type, g_type_name(type));
         return klass;
     }
     #undef GTKCLASS
+    #undef GTKIFACE
     my_GClassAll_t *newklass = NULL;
     #define GO(A) if(!newklass && !my_gclassall_ref_##A) {my_gclassall_ref_##A = klass; newklass = &my_gclassall_##A;}
     SUPER()
@@ -2577,6 +3791,39 @@ void* unwrapCopyGTKClass(void* klass, size_t type)
     return newklass;
 }
 
+void* unwrapCopyGTKInterface(void* iface, size_t type)
+{
+    if(!iface) return iface;
+    if(checkRegisteredClass(type))
+        return iface;
+    #define GO(A) if(iface == my_gclassall_ref_##A) return &my_gclassall_##A;
+    SUPER()
+    #undef GO
+    // check if class is the exact type we know
+    size_t sz = 0;
+    #define GTKIFACE(A) if(type==my_##A) sz = sizeof(my_##A##Interface_t); else
+    #define GTKCLASS(A)
+    GTKCLASSES()
+    if(type==8) {}  // GInterface have no structure
+    else {
+        printf_log(LOG_NONE, "Warning, unwrapCopyGTKInterface called with unknown class type 0x%zx (%s)\n", type, g_type_name(type));
+        return iface;
+    }
+    #undef GTKCLASS
+    #undef GTKIFACE
+    my_GClassAll_t *newiface = NULL;
+    #define GO(A) if(!newiface && !my_gclassall_ref_##A) {my_gclassall_ref_##A = iface; newiface = &my_gclassall_##A;}
+    SUPER()
+    #undef GO
+    if(!newiface) {
+        printf_log(LOG_NONE, "Warning: no more slot for unwrapCopyGTKInterface\n");
+        return iface;
+    }
+    memcpy(newiface, iface, sz);
+    unwrapGTKInterface(newiface, type);
+    return newiface;
+}
+
 // gtk_type_class
 
 #define GO(A) \
@@ -2588,12 +3835,15 @@ SUPER()
 void* wrapCopyGTKClass(void* klass, size_t type)
 {
     if(!klass) return klass;
+    while(checkRegisteredClass(type))
+        type = g_type_parent(type);
     printf_log(LOG_DEBUG, "wrapCopyGTKClass(%p, %zd (%s))\n", klass, type, g_type_name(type));
     #define GO(A) if(klass == my_gclassallu_ref_##A) return &my_gclassallu_##A;
     SUPER()
     #undef GO
     // check if class is the exact type we know
     int sz = 0;
+    #define GTKIFACE(A)
     #define GTKCLASS(A) if(type==my_##A) sz = sizeof(my_##A##Class_t); else
     GTKCLASSES()
     if(type==8) {}  // GInterface have no structure
@@ -2606,21 +3856,41 @@ void* wrapCopyGTKClass(void* klass, size_t type)
             return klass;
         }
     }
+    #undef GTKIFACE
     #undef GTKCLASS
-    my_GClassAll_t *newklass = NULL;
-    #define GO(A) if(!newklass && !my_gclassallu_ref_##A) {my_gclassallu_ref_##A = klass; newklass = &my_gclassallu_##A;}
+    bridgeGTKClass(klass, type);
+    return klass;
+}
+
+void* wrapCopyGTKInterface(void* iface, size_t type)
+{
+    if(!iface) return iface;
+    while(checkRegisteredClass(type))
+        type = g_type_parent(type);
+    printf_log(LOG_DEBUG, "wrapCopyGTKInterface(%p, %zd (%s))\n", iface, type, g_type_name(type));
+    #define GO(A) if(iface == my_gclassallu_ref_##A) return &my_gclassallu_##A;
     SUPER()
     #undef GO
-    if(!newklass) {
-        printf_log(LOG_NONE, "Warning: no more slot for wrapCopyGTKClass\n");
-        return klass;
+    // check if class is the exact type we know
+    int sz = 0;
+    #define GTKIFACE(A) if(type==my_##A) sz = sizeof(my_##A##Interface_t); else
+    #define GTKCLASS(A)
+    GTKCLASSES()
+    if(type==8) {}  // GInterface have no structure
+    else {
+        if(my_MetaFrames2==-1 && !strcmp(g_type_name(type), "MetaFrames")) {
+            my_MetaFrames2 = type;
+            sz = sizeof(my_MetaFrames2Class_t);
+        } else {
+            printf_log(LOG_NONE, "Warning, wrapCopyGTKInterface called with unknown class type 0x%zx (%s)\n", type, g_type_name(type));
+            return iface;
+        }
     }
-    memcpy(newklass, klass, sz);
-    //wrapGTKClass(newklass, type);
-    bridgeGTKClass(newklass, type);
-    return newklass;
+    #undef GTKIFACE
+    #undef GTKCLASS
+    bridgeGTKInterface(iface, type);
+    return iface;
 }
-
 // ---- GTypeValueTable ----
 
 // First the structure GTypeInfo statics, with paired x64 source pointer
@@ -3038,13 +4308,16 @@ static int my_class_init_##A(void* a, void* b)                              \
 {                                                                           \
     printf_log(LOG_DEBUG, "Custom Class init %d for class %p (parent=%p:%s)\n", A, a, (void*)parent_class_init_##A, g_type_name(parent_class_init_##A));\
     int ret = RunFunctionFmt(my_class_init_fct_##A, "pp", a, b);\
-    unwrapGTKClass(a, parent_class_init_##A);                               \
-    bridgeGTKClass(a, parent_class_init_##A);                               \
+    size_t type = parent_class_init_##A;                                    \
+    while(checkRegisteredClass(type))                                       \
+        type = g_type_parent(type);                                         \
+    unwrapGTKClass(a, type);                                                \
+    bridgeGTKClass(a, type);                                                \
     my_unwrap_signal_offset(a);                                             \
-    if(!strcmp(g_type_name(parent_class_init_##A), "AtkUtil")) {            \
-        my_AtkUtilClass_t* p = (my_AtkUtilClass_t*)g_type_class_peek(parent_class_init_##A);\
-        unwrapGTKClass(p, parent_class_init_##A);                           \
-        bridgeGTKClass(p, parent_class_init_##A);                           \
+    if(!strcmp(g_type_name(type), "AtkUtil")) {                             \
+        my_AtkUtilClass_t* p = (my_AtkUtilClass_t*)g_type_class_peek(type);\
+        unwrapGTKClass(p, type);                                            \
+        bridgeGTKClass(p, type);                                            \
     }                                                                       \
     return ret;                                                             \
 }
@@ -3232,12 +4505,15 @@ void Set##A##ID(size_t id)      \
 {                               \
     my_##A = id;                \
 }
+#define GTKIFACE(A)  GTKCLASS(A)
 GTKCLASSES()
+#undef GTKIFACE
 #undef GTKCLASS
 
 void AutoBridgeGtk(void*(*ref)(size_t), void(*unref)(void*))
 {
     void* p;
+    #define GTKIFACE(A)
     #define GTKCLASS(A)             \
     if(my_##A && my_##A!=-1) {      \
         p = ref(my_##A);            \
@@ -3245,6 +4521,7 @@ void AutoBridgeGtk(void*(*ref)(size_t), void(*unref)(void*))
         unref(p);                   \
     }
     GTKCLASSES()
+    #undef GTKIFACE
     #undef GTKCLASS
 }
 
@@ -3258,6 +4535,11 @@ void SetGClassPeek(void* f)
     g_type_class_peek = f;
 }
 
+void SetGTypeParent(void* f)
+{
+    g_type_parent = f;
+}
+
 my_signal_t* new_mysignal(void* f, void* data, void* destroy)
 {
     my_signal_t* sig = (my_signal_t*)box_calloc(1, sizeof(my_signal_t));
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 034e575e..b3bd60c6 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -99,6 +99,7 @@
 #() pFL
 #() pFp
 #() pFV
+#() pFA
 #() HFi
 #() HFp
 #() xFx
@@ -204,6 +205,7 @@
 #() IFpi
 #() IFpu
 #() IFpd
+#() IFpp
 #() CFip
 #() CFCi
 #() CFui
@@ -423,6 +425,7 @@
 #() vFppl
 #() vFppL
 #() vFppp
+#() vFppV
 #() cFpdp
 #() wFppp
 #() iFEiw
@@ -566,6 +569,7 @@
 #() uFppi
 #() uFppu
 #() uFppp
+#() UFUii
 #() UFUUU
 #() UFpiU
 #() UFppi
@@ -641,7 +645,6 @@
 #() pFuip
 #() pFuui
 #() pFuuu
-#() pFuup
 #() pFulu
 #() pFulp
 #() pFupi
@@ -651,6 +654,7 @@
 #() pFupp
 #() pFdip
 #() pFdUU
+#() pFddi
 #() pFddd
 #() pFDip
 #() pFlpi
@@ -675,6 +679,7 @@
 #() pFpuL
 #() pFpup
 #() pFpUi
+#() pFpUu
 #() pFpUp
 #() pFpdu
 #() pFpdd
@@ -694,6 +699,7 @@
 #() pFppl
 #() pFppL
 #() pFppp
+#() pFppA
 #() pFpOM
 #() pFSpl
 #() vWpup
@@ -1113,6 +1119,7 @@
 #() LFpppL
 #() LFpppp
 #() pFEipp
+#() pFEuup
 #() pFEupp
 #() pFELpV
 #() pFELpA
@@ -1157,6 +1164,7 @@
 #() pFpiLL
 #() pFpipi
 #() pFpipd
+#() pFpipL
 #() pFpipp
 #() pFpCip
 #() pFpCWp
@@ -1175,6 +1183,7 @@
 #() pFpupu
 #() pFpupp
 #() pFpdIU
+#() pFpddi
 #() pFplil
 #() pFplip
 #() pFplpl
@@ -1615,6 +1624,8 @@
 #() pFEpppi
 #() pFEpppu
 #() pFEpppp
+#() pFEpppV
+#() pFEpppA
 #() pFiiiii
 #() pFiiipL
 #() pFipipL
@@ -1627,15 +1638,18 @@
 #() pFudddp
 #() pFupLpl
 #() pFupLpL
+#() pFddddi
 #() pFLuppp
 #() pFLpppi
 #() pFpiiii
 #() pFpiiip
 #() pFpiiuu
 #() pFpiipi
+#() pFpiipL
 #() pFpiipp
 #() pFpiCCC
 #() pFpiuuu
+#() pFpiuup
 #() pFpiupp
 #() pFpiLip
 #() pFpipip
@@ -1663,6 +1677,7 @@
 #() pFpLLLp
 #() pFpLpii
 #() pFpLpip
+#() pFpLpup
 #() pFppiii
 #() pFppiiu
 #() pFppiip
@@ -1896,6 +1911,7 @@
 #() iFpipipi
 #() iFpipipp
 #() iFpipupp
+#() iFpipLpp
 #() iFpippip
 #() iFpippup
 #() iFpipppL
@@ -2009,6 +2025,7 @@
 #() lFpppLpp
 #() LFEupppp
 #() LFELpppi
+#() LFEpippp
 #() LFEppppi
 #() LFpipipi
 #() LFpLippp
@@ -2021,6 +2038,7 @@
 #() pFEpuupp
 #() pFEpuppp
 #() pFEpLLiN
+#() pFEppupi
 #() pFEppLLp
 #() pFEpppLp
 #() pFEppppi
@@ -2031,16 +2049,19 @@
 #() pFiiiiid
 #() pFipippp
 #() pFWCiWCi
+#() pFuCCCCp
 #() pFuuipip
 #() pFuuuiip
 #() pFuuuuii
 #() pFuuuuuu
 #() pFuuuuup
 #() pFuuppuu
+#() pFuppppp
 #() pFdddddd
 #() pFpiiiiu
 #() pFpiiipp
 #() pFpiiCCC
+#() pFpiiuup
 #() pFpiUUUU
 #() pFpipipp
 #() pFpippip
@@ -2048,6 +2069,7 @@
 #() pFpCuuCC
 #() pFpCuuWW
 #() pFpCuuup
+#() pFpuiiip
 #() pFpuuwwu
 #() pFpuuuuu
 #() pFpuuupu
@@ -2304,6 +2326,7 @@
 #() pFEppppip
 #() pFEpppppi
 #() pFifffppp
+#() pFWpppppp
 #() pFuuuiiip
 #() pFuupupup
 #() pFfiiiiid
@@ -2319,6 +2342,7 @@
 #() pFpWppWpp
 #() pFpuuuwwu
 #() pFpuupwwC
+#() pFpuLpipp
 #() pFpupiipp
 #() pFpuppipp
 #() pFplppppp
@@ -2346,6 +2370,7 @@
 #() pFpppuipp
 #() pFpppuuui
 #() pFpppuupp
+#() pFpppupii
 #() pFpppupup
 #() pFpppuppp
 #() pFpppfffi
@@ -2368,6 +2393,7 @@
 #() vFEiupippp
 #() vFEipAippp
 #() vFEppipppp
+#() vFEppLippp
 #() vFEpppippp
 #() vFEpppuipV
 #() vFEpppppuu
@@ -2498,6 +2524,7 @@
 #() LFEpiupppp
 #() LFpLpuuLLu
 #() pFEiplllpp
+#() pFEipLLLpp
 #() pFEpiuCppp
 #() pFEppLiiip
 #() pFEpppuipV
@@ -2507,8 +2534,10 @@
 #() pFiippipip
 #() pFiupppppp
 #() pFuiiiuuuu
+#() pFuCCCCpWw
 #() pFuupupipp
 #() pFpiiiiiuu
+#() pFpiiuuupp
 #() pFpiUdiiUi
 #() pFpipiiiip
 #() pFpCCuuwwC
@@ -2594,6 +2623,7 @@
 #() vFppppipiip
 #() vFpppppippp
 #() iFEpiiiiipi
+#() iFEppuppppp
 #() iFEpppipppp
 #() iFEppplPPPP
 #() iFEpppppupp
@@ -2602,6 +2632,7 @@
 #() iFiiiipiiip
 #() iFipiipippi
 #() iFdddpppppp
+#() iFpipippppi
 #() iFpipLpiiip
 #() iFpuuuuuuuu
 #() iFpuuuuduup
@@ -2759,6 +2790,7 @@
 #() vFppupipiuuuu
 #() vFppupppuiiii
 #() vFppppppppppp
+#() iFEiipppppppp
 #() iFEpppipppppp
 #() iFEppppiiiiuu
 #() iFEpppppppppp
@@ -3222,6 +3254,8 @@ wrappedgio2:
   - g_async_initable_new_valist_async
 - vFppipppp:
   - g_dbus_connection_new
+- vFppLippp:
+  - g_input_stream_read_async
 - vFpppuipV:
   - g_simple_async_report_error_in_idle
 - uFipipppp:
@@ -3314,6 +3348,7 @@ wrappedglib2:
   - g_option_group_set_parse_hooks
   - g_ptr_array_foreach
   - g_ptr_array_sort_with_data
+  - g_queue_foreach
   - g_static_private_set
 - vFppV:
   - g_string_append_printf
@@ -3344,11 +3379,13 @@ wrappedglib2:
   - g_list_insert_sorted
   - g_list_sort_with_data
   - g_node_copy_deep
+  - g_once_impl
   - g_queue_find_custom
   - g_slist_find_custom
   - g_slist_foreach
   - g_slist_insert_sorted
   - g_slist_sort_with_data
+  - g_thread_new
   - g_variant_new_va
 - pFppV:
   - g_build_path
@@ -3496,48 +3533,134 @@ wrappedgobject2:
 wrappedgomp:
 wrappedgssapi:
 wrappedgssapikrb5:
+wrappedgstallocators:
 wrappedgstapp:
 wrappedgstaudio:
 wrappedgstbase:
+- vFppp:
+  - gst_collect_pads_set_buffer_function
+  - gst_collect_pads_set_clip_function
+  - gst_collect_pads_set_event_function
+  - gst_collect_pads_set_function
+  - gst_collect_pads_set_query_function
+- pFppupi:
+  - gst_collect_pads_add_pad
+wrappedgstcheck:
+wrappedgstcontroller:
+wrappedgstfft:
 wrappedgstgl:
+- pFup:
+  - gst_gl_context_default_get_proc_address
+- vFppp:
+  - gst_gl_context_thread_add
+  - gst_gl_window_send_message
+- vFppV:
+  - gst_gl_insert_debug_marker
+- pFuup:
+  - gst_gl_context_get_proc_address_with_platform
+- vFpppp:
+  - gst_gl_window_set_close_callback
+  - gst_gl_window_set_draw_callback
+  - gst_gl_window_set_resize_callback
+- iFpppp:
+  - gst_gl_framebuffer_draw_to_texture
+- iFppppp:
+  - gst_gl_filter_render_to_target
+wrappedgstnet:
+wrappedgstpbutils:
 wrappedgstreamer:
+- pFA:
+  - gst_tag_list_new_valist
+- vFpp:
+  - gst_init
+- pFpp:
+  - gst_plugin_load_file
+- pFpV:
+  - _gst_element_error_printf
+  - gst_caps_features_new
+  - gst_make_element_message_details
+  - gst_tag_list_new
+- pFpA:
+  - gst_caps_features_new_valist
+- vFppp:
+  - gst_structure_filter_and_map_in_place
+  - gst_tag_list_foreach
 - vFppV:
   - gst_bin_add_many
   - gst_caps_set_simple
   - gst_structure_remove_fields
+  - gst_structure_set
 - vFppA:
   - gst_caps_set_simple_valist
   - gst_structure_remove_fields_valist
+  - gst_structure_set_valist
 - iFppp:
   - gst_caps_foreach
+  - gst_element_foreach_sink_pad
+  - gst_init_check
+  - gst_structure_foreach
 - iFppV:
   - gst_element_link_many
   - gst_structure_get
 - iFppA:
+  - gst_info_vasprintf
   - gst_structure_get_valist
 - uFppp:
   - gst_bus_add_watch
+- pFppp:
+  - gst_task_new
 - pFppV:
   - gst_caps_new_simple
   - gst_structure_new
+- pFppA:
+  - gst_structure_new_valist
+- vFpipV:
+  - gst_tag_list_add
+  - gst_tag_list_add_values
+- vFpipA:
+  - gst_tag_list_add_valist
+  - gst_tag_list_add_valist_values
 - vFpppp:
   - gst_bus_set_sync_handler
   - gst_mini_object_set_qdata
+  - gst_pad_set_activate_function_full
   - gst_pad_set_activatemode_function_full
   - gst_pad_set_chain_function_full
   - gst_pad_set_event_function_full
   - gst_pad_set_getrange_function_full
+  - gst_pad_set_link_function_full
   - gst_pad_set_query_function_full
+- iFpppp:
+  - gst_iterator_fold
+  - gst_pad_start_task
 - pFppip:
   - gst_registry_feature_filter
+- pFpppV:
+  - gst_pad_create_stream_id_printf
+- pFpppA:
+  - gst_pad_create_stream_id_printf_valist
 - uFpippp:
   - gst_bus_add_watch_full
+- LFpippp:
+  - gst_pad_add_probe
 - pFiplllpp:
   - gst_buffer_new_wrapped_full
+- pFipLLLpp:
+  - gst_memory_new_wrapped
+- pFpuLpipp:
+  - gst_util_array_binary_search
 - vFpippippV:
   - gst_debug_log
 - vFpippippA:
   - gst_debug_log_valist
+- iFppuppppp:
+  - gst_type_find_register
+- iFiipppppppp:
+  - gst_plugin_register_static
+wrappedgstriff:
+wrappedgstrtp:
+wrappedgstrtsp:
+wrappedgstsdp:
 wrappedgsttag:
 wrappedgstvideo:
 wrappedgthread2:
diff --git a/src/wrapped/generated/wrappedgio2types.h b/src/wrapped/generated/wrappedgio2types.h
index f2c5fe11..a9d5a6a0 100644
--- a/src/wrapped/generated/wrappedgio2types.h
+++ b/src/wrapped/generated/wrappedgio2types.h
@@ -29,6 +29,7 @@ typedef void (*vFiippppV_t)(int32_t, int32_t, void*, void*, void*, void*, ...);
 typedef void (*vFiupippp_t)(int32_t, uint32_t, void*, int32_t, void*, void*, void*);
 typedef void (*vFipAippp_t)(int32_t, void*, va_list, int32_t, void*, void*, void*);
 typedef void (*vFppipppp_t)(void*, void*, int32_t, void*, void*, void*, void*);
+typedef void (*vFppLippp_t)(void*, void*, uintptr_t, int32_t, void*, void*, void*);
 typedef void (*vFpppuipV_t)(void*, void*, void*, uint32_t, int32_t, void*, ...);
 typedef uint32_t (*uFipipppp_t)(int32_t, void*, int32_t, void*, void*, void*, void*);
 typedef uint32_t (*uFppipppp_t)(void*, void*, int32_t, void*, void*, void*, void*);
@@ -70,6 +71,7 @@ typedef void (*vFpppppppiippp_t)(void*, void*, void*, void*, void*, void*, void*
 	GO(g_async_initable_newv_async, vFiupippp_t) \
 	GO(g_async_initable_new_valist_async, vFipAippp_t) \
 	GO(g_dbus_connection_new, vFppipppp_t) \
+	GO(g_input_stream_read_async, vFppLippp_t) \
 	GO(g_simple_async_report_error_in_idle, vFpppuipV_t) \
 	GO(g_bus_watch_name, uFipipppp_t) \
 	GO(g_bus_own_name_on_connection, uFppipppp_t) \
diff --git a/src/wrapped/generated/wrappedglib2types.h b/src/wrapped/generated/wrappedglib2types.h
index fe5a9006..e806b7ff 100644
--- a/src/wrapped/generated/wrappedglib2types.h
+++ b/src/wrapped/generated/wrappedglib2types.h
@@ -111,6 +111,7 @@ typedef int32_t (*iFpppippppppp_t)(void*, void*, void*, int32_t, void*, void*, v
 	GO(g_option_group_set_parse_hooks, vFppp_t) \
 	GO(g_ptr_array_foreach, vFppp_t) \
 	GO(g_ptr_array_sort_with_data, vFppp_t) \
+	GO(g_queue_foreach, vFppp_t) \
 	GO(g_static_private_set, vFppp_t) \
 	GO(g_string_append_printf, vFppV_t) \
 	GO(g_string_printf, vFppV_t) \
@@ -133,11 +134,13 @@ typedef int32_t (*iFpppippppppp_t)(void*, void*, void*, int32_t, void*, void*, v
 	GO(g_list_insert_sorted, pFppp_t) \
 	GO(g_list_sort_with_data, pFppp_t) \
 	GO(g_node_copy_deep, pFppp_t) \
+	GO(g_once_impl, pFppp_t) \
 	GO(g_queue_find_custom, pFppp_t) \
 	GO(g_slist_find_custom, pFppp_t) \
 	GO(g_slist_foreach, pFppp_t) \
 	GO(g_slist_insert_sorted, pFppp_t) \
 	GO(g_slist_sort_with_data, pFppp_t) \
+	GO(g_thread_new, pFppp_t) \
 	GO(g_variant_new_va, pFppp_t) \
 	GO(g_build_path, pFppV_t) \
 	GO(g_log, vFpipV_t) \
diff --git a/src/wrapped/generated/wrappedgstallocatorsdefs.h b/src/wrapped/generated/wrappedgstallocatorsdefs.h
new file mode 100644
index 00000000..3f0366b6
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstallocatorsdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstallocatorsDEFS_H_
+#define __wrappedgstallocatorsDEFS_H_
+
+
+#endif // __wrappedgstallocatorsDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstallocatorstypes.h b/src/wrapped/generated/wrappedgstallocatorstypes.h
new file mode 100644
index 00000000..64e19372
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstallocatorstypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstallocatorsTYPES_H_
+#define __wrappedgstallocatorsTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstallocatorsTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstallocatorsundefs.h b/src/wrapped/generated/wrappedgstallocatorsundefs.h
new file mode 100644
index 00000000..00a94fa0
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstallocatorsundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstallocatorsUNDEFS_H_
+#define __wrappedgstallocatorsUNDEFS_H_
+
+
+#endif // __wrappedgstallocatorsUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstbasetypes.h b/src/wrapped/generated/wrappedgstbasetypes.h
index 46ac9086..bf7099ba 100644
--- a/src/wrapped/generated/wrappedgstbasetypes.h
+++ b/src/wrapped/generated/wrappedgstbasetypes.h
@@ -11,7 +11,15 @@
 #define ADDED_FUNCTIONS() 
 #endif
 
+typedef void (*vFppp_t)(void*, void*, void*);
+typedef void* (*pFppupi_t)(void*, void*, uint32_t, void*, int32_t);
 
-#define SUPER() ADDED_FUNCTIONS()
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(gst_collect_pads_set_buffer_function, vFppp_t) \
+	GO(gst_collect_pads_set_clip_function, vFppp_t) \
+	GO(gst_collect_pads_set_event_function, vFppp_t) \
+	GO(gst_collect_pads_set_function, vFppp_t) \
+	GO(gst_collect_pads_set_query_function, vFppp_t) \
+	GO(gst_collect_pads_add_pad, pFppupi_t)
 
 #endif // __wrappedgstbaseTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstcheckdefs.h b/src/wrapped/generated/wrappedgstcheckdefs.h
new file mode 100644
index 00000000..ba619ba4
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstcheckdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstcheckDEFS_H_
+#define __wrappedgstcheckDEFS_H_
+
+
+#endif // __wrappedgstcheckDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstchecktypes.h b/src/wrapped/generated/wrappedgstchecktypes.h
new file mode 100644
index 00000000..681e13c4
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstchecktypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstcheckTYPES_H_
+#define __wrappedgstcheckTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstcheckTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstcheckundefs.h b/src/wrapped/generated/wrappedgstcheckundefs.h
new file mode 100644
index 00000000..9d11182a
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstcheckundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstcheckUNDEFS_H_
+#define __wrappedgstcheckUNDEFS_H_
+
+
+#endif // __wrappedgstcheckUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstcontrollerdefs.h b/src/wrapped/generated/wrappedgstcontrollerdefs.h
new file mode 100644
index 00000000..6d228266
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstcontrollerdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstcontrollerDEFS_H_
+#define __wrappedgstcontrollerDEFS_H_
+
+
+#endif // __wrappedgstcontrollerDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstcontrollertypes.h b/src/wrapped/generated/wrappedgstcontrollertypes.h
new file mode 100644
index 00000000..47bda0c0
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstcontrollertypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstcontrollerTYPES_H_
+#define __wrappedgstcontrollerTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstcontrollerTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstcontrollerundefs.h b/src/wrapped/generated/wrappedgstcontrollerundefs.h
new file mode 100644
index 00000000..ea3e45cb
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstcontrollerundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstcontrollerUNDEFS_H_
+#define __wrappedgstcontrollerUNDEFS_H_
+
+
+#endif // __wrappedgstcontrollerUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstfftdefs.h b/src/wrapped/generated/wrappedgstfftdefs.h
new file mode 100644
index 00000000..f0d88904
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstfftdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstfftDEFS_H_
+#define __wrappedgstfftDEFS_H_
+
+
+#endif // __wrappedgstfftDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstffttypes.h b/src/wrapped/generated/wrappedgstffttypes.h
new file mode 100644
index 00000000..45e2b887
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstffttypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstfftTYPES_H_
+#define __wrappedgstfftTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstfftTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstfftundefs.h b/src/wrapped/generated/wrappedgstfftundefs.h
new file mode 100644
index 00000000..ade928e7
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstfftundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstfftUNDEFS_H_
+#define __wrappedgstfftUNDEFS_H_
+
+
+#endif // __wrappedgstfftUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstgltypes.h b/src/wrapped/generated/wrappedgstgltypes.h
index e5f7daf4..400d2a1a 100644
--- a/src/wrapped/generated/wrappedgstgltypes.h
+++ b/src/wrapped/generated/wrappedgstgltypes.h
@@ -11,7 +11,24 @@
 #define ADDED_FUNCTIONS() 
 #endif
 
+typedef void* (*pFup_t)(uint32_t, void*);
+typedef void (*vFppp_t)(void*, void*, void*);
+typedef void (*vFppV_t)(void*, void*, ...);
+typedef void* (*pFuup_t)(uint32_t, uint32_t, void*);
+typedef void (*vFpppp_t)(void*, void*, void*, void*);
+typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
+typedef int32_t (*iFppppp_t)(void*, void*, void*, void*, void*);
 
-#define SUPER() ADDED_FUNCTIONS()
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(gst_gl_context_default_get_proc_address, pFup_t) \
+	GO(gst_gl_context_thread_add, vFppp_t) \
+	GO(gst_gl_window_send_message, vFppp_t) \
+	GO(gst_gl_insert_debug_marker, vFppV_t) \
+	GO(gst_gl_context_get_proc_address_with_platform, pFuup_t) \
+	GO(gst_gl_window_set_close_callback, vFpppp_t) \
+	GO(gst_gl_window_set_draw_callback, vFpppp_t) \
+	GO(gst_gl_window_set_resize_callback, vFpppp_t) \
+	GO(gst_gl_framebuffer_draw_to_texture, iFpppp_t) \
+	GO(gst_gl_filter_render_to_target, iFppppp_t)
 
 #endif // __wrappedgstglTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstnetdefs.h b/src/wrapped/generated/wrappedgstnetdefs.h
new file mode 100644
index 00000000..109e75a6
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstnetdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstnetDEFS_H_
+#define __wrappedgstnetDEFS_H_
+
+
+#endif // __wrappedgstnetDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstnettypes.h b/src/wrapped/generated/wrappedgstnettypes.h
new file mode 100644
index 00000000..8416dbb2
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstnettypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstnetTYPES_H_
+#define __wrappedgstnetTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstnetTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstnetundefs.h b/src/wrapped/generated/wrappedgstnetundefs.h
new file mode 100644
index 00000000..82e0773c
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstnetundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstnetUNDEFS_H_
+#define __wrappedgstnetUNDEFS_H_
+
+
+#endif // __wrappedgstnetUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstpbutilsdefs.h b/src/wrapped/generated/wrappedgstpbutilsdefs.h
new file mode 100644
index 00000000..44eaea60
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstpbutilsdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstpbutilsDEFS_H_
+#define __wrappedgstpbutilsDEFS_H_
+
+
+#endif // __wrappedgstpbutilsDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstpbutilstypes.h b/src/wrapped/generated/wrappedgstpbutilstypes.h
new file mode 100644
index 00000000..e217d550
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstpbutilstypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstpbutilsTYPES_H_
+#define __wrappedgstpbutilsTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstpbutilsTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstpbutilsundefs.h b/src/wrapped/generated/wrappedgstpbutilsundefs.h
new file mode 100644
index 00000000..03cff549
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstpbutilsundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstpbutilsUNDEFS_H_
+#define __wrappedgstpbutilsUNDEFS_H_
+
+
+#endif // __wrappedgstpbutilsUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstreamertypes.h b/src/wrapped/generated/wrappedgstreamertypes.h
index a5d43518..16936cf5 100644
--- a/src/wrapped/generated/wrappedgstreamertypes.h
+++ b/src/wrapped/generated/wrappedgstreamertypes.h
@@ -11,44 +11,95 @@
 #define ADDED_FUNCTIONS() 
 #endif
 
+typedef void* (*pFA_t)(va_list);
+typedef void (*vFpp_t)(void*, void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef void* (*pFpV_t)(void*, ...);
+typedef void* (*pFpA_t)(void*, va_list);
+typedef void (*vFppp_t)(void*, void*, void*);
 typedef void (*vFppV_t)(void*, void*, ...);
 typedef void (*vFppA_t)(void*, void*, va_list);
 typedef int32_t (*iFppp_t)(void*, void*, void*);
 typedef int32_t (*iFppV_t)(void*, void*, ...);
 typedef int32_t (*iFppA_t)(void*, void*, va_list);
 typedef uint32_t (*uFppp_t)(void*, void*, void*);
+typedef void* (*pFppp_t)(void*, void*, void*);
 typedef void* (*pFppV_t)(void*, void*, ...);
+typedef void* (*pFppA_t)(void*, void*, va_list);
+typedef void (*vFpipV_t)(void*, int32_t, void*, ...);
+typedef void (*vFpipA_t)(void*, int32_t, void*, va_list);
 typedef void (*vFpppp_t)(void*, void*, void*, void*);
+typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
 typedef void* (*pFppip_t)(void*, void*, int32_t, void*);
+typedef void* (*pFpppV_t)(void*, void*, void*, ...);
+typedef void* (*pFpppA_t)(void*, void*, void*, va_list);
 typedef uint32_t (*uFpippp_t)(void*, int32_t, void*, void*, void*);
+typedef uintptr_t (*LFpippp_t)(void*, int32_t, void*, void*, void*);
 typedef void* (*pFiplllpp_t)(int32_t, void*, intptr_t, intptr_t, intptr_t, void*, void*);
+typedef void* (*pFipLLLpp_t)(int32_t, void*, uintptr_t, uintptr_t, uintptr_t, void*, void*);
+typedef void* (*pFpuLpipp_t)(void*, uint32_t, uintptr_t, void*, int32_t, void*, void*);
 typedef void (*vFpippippV_t)(void*, int32_t, void*, void*, int32_t, void*, void*, ...);
 typedef void (*vFpippippA_t)(void*, int32_t, void*, void*, int32_t, void*, void*, va_list);
+typedef int32_t (*iFppuppppp_t)(void*, void*, uint32_t, void*, void*, void*, void*, void*);
+typedef int32_t (*iFiipppppppp_t)(int32_t, int32_t, void*, void*, void*, void*, void*, void*, void*, void*);
 
 #define SUPER() ADDED_FUNCTIONS() \
+	GO(gst_tag_list_new_valist, pFA_t) \
+	GO(gst_init, vFpp_t) \
+	GO(gst_plugin_load_file, pFpp_t) \
+	GO(_gst_element_error_printf, pFpV_t) \
+	GO(gst_caps_features_new, pFpV_t) \
+	GO(gst_make_element_message_details, pFpV_t) \
+	GO(gst_tag_list_new, pFpV_t) \
+	GO(gst_caps_features_new_valist, pFpA_t) \
+	GO(gst_structure_filter_and_map_in_place, vFppp_t) \
+	GO(gst_tag_list_foreach, vFppp_t) \
 	GO(gst_bin_add_many, vFppV_t) \
 	GO(gst_caps_set_simple, vFppV_t) \
 	GO(gst_structure_remove_fields, vFppV_t) \
+	GO(gst_structure_set, vFppV_t) \
 	GO(gst_caps_set_simple_valist, vFppA_t) \
 	GO(gst_structure_remove_fields_valist, vFppA_t) \
+	GO(gst_structure_set_valist, vFppA_t) \
 	GO(gst_caps_foreach, iFppp_t) \
+	GO(gst_element_foreach_sink_pad, iFppp_t) \
+	GO(gst_init_check, iFppp_t) \
+	GO(gst_structure_foreach, iFppp_t) \
 	GO(gst_element_link_many, iFppV_t) \
 	GO(gst_structure_get, iFppV_t) \
+	GO(gst_info_vasprintf, iFppA_t) \
 	GO(gst_structure_get_valist, iFppA_t) \
 	GO(gst_bus_add_watch, uFppp_t) \
+	GO(gst_task_new, pFppp_t) \
 	GO(gst_caps_new_simple, pFppV_t) \
 	GO(gst_structure_new, pFppV_t) \
+	GO(gst_structure_new_valist, pFppA_t) \
+	GO(gst_tag_list_add, vFpipV_t) \
+	GO(gst_tag_list_add_values, vFpipV_t) \
+	GO(gst_tag_list_add_valist, vFpipA_t) \
+	GO(gst_tag_list_add_valist_values, vFpipA_t) \
 	GO(gst_bus_set_sync_handler, vFpppp_t) \
 	GO(gst_mini_object_set_qdata, vFpppp_t) \
+	GO(gst_pad_set_activate_function_full, vFpppp_t) \
 	GO(gst_pad_set_activatemode_function_full, vFpppp_t) \
 	GO(gst_pad_set_chain_function_full, vFpppp_t) \
 	GO(gst_pad_set_event_function_full, vFpppp_t) \
 	GO(gst_pad_set_getrange_function_full, vFpppp_t) \
+	GO(gst_pad_set_link_function_full, vFpppp_t) \
 	GO(gst_pad_set_query_function_full, vFpppp_t) \
+	GO(gst_iterator_fold, iFpppp_t) \
+	GO(gst_pad_start_task, iFpppp_t) \
 	GO(gst_registry_feature_filter, pFppip_t) \
+	GO(gst_pad_create_stream_id_printf, pFpppV_t) \
+	GO(gst_pad_create_stream_id_printf_valist, pFpppA_t) \
 	GO(gst_bus_add_watch_full, uFpippp_t) \
+	GO(gst_pad_add_probe, LFpippp_t) \
 	GO(gst_buffer_new_wrapped_full, pFiplllpp_t) \
+	GO(gst_memory_new_wrapped, pFipLLLpp_t) \
+	GO(gst_util_array_binary_search, pFpuLpipp_t) \
 	GO(gst_debug_log, vFpippippV_t) \
-	GO(gst_debug_log_valist, vFpippippA_t)
+	GO(gst_debug_log_valist, vFpippippA_t) \
+	GO(gst_type_find_register, iFppuppppp_t) \
+	GO(gst_plugin_register_static, iFiipppppppp_t)
 
 #endif // __wrappedgstreamerTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstriffdefs.h b/src/wrapped/generated/wrappedgstriffdefs.h
new file mode 100644
index 00000000..1d7db024
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstriffdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstriffDEFS_H_
+#define __wrappedgstriffDEFS_H_
+
+
+#endif // __wrappedgstriffDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrifftypes.h b/src/wrapped/generated/wrappedgstrifftypes.h
new file mode 100644
index 00000000..b65c2d98
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstrifftypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstriffTYPES_H_
+#define __wrappedgstriffTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstriffTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstriffundefs.h b/src/wrapped/generated/wrappedgstriffundefs.h
new file mode 100644
index 00000000..2b885ab3
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstriffundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstriffUNDEFS_H_
+#define __wrappedgstriffUNDEFS_H_
+
+
+#endif // __wrappedgstriffUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtpdefs.h b/src/wrapped/generated/wrappedgstrtpdefs.h
new file mode 100644
index 00000000..d294c561
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstrtpdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstrtpDEFS_H_
+#define __wrappedgstrtpDEFS_H_
+
+
+#endif // __wrappedgstrtpDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtptypes.h b/src/wrapped/generated/wrappedgstrtptypes.h
new file mode 100644
index 00000000..838ba801
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstrtptypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstrtpTYPES_H_
+#define __wrappedgstrtpTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstrtpTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstrtpundefs.h b/src/wrapped/generated/wrappedgstrtpundefs.h
new file mode 100644
index 00000000..fed1e6fa
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstrtpundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstrtpUNDEFS_H_
+#define __wrappedgstrtpUNDEFS_H_
+
+
+#endif // __wrappedgstrtpUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtspdefs.h b/src/wrapped/generated/wrappedgstrtspdefs.h
new file mode 100644
index 00000000..84fc53c9
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstrtspdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstrtspDEFS_H_
+#define __wrappedgstrtspDEFS_H_
+
+
+#endif // __wrappedgstrtspDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtsptypes.h b/src/wrapped/generated/wrappedgstrtsptypes.h
new file mode 100644
index 00000000..66cebe62
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstrtsptypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstrtspTYPES_H_
+#define __wrappedgstrtspTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstrtspTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstrtspundefs.h b/src/wrapped/generated/wrappedgstrtspundefs.h
new file mode 100644
index 00000000..fb4d87d9
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstrtspundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstrtspUNDEFS_H_
+#define __wrappedgstrtspUNDEFS_H_
+
+
+#endif // __wrappedgstrtspUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstsdpdefs.h b/src/wrapped/generated/wrappedgstsdpdefs.h
new file mode 100644
index 00000000..30a83cf0
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstsdpdefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstsdpDEFS_H_
+#define __wrappedgstsdpDEFS_H_
+
+
+#endif // __wrappedgstsdpDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstsdptypes.h b/src/wrapped/generated/wrappedgstsdptypes.h
new file mode 100644
index 00000000..43e14ad5
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstsdptypes.h
@@ -0,0 +1,17 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstsdpTYPES_H_
+#define __wrappedgstsdpTYPES_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedgstsdpTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstsdpundefs.h b/src/wrapped/generated/wrappedgstsdpundefs.h
new file mode 100644
index 00000000..d418a803
--- /dev/null
+++ b/src/wrapped/generated/wrappedgstsdpundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.2.0.18) *
+ *******************************************************************/
+#ifndef __wrappedgstsdpUNDEFS_H_
+#define __wrappedgstsdpUNDEFS_H_
+
+
+#endif // __wrappedgstsdpUNDEFS_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index bfb15101..b2dd5a19 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -135,6 +135,7 @@ typedef void* (*pFl_t)(intptr_t);
 typedef void* (*pFL_t)(uintptr_t);
 typedef void* (*pFp_t)(void*);
 typedef void* (*pFV_t)(void*);
+typedef void* (*pFA_t)(void*);
 typedef unsigned __int128 (*HFi_t)(int32_t);
 typedef unsigned __int128 (*HFp_t)(void*);
 typedef complexf_t (*xFx_t)(complexf_t);
@@ -240,6 +241,7 @@ typedef int64_t (*IFII_t)(int64_t, int64_t);
 typedef int64_t (*IFpi_t)(void*, int32_t);
 typedef int64_t (*IFpu_t)(void*, uint32_t);
 typedef int64_t (*IFpd_t)(void*, double);
+typedef int64_t (*IFpp_t)(void*, void*);
 typedef uint8_t (*CFip_t)(int32_t, void*);
 typedef uint8_t (*CFCi_t)(uint8_t, int32_t);
 typedef uint8_t (*CFui_t)(uint32_t, int32_t);
@@ -459,6 +461,7 @@ typedef void (*vFppd_t)(void*, void*, double);
 typedef void (*vFppl_t)(void*, void*, intptr_t);
 typedef void (*vFppL_t)(void*, void*, uintptr_t);
 typedef void (*vFppp_t)(void*, void*, void*);
+typedef void (*vFppV_t)(void*, void*, void*);
 typedef int8_t (*cFpdp_t)(void*, double, void*);
 typedef int16_t (*wFppp_t)(void*, void*, void*);
 typedef int32_t (*iFEiw_t)(x64emu_t*, int32_t, int16_t);
@@ -602,6 +605,7 @@ typedef uint32_t (*uFpLp_t)(void*, uintptr_t, void*);
 typedef uint32_t (*uFppi_t)(void*, void*, int32_t);
 typedef uint32_t (*uFppu_t)(void*, void*, uint32_t);
 typedef uint32_t (*uFppp_t)(void*, void*, void*);
+typedef uint64_t (*UFUii_t)(uint64_t, int32_t, int32_t);
 typedef uint64_t (*UFUUU_t)(uint64_t, uint64_t, uint64_t);
 typedef uint64_t (*UFpiU_t)(void*, int32_t, uint64_t);
 typedef uint64_t (*UFppi_t)(void*, void*, int32_t);
@@ -677,7 +681,6 @@ typedef void* (*pFWWW_t)(uint16_t, uint16_t, uint16_t);
 typedef void* (*pFuip_t)(uint32_t, int32_t, void*);
 typedef void* (*pFuui_t)(uint32_t, uint32_t, int32_t);
 typedef void* (*pFuuu_t)(uint32_t, uint32_t, uint32_t);
-typedef void* (*pFuup_t)(uint32_t, uint32_t, void*);
 typedef void* (*pFulu_t)(uint32_t, intptr_t, uint32_t);
 typedef void* (*pFulp_t)(uint32_t, intptr_t, void*);
 typedef void* (*pFupi_t)(uint32_t, void*, int32_t);
@@ -687,6 +690,7 @@ typedef void* (*pFupL_t)(uint32_t, void*, uintptr_t);
 typedef void* (*pFupp_t)(uint32_t, void*, void*);
 typedef void* (*pFdip_t)(double, int32_t, void*);
 typedef void* (*pFdUU_t)(double, uint64_t, uint64_t);
+typedef void* (*pFddi_t)(double, double, int32_t);
 typedef void* (*pFddd_t)(double, double, double);
 typedef void* (*pFDip_t)(long double, int32_t, void*);
 typedef void* (*pFlpi_t)(intptr_t, void*, int32_t);
@@ -711,6 +715,7 @@ typedef void* (*pFpuu_t)(void*, uint32_t, uint32_t);
 typedef void* (*pFpuL_t)(void*, uint32_t, uintptr_t);
 typedef void* (*pFpup_t)(void*, uint32_t, void*);
 typedef void* (*pFpUi_t)(void*, uint64_t, int32_t);
+typedef void* (*pFpUu_t)(void*, uint64_t, uint32_t);
 typedef void* (*pFpUp_t)(void*, uint64_t, void*);
 typedef void* (*pFpdu_t)(void*, double, uint32_t);
 typedef void* (*pFpdd_t)(void*, double, double);
@@ -730,6 +735,7 @@ typedef void* (*pFppf_t)(void*, void*, float);
 typedef void* (*pFppl_t)(void*, void*, intptr_t);
 typedef void* (*pFppL_t)(void*, void*, uintptr_t);
 typedef void* (*pFppp_t)(void*, void*, void*);
+typedef void* (*pFppA_t)(void*, void*, void*);
 typedef void* (*pFpOM_t)(void*, int32_t, ...);
 typedef void* (*pFSpl_t)(void*, void*, intptr_t);
 typedef void (*vWpup_t)(void*, uint32_t, void*);
@@ -1149,6 +1155,7 @@ typedef uintptr_t (*LFpppi_t)(void*, void*, void*, int32_t);
 typedef uintptr_t (*LFpppL_t)(void*, void*, void*, uintptr_t);
 typedef uintptr_t (*LFpppp_t)(void*, void*, void*, void*);
 typedef void* (*pFEipp_t)(x64emu_t*, int32_t, void*, void*);
+typedef void* (*pFEuup_t)(x64emu_t*, uint32_t, uint32_t, void*);
 typedef void* (*pFEupp_t)(x64emu_t*, uint32_t, void*, void*);
 typedef void* (*pFELpV_t)(x64emu_t*, uintptr_t, void*, void*);
 typedef void* (*pFELpA_t)(x64emu_t*, uintptr_t, void*, void*);
@@ -1193,6 +1200,7 @@ typedef void* (*pFpiLi_t)(void*, int32_t, uintptr_t, int32_t);
 typedef void* (*pFpiLL_t)(void*, int32_t, uintptr_t, uintptr_t);
 typedef void* (*pFpipi_t)(void*, int32_t, void*, int32_t);
 typedef void* (*pFpipd_t)(void*, int32_t, void*, double);
+typedef void* (*pFpipL_t)(void*, int32_t, void*, uintptr_t);
 typedef void* (*pFpipp_t)(void*, int32_t, void*, void*);
 typedef void* (*pFpCip_t)(void*, uint8_t, int32_t, void*);
 typedef void* (*pFpCWp_t)(void*, uint8_t, uint16_t, void*);
@@ -1211,6 +1219,7 @@ typedef void* (*pFpupi_t)(void*, uint32_t, void*, int32_t);
 typedef void* (*pFpupu_t)(void*, uint32_t, void*, uint32_t);
 typedef void* (*pFpupp_t)(void*, uint32_t, void*, void*);
 typedef void* (*pFpdIU_t)(void*, double, int64_t, uint64_t);
+typedef void* (*pFpddi_t)(void*, double, double, int32_t);
 typedef void* (*pFplil_t)(void*, intptr_t, int32_t, intptr_t);
 typedef void* (*pFplip_t)(void*, intptr_t, int32_t, void*);
 typedef void* (*pFplpl_t)(void*, intptr_t, void*, intptr_t);
@@ -1651,6 +1660,8 @@ typedef void* (*pFEppLp_t)(x64emu_t*, void*, void*, uintptr_t, void*);
 typedef void* (*pFEpppi_t)(x64emu_t*, void*, void*, void*, int32_t);
 typedef void* (*pFEpppu_t)(x64emu_t*, void*, void*, void*, uint32_t);
 typedef void* (*pFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
+typedef void* (*pFEpppV_t)(x64emu_t*, void*, void*, void*, void*);
+typedef void* (*pFEpppA_t)(x64emu_t*, void*, void*, void*, void*);
 typedef void* (*pFiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef void* (*pFiiipL_t)(int32_t, int32_t, int32_t, void*, uintptr_t);
 typedef void* (*pFipipL_t)(int32_t, void*, int32_t, void*, uintptr_t);
@@ -1663,15 +1674,18 @@ typedef void* (*pFuupuu_t)(uint32_t, uint32_t, void*, uint32_t, uint32_t);
 typedef void* (*pFudddp_t)(uint32_t, double, double, double, void*);
 typedef void* (*pFupLpl_t)(uint32_t, void*, uintptr_t, void*, intptr_t);
 typedef void* (*pFupLpL_t)(uint32_t, void*, uintptr_t, void*, uintptr_t);
+typedef void* (*pFddddi_t)(double, double, double, double, int32_t);
 typedef void* (*pFLuppp_t)(uintptr_t, uint32_t, void*, void*, void*);
 typedef void* (*pFLpppi_t)(uintptr_t, void*, void*, void*, int32_t);
 typedef void* (*pFpiiii_t)(void*, int32_t, int32_t, int32_t, int32_t);
 typedef void* (*pFpiiip_t)(void*, int32_t, int32_t, int32_t, void*);
 typedef void* (*pFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t);
 typedef void* (*pFpiipi_t)(void*, int32_t, int32_t, void*, int32_t);
+typedef void* (*pFpiipL_t)(void*, int32_t, int32_t, void*, uintptr_t);
 typedef void* (*pFpiipp_t)(void*, int32_t, int32_t, void*, void*);
 typedef void* (*pFpiCCC_t)(void*, int32_t, uint8_t, uint8_t, uint8_t);
 typedef void* (*pFpiuuu_t)(void*, int32_t, uint32_t, uint32_t, uint32_t);
+typedef void* (*pFpiuup_t)(void*, int32_t, uint32_t, uint32_t, void*);
 typedef void* (*pFpiupp_t)(void*, int32_t, uint32_t, void*, void*);
 typedef void* (*pFpiLip_t)(void*, int32_t, uintptr_t, int32_t, void*);
 typedef void* (*pFpipip_t)(void*, int32_t, void*, int32_t, void*);
@@ -1699,6 +1713,7 @@ typedef void* (*pFpLLip_t)(void*, uintptr_t, uintptr_t, int32_t, void*);
 typedef void* (*pFpLLLp_t)(void*, uintptr_t, uintptr_t, uintptr_t, void*);
 typedef void* (*pFpLpii_t)(void*, uintptr_t, void*, int32_t, int32_t);
 typedef void* (*pFpLpip_t)(void*, uintptr_t, void*, int32_t, void*);
+typedef void* (*pFpLpup_t)(void*, uintptr_t, void*, uint32_t, void*);
 typedef void* (*pFppiii_t)(void*, void*, int32_t, int32_t, int32_t);
 typedef void* (*pFppiiu_t)(void*, void*, int32_t, int32_t, uint32_t);
 typedef void* (*pFppiip_t)(void*, void*, int32_t, int32_t, void*);
@@ -1932,6 +1947,7 @@ typedef int32_t (*iFpiuupp_t)(void*, int32_t, uint32_t, uint32_t, void*, void*);
 typedef int32_t (*iFpipipi_t)(void*, int32_t, void*, int32_t, void*, int32_t);
 typedef int32_t (*iFpipipp_t)(void*, int32_t, void*, int32_t, void*, void*);
 typedef int32_t (*iFpipupp_t)(void*, int32_t, void*, uint32_t, void*, void*);
+typedef int32_t (*iFpipLpp_t)(void*, int32_t, void*, uintptr_t, void*, void*);
 typedef int32_t (*iFpippip_t)(void*, int32_t, void*, void*, int32_t, void*);
 typedef int32_t (*iFpippup_t)(void*, int32_t, void*, void*, uint32_t, void*);
 typedef int32_t (*iFpipppL_t)(void*, int32_t, void*, void*, void*, uintptr_t);
@@ -2045,6 +2061,7 @@ typedef intptr_t (*lFppLipp_t)(void*, void*, uintptr_t, int32_t, void*, void*);
 typedef intptr_t (*lFpppLpp_t)(void*, void*, void*, uintptr_t, void*, void*);
 typedef uintptr_t (*LFEupppp_t)(x64emu_t*, uint32_t, void*, void*, void*, void*);
 typedef uintptr_t (*LFELpppi_t)(x64emu_t*, uintptr_t, void*, void*, void*, int32_t);
+typedef uintptr_t (*LFEpippp_t)(x64emu_t*, void*, int32_t, void*, void*, void*);
 typedef uintptr_t (*LFEppppi_t)(x64emu_t*, void*, void*, void*, void*, int32_t);
 typedef uintptr_t (*LFpipipi_t)(void*, int32_t, void*, int32_t, void*, int32_t);
 typedef uintptr_t (*LFpLippp_t)(void*, uintptr_t, int32_t, void*, void*, void*);
@@ -2057,6 +2074,7 @@ typedef void* (*pFEpuipp_t)(x64emu_t*, void*, uint32_t, int32_t, void*, void*);
 typedef void* (*pFEpuupp_t)(x64emu_t*, void*, uint32_t, uint32_t, void*, void*);
 typedef void* (*pFEpuppp_t)(x64emu_t*, void*, uint32_t, void*, void*, void*);
 typedef void* (*pFEpLLiN_t)(x64emu_t*, void*, uintptr_t, uintptr_t, int32_t, ...);
+typedef void* (*pFEppupi_t)(x64emu_t*, void*, void*, uint32_t, void*, int32_t);
 typedef void* (*pFEppLLp_t)(x64emu_t*, void*, void*, uintptr_t, uintptr_t, void*);
 typedef void* (*pFEpppLp_t)(x64emu_t*, void*, void*, void*, uintptr_t, void*);
 typedef void* (*pFEppppi_t)(x64emu_t*, void*, void*, void*, void*, int32_t);
@@ -2067,16 +2085,19 @@ typedef void* (*pFiiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t
 typedef void* (*pFiiiiid_t)(int32_t, int32_t, int32_t, int32_t, int32_t, double);
 typedef void* (*pFipippp_t)(int32_t, void*, int32_t, void*, void*, void*);
 typedef void* (*pFWCiWCi_t)(uint16_t, uint8_t, int32_t, uint16_t, uint8_t, int32_t);
+typedef void* (*pFuCCCCp_t)(uint32_t, uint8_t, uint8_t, uint8_t, uint8_t, void*);
 typedef void* (*pFuuipip_t)(uint32_t, uint32_t, int32_t, void*, int32_t, void*);
 typedef void* (*pFuuuiip_t)(uint32_t, uint32_t, uint32_t, int32_t, int32_t, void*);
 typedef void* (*pFuuuuii_t)(uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t);
 typedef void* (*pFuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
 typedef void* (*pFuuuuup_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, void*);
 typedef void* (*pFuuppuu_t)(uint32_t, uint32_t, void*, void*, uint32_t, uint32_t);
+typedef void* (*pFuppppp_t)(uint32_t, void*, void*, void*, void*, void*);
 typedef void* (*pFdddddd_t)(double, double, double, double, double, double);
 typedef void* (*pFpiiiiu_t)(void*, int32_t, int32_t, int32_t, int32_t, uint32_t);
 typedef void* (*pFpiiipp_t)(void*, int32_t, int32_t, int32_t, void*, void*);
 typedef void* (*pFpiiCCC_t)(void*, int32_t, int32_t, uint8_t, uint8_t, uint8_t);
+typedef void* (*pFpiiuup_t)(void*, int32_t, int32_t, uint32_t, uint32_t, void*);
 typedef void* (*pFpiUUUU_t)(void*, int32_t, uint64_t, uint64_t, uint64_t, uint64_t);
 typedef void* (*pFpipipp_t)(void*, int32_t, void*, int32_t, void*, void*);
 typedef void* (*pFpippip_t)(void*, int32_t, void*, void*, int32_t, void*);
@@ -2084,6 +2105,7 @@ typedef void* (*pFpipppp_t)(void*, int32_t, void*, void*, void*, void*);
 typedef void* (*pFpCuuCC_t)(void*, uint8_t, uint32_t, uint32_t, uint8_t, uint8_t);
 typedef void* (*pFpCuuWW_t)(void*, uint8_t, uint32_t, uint32_t, uint16_t, uint16_t);
 typedef void* (*pFpCuuup_t)(void*, uint8_t, uint32_t, uint32_t, uint32_t, void*);
+typedef void* (*pFpuiiip_t)(void*, uint32_t, int32_t, int32_t, int32_t, void*);
 typedef void* (*pFpuuwwu_t)(void*, uint32_t, uint32_t, int16_t, int16_t, uint32_t);
 typedef void* (*pFpuuuuu_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
 typedef void* (*pFpuuupu_t)(void*, uint32_t, uint32_t, uint32_t, void*, uint32_t);
@@ -2340,6 +2362,7 @@ typedef void* (*pFEppuipp_t)(x64emu_t*, void*, void*, uint32_t, int32_t, void*,
 typedef void* (*pFEppppip_t)(x64emu_t*, void*, void*, void*, void*, int32_t, void*);
 typedef void* (*pFEpppppi_t)(x64emu_t*, void*, void*, void*, void*, void*, int32_t);
 typedef void* (*pFifffppp_t)(int32_t, float, float, float, void*, void*, void*);
+typedef void* (*pFWpppppp_t)(uint16_t, void*, void*, void*, void*, void*, void*);
 typedef void* (*pFuuuiiip_t)(uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, void*);
 typedef void* (*pFuupupup_t)(uint32_t, uint32_t, void*, uint32_t, void*, uint32_t, void*);
 typedef void* (*pFfiiiiid_t)(float, int32_t, int32_t, int32_t, int32_t, int32_t, double);
@@ -2355,6 +2378,7 @@ typedef void* (*pFpCpWWup_t)(void*, uint8_t, void*, uint16_t, uint16_t, uint32_t
 typedef void* (*pFpWppWpp_t)(void*, uint16_t, void*, void*, uint16_t, void*, void*);
 typedef void* (*pFpuuuwwu_t)(void*, uint32_t, uint32_t, uint32_t, int16_t, int16_t, uint32_t);
 typedef void* (*pFpuupwwC_t)(void*, uint32_t, uint32_t, void*, int16_t, int16_t, uint8_t);
+typedef void* (*pFpuLpipp_t)(void*, uint32_t, uintptr_t, void*, int32_t, void*, void*);
 typedef void* (*pFpupiipp_t)(void*, uint32_t, void*, int32_t, int32_t, void*, void*);
 typedef void* (*pFpuppipp_t)(void*, uint32_t, void*, void*, int32_t, void*, void*);
 typedef void* (*pFplppppp_t)(void*, intptr_t, void*, void*, void*, void*, void*);
@@ -2382,6 +2406,7 @@ typedef void* (*pFpppCCCi_t)(void*, void*, void*, uint8_t, uint8_t, uint8_t, int
 typedef void* (*pFpppuipp_t)(void*, void*, void*, uint32_t, int32_t, void*, void*);
 typedef void* (*pFpppuuui_t)(void*, void*, void*, uint32_t, uint32_t, uint32_t, int32_t);
 typedef void* (*pFpppuupp_t)(void*, void*, void*, uint32_t, uint32_t, void*, void*);
+typedef void* (*pFpppupii_t)(void*, void*, void*, uint32_t, void*, int32_t, int32_t);
 typedef void* (*pFpppupup_t)(void*, void*, void*, uint32_t, void*, uint32_t, void*);
 typedef void* (*pFpppuppp_t)(void*, void*, void*, uint32_t, void*, void*, void*);
 typedef void* (*pFpppfffi_t)(void*, void*, void*, float, float, float, int32_t);
@@ -2404,6 +2429,7 @@ typedef void (*vFEiippppV_t)(x64emu_t*, int32_t, int32_t, void*, void*, void*, v
 typedef void (*vFEiupippp_t)(x64emu_t*, int32_t, uint32_t, void*, int32_t, void*, void*, void*);
 typedef void (*vFEipAippp_t)(x64emu_t*, int32_t, void*, void*, int32_t, void*, void*, void*);
 typedef void (*vFEppipppp_t)(x64emu_t*, void*, void*, int32_t, void*, void*, void*, void*);
+typedef void (*vFEppLippp_t)(x64emu_t*, void*, void*, uintptr_t, int32_t, void*, void*, void*);
 typedef void (*vFEpppippp_t)(x64emu_t*, void*, void*, void*, int32_t, void*, void*, void*);
 typedef void (*vFEpppuipV_t)(x64emu_t*, void*, void*, void*, uint32_t, int32_t, void*, void*);
 typedef void (*vFEpppppuu_t)(x64emu_t*, void*, void*, void*, void*, void*, uint32_t, uint32_t);
@@ -2534,6 +2560,7 @@ typedef uintptr_t (*LFELpupupu_t)(x64emu_t*, uintptr_t, void*, uint32_t, void*,
 typedef uintptr_t (*LFEpiupppp_t)(x64emu_t*, void*, int32_t, uint32_t, void*, void*, void*, void*);
 typedef uintptr_t (*LFpLpuuLLu_t)(void*, uintptr_t, void*, uint32_t, uint32_t, uintptr_t, uintptr_t, uint32_t);
 typedef void* (*pFEiplllpp_t)(x64emu_t*, int32_t, void*, intptr_t, intptr_t, intptr_t, void*, void*);
+typedef void* (*pFEipLLLpp_t)(x64emu_t*, int32_t, void*, uintptr_t, uintptr_t, uintptr_t, void*, void*);
 typedef void* (*pFEpiuCppp_t)(x64emu_t*, void*, int32_t, uint32_t, uint8_t, void*, void*, void*);
 typedef void* (*pFEppLiiip_t)(x64emu_t*, void*, void*, uintptr_t, int32_t, int32_t, int32_t, void*);
 typedef void* (*pFEpppuipV_t)(x64emu_t*, void*, void*, void*, uint32_t, int32_t, void*, void*);
@@ -2543,8 +2570,10 @@ typedef void* (*pFEppppppp_t)(x64emu_t*, void*, void*, void*, void*, void*, void
 typedef void* (*pFiippipip_t)(int32_t, int32_t, void*, void*, int32_t, void*, int32_t, void*);
 typedef void* (*pFiupppppp_t)(int32_t, uint32_t, void*, void*, void*, void*, void*, void*);
 typedef void* (*pFuiiiuuuu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void* (*pFuCCCCpWw_t)(uint32_t, uint8_t, uint8_t, uint8_t, uint8_t, void*, uint16_t, int16_t);
 typedef void* (*pFuupupipp_t)(uint32_t, uint32_t, void*, uint32_t, void*, int32_t, void*, void*);
 typedef void* (*pFpiiiiiuu_t)(void*, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t);
+typedef void* (*pFpiiuuupp_t)(void*, int32_t, int32_t, uint32_t, uint32_t, uint32_t, void*, void*);
 typedef void* (*pFpiUdiiUi_t)(void*, int32_t, uint64_t, double, int32_t, int32_t, uint64_t, int32_t);
 typedef void* (*pFpipiiiip_t)(void*, int32_t, void*, int32_t, int32_t, int32_t, int32_t, void*);
 typedef void* (*pFpCCuuwwC_t)(void*, uint8_t, uint8_t, uint32_t, uint32_t, int16_t, int16_t, uint8_t);
@@ -2630,6 +2659,7 @@ typedef void (*vFpppffffff_t)(void*, void*, void*, float, float, float, float, f
 typedef void (*vFppppipiip_t)(void*, void*, void*, void*, int32_t, void*, int32_t, int32_t, void*);
 typedef void (*vFpppppippp_t)(void*, void*, void*, void*, void*, int32_t, void*, void*, void*);
 typedef int32_t (*iFEpiiiiipi_t)(x64emu_t*, void*, int32_t, int32_t, int32_t, int32_t, int32_t, void*, int32_t);
+typedef int32_t (*iFEppuppppp_t)(x64emu_t*, void*, void*, uint32_t, void*, void*, void*, void*, void*);
 typedef int32_t (*iFEpppipppp_t)(x64emu_t*, void*, void*, void*, int32_t, void*, void*, void*, void*);
 typedef int32_t (*iFEppplPPPP_t)(x64emu_t*, void*, void*, void*, intptr_t, void*, void*, void*, void*);
 typedef int32_t (*iFEpppppupp_t)(x64emu_t*, void*, void*, void*, void*, void*, uint32_t, void*, void*);
@@ -2638,6 +2668,7 @@ typedef int32_t (*iFiiiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, in
 typedef int32_t (*iFiiiipiiip_t)(int32_t, int32_t, int32_t, int32_t, void*, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFipiipippi_t)(int32_t, void*, int32_t, int32_t, void*, int32_t, void*, void*, int32_t);
 typedef int32_t (*iFdddpppppp_t)(double, double, double, void*, void*, void*, void*, void*, void*);
+typedef int32_t (*iFpipippppi_t)(void*, int32_t, void*, int32_t, void*, void*, void*, void*, int32_t);
 typedef int32_t (*iFpipLpiiip_t)(void*, int32_t, void*, uintptr_t, void*, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFpuuuuuuuu_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
 typedef int32_t (*iFpuuuuduup_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t, double, uint32_t, uint32_t, void*);
@@ -2795,6 +2826,7 @@ typedef void (*vFppuupppiiii_t)(void*, void*, uint32_t, uint32_t, void*, void*,
 typedef void (*vFppupipiuuuu_t)(void*, void*, uint32_t, void*, int32_t, void*, int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
 typedef void (*vFppupppuiiii_t)(void*, void*, uint32_t, void*, void*, void*, uint32_t, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFppppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*);
+typedef int32_t (*iFEiipppppppp_t)(x64emu_t*, int32_t, int32_t, void*, void*, void*, void*, void*, void*, void*, void*);
 typedef int32_t (*iFEpppipppppp_t)(x64emu_t*, void*, void*, void*, int32_t, void*, void*, void*, void*, void*, void*);
 typedef int32_t (*iFEppppiiiiuu_t)(x64emu_t*, void*, void*, void*, void*, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t);
 typedef int32_t (*iFEpppppppppp_t)(x64emu_t*, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*);
@@ -3042,6 +3074,7 @@ void pFl(x64emu_t *emu, uintptr_t fcn) { pFl_t fn = (pFl_t)fcn; R_RAX=(uintptr_t
 void pFL(x64emu_t *emu, uintptr_t fcn) { pFL_t fn = (pFL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI); }
 void pFp(x64emu_t *emu, uintptr_t fcn) { pFp_t fn = (pFp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); }
 void pFV(x64emu_t *emu, uintptr_t fcn) { pFV_t fn = (pFV_t)fcn; R_RAX=(uintptr_t)fn((void*)(R_RSP + 8)); }
+void pFA(x64emu_t *emu, uintptr_t fcn) { pFA_t fn = (pFA_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); }
 void HFi(x64emu_t *emu, uintptr_t fcn) { HFi_t fn = (HFi_t)fcn; unsigned __int128 u128 = fn((int32_t)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
 void HFp(x64emu_t *emu, uintptr_t fcn) { HFp_t fn = (HFp_t)fcn; unsigned __int128 u128 = fn((void*)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
 void xFx(x64emu_t *emu, uintptr_t fcn) { xFx_t fn = (xFx_t)fcn; from_complexf(emu, fn(to_complexf(emu, 0))); }
@@ -3147,6 +3180,7 @@ void IFII(x64emu_t *emu, uintptr_t fcn) { IFII_t fn = (IFII_t)fcn; R_RAX=(int64_
 void IFpi(x64emu_t *emu, uintptr_t fcn) { IFpi_t fn = (IFpi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int32_t)R_RSI); }
 void IFpu(x64emu_t *emu, uintptr_t fcn) { IFpu_t fn = (IFpu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint32_t)R_RSI); }
 void IFpd(x64emu_t *emu, uintptr_t fcn) { IFpd_t fn = (IFpd_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, emu->xmm[0].d[0]); }
+void IFpp(x64emu_t *emu, uintptr_t fcn) { IFpp_t fn = (IFpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI); }
 void CFip(x64emu_t *emu, uintptr_t fcn) { CFip_t fn = (CFip_t)fcn; R_RAX=(unsigned char)fn((int32_t)R_RDI, (void*)R_RSI); }
 void CFCi(x64emu_t *emu, uintptr_t fcn) { CFCi_t fn = (CFCi_t)fcn; R_RAX=(unsigned char)fn((uint8_t)R_RDI, (int32_t)R_RSI); }
 void CFui(x64emu_t *emu, uintptr_t fcn) { CFui_t fn = (CFui_t)fcn; R_RAX=(unsigned char)fn((uint32_t)R_RDI, (int32_t)R_RSI); }
@@ -3366,6 +3400,7 @@ void vFppd(x64emu_t *emu, uintptr_t fcn) { vFppd_t fn = (vFppd_t)fcn; fn((void*)
 void vFppl(x64emu_t *emu, uintptr_t fcn) { vFppl_t fn = (vFppl_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX); }
 void vFppL(x64emu_t *emu, uintptr_t fcn) { vFppL_t fn = (vFppL_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
 void vFppp(x64emu_t *emu, uintptr_t fcn) { vFppp_t fn = (vFppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void vFppV(x64emu_t *emu, uintptr_t fcn) { vFppV_t fn = (vFppV_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); }
 void cFpdp(x64emu_t *emu, uintptr_t fcn) { cFpdp_t fn = (cFpdp_t)fcn; R_RAX=fn((void*)R_RDI, emu->xmm[0].d[0], (void*)R_RSI); }
 void wFppp(x64emu_t *emu, uintptr_t fcn) { wFppp_t fn = (wFppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFEiw(x64emu_t *emu, uintptr_t fcn) { iFEiw_t fn = (iFEiw_t)fcn; R_RAX=(int32_t)fn(emu, (int32_t)R_RDI, (int16_t)R_RSI); }
@@ -3509,6 +3544,7 @@ void uFpLp(x64emu_t *emu, uintptr_t fcn) { uFpLp_t fn = (uFpLp_t)fcn; R_RAX=(uin
 void uFppi(x64emu_t *emu, uintptr_t fcn) { uFppi_t fn = (uFppi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void uFppu(x64emu_t *emu, uintptr_t fcn) { uFppu_t fn = (uFppu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
 void uFppp(x64emu_t *emu, uintptr_t fcn) { uFppp_t fn = (uFppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void UFUii(x64emu_t *emu, uintptr_t fcn) { UFUii_t fn = (UFUii_t)fcn; R_RAX=fn((uint64_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
 void UFUUU(x64emu_t *emu, uintptr_t fcn) { UFUUU_t fn = (UFUUU_t)fcn; R_RAX=fn((uint64_t)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); }
 void UFpiU(x64emu_t *emu, uintptr_t fcn) { UFpiU_t fn = (UFpiU_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (uint64_t)R_RDX); }
 void UFppi(x64emu_t *emu, uintptr_t fcn) { UFppi_t fn = (UFppi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
@@ -3584,7 +3620,6 @@ void pFWWW(x64emu_t *emu, uintptr_t fcn) { pFWWW_t fn = (pFWWW_t)fcn; R_RAX=(uin
 void pFuip(x64emu_t *emu, uintptr_t fcn) { pFuip_t fn = (pFuip_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
 void pFuui(x64emu_t *emu, uintptr_t fcn) { pFuui_t fn = (pFuui_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX); }
 void pFuuu(x64emu_t *emu, uintptr_t fcn) { pFuuu_t fn = (pFuuu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
-void pFuup(x64emu_t *emu, uintptr_t fcn) { pFuup_t fn = (pFuup_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
 void pFulu(x64emu_t *emu, uintptr_t fcn) { pFulu_t fn = (pFulu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (intptr_t)R_RSI, (uint32_t)R_RDX); }
 void pFulp(x64emu_t *emu, uintptr_t fcn) { pFulp_t fn = (pFulp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (intptr_t)R_RSI, (void*)R_RDX); }
 void pFupi(x64emu_t *emu, uintptr_t fcn) { pFupi_t fn = (pFupi_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
@@ -3594,6 +3629,7 @@ void pFupL(x64emu_t *emu, uintptr_t fcn) { pFupL_t fn = (pFupL_t)fcn; R_RAX=(uin
 void pFupp(x64emu_t *emu, uintptr_t fcn) { pFupp_t fn = (pFupp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void pFdip(x64emu_t *emu, uintptr_t fcn) { pFdip_t fn = (pFdip_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].d[0], (int32_t)R_RDI, (void*)R_RSI); }
 void pFdUU(x64emu_t *emu, uintptr_t fcn) { pFdUU_t fn = (pFdUU_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].d[0], (uint64_t)R_RDI, (uint64_t)R_RSI); }
+void pFddi(x64emu_t *emu, uintptr_t fcn) { pFddi_t fn = (pFddi_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RDI); }
 void pFddd(x64emu_t *emu, uintptr_t fcn) { pFddd_t fn = (pFddd_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
 void pFDip(x64emu_t *emu, uintptr_t fcn) { pFDip_t fn = (pFDip_t)fcn; R_RAX=(uintptr_t)fn(LD2localLD((void*)(R_RSP + 8)), (int32_t)R_RDI, (void*)R_RSI); }
 void pFlpi(x64emu_t *emu, uintptr_t fcn) { pFlpi_t fn = (pFlpi_t)fcn; R_RAX=(uintptr_t)fn((intptr_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
@@ -3618,6 +3654,7 @@ void pFpuu(x64emu_t *emu, uintptr_t fcn) { pFpuu_t fn = (pFpuu_t)fcn; R_RAX=(uin
 void pFpuL(x64emu_t *emu, uintptr_t fcn) { pFpuL_t fn = (pFpuL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uintptr_t)R_RDX); }
 void pFpup(x64emu_t *emu, uintptr_t fcn) { pFpup_t fn = (pFpup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
 void pFpUi(x64emu_t *emu, uintptr_t fcn) { pFpUi_t fn = (pFpUi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int32_t)R_RDX); }
+void pFpUu(x64emu_t *emu, uintptr_t fcn) { pFpUu_t fn = (pFpUu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint32_t)R_RDX); }
 void pFpUp(x64emu_t *emu, uintptr_t fcn) { pFpUp_t fn = (pFpUp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
 void pFpdu(x64emu_t *emu, uintptr_t fcn) { pFpdu_t fn = (pFpdu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, emu->xmm[0].d[0], (uint32_t)R_RSI); }
 void pFpdd(x64emu_t *emu, uintptr_t fcn) { pFpdd_t fn = (pFpdd_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
@@ -3637,6 +3674,7 @@ void pFppf(x64emu_t *emu, uintptr_t fcn) { pFppf_t fn = (pFppf_t)fcn; R_RAX=(uin
 void pFppl(x64emu_t *emu, uintptr_t fcn) { pFppl_t fn = (pFppl_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX); }
 void pFppL(x64emu_t *emu, uintptr_t fcn) { pFppL_t fn = (pFppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
 void pFppp(x64emu_t *emu, uintptr_t fcn) { pFppp_t fn = (pFppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void pFppA(x64emu_t *emu, uintptr_t fcn) { pFppA_t fn = (pFppA_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void pFpOM(x64emu_t *emu, uintptr_t fcn) { pFpOM_t fn = (pFpOM_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, of_convert((int32_t)R_RSI), (void*)R_RDX, (void*)R_RCX); }
 void pFSpl(x64emu_t *emu, uintptr_t fcn) { pFSpl_t fn = (pFSpl_t)fcn; R_RAX=(uintptr_t)fn(io_convert((void*)R_RDI), (void*)R_RSI, (intptr_t)R_RDX); }
 void vWpup(x64emu_t *emu, uintptr_t fcn) { vWpup_t fn = (vWpup_t)fcn; fn((void*)R_RCX, (uint32_t)R_RDX, (void*)R_R8); }
@@ -4056,6 +4094,7 @@ void LFpppi(x64emu_t *emu, uintptr_t fcn) { LFpppi_t fn = (LFpppi_t)fcn; R_RAX=(
 void LFpppL(x64emu_t *emu, uintptr_t fcn) { LFpppL_t fn = (LFpppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
 void LFpppp(x64emu_t *emu, uintptr_t fcn) { LFpppp_t fn = (LFpppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFEipp(x64emu_t *emu, uintptr_t fcn) { pFEipp_t fn = (pFEipp_t)fcn; R_RAX=(uintptr_t)fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void pFEuup(x64emu_t *emu, uintptr_t fcn) { pFEuup_t fn = (pFEuup_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
 void pFEupp(x64emu_t *emu, uintptr_t fcn) { pFEupp_t fn = (pFEupp_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void pFELpV(x64emu_t *emu, uintptr_t fcn) { pFELpV_t fn = (pFELpV_t)fcn; R_RAX=(uintptr_t)fn(emu, (uintptr_t)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); }
 void pFELpA(x64emu_t *emu, uintptr_t fcn) { pFELpA_t fn = (pFELpA_t)fcn; R_RAX=(uintptr_t)fn(emu, (uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
@@ -4100,6 +4139,7 @@ void pFpiLi(x64emu_t *emu, uintptr_t fcn) { pFpiLi_t fn = (pFpiLi_t)fcn; R_RAX=(
 void pFpiLL(x64emu_t *emu, uintptr_t fcn) { pFpiLL_t fn = (pFpiLL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX); }
 void pFpipi(x64emu_t *emu, uintptr_t fcn) { pFpipi_t fn = (pFpipi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void pFpipd(x64emu_t *emu, uintptr_t fcn) { pFpipd_t fn = (pFpipd_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, emu->xmm[0].d[0]); }
+void pFpipL(x64emu_t *emu, uintptr_t fcn) { pFpipL_t fn = (pFpipL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
 void pFpipp(x64emu_t *emu, uintptr_t fcn) { pFpipp_t fn = (pFpipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFpCip(x64emu_t *emu, uintptr_t fcn) { pFpCip_t fn = (pFpCip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void pFpCWp(x64emu_t *emu, uintptr_t fcn) { pFpCWp_t fn = (pFpCWp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint16_t)R_RDX, (void*)R_RCX); }
@@ -4118,6 +4158,7 @@ void pFpupi(x64emu_t *emu, uintptr_t fcn) { pFpupi_t fn = (pFpupi_t)fcn; R_RAX=(
 void pFpupu(x64emu_t *emu, uintptr_t fcn) { pFpupu_t fn = (pFpupu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
 void pFpupp(x64emu_t *emu, uintptr_t fcn) { pFpupp_t fn = (pFpupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFpdIU(x64emu_t *emu, uintptr_t fcn) { pFpdIU_t fn = (pFpdIU_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, emu->xmm[0].d[0], (int64_t)R_RSI, (uint64_t)R_RDX); }
+void pFpddi(x64emu_t *emu, uintptr_t fcn) { pFpddi_t fn = (pFpddi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI); }
 void pFplil(x64emu_t *emu, uintptr_t fcn) { pFplil_t fn = (pFplil_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (int32_t)R_RDX, (intptr_t)R_RCX); }
 void pFplip(x64emu_t *emu, uintptr_t fcn) { pFplip_t fn = (pFplip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void pFplpl(x64emu_t *emu, uintptr_t fcn) { pFplpl_t fn = (pFplpl_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (void*)R_RDX, (intptr_t)R_RCX); }
@@ -4558,6 +4599,8 @@ void pFEppLp(x64emu_t *emu, uintptr_t fcn) { pFEppLp_t fn = (pFEppLp_t)fcn; R_RA
 void pFEpppi(x64emu_t *emu, uintptr_t fcn) { pFEpppi_t fn = (pFEpppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void pFEpppu(x64emu_t *emu, uintptr_t fcn) { pFEpppu_t fn = (pFEpppu_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
 void pFEpppp(x64emu_t *emu, uintptr_t fcn) { pFEpppp_t fn = (pFEpppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void pFEpppV(x64emu_t *emu, uintptr_t fcn) { pFEpppV_t fn = (pFEpppV_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
+void pFEpppA(x64emu_t *emu, uintptr_t fcn) { pFEpppA_t fn = (pFEpppA_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFiiiii(x64emu_t *emu, uintptr_t fcn) { pFiiiii_t fn = (pFiiiii_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void pFiiipL(x64emu_t *emu, uintptr_t fcn) { pFiiipL_t fn = (pFiiipL_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8); }
 void pFipipL(x64emu_t *emu, uintptr_t fcn) { pFipipL_t fn = (pFipipL_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8); }
@@ -4570,15 +4613,18 @@ void pFuupuu(x64emu_t *emu, uintptr_t fcn) { pFuupuu_t fn = (pFuupuu_t)fcn; R_RA
 void pFudddp(x64emu_t *emu, uintptr_t fcn) { pFudddp_t fn = (pFudddp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], (void*)R_RSI); }
 void pFupLpl(x64emu_t *emu, uintptr_t fcn) { pFupLpl_t fn = (pFupLpl_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (intptr_t)R_R8); }
 void pFupLpL(x64emu_t *emu, uintptr_t fcn) { pFupLpL_t fn = (pFupLpL_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8); }
+void pFddddi(x64emu_t *emu, uintptr_t fcn) { pFddddi_t fn = (pFddddi_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], (int32_t)R_RDI); }
 void pFLuppp(x64emu_t *emu, uintptr_t fcn) { pFLuppp_t fn = (pFLuppp_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFLpppi(x64emu_t *emu, uintptr_t fcn) { pFLpppi_t fn = (pFLpppi_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void pFpiiii(x64emu_t *emu, uintptr_t fcn) { pFpiiii_t fn = (pFpiiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void pFpiiip(x64emu_t *emu, uintptr_t fcn) { pFpiiip_t fn = (pFpiiip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
 void pFpiiuu(x64emu_t *emu, uintptr_t fcn) { pFpiiuu_t fn = (pFpiiuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
 void pFpiipi(x64emu_t *emu, uintptr_t fcn) { pFpiipi_t fn = (pFpiipi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void pFpiipL(x64emu_t *emu, uintptr_t fcn) { pFpiipL_t fn = (pFpiipL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uintptr_t)R_R8); }
 void pFpiipp(x64emu_t *emu, uintptr_t fcn) { pFpiipp_t fn = (pFpiipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFpiCCC(x64emu_t *emu, uintptr_t fcn) { pFpiCCC_t fn = (pFpiCCC_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX, (uint8_t)R_R8); }
 void pFpiuuu(x64emu_t *emu, uintptr_t fcn) { pFpiuuu_t fn = (pFpiuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void pFpiuup(x64emu_t *emu, uintptr_t fcn) { pFpiuup_t fn = (pFpiuup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
 void pFpiupp(x64emu_t *emu, uintptr_t fcn) { pFpiupp_t fn = (pFpiupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFpiLip(x64emu_t *emu, uintptr_t fcn) { pFpiLip_t fn = (pFpiLip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
 void pFpipip(x64emu_t *emu, uintptr_t fcn) { pFpipip_t fn = (pFpipip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
@@ -4606,6 +4652,7 @@ void pFpLLip(x64emu_t *emu, uintptr_t fcn) { pFpLLip_t fn = (pFpLLip_t)fcn; R_RA
 void pFpLLLp(x64emu_t *emu, uintptr_t fcn) { pFpLLLp_t fn = (pFpLLLp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8); }
 void pFpLpii(x64emu_t *emu, uintptr_t fcn) { pFpLpii_t fn = (pFpLpii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void pFpLpip(x64emu_t *emu, uintptr_t fcn) { pFpLpip_t fn = (pFpLpip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void pFpLpup(x64emu_t *emu, uintptr_t fcn) { pFpLpup_t fn = (pFpLpup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
 void pFppiii(x64emu_t *emu, uintptr_t fcn) { pFppiii_t fn = (pFppiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void pFppiiu(x64emu_t *emu, uintptr_t fcn) { pFppiiu_t fn = (pFppiiu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
 void pFppiip(x64emu_t *emu, uintptr_t fcn) { pFppiip_t fn = (pFppiip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
@@ -4839,6 +4886,7 @@ void iFpiuupp(x64emu_t *emu, uintptr_t fcn) { iFpiuupp_t fn = (iFpiuupp_t)fcn; R
 void iFpipipi(x64emu_t *emu, uintptr_t fcn) { iFpipipi_t fn = (iFpipipi_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9); }
 void iFpipipp(x64emu_t *emu, uintptr_t fcn) { iFpipipp_t fn = (iFpipipp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void iFpipupp(x64emu_t *emu, uintptr_t fcn) { iFpipupp_t fn = (iFpipupp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
+void iFpipLpp(x64emu_t *emu, uintptr_t fcn) { iFpipLpp_t fn = (iFpipLpp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void iFpippip(x64emu_t *emu, uintptr_t fcn) { iFpippip_t fn = (iFpippip_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
 void iFpippup(x64emu_t *emu, uintptr_t fcn) { iFpippup_t fn = (iFpippup_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
 void iFpipppL(x64emu_t *emu, uintptr_t fcn) { iFpipppL_t fn = (iFpipppL_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uintptr_t)R_R9); }
@@ -4952,6 +5000,7 @@ void lFppLipp(x64emu_t *emu, uintptr_t fcn) { lFppLipp_t fn = (lFppLipp_t)fcn; R
 void lFpppLpp(x64emu_t *emu, uintptr_t fcn) { lFpppLpp_t fn = (lFpppLpp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void LFEupppp(x64emu_t *emu, uintptr_t fcn) { LFEupppp_t fn = (LFEupppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void LFELpppi(x64emu_t *emu, uintptr_t fcn) { LFELpppi_t fn = (LFELpppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (uintptr_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void LFEpippp(x64emu_t *emu, uintptr_t fcn) { LFEpippp_t fn = (LFEpippp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void LFEppppi(x64emu_t *emu, uintptr_t fcn) { LFEppppi_t fn = (LFEppppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void LFpipipi(x64emu_t *emu, uintptr_t fcn) { LFpipipi_t fn = (LFpipipi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9); }
 void LFpLippp(x64emu_t *emu, uintptr_t fcn) { LFpLippp_t fn = (LFpLippp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
@@ -4964,6 +5013,7 @@ void pFEpuipp(x64emu_t *emu, uintptr_t fcn) { pFEpuipp_t fn = (pFEpuipp_t)fcn; R
 void pFEpuupp(x64emu_t *emu, uintptr_t fcn) { pFEpuupp_t fn = (pFEpuupp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFEpuppp(x64emu_t *emu, uintptr_t fcn) { pFEpuppp_t fn = (pFEpuppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void pFEpLLiN(x64emu_t *emu, uintptr_t fcn) { pFEpLLiN_t fn = (pFEpLLiN_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void pFEppupi(x64emu_t *emu, uintptr_t fcn) { pFEppupi_t fn = (pFEppupi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void pFEppLLp(x64emu_t *emu, uintptr_t fcn) { pFEppLLp_t fn = (pFEppLLp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8); }
 void pFEpppLp(x64emu_t *emu, uintptr_t fcn) { pFEpppLp_t fn = (pFEpppLp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (void*)R_R8); }
 void pFEppppi(x64emu_t *emu, uintptr_t fcn) { pFEppppi_t fn = (pFEppppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
@@ -4974,16 +5024,19 @@ void pFiiiiii(x64emu_t *emu, uintptr_t fcn) { pFiiiiii_t fn = (pFiiiiii_t)fcn; R
 void pFiiiiid(x64emu_t *emu, uintptr_t fcn) { pFiiiiid_t fn = (pFiiiiid_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, emu->xmm[0].d[0]); }
 void pFipippp(x64emu_t *emu, uintptr_t fcn) { pFipippp_t fn = (pFipippp_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
 void pFWCiWCi(x64emu_t *emu, uintptr_t fcn) { pFWCiWCi_t fn = (pFWCiWCi_t)fcn; R_RAX=(uintptr_t)fn((uint16_t)R_RDI, (uint8_t)R_RSI, (int32_t)R_RDX, (uint16_t)R_RCX, (uint8_t)R_R8, (int32_t)R_R9); }
+void pFuCCCCp(x64emu_t *emu, uintptr_t fcn) { pFuCCCCp_t fn = (pFuCCCCp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX, (uint8_t)R_R8, (void*)R_R9); }
 void pFuuipip(x64emu_t *emu, uintptr_t fcn) { pFuuipip_t fn = (pFuuipip_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
 void pFuuuiip(x64emu_t *emu, uintptr_t fcn) { pFuuuiip_t fn = (pFuuuiip_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
 void pFuuuuii(x64emu_t *emu, uintptr_t fcn) { pFuuuuii_t fn = (pFuuuuii_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
 void pFuuuuuu(x64emu_t *emu, uintptr_t fcn) { pFuuuuuu_t fn = (pFuuuuuu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
 void pFuuuuup(x64emu_t *emu, uintptr_t fcn) { pFuuuuup_t fn = (pFuuuuup_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
 void pFuuppuu(x64emu_t *emu, uintptr_t fcn) { pFuuppuu_t fn = (pFuuppuu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
+void pFuppppp(x64emu_t *emu, uintptr_t fcn) { pFuppppp_t fn = (pFuppppp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
 void pFdddddd(x64emu_t *emu, uintptr_t fcn) { pFdddddd_t fn = (pFdddddd_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0], emu->xmm[5].d[0]); }
 void pFpiiiiu(x64emu_t *emu, uintptr_t fcn) { pFpiiiiu_t fn = (pFpiiiiu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9); }
 void pFpiiipp(x64emu_t *emu, uintptr_t fcn) { pFpiiipp_t fn = (pFpiiipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void pFpiiCCC(x64emu_t *emu, uintptr_t fcn) { pFpiiCCC_t fn = (pFpiiCCC_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint8_t)R_RCX, (uint8_t)R_R8, (uint8_t)R_R9); }
+void pFpiiuup(x64emu_t *emu, uintptr_t fcn) { pFpiiuup_t fn = (pFpiiuup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
 void pFpiUUUU(x64emu_t *emu, uintptr_t fcn) { pFpiUUUU_t fn = (pFpiUUUU_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9); }
 void pFpipipp(x64emu_t *emu, uintptr_t fcn) { pFpipipp_t fn = (pFpipipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void pFpippip(x64emu_t *emu, uintptr_t fcn) { pFpippip_t fn = (pFpippip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
@@ -4991,6 +5044,7 @@ void pFpipppp(x64emu_t *emu, uintptr_t fcn) { pFpipppp_t fn = (pFpipppp_t)fcn; R
 void pFpCuuCC(x64emu_t *emu, uintptr_t fcn) { pFpCuuCC_t fn = (pFpCuuCC_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint8_t)R_R8, (uint8_t)R_R9); }
 void pFpCuuWW(x64emu_t *emu, uintptr_t fcn) { pFpCuuWW_t fn = (pFpCuuWW_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint16_t)R_R8, (uint16_t)R_R9); }
 void pFpCuuup(x64emu_t *emu, uintptr_t fcn) { pFpCuuup_t fn = (pFpCuuup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
+void pFpuiiip(x64emu_t *emu, uintptr_t fcn) { pFpuiiip_t fn = (pFpuiiip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
 void pFpuuwwu(x64emu_t *emu, uintptr_t fcn) { pFpuuwwu_t fn = (pFpuuwwu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int16_t)R_RCX, (int16_t)R_R8, (uint32_t)R_R9); }
 void pFpuuuuu(x64emu_t *emu, uintptr_t fcn) { pFpuuuuu_t fn = (pFpuuuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
 void pFpuuupu(x64emu_t *emu, uintptr_t fcn) { pFpuuupu_t fn = (pFpuuupu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (uint32_t)R_R9); }
@@ -5247,6 +5301,7 @@ void pFEppuipp(x64emu_t *emu, uintptr_t fcn) { pFEppuipp_t fn = (pFEppuipp_t)fcn
 void pFEppppip(x64emu_t *emu, uintptr_t fcn) { pFEppppip_t fn = (pFEppppip_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
 void pFEpppppi(x64emu_t *emu, uintptr_t fcn) { pFEpppppi_t fn = (pFEpppppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9); }
 void pFifffppp(x64emu_t *emu, uintptr_t fcn) { pFifffppp_t fn = (pFifffppp_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void pFWpppppp(x64emu_t *emu, uintptr_t fcn) { pFWpppppp_t fn = (pFWpppppp_t)fcn; R_RAX=(uintptr_t)fn((uint16_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFuuuiiip(x64emu_t *emu, uintptr_t fcn) { pFuuuiiip_t fn = (pFuuuiiip_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFuupupup(x64emu_t *emu, uintptr_t fcn) { pFuupupup_t fn = (pFuupupup_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFfiiiiid(x64emu_t *emu, uintptr_t fcn) { pFfiiiiid_t fn = (pFfiiiiid_t)fcn; R_RAX=(uintptr_t)fn(emu->xmm[0].f[0], (int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, emu->xmm[1].d[0]); }
@@ -5262,6 +5317,7 @@ void pFpCpWWup(x64emu_t *emu, uintptr_t fcn) { pFpCpWWup_t fn = (pFpCpWWup_t)fcn
 void pFpWppWpp(x64emu_t *emu, uintptr_t fcn) { pFpWppWpp_t fn = (pFpWppWpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint16_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (uint16_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFpuuuwwu(x64emu_t *emu, uintptr_t fcn) { pFpuuuwwu_t fn = (pFpuuuwwu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int16_t)R_R8, (int16_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
 void pFpuupwwC(x64emu_t *emu, uintptr_t fcn) { pFpuupwwC_t fn = (pFpuupwwC_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int16_t)R_R8, (int16_t)R_R9, *(uint8_t*)(R_RSP + 8)); }
+void pFpuLpipp(x64emu_t *emu, uintptr_t fcn) { pFpuLpipp_t fn = (pFpuLpipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFpupiipp(x64emu_t *emu, uintptr_t fcn) { pFpupiipp_t fn = (pFpupiipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFpuppipp(x64emu_t *emu, uintptr_t fcn) { pFpuppipp_t fn = (pFpuppipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFplppppp(x64emu_t *emu, uintptr_t fcn) { pFplppppp_t fn = (pFplppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
@@ -5289,6 +5345,7 @@ void pFpppCCCi(x64emu_t *emu, uintptr_t fcn) { pFpppCCCi_t fn = (pFpppCCCi_t)fcn
 void pFpppuipp(x64emu_t *emu, uintptr_t fcn) { pFpppuipp_t fn = (pFpppuipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFpppuuui(x64emu_t *emu, uintptr_t fcn) { pFpppuuui_t fn = (pFpppuuui_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
 void pFpppuupp(x64emu_t *emu, uintptr_t fcn) { pFpppuupp_t fn = (pFpppuupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void pFpppupii(x64emu_t *emu, uintptr_t fcn) { pFpppupii_t fn = (pFpppupii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
 void pFpppupup(x64emu_t *emu, uintptr_t fcn) { pFpppupup_t fn = (pFpppupup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFpppuppp(x64emu_t *emu, uintptr_t fcn) { pFpppuppp_t fn = (pFpppuppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFpppfffi(x64emu_t *emu, uintptr_t fcn) { pFpppfffi_t fn = (pFpppfffi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], (int32_t)R_RCX); }
@@ -5311,6 +5368,7 @@ void vFEiippppV(x64emu_t *emu, uintptr_t fcn) { vFEiippppV_t fn = (vFEiippppV_t)
 void vFEiupippp(x64emu_t *emu, uintptr_t fcn) { vFEiupippp_t fn = (vFEiupippp_t)fcn; fn(emu, (int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void vFEipAippp(x64emu_t *emu, uintptr_t fcn) { vFEipAippp_t fn = (vFEipAippp_t)fcn; fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void vFEppipppp(x64emu_t *emu, uintptr_t fcn) { vFEppipppp_t fn = (vFEppipppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void vFEppLippp(x64emu_t *emu, uintptr_t fcn) { vFEppLippp_t fn = (vFEppLippp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void vFEpppippp(x64emu_t *emu, uintptr_t fcn) { vFEpppippp_t fn = (vFEpppippp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void vFEpppuipV(x64emu_t *emu, uintptr_t fcn) { vFEpppuipV_t fn = (vFEpppuipV_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, (void*)(R_RSP + 8)); }
 void vFEpppppuu(x64emu_t *emu, uintptr_t fcn) { vFEpppppuu_t fn = (vFEpppppuu_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
@@ -5441,6 +5499,7 @@ void LFELpupupu(x64emu_t *emu, uintptr_t fcn) { LFELpupupu_t fn = (LFELpupupu_t)
 void LFEpiupppp(x64emu_t *emu, uintptr_t fcn) { LFEpiupppp_t fn = (LFEpiupppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void LFpLpuuLLu(x64emu_t *emu, uintptr_t fcn) { LFpLpuuLLu_t fn = (LFpLpuuLLu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uintptr_t)R_R9, *(uintptr_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16)); }
 void pFEiplllpp(x64emu_t *emu, uintptr_t fcn) { pFEiplllpp_t fn = (pFEiplllpp_t)fcn; R_RAX=(uintptr_t)fn(emu, (int32_t)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void pFEipLLLpp(x64emu_t *emu, uintptr_t fcn) { pFEipLLLpp_t fn = (pFEipLLLpp_t)fcn; R_RAX=(uintptr_t)fn(emu, (int32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFEpiuCppp(x64emu_t *emu, uintptr_t fcn) { pFEpiuCppp_t fn = (pFEpiuCppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint8_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void pFEppLiiip(x64emu_t *emu, uintptr_t fcn) { pFEppLiiip_t fn = (pFEppLiiip_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
 void pFEpppuipV(x64emu_t *emu, uintptr_t fcn) { pFEpppuipV_t fn = (pFEpppuipV_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, (void*)(R_RSP + 8)); }
@@ -5450,8 +5509,10 @@ void pFEppppppp(x64emu_t *emu, uintptr_t fcn) { pFEppppppp_t fn = (pFEppppppp_t)
 void pFiippipip(x64emu_t *emu, uintptr_t fcn) { pFiippipip_t fn = (pFiippipip_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void pFiupppppp(x64emu_t *emu, uintptr_t fcn) { pFiupppppp_t fn = (pFiupppppp_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void pFuiiiuuuu(x64emu_t *emu, uintptr_t fcn) { pFuiiiuuuu_t fn = (pFuiiiuuuu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16)); }
+void pFuCCCCpWw(x64emu_t *emu, uintptr_t fcn) { pFuCCCCpWw_t fn = (pFuCCCCpWw_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX, (uint8_t)R_R8, (void*)R_R9, *(uint16_t*)(R_RSP + 8), *(int16_t*)(R_RSP + 16)); }
 void pFuupupipp(x64emu_t *emu, uintptr_t fcn) { pFuupupipp_t fn = (pFuupupipp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void pFpiiiiiuu(x64emu_t *emu, uintptr_t fcn) { pFpiiiiiuu_t fn = (pFpiiiiiuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16)); }
+void pFpiiuuupp(x64emu_t *emu, uintptr_t fcn) { pFpiiuuupp_t fn = (pFpiiuuupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void pFpiUdiiUi(x64emu_t *emu, uintptr_t fcn) { pFpiUdiiUi_t fn = (pFpiUdiiUi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint64_t)R_RDX, emu->xmm[0].d[0], (int32_t)R_RCX, (int32_t)R_R8, (uint64_t)R_R9, *(int32_t*)(R_RSP + 8)); }
 void pFpipiiiip(x64emu_t *emu, uintptr_t fcn) { pFpipiiiip_t fn = (pFpipiiiip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void pFpCCuuwwC(x64emu_t *emu, uintptr_t fcn) { pFpCCuuwwC_t fn = (pFpCCuuwwC_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (int16_t)R_R9, *(int16_t*)(R_RSP + 8), *(uint8_t*)(R_RSP + 16)); }
@@ -5537,6 +5598,7 @@ void vFpppffffff(x64emu_t *emu, uintptr_t fcn) { vFpppffffff_t fn = (vFpppffffff
 void vFppppipiip(x64emu_t *emu, uintptr_t fcn) { vFppppipiip_t fn = (vFppppipiip_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
 void vFpppppippp(x64emu_t *emu, uintptr_t fcn) { vFpppppippp_t fn = (vFpppppippp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24)); }
 void iFEpiiiiipi(x64emu_t *emu, uintptr_t fcn) { iFEpiiiiipi_t fn = (iFEpiiiiipi_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
+void iFEppuppppp(x64emu_t *emu, uintptr_t fcn) { iFEppuppppp_t fn = (iFEppuppppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void iFEpppipppp(x64emu_t *emu, uintptr_t fcn) { iFEpppipppp_t fn = (iFEpppipppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void iFEppplPPPP(x64emu_t *emu, uintptr_t fcn) { iFEppplPPPP_t fn = (iFEppplPPPP_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (intptr_t)R_RCX, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); }
 void iFEpppppupp(x64emu_t *emu, uintptr_t fcn) { iFEpppppupp_t fn = (iFEpppppupp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
@@ -5545,6 +5607,7 @@ void iFiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiiip_t fn = (iFiiiiiiiip
 void iFiiiipiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiipiiip_t fn = (iFiiiipiiip_t)fcn; R_RAX=(int32_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
 void iFipiipippi(x64emu_t *emu, uintptr_t fcn) { iFipiipippi_t fn = (iFipiipippi_t)fcn; R_RAX=(int32_t)fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); }
 void iFdddpppppp(x64emu_t *emu, uintptr_t fcn) { iFdddpppppp_t fn = (iFdddpppppp_t)fcn; R_RAX=(int32_t)fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void iFpipippppi(x64emu_t *emu, uintptr_t fcn) { iFpipippppi_t fn = (iFpipippppi_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); }
 void iFpipLpiiip(x64emu_t *emu, uintptr_t fcn) { iFpipLpiiip_t fn = (iFpipLpiiip_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
 void iFpuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { iFpuuuuuuuu_t fn = (iFpuuuuuuuu_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24)); }
 void iFpuuuuduup(x64emu_t *emu, uintptr_t fcn) { iFpuuuuduup_t fn = (iFpuuuuduup_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, emu->xmm[0].d[0], (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
@@ -5702,6 +5765,7 @@ void vFppuupppiiii(x64emu_t *emu, uintptr_t fcn) { vFppuupppiiii_t fn = (vFppuup
 void vFppupipiuuuu(x64emu_t *emu, uintptr_t fcn) { vFppupipiuuuu_t fn = (vFppupipiuuuu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40)); }
 void vFppupppuiiii(x64emu_t *emu, uintptr_t fcn) { vFppupppuiiii_t fn = (vFppupppuiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(uint32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(int32_t*)(R_RSP + 40)); }
 void vFppppppppppp(x64emu_t *emu, uintptr_t fcn) { vFppppppppppp_t fn = (vFppppppppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32), *(void**)(R_RSP + 40)); }
+void iFEiipppppppp(x64emu_t *emu, uintptr_t fcn) { iFEiipppppppp_t fn = (iFEiipppppppp_t)fcn; R_RAX=(int32_t)fn(emu, (int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); }
 void iFEpppipppppp(x64emu_t *emu, uintptr_t fcn) { iFEpppipppppp_t fn = (iFEpppipppppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); }
 void iFEppppiiiiuu(x64emu_t *emu, uintptr_t fcn) { iFEppppiiiiuu_t fn = (iFEppppiiiiuu_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32)); }
 void iFEpppppppppp(x64emu_t *emu, uintptr_t fcn) { iFEpppppppppp_t fn = (iFEpppppppppp_t)fcn; R_RAX=(int32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); }
@@ -6037,6 +6101,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &IFpi) return 1;
 	if (fun == &IFpu) return 1;
 	if (fun == &IFpd) return 2;
+	if (fun == &IFpp) return 1;
 	if (fun == &CFip) return 1;
 	if (fun == &CFCi) return 1;
 	if (fun == &CFui) return 1;
@@ -6343,6 +6408,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &uFppi) return 1;
 	if (fun == &uFppu) return 1;
 	if (fun == &uFppp) return 1;
+	if (fun == &UFUii) return 1;
 	if (fun == &UFUUU) return 1;
 	if (fun == &UFpiU) return 1;
 	if (fun == &UFppi) return 1;
@@ -6404,7 +6470,6 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFuip) return 1;
 	if (fun == &pFuui) return 1;
 	if (fun == &pFuuu) return 1;
-	if (fun == &pFuup) return 1;
 	if (fun == &pFulu) return 1;
 	if (fun == &pFulp) return 1;
 	if (fun == &pFupi) return 1;
@@ -6414,6 +6479,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFupp) return 1;
 	if (fun == &pFdip) return 2;
 	if (fun == &pFdUU) return 2;
+	if (fun == &pFddi) return 3;
 	if (fun == &pFddd) return 4;
 	if (fun == &pFlpi) return 1;
 	if (fun == &pFLup) return 1;
@@ -6437,6 +6503,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFpuL) return 1;
 	if (fun == &pFpup) return 1;
 	if (fun == &pFpUi) return 1;
+	if (fun == &pFpUu) return 1;
 	if (fun == &pFpUp) return 1;
 	if (fun == &pFpdu) return 2;
 	if (fun == &pFpdd) return 3;
@@ -6840,6 +6907,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFpiLL) return 1;
 	if (fun == &pFpipi) return 1;
 	if (fun == &pFpipd) return 2;
+	if (fun == &pFpipL) return 1;
 	if (fun == &pFpipp) return 1;
 	if (fun == &pFpCip) return 1;
 	if (fun == &pFpCWp) return 1;
@@ -6858,6 +6926,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFpupu) return 1;
 	if (fun == &pFpupp) return 1;
 	if (fun == &pFpdIU) return 2;
+	if (fun == &pFpddi) return 3;
 	if (fun == &pFplil) return 1;
 	if (fun == &pFplip) return 1;
 	if (fun == &pFplpl) return 1;
@@ -7233,15 +7302,18 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFudddp) return 4;
 	if (fun == &pFupLpl) return 1;
 	if (fun == &pFupLpL) return 1;
+	if (fun == &pFddddi) return 5;
 	if (fun == &pFLuppp) return 1;
 	if (fun == &pFLpppi) return 1;
 	if (fun == &pFpiiii) return 1;
 	if (fun == &pFpiiip) return 1;
 	if (fun == &pFpiiuu) return 1;
 	if (fun == &pFpiipi) return 1;
+	if (fun == &pFpiipL) return 1;
 	if (fun == &pFpiipp) return 1;
 	if (fun == &pFpiCCC) return 1;
 	if (fun == &pFpiuuu) return 1;
+	if (fun == &pFpiuup) return 1;
 	if (fun == &pFpiupp) return 1;
 	if (fun == &pFpiLip) return 1;
 	if (fun == &pFpipip) return 1;
@@ -7269,6 +7341,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFpLLLp) return 1;
 	if (fun == &pFpLpii) return 1;
 	if (fun == &pFpLpip) return 1;
+	if (fun == &pFpLpup) return 1;
 	if (fun == &pFppiii) return 1;
 	if (fun == &pFppiiu) return 1;
 	if (fun == &pFppiip) return 1;
@@ -7459,6 +7532,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &iFpipipi) return 1;
 	if (fun == &iFpipipp) return 1;
 	if (fun == &iFpipupp) return 1;
+	if (fun == &iFpipLpp) return 1;
 	if (fun == &iFpippip) return 1;
 	if (fun == &iFpippup) return 1;
 	if (fun == &iFpipppL) return 1;
@@ -7572,16 +7646,19 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFiiiiid) return 2;
 	if (fun == &pFipippp) return 1;
 	if (fun == &pFWCiWCi) return 1;
+	if (fun == &pFuCCCCp) return 1;
 	if (fun == &pFuuipip) return 1;
 	if (fun == &pFuuuiip) return 1;
 	if (fun == &pFuuuuii) return 1;
 	if (fun == &pFuuuuuu) return 1;
 	if (fun == &pFuuuuup) return 1;
 	if (fun == &pFuuppuu) return 1;
+	if (fun == &pFuppppp) return 1;
 	if (fun == &pFdddddd) return 7;
 	if (fun == &pFpiiiiu) return 1;
 	if (fun == &pFpiiipp) return 1;
 	if (fun == &pFpiiCCC) return 1;
+	if (fun == &pFpiiuup) return 1;
 	if (fun == &pFpiUUUU) return 1;
 	if (fun == &pFpipipp) return 1;
 	if (fun == &pFpippip) return 1;
@@ -7589,6 +7666,7 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &pFpCuuCC) return 1;
 	if (fun == &pFpCuuWW) return 1;
 	if (fun == &pFpCuuup) return 1;
+	if (fun == &pFpuiiip) return 1;
 	if (fun == &pFpuuwwu) return 1;
 	if (fun == &pFpuuuuu) return 1;
 	if (fun == &pFpuuupu) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 8a77380b..3565fe69 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -136,6 +136,7 @@ void pFl(x64emu_t *emu, uintptr_t fnc);
 void pFL(x64emu_t *emu, uintptr_t fnc);
 void pFp(x64emu_t *emu, uintptr_t fnc);
 void pFV(x64emu_t *emu, uintptr_t fnc);
+void pFA(x64emu_t *emu, uintptr_t fnc);
 void HFi(x64emu_t *emu, uintptr_t fnc);
 void HFp(x64emu_t *emu, uintptr_t fnc);
 void xFx(x64emu_t *emu, uintptr_t fnc);
@@ -241,6 +242,7 @@ void IFII(x64emu_t *emu, uintptr_t fnc);
 void IFpi(x64emu_t *emu, uintptr_t fnc);
 void IFpu(x64emu_t *emu, uintptr_t fnc);
 void IFpd(x64emu_t *emu, uintptr_t fnc);
+void IFpp(x64emu_t *emu, uintptr_t fnc);
 void CFip(x64emu_t *emu, uintptr_t fnc);
 void CFCi(x64emu_t *emu, uintptr_t fnc);
 void CFui(x64emu_t *emu, uintptr_t fnc);
@@ -460,6 +462,7 @@ void vFppd(x64emu_t *emu, uintptr_t fnc);
 void vFppl(x64emu_t *emu, uintptr_t fnc);
 void vFppL(x64emu_t *emu, uintptr_t fnc);
 void vFppp(x64emu_t *emu, uintptr_t fnc);
+void vFppV(x64emu_t *emu, uintptr_t fnc);
 void cFpdp(x64emu_t *emu, uintptr_t fnc);
 void wFppp(x64emu_t *emu, uintptr_t fnc);
 void iFEiw(x64emu_t *emu, uintptr_t fnc);
@@ -603,6 +606,7 @@ void uFpLp(x64emu_t *emu, uintptr_t fnc);
 void uFppi(x64emu_t *emu, uintptr_t fnc);
 void uFppu(x64emu_t *emu, uintptr_t fnc);
 void uFppp(x64emu_t *emu, uintptr_t fnc);
+void UFUii(x64emu_t *emu, uintptr_t fnc);
 void UFUUU(x64emu_t *emu, uintptr_t fnc);
 void UFpiU(x64emu_t *emu, uintptr_t fnc);
 void UFppi(x64emu_t *emu, uintptr_t fnc);
@@ -678,7 +682,6 @@ void pFWWW(x64emu_t *emu, uintptr_t fnc);
 void pFuip(x64emu_t *emu, uintptr_t fnc);
 void pFuui(x64emu_t *emu, uintptr_t fnc);
 void pFuuu(x64emu_t *emu, uintptr_t fnc);
-void pFuup(x64emu_t *emu, uintptr_t fnc);
 void pFulu(x64emu_t *emu, uintptr_t fnc);
 void pFulp(x64emu_t *emu, uintptr_t fnc);
 void pFupi(x64emu_t *emu, uintptr_t fnc);
@@ -688,6 +691,7 @@ void pFupL(x64emu_t *emu, uintptr_t fnc);
 void pFupp(x64emu_t *emu, uintptr_t fnc);
 void pFdip(x64emu_t *emu, uintptr_t fnc);
 void pFdUU(x64emu_t *emu, uintptr_t fnc);
+void pFddi(x64emu_t *emu, uintptr_t fnc);
 void pFddd(x64emu_t *emu, uintptr_t fnc);
 void pFDip(x64emu_t *emu, uintptr_t fnc);
 void pFlpi(x64emu_t *emu, uintptr_t fnc);
@@ -712,6 +716,7 @@ void pFpuu(x64emu_t *emu, uintptr_t fnc);
 void pFpuL(x64emu_t *emu, uintptr_t fnc);
 void pFpup(x64emu_t *emu, uintptr_t fnc);
 void pFpUi(x64emu_t *emu, uintptr_t fnc);
+void pFpUu(x64emu_t *emu, uintptr_t fnc);
 void pFpUp(x64emu_t *emu, uintptr_t fnc);
 void pFpdu(x64emu_t *emu, uintptr_t fnc);
 void pFpdd(x64emu_t *emu, uintptr_t fnc);
@@ -731,6 +736,7 @@ void pFppf(x64emu_t *emu, uintptr_t fnc);
 void pFppl(x64emu_t *emu, uintptr_t fnc);
 void pFppL(x64emu_t *emu, uintptr_t fnc);
 void pFppp(x64emu_t *emu, uintptr_t fnc);
+void pFppA(x64emu_t *emu, uintptr_t fnc);
 void pFpOM(x64emu_t *emu, uintptr_t fnc);
 void pFSpl(x64emu_t *emu, uintptr_t fnc);
 void vWpup(x64emu_t *emu, uintptr_t fnc);
@@ -1150,6 +1156,7 @@ void LFpppi(x64emu_t *emu, uintptr_t fnc);
 void LFpppL(x64emu_t *emu, uintptr_t fnc);
 void LFpppp(x64emu_t *emu, uintptr_t fnc);
 void pFEipp(x64emu_t *emu, uintptr_t fnc);
+void pFEuup(x64emu_t *emu, uintptr_t fnc);
 void pFEupp(x64emu_t *emu, uintptr_t fnc);
 void pFELpV(x64emu_t *emu, uintptr_t fnc);
 void pFELpA(x64emu_t *emu, uintptr_t fnc);
@@ -1194,6 +1201,7 @@ void pFpiLi(x64emu_t *emu, uintptr_t fnc);
 void pFpiLL(x64emu_t *emu, uintptr_t fnc);
 void pFpipi(x64emu_t *emu, uintptr_t fnc);
 void pFpipd(x64emu_t *emu, uintptr_t fnc);
+void pFpipL(x64emu_t *emu, uintptr_t fnc);
 void pFpipp(x64emu_t *emu, uintptr_t fnc);
 void pFpCip(x64emu_t *emu, uintptr_t fnc);
 void pFpCWp(x64emu_t *emu, uintptr_t fnc);
@@ -1212,6 +1220,7 @@ void pFpupi(x64emu_t *emu, uintptr_t fnc);
 void pFpupu(x64emu_t *emu, uintptr_t fnc);
 void pFpupp(x64emu_t *emu, uintptr_t fnc);
 void pFpdIU(x64emu_t *emu, uintptr_t fnc);
+void pFpddi(x64emu_t *emu, uintptr_t fnc);
 void pFplil(x64emu_t *emu, uintptr_t fnc);
 void pFplip(x64emu_t *emu, uintptr_t fnc);
 void pFplpl(x64emu_t *emu, uintptr_t fnc);
@@ -1652,6 +1661,8 @@ void pFEppLp(x64emu_t *emu, uintptr_t fnc);
 void pFEpppi(x64emu_t *emu, uintptr_t fnc);
 void pFEpppu(x64emu_t *emu, uintptr_t fnc);
 void pFEpppp(x64emu_t *emu, uintptr_t fnc);
+void pFEpppV(x64emu_t *emu, uintptr_t fnc);
+void pFEpppA(x64emu_t *emu, uintptr_t fnc);
 void pFiiiii(x64emu_t *emu, uintptr_t fnc);
 void pFiiipL(x64emu_t *emu, uintptr_t fnc);
 void pFipipL(x64emu_t *emu, uintptr_t fnc);
@@ -1664,15 +1675,18 @@ void pFuupuu(x64emu_t *emu, uintptr_t fnc);
 void pFudddp(x64emu_t *emu, uintptr_t fnc);
 void pFupLpl(x64emu_t *emu, uintptr_t fnc);
 void pFupLpL(x64emu_t *emu, uintptr_t fnc);
+void pFddddi(x64emu_t *emu, uintptr_t fnc);
 void pFLuppp(x64emu_t *emu, uintptr_t fnc);
 void pFLpppi(x64emu_t *emu, uintptr_t fnc);
 void pFpiiii(x64emu_t *emu, uintptr_t fnc);
 void pFpiiip(x64emu_t *emu, uintptr_t fnc);
 void pFpiiuu(x64emu_t *emu, uintptr_t fnc);
 void pFpiipi(x64emu_t *emu, uintptr_t fnc);
+void pFpiipL(x64emu_t *emu, uintptr_t fnc);
 void pFpiipp(x64emu_t *emu, uintptr_t fnc);
 void pFpiCCC(x64emu_t *emu, uintptr_t fnc);
 void pFpiuuu(x64emu_t *emu, uintptr_t fnc);
+void pFpiuup(x64emu_t *emu, uintptr_t fnc);
 void pFpiupp(x64emu_t *emu, uintptr_t fnc);
 void pFpiLip(x64emu_t *emu, uintptr_t fnc);
 void pFpipip(x64emu_t *emu, uintptr_t fnc);
@@ -1700,6 +1714,7 @@ void pFpLLip(x64emu_t *emu, uintptr_t fnc);
 void pFpLLLp(x64emu_t *emu, uintptr_t fnc);
 void pFpLpii(x64emu_t *emu, uintptr_t fnc);
 void pFpLpip(x64emu_t *emu, uintptr_t fnc);
+void pFpLpup(x64emu_t *emu, uintptr_t fnc);
 void pFppiii(x64emu_t *emu, uintptr_t fnc);
 void pFppiiu(x64emu_t *emu, uintptr_t fnc);
 void pFppiip(x64emu_t *emu, uintptr_t fnc);
@@ -1933,6 +1948,7 @@ void iFpiuupp(x64emu_t *emu, uintptr_t fnc);
 void iFpipipi(x64emu_t *emu, uintptr_t fnc);
 void iFpipipp(x64emu_t *emu, uintptr_t fnc);
 void iFpipupp(x64emu_t *emu, uintptr_t fnc);
+void iFpipLpp(x64emu_t *emu, uintptr_t fnc);
 void iFpippip(x64emu_t *emu, uintptr_t fnc);
 void iFpippup(x64emu_t *emu, uintptr_t fnc);
 void iFpipppL(x64emu_t *emu, uintptr_t fnc);
@@ -2046,6 +2062,7 @@ void lFppLipp(x64emu_t *emu, uintptr_t fnc);
 void lFpppLpp(x64emu_t *emu, uintptr_t fnc);
 void LFEupppp(x64emu_t *emu, uintptr_t fnc);
 void LFELpppi(x64emu_t *emu, uintptr_t fnc);
+void LFEpippp(x64emu_t *emu, uintptr_t fnc);
 void LFEppppi(x64emu_t *emu, uintptr_t fnc);
 void LFpipipi(x64emu_t *emu, uintptr_t fnc);
 void LFpLippp(x64emu_t *emu, uintptr_t fnc);
@@ -2058,6 +2075,7 @@ void pFEpuipp(x64emu_t *emu, uintptr_t fnc);
 void pFEpuupp(x64emu_t *emu, uintptr_t fnc);
 void pFEpuppp(x64emu_t *emu, uintptr_t fnc);
 void pFEpLLiN(x64emu_t *emu, uintptr_t fnc);
+void pFEppupi(x64emu_t *emu, uintptr_t fnc);
 void pFEppLLp(x64emu_t *emu, uintptr_t fnc);
 void pFEpppLp(x64emu_t *emu, uintptr_t fnc);
 void pFEppppi(x64emu_t *emu, uintptr_t fnc);
@@ -2068,16 +2086,19 @@ void pFiiiiii(x64emu_t *emu, uintptr_t fnc);
 void pFiiiiid(x64emu_t *emu, uintptr_t fnc);
 void pFipippp(x64emu_t *emu, uintptr_t fnc);
 void pFWCiWCi(x64emu_t *emu, uintptr_t fnc);
+void pFuCCCCp(x64emu_t *emu, uintptr_t fnc);
 void pFuuipip(x64emu_t *emu, uintptr_t fnc);
 void pFuuuiip(x64emu_t *emu, uintptr_t fnc);
 void pFuuuuii(x64emu_t *emu, uintptr_t fnc);
 void pFuuuuuu(x64emu_t *emu, uintptr_t fnc);
 void pFuuuuup(x64emu_t *emu, uintptr_t fnc);
 void pFuuppuu(x64emu_t *emu, uintptr_t fnc);
+void pFuppppp(x64emu_t *emu, uintptr_t fnc);
 void pFdddddd(x64emu_t *emu, uintptr_t fnc);
 void pFpiiiiu(x64emu_t *emu, uintptr_t fnc);
 void pFpiiipp(x64emu_t *emu, uintptr_t fnc);
 void pFpiiCCC(x64emu_t *emu, uintptr_t fnc);
+void pFpiiuup(x64emu_t *emu, uintptr_t fnc);
 void pFpiUUUU(x64emu_t *emu, uintptr_t fnc);
 void pFpipipp(x64emu_t *emu, uintptr_t fnc);
 void pFpippip(x64emu_t *emu, uintptr_t fnc);
@@ -2085,6 +2106,7 @@ void pFpipppp(x64emu_t *emu, uintptr_t fnc);
 void pFpCuuCC(x64emu_t *emu, uintptr_t fnc);
 void pFpCuuWW(x64emu_t *emu, uintptr_t fnc);
 void pFpCuuup(x64emu_t *emu, uintptr_t fnc);
+void pFpuiiip(x64emu_t *emu, uintptr_t fnc);
 void pFpuuwwu(x64emu_t *emu, uintptr_t fnc);
 void pFpuuuuu(x64emu_t *emu, uintptr_t fnc);
 void pFpuuupu(x64emu_t *emu, uintptr_t fnc);
@@ -2341,6 +2363,7 @@ void pFEppuipp(x64emu_t *emu, uintptr_t fnc);
 void pFEppppip(x64emu_t *emu, uintptr_t fnc);
 void pFEpppppi(x64emu_t *emu, uintptr_t fnc);
 void pFifffppp(x64emu_t *emu, uintptr_t fnc);
+void pFWpppppp(x64emu_t *emu, uintptr_t fnc);
 void pFuuuiiip(x64emu_t *emu, uintptr_t fnc);
 void pFuupupup(x64emu_t *emu, uintptr_t fnc);
 void pFfiiiiid(x64emu_t *emu, uintptr_t fnc);
@@ -2356,6 +2379,7 @@ void pFpCpWWup(x64emu_t *emu, uintptr_t fnc);
 void pFpWppWpp(x64emu_t *emu, uintptr_t fnc);
 void pFpuuuwwu(x64emu_t *emu, uintptr_t fnc);
 void pFpuupwwC(x64emu_t *emu, uintptr_t fnc);
+void pFpuLpipp(x64emu_t *emu, uintptr_t fnc);
 void pFpupiipp(x64emu_t *emu, uintptr_t fnc);
 void pFpuppipp(x64emu_t *emu, uintptr_t fnc);
 void pFplppppp(x64emu_t *emu, uintptr_t fnc);
@@ -2383,6 +2407,7 @@ void pFpppCCCi(x64emu_t *emu, uintptr_t fnc);
 void pFpppuipp(x64emu_t *emu, uintptr_t fnc);
 void pFpppuuui(x64emu_t *emu, uintptr_t fnc);
 void pFpppuupp(x64emu_t *emu, uintptr_t fnc);
+void pFpppupii(x64emu_t *emu, uintptr_t fnc);
 void pFpppupup(x64emu_t *emu, uintptr_t fnc);
 void pFpppuppp(x64emu_t *emu, uintptr_t fnc);
 void pFpppfffi(x64emu_t *emu, uintptr_t fnc);
@@ -2405,6 +2430,7 @@ void vFEiippppV(x64emu_t *emu, uintptr_t fnc);
 void vFEiupippp(x64emu_t *emu, uintptr_t fnc);
 void vFEipAippp(x64emu_t *emu, uintptr_t fnc);
 void vFEppipppp(x64emu_t *emu, uintptr_t fnc);
+void vFEppLippp(x64emu_t *emu, uintptr_t fnc);
 void vFEpppippp(x64emu_t *emu, uintptr_t fnc);
 void vFEpppuipV(x64emu_t *emu, uintptr_t fnc);
 void vFEpppppuu(x64emu_t *emu, uintptr_t fnc);
@@ -2535,6 +2561,7 @@ void LFELpupupu(x64emu_t *emu, uintptr_t fnc);
 void LFEpiupppp(x64emu_t *emu, uintptr_t fnc);
 void LFpLpuuLLu(x64emu_t *emu, uintptr_t fnc);
 void pFEiplllpp(x64emu_t *emu, uintptr_t fnc);
+void pFEipLLLpp(x64emu_t *emu, uintptr_t fnc);
 void pFEpiuCppp(x64emu_t *emu, uintptr_t fnc);
 void pFEppLiiip(x64emu_t *emu, uintptr_t fnc);
 void pFEpppuipV(x64emu_t *emu, uintptr_t fnc);
@@ -2544,8 +2571,10 @@ void pFEppppppp(x64emu_t *emu, uintptr_t fnc);
 void pFiippipip(x64emu_t *emu, uintptr_t fnc);
 void pFiupppppp(x64emu_t *emu, uintptr_t fnc);
 void pFuiiiuuuu(x64emu_t *emu, uintptr_t fnc);
+void pFuCCCCpWw(x64emu_t *emu, uintptr_t fnc);
 void pFuupupipp(x64emu_t *emu, uintptr_t fnc);
 void pFpiiiiiuu(x64emu_t *emu, uintptr_t fnc);
+void pFpiiuuupp(x64emu_t *emu, uintptr_t fnc);
 void pFpiUdiiUi(x64emu_t *emu, uintptr_t fnc);
 void pFpipiiiip(x64emu_t *emu, uintptr_t fnc);
 void pFpCCuuwwC(x64emu_t *emu, uintptr_t fnc);
@@ -2631,6 +2660,7 @@ void vFpppffffff(x64emu_t *emu, uintptr_t fnc);
 void vFppppipiip(x64emu_t *emu, uintptr_t fnc);
 void vFpppppippp(x64emu_t *emu, uintptr_t fnc);
 void iFEpiiiiipi(x64emu_t *emu, uintptr_t fnc);
+void iFEppuppppp(x64emu_t *emu, uintptr_t fnc);
 void iFEpppipppp(x64emu_t *emu, uintptr_t fnc);
 void iFEppplPPPP(x64emu_t *emu, uintptr_t fnc);
 void iFEpppppupp(x64emu_t *emu, uintptr_t fnc);
@@ -2639,6 +2669,7 @@ void iFiiiiiiiip(x64emu_t *emu, uintptr_t fnc);
 void iFiiiipiiip(x64emu_t *emu, uintptr_t fnc);
 void iFipiipippi(x64emu_t *emu, uintptr_t fnc);
 void iFdddpppppp(x64emu_t *emu, uintptr_t fnc);
+void iFpipippppi(x64emu_t *emu, uintptr_t fnc);
 void iFpipLpiiip(x64emu_t *emu, uintptr_t fnc);
 void iFpuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
 void iFpuuuuduup(x64emu_t *emu, uintptr_t fnc);
@@ -2796,6 +2827,7 @@ void vFppuupppiiii(x64emu_t *emu, uintptr_t fnc);
 void vFppupipiuuuu(x64emu_t *emu, uintptr_t fnc);
 void vFppupppuiiii(x64emu_t *emu, uintptr_t fnc);
 void vFppppppppppp(x64emu_t *emu, uintptr_t fnc);
+void iFEiipppppppp(x64emu_t *emu, uintptr_t fnc);
 void iFEpppipppppp(x64emu_t *emu, uintptr_t fnc);
 void iFEppppiiiiuu(x64emu_t *emu, uintptr_t fnc);
 void iFEpppppppppp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedgio2.c b/src/wrapped/wrappedgio2.c
index e4837e7e..2556c7b3 100644
--- a/src/wrapped/wrappedgio2.c
+++ b/src/wrapped/wrappedgio2.c
@@ -616,6 +616,11 @@ EXPORT void my_g_task_return_new_error(x64emu_t* emu, void* task, uint32_t domai
     free(tmp);
 }
 
+EXPORT void my_g_input_stream_read_async(x64emu_t* emu, void* stream, void* buffer, size_t count, int io_prio, void* cancel, void* f, void* data)
+{
+    my->g_input_stream_read_async(stream, buffer, count, io_prio, cancel, findGAsyncReadyCallbackFct(f), data);
+}
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
diff --git a/src/wrapped/wrappedgio2_private.h b/src/wrapped/wrappedgio2_private.h
index 560b2518..c97a314d 100644
--- a/src/wrapped/wrappedgio2_private.h
+++ b/src/wrapped/wrappedgio2_private.h
@@ -952,11 +952,11 @@ GO(g_input_stream_has_pending, iFp)
 //GO(g_input_stream_is_closed, 
 GO(g_input_stream_read, lFppLpp)
 GO(g_input_stream_read_all, iFppLppp)
-//GO(g_input_stream_read_async, 
+GOM(g_input_stream_read_async, vFEppLippp)
 GO(g_input_stream_read_bytes, pFpLpp)
 //GO(g_input_stream_read_bytes_async, 
 GO(g_input_stream_read_bytes_finish, pFppp)
-//GO(g_input_stream_read_finish, 
+GO(g_input_stream_read_finish, lFppp)
 GO(g_input_stream_set_pending, iFpp)
 GO(g_input_stream_skip, lFpLpp)
 //GO(g_input_stream_skip_async, 
@@ -1228,7 +1228,7 @@ GO(g_proxy_address_get_destination_port, WFp)
 //GO(g_proxy_address_get_destination_protocol, 
 //GO(g_proxy_address_get_password, 
 //GO(g_proxy_address_get_protocol, 
-//GO(g_proxy_address_get_type, 
+GO(g_proxy_address_get_type, LFv)
 GO(g_proxy_address_get_uri, pFp)
 //GO(g_proxy_address_get_username, 
 GO(g_proxy_address_new, pFpWppWpp)
@@ -1238,7 +1238,7 @@ GO(g_proxy_connect_finish, pFppp)
 GO(g_proxy_get_default_for_protocol, pFp)
 //GO(g_proxy_get_type, 
 GO(g_proxy_resolver_get_default, pFv)
-//GO(g_proxy_resolver_get_type, 
+GO(g_proxy_resolver_get_type, LFv)
 GO(g_proxy_resolver_is_supported, iFp)
 GO(g_proxy_resolver_lookup, pFpppp)
 //GO(g_proxy_resolver_lookup_async, 
@@ -1252,7 +1252,7 @@ GO(g_remote_action_group_change_action_state_full, vFpppp)
 //GO(g_resolver_free_addresses, 
 GO(g_resolver_free_targets, vFp)
 GO(g_resolver_get_default, pFv)
-//GO(g_resolver_get_type, 
+GO(g_resolver_get_type, LFv)
 GO(g_resolver_lookup_by_address, pFpppp)
 //GO(g_resolver_lookup_by_address_async, 
 GO(g_resolver_lookup_by_address_finish, pFppp)
@@ -1424,7 +1424,7 @@ GO(g_socket_address_enumerator_next, pFppp)
 GO(g_socket_address_enumerator_next_finish, pFppp)
 GO(g_socket_address_get_family, uFp)
 GO(g_socket_address_get_native_size, lFp)
-//GO(g_socket_address_get_type, 
+GO(g_socket_address_get_type, LFv)
 //GO(g_socket_address_new_from_native, 
 GO(g_socket_address_to_native, iFppLp)
 GO(g_socket_bind, iFppip)
@@ -1452,7 +1452,7 @@ GO(g_socket_client_get_socket_type, uFp)
 GO(g_socket_client_get_timeout, uFp)
 GO(g_socket_client_get_tls, iFp)
 GO(g_socket_client_get_tls_validation_flags, uFp)
-//GO(g_socket_client_get_type, 
+GO(g_socket_client_get_type, LFv)
 GO(g_socket_client_new, pFv)
 //GO(g_socket_client_set_enable_proxy, 
 GO(g_socket_client_set_family, vFpu)
@@ -1489,7 +1489,7 @@ GO(g_socket_control_message_get_size, LFp)
 //GO(g_socket_control_message_get_type, 
 GO(g_socket_control_message_serialize, vFpp)
 //GO(g_socket_create_source, 
-//GO(g_socket_family_get_type, 
+GO(g_socket_family_get_type, LFv)
 GO(g_socket_get_available_bytes, lFp)
 //GO(g_socket_get_blocking, 
 //GO(g_socket_get_broadcast, 
@@ -1507,7 +1507,7 @@ GO(g_socket_get_remote_address, pFpp)
 GO(g_socket_get_socket_type, uFp)
 //GO(g_socket_get_timeout, 
 //GO(g_socket_get_ttl, 
-//GO(g_socket_get_type, 
+GO(g_socket_get_type, LFv)
 //GO(g_socket_is_closed, 
 //GO(g_socket_is_connected, 
 //GO(g_socket_join_multicast_group, 
@@ -1539,7 +1539,7 @@ GO(g_socket_send, lFppLpp)
 GO(g_socket_send_message, lFpppipiipp)
 GO(g_socket_send_to, lFpppLpp)
 GO(g_socket_send_with_blocking, lFppLipp)
-//GO(g_socket_service_get_type, 
+GO(g_socket_service_get_type, LFv)
 GO(g_socket_service_is_active, iFp)
 GO(g_socket_service_new, pFv)
 //GO(g_socket_service_start, 
@@ -1682,7 +1682,7 @@ GO(g_tls_backend_get_default_database, pFp)
 //GO(g_tls_backend_supports_tls, 
 //GO(g_tls_certificate_flags_get_type, 
 GO(g_tls_certificate_get_issuer, pFp)
-//GO(g_tls_certificate_get_type, 
+GO(g_tls_certificate_get_type, LFv)
 GO(g_tls_certificate_is_same, iFpp)
 GO(g_tls_certificate_list_new_from_file, pFpp)
 GO(g_tls_certificate_new_from_file, pFpp)
@@ -1707,7 +1707,7 @@ GO(g_tls_connection_get_peer_certificate, pFp)
 GO(g_tls_connection_get_peer_certificate_errors, uFp)
 GO(g_tls_connection_get_rehandshake_mode, uFp)
 GO(g_tls_connection_get_require_close_notify, iFp)
-//GO(g_tls_connection_get_type, 
+GO(g_tls_connection_get_type, LFv)
 //GO(g_tls_connection_get_use_system_certdb, 
 GO(g_tls_connection_handshake, iFppp)
 //GO(g_tls_connection_handshake_async, 
@@ -1719,7 +1719,7 @@ GO(g_tls_connection_set_rehandshake_mode, vFpu)
 GO(g_tls_connection_set_require_close_notify, vFpi)
 //GO(g_tls_connection_set_use_system_certdb, 
 GO(g_tls_database_create_certificate_handle, pFpp)
-//GO(g_tls_database_get_type, 
+GO(g_tls_database_get_type, LFv)
 GO(g_tls_database_lookup_certificate_for_handle, pFpppupp)
 //GO(g_tls_database_lookup_certificate_for_handle_async, 
 //GO(g_tls_database_lookup_certificate_for_handle_finish, 
@@ -1741,7 +1741,7 @@ GO(g_tls_file_database_new, pFpp)
 GO(g_tls_interaction_ask_password, uFpppp)
 //GO(g_tls_interaction_ask_password_async, 
 //GO(g_tls_interaction_ask_password_finish, 
-//GO(g_tls_interaction_get_type, 
+GO(g_tls_interaction_get_type, LFv)
 //GO(g_tls_interaction_invoke_ask_password, 
 //GO(g_tls_interaction_invoke_request_certificate, 
 GO(g_tls_interaction_request_certificate, uFppupp)
diff --git a/src/wrapped/wrappedglib2.c b/src/wrapped/wrappedglib2.c
index 5c10638b..9dd59d76 100644
--- a/src/wrapped/wrappedglib2.c
+++ b/src/wrapped/wrappedglib2.c
@@ -1420,6 +1420,21 @@ EXPORT void my_g_option_group_set_parse_hooks(x64emu_t* emu, void* group, void*
     my->g_option_group_set_parse_hooks(group, findGOptionParseFct(preparse), findGOptionParseFct(postparse));
 }
 
+EXPORT void* my_g_thread_new(x64emu_t* emu, void* name, void* f, void* data)
+{
+    return my->g_thread_new(name, findGThreadFuncFct(f), data);
+}
+
+EXPORT void my_g_queue_foreach(x64emu_t* emu, void* queue, void* f, void* data)
+{
+    my->g_queue_foreach(queue, findGFuncFct(f), data);
+}
+
+EXPORT void* my_g_once_impl(x64emu_t* emu, void* once, void* f, void* arg)
+{
+    return my->g_once_impl(once, findGThreadFuncFct(f), arg);
+}
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
diff --git a/src/wrapped/wrappedglib2_private.h b/src/wrapped/wrappedglib2_private.h
index c5285b9d..1f64bd14 100644
--- a/src/wrapped/wrappedglib2_private.h
+++ b/src/wrapped/wrappedglib2_private.h
@@ -180,7 +180,7 @@ GO(g_cache_remove, vFpp)
 //GO(g_cache_value_foreach, 
 GO(g_chdir, iFp)
 GO(g_checksum_copy, pFp)
-//GO(g_checksum_free, 
+GO(g_checksum_free, vFp)
 GO(g_checksum_get_digest, vFppp)
 GO(g_checksum_get_string, pFp)
 GO(g_checksum_new, pFu)
@@ -324,7 +324,7 @@ GO(g_date_time_to_timeval, iFpp)
 GO(g_date_time_to_timezone, pFpp)
 GO(g_date_time_to_unix, lFp)
 GO(g_date_time_to_utc, pFp)
-//GO(g_date_time_unref, 
+GO(g_date_time_unref, vFp)
 GO(g_date_to_struct_tm, vFpp)
 GO(g_date_valid, iFp)
 GO(g_date_valid_day, iFC)
@@ -751,10 +751,10 @@ GO(g_node_push_allocator, vFp)
 GOM(g_node_traverse, vFEpiiipp)
 //GO(g_node_unlink, 
 GO(g_nullify_pointer, vFp)
-//GO(g_once_impl, 
+GOM(g_once_impl, pFEppp)
 GO(g_once_init_enter, iFp)
 GO(g_once_init_enter_impl, iFp)
-GO(g_once_init_leave, vFpi)
+GO(g_once_init_leave, vFpL)
 GO(g_on_error_query, vFp)
 GO(g_on_error_stack_trace, vFp)
 GO(g_open, iFpii)
@@ -845,7 +845,7 @@ GO(g_queue_copy, pFp)
 GO(g_queue_delete_link, vFpp)
 GO(g_queue_find, pFpp)
 GOM(g_queue_find_custom, pFEppp)
-//GOM(g_queue_foreach, vFEpBp)
+GOM(g_queue_foreach, vFEppp)
 GO(g_queue_free, vFp)
 //GOM(g_queue_free_full, vFEpB)
 GO(g_queue_get_length, uFp)
@@ -1211,6 +1211,7 @@ GO(g_str_to_ascii, pFpp)
 GO(g_strtod, dFpp)
 GO(g_str_tokenize_and_fold, pFppp)
 GO(g_strup, pFp)
+GO(g_strv_contains, iFpp)
 GO(g_strv_length, uFp)
 //GO(g_test_add_data_func, 
 //GO(g_test_add_data_func_full, 
@@ -1269,7 +1270,7 @@ GOM(g_thread_foreach, vFEpp)
 GO(g_thread_get_initialized, iFv)
 //GO(g_thread_init_glib, 
 GO(g_thread_join, pFp)
-//GO(g_thread_new, 
+GOM(g_thread_new, pFEppp)
 //GO(g_thread_pool_free, 
 GO(g_thread_pool_get_max_idle_time, uFv)
 //GO(g_thread_pool_get_max_threads, 
@@ -1396,9 +1397,12 @@ GO(g_unlink, iFp)
 GO(g_unsetenv, vFp)
 GO(g_uri_escape_string, pFppi)
 GO(g_uri_list_extract_uris, pFp)
+GO(g_uri_parse, pFpip)
 GO(g_uri_parse_scheme, pFp)
+GO(g_uri_to_string_partial, pFpi)
 GO(g_uri_unescape_segment, pFppp)
 GO(g_uri_unescape_string, pFpp)
+GO(g_uri_unref, vFp)
 GO(g_usleep, vFL)
 GO(g_utf16_to_ucs4, pFplppp)
 GO(g_utf16_to_utf8, pFplppp)
diff --git a/src/wrapped/wrappedgobject2.c b/src/wrapped/wrappedgobject2.c
index d51a736f..6a30df4c 100644
--- a/src/wrapped/wrappedgobject2.c
+++ b/src/wrapped/wrappedgobject2.c
@@ -29,6 +29,7 @@ typedef void*(*pFL_t)(size_t);
  GO(g_object_get_type, LFv_t)       \
  GO(g_initially_unowned_get_type, LFv_t)    \
  GO(g_type_name, pFL_t)             \
+ GO(g_type_parent, LFv_t)           \
  GO(g_type_class_peek, pFL_t)       \
 
 #include "generated/wrappedgobject2types.h"
@@ -541,20 +542,22 @@ static my_GParamSpecTypeInfo_t* findFreeGParamSpecTypeInfo(my_GParamSpecTypeInfo
 // GInterfaceInitFunc
 #define GO(A)   \
 static uintptr_t my_GInterfaceInitFunc_fct_##A = 0;                             \
+static size_t my_GInterfaceInitFunc_klass_##A = 0;                              \
 static void my_GInterfaceInitFunc_##A(void* src, void* dst)                     \
 {                                                                               \
-    RunFunctionFmt(my_GInterfaceInitFunc_fct_##A, "pp", src, dst);  \
+    RunFunctionFmt(my_GInterfaceInitFunc_fct_##A, "pp", src, dst);              \
+    unwrapGTKInterface(src, my_GInterfaceInitFunc_klass_##A);                   \
 }
 SUPER()
 #undef GO
-static void* findGInterfaceInitFuncFct(void* fct)
+static void* findGInterfaceInitFuncFct(void* fct, size_t klass)
 {
     if(!fct) return fct;
     if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
-    #define GO(A) if(my_GInterfaceInitFunc_fct_##A == (uintptr_t)fct) return my_GInterfaceInitFunc_##A;
+    #define GO(A) if(my_GInterfaceInitFunc_fct_##A == (uintptr_t)fct && my_GInterfaceInitFunc_klass_##A == klass) return my_GInterfaceInitFunc_##A;
     SUPER()
     #undef GO
-    #define GO(A) if(my_GInterfaceInitFunc_fct_##A == 0) {my_GInterfaceInitFunc_fct_##A = (uintptr_t)fct; return my_GInterfaceInitFunc_##A; }
+    #define GO(A) if(my_GInterfaceInitFunc_fct_##A == 0) {my_GInterfaceInitFunc_fct_##A = (uintptr_t)fct; my_GInterfaceInitFunc_klass_##A = klass; return my_GInterfaceInitFunc_##A; }
     SUPER()
     #undef GO
     printf_log(LOG_NONE, "Warning, no more slot for gobject GInterfaceInitFunc callback\n");
@@ -713,8 +716,10 @@ EXPORT void* my_g_object_new_valist(x64emu_t* emu, size_t type, void* first, x64
 
 EXPORT size_t my_g_type_register_static(x64emu_t* emu, size_t parent, void* name, my_GTypeInfo_t* info, int flags)
 {
-
-    return my->g_type_register_static(parent, name, findFreeGTypeInfo(info, parent), flags);
+    size_t ret = my->g_type_register_static(parent, name, findFreeGTypeInfo(info, parent), flags);
+    printf_log(LOG_DEBUG, "Registered %s as 0x%zx\n", name, ret);
+    addRegisteredClass(ret, name);
+    return ret;
 }
 
 EXPORT size_t my_g_type_register_fundamental(x64emu_t* emu, size_t parent, void* name, my_GTypeInfo_t* info, void* finfo, int flags)
@@ -767,7 +772,7 @@ typedef struct my_GInterfaceInfo_s {
 EXPORT void my_g_type_add_interface_static(x64emu_t* emu, size_t instance_type, size_t interface_type, my_GInterfaceInfo_t* info)
 {
     my_GInterfaceInfo_t i = {0};
-    i.interface_init = findGInterfaceInitFuncFct(info->interface_init);
+    i.interface_init = findGInterfaceInitFuncFct(info->interface_init, interface_type);
     i.interface_finalize = findGInterfaceFinalizeFuncFct(info->interface_finalize);
     i.data = info->data;
     my->g_type_add_interface_static(instance_type, interface_type, &i);
@@ -906,6 +911,7 @@ EXPORT void* my_g_type_value_table_peek(x64emu_t* emu, size_t type)
     SetGInitiallyUnownedID(my->g_initially_unowned_get_type()); \
     SetGTypeName(my->g_type_name);          \
     SetGClassPeek(my->g_type_class_peek);   \
+    SetGTypeParent(my->g_type_parent);      \
     setNeededLibs(lib, 1, "libglib-2.0.so.0");
 
 #define CUSTOM_FINI \
diff --git a/src/wrapped/wrappedgobject2_private.h b/src/wrapped/wrappedgobject2_private.h
index b81d036d..574ce14a 100644
--- a/src/wrapped/wrappedgobject2_private.h
+++ b/src/wrapped/wrappedgobject2_private.h
@@ -183,7 +183,7 @@ GO(g_param_spec_int, pFpppiiii)
 GO(g_param_spec_int64, pFpppllli)
 GO(g_param_spec_internal, pFLpppi)
 GO(g_param_spec_long, pFpppllli)
-GO(g_param_spec_object, pFpppii)
+GO(g_param_spec_object, pFpppLi)
 GO(g_param_spec_override, pFpp)
 GO(g_param_spec_param, pFpppii)
 GO(g_param_spec_pointer, pFpppi)
diff --git a/src/wrapped/wrappedgstallocators.c b/src/wrapped/wrappedgstallocators.c
new file mode 100644
index 00000000..a698ce73
--- /dev/null
+++ b/src/wrapped/wrappedgstallocators.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstallocatorsName = "libgstallocators-1.0.so.0";
+#define LIBNAME gstallocators
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstallocators_private.h b/src/wrapped/wrappedgstallocators_private.h
new file mode 100644
index 00000000..18c71e14
--- /dev/null
+++ b/src/wrapped/wrappedgstallocators_private.h
@@ -0,0 +1,18 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+GO(gst_dmabuf_allocator_alloc, pFpiL)
+//GO(gst_dmabuf_allocator_alloc_with_flags, 
+GO(gst_dmabuf_allocator_get_type, LFv)
+GO(gst_dmabuf_allocator_new, pFv)
+//GO(gst_dmabuf_memory_get_fd, 
+//GO(gst_fd_allocator_alloc, 
+GO(gst_fd_allocator_get_type, LFv)
+//GO(gst_fd_allocator_new, 
+//GO(gst_fd_memory_get_fd, 
+//GO(gst_is_dmabuf_memory, 
+//GO(gst_is_fd_memory, 
+//GO(gst_is_phys_memory, 
+GO(gst_phys_memory_allocator_get_type, LFv)
+//GO(gst_phys_memory_get_phys_addr, 
\ No newline at end of file
diff --git a/src/wrapped/wrappedgstaudio.c b/src/wrapped/wrappedgstaudio.c
index 5f4e2a46..f7faf217 100644
--- a/src/wrapped/wrappedgstaudio.c
+++ b/src/wrapped/wrappedgstaudio.c
@@ -11,12 +11,37 @@
 #include "bridge.h"
 #include "librarian/library_private.h"
 #include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+#include "myalign.h"
+#include "gtkclass.h"
+#include "fileutils.h"
 
 const char* gstaudioName = "libgstaudio-1.0.so.0";
 #define LIBNAME gstaudio
 
+typedef size_t  (*LFv_t)();
+
+#define ADDED_FUNCTIONS()                   \
+    GO(gst_audio_decoder_get_type, LFv_t)   \
+
+#include "generated/wrappedgstaudiotypes.h"
+
+#include "wrappercallback.h"
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
 
+#define CUSTOM_INIT \
+    getMy(lib);     \
+    SetGstAudioDecoderID(my->gst_audio_decoder_get_type());\
+    setNeededLibs(lib, 1, "libgstreamer-1.0.so.0");
+
+#define CUSTOM_FINI \
+    freeMy();
+
 #include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstaudio_private.h b/src/wrapped/wrappedgstaudio_private.h
index ef7996c3..f297ebfa 100644
--- a/src/wrapped/wrappedgstaudio_private.h
+++ b/src/wrapped/wrappedgstaudio_private.h
@@ -50,7 +50,7 @@ GO(gst_audio_channel_positions_to_mask, iFpiip)
 GO(gst_audio_channel_positions_to_string, pFpi)
 GO(gst_audio_channel_positions_to_valid_order, iFpi)
 GO(gst_audio_check_valid_channel_positions, iFpii)
-//GO(gst_audio_clipping_meta_api_get_type, 
+GO(gst_audio_clipping_meta_api_get_type, LFv)
 //GO(gst_audio_clipping_meta_get_info, 
 //GO(gst_audio_clock_adjust, 
 //GO(gst_audio_clock_get_time, 
@@ -72,10 +72,10 @@ GO(gst_audio_converter_reset, vFp)
 GO(gst_audio_converter_samples, iFpupLpL)
 //GO(gst_audio_converter_supports_inplace, 
 GO(gst_audio_converter_update_config, iFpiip)
-//GO(gst_audio_decoder_allocate_output_buffer, 
-//GO(_gst_audio_decoder_error, 
-//GO(gst_audio_decoder_finish_frame, 
-//GO(gst_audio_decoder_finish_subframe, 
+GO(gst_audio_decoder_allocate_output_buffer, pFpL)
+GO(_gst_audio_decoder_error, iFpipippppi)
+GO(gst_audio_decoder_finish_frame, iFppi)
+GO(gst_audio_decoder_finish_subframe, iFpp)
 //GO(gst_audio_decoder_get_allocator, 
 //GO(gst_audio_decoder_get_audio_info, 
 //GO(gst_audio_decoder_get_delay, 
@@ -89,30 +89,30 @@ GO(gst_audio_converter_update_config, iFpiip)
 //GO(gst_audio_decoder_get_plc, 
 //GO(gst_audio_decoder_get_plc_aware, 
 //GO(gst_audio_decoder_get_tolerance, 
-//GO(gst_audio_decoder_get_type, 
+GO(gst_audio_decoder_get_type, LFv)
 //GO(gst_audio_decoder_merge_tags, 
 //GO(gst_audio_decoder_negotiate, 
 //GO(gst_audio_decoder_proxy_getcaps, 
 //GO(gst_audio_decoder_set_allocation_caps, 
-//GO(gst_audio_decoder_set_drainable, 
+GO(gst_audio_decoder_set_drainable, vFpi)
 //GO(gst_audio_decoder_set_estimate_rate, 
 //GO(gst_audio_decoder_set_latency, 
 //GO(gst_audio_decoder_set_max_errors, 
 //GO(gst_audio_decoder_set_min_latency, 
-//GO(gst_audio_decoder_set_needs_format, 
+GO(gst_audio_decoder_set_needs_format, vFpi)
 //GO(gst_audio_decoder_set_output_caps, 
-//GO(gst_audio_decoder_set_output_format, 
+GO(gst_audio_decoder_set_output_format, iFpp)
 //GO(gst_audio_decoder_set_plc, 
 //GO(gst_audio_decoder_set_plc_aware, 
 //GO(gst_audio_decoder_set_tolerance, 
-//GO(gst_audio_decoder_set_use_default_pad_acceptcaps, 
+GO(gst_audio_decoder_set_use_default_pad_acceptcaps, vFpi)
 //GO(gst_audio_dither_method_get_type, 
 //GO(gst_audio_downmix_meta_api_get_type, 
 //GO(gst_audio_downmix_meta_get_info, 
 //GO(gst_audio_encoder_allocate_output_buffer, 
-//GO(gst_audio_encoder_finish_frame, 
+GO(gst_audio_encoder_finish_frame, iFppi)
 //GO(gst_audio_encoder_get_allocator, 
-//GO(gst_audio_encoder_get_audio_info, 
+GO(gst_audio_encoder_get_audio_info, pFp)
 //GO(gst_audio_encoder_get_drainable, 
 //GO(gst_audio_encoder_get_frame_max, 
 //GO(gst_audio_encoder_get_frame_samples_max, 
@@ -124,34 +124,35 @@ GO(gst_audio_converter_update_config, iFpiip)
 //GO(gst_audio_encoder_get_mark_granule, 
 //GO(gst_audio_encoder_get_perfect_timestamp, 
 //GO(gst_audio_encoder_get_tolerance, 
-//GO(gst_audio_encoder_get_type, 
-//GO(gst_audio_encoder_merge_tags, 
+GO(gst_audio_encoder_get_type, LFv)
+GO(gst_audio_encoder_merge_tags, vFppi)
 //GO(gst_audio_encoder_negotiate, 
 //GO(gst_audio_encoder_proxy_getcaps, 
 //GO(gst_audio_encoder_set_allocation_caps, 
-//GO(gst_audio_encoder_set_drainable, 
-//GO(gst_audio_encoder_set_frame_max, 
-//GO(gst_audio_encoder_set_frame_samples_max, 
-//GO(gst_audio_encoder_set_frame_samples_min, 
+GO(gst_audio_encoder_set_drainable, vFpi)
+GO(gst_audio_encoder_set_frame_max, vFpi)
+GO(gst_audio_encoder_set_frame_samples_max, vFpi)
+GO(gst_audio_encoder_set_frame_samples_min, vFpi)
 //GO(gst_audio_encoder_set_hard_min, 
 //GO(gst_audio_encoder_set_hard_resync, 
 //GO(gst_audio_encoder_set_headers, 
 //GO(gst_audio_encoder_set_latency, 
 //GO(gst_audio_encoder_set_lookahead, 
 //GO(gst_audio_encoder_set_mark_granule, 
-//GO(gst_audio_encoder_set_output_format, 
+GO(gst_audio_encoder_set_output_format, iFpp)
 //GO(gst_audio_encoder_set_perfect_timestamp, 
 //GO(gst_audio_encoder_set_tolerance, 
 //GO(gst_audio_filter_class_add_pad_templates, 
 //GO(gst_audio_filter_get_type, 
 //GO(gst_audio_flags_get_type, 
 GO(gst_audio_format_build_integer, uFiiii)
-//GO(gst_audio_format_fill_silence, 
+GO(gst_audio_format_fill_silence, vFppL)
 //GO(gst_audio_format_flags_get_type, 
 GO(gst_audio_format_from_string, uFp)
 //GO(gst_audio_format_get_info, 
 //GO(gst_audio_format_get_type, 
-//GO(gst_audio_format_info_get_type, 
+GO(gst_audio_format_info_fill_silence, vFppL)
+GO(gst_audio_format_info_get_type, LFv)
 GO(gst_audio_formats_raw, pFp)
 GO(gst_audio_format_to_string, pFu)
 GO(gst_audio_get_channel_reorder_map, iFippp)
@@ -244,7 +245,7 @@ GO(gst_audio_stream_align_set_discont_wait, vFpL)
 GO(gst_audio_stream_align_set_rate, vFpi)
 GO(gst_buffer_add_audio_clipping_meta, pFpuLL)
 GO(gst_buffer_add_audio_downmix_meta, pFppipip)
-//GO(gst_buffer_add_audio_meta, 
+GO(gst_buffer_add_audio_meta, pFppLp)
 GO(gst_buffer_get_audio_downmix_meta_for_channels, pFppi)
 GO(gst_stream_volume_convert_volume, dFuud)
 GO(gst_stream_volume_get_mute, iFp)
diff --git a/src/wrapped/wrappedgstbase.c b/src/wrapped/wrappedgstbase.c
index 266ef86a..47c8f8a3 100644
--- a/src/wrapped/wrappedgstbase.c
+++ b/src/wrapped/wrappedgstbase.c
@@ -11,12 +11,230 @@
 #include "bridge.h"
 #include "librarian/library_private.h"
 #include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+#include "myalign.h"
+#include "gtkclass.h"
+#include "fileutils.h"
 
 const char* gstbaseName = "libgstbase-1.0.so.0";
 #define LIBNAME gstbase
 
+typedef size_t  (*LFv_t)();
+
+#define ADDED_FUNCTIONS()                   \
+    GO(gst_base_transform_get_type, LFv_t)  \
+    GO(gst_base_sink_get_type, LFv_t)       \
+    GO(gst_aggregator_get_type, LFv_t)      \
+    GO(gst_push_src_get_type, LFv_t)        \
+    GO(gst_base_src_get_type, LFv_t)        \
+    GO(gst_aggregator_pad_get_type, LFv_t)  \
+
+#include "generated/wrappedgstbasetypes.h"
+
+#include "wrappercallback.h"
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)
+
+// GstCollectPadsFunction ...
+#define GO(A)   \
+static uintptr_t my_GstCollectPadsFunction_fct_##A = 0;                     \
+static int my_GstCollectPadsFunction_##A(void* a, void* b)                  \
+{                                                                           \
+    return RunFunctionFmt(my_GstCollectPadsFunction_fct_##A, "pp", a, b);   \
+}
+SUPER()
+#undef GO
+static void* findGstCollectPadsFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GstCollectPadsFunction_fct_##A == (uintptr_t)fct) return my_GstCollectPadsFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstCollectPadsFunction_fct_##A == 0) {my_GstCollectPadsFunction_fct_##A = (uintptr_t)fct; return my_GstCollectPadsFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstbase GstCollectPadsFunction callback\n");
+    return NULL;
+}
+// GstCollectDataDestroyNotify ...
+#define GO(A)   \
+static uintptr_t my_GstCollectDataDestroyNotify_fct_##A = 0;        \
+static void my_GstCollectDataDestroyNotify_##A(void* a)             \
+{                                                                   \
+    RunFunctionFmt(my_GstCollectDataDestroyNotify_fct_##A, "p", a); \
+}
+SUPER()
+#undef GO
+static void* findGstCollectDataDestroyNotifyFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GstCollectDataDestroyNotify_fct_##A == (uintptr_t)fct) return my_GstCollectDataDestroyNotify_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstCollectDataDestroyNotify_fct_##A == 0) {my_GstCollectDataDestroyNotify_fct_##A = (uintptr_t)fct; return my_GstCollectDataDestroyNotify_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstbase GstCollectDataDestroyNotify callback\n");
+    return NULL;
+}
+// GstCollectPadsEventFunction ...
+#define GO(A)   \
+static uintptr_t my_GstCollectPadsEventFunction_fct_##A = 0;                            \
+static int my_GstCollectPadsEventFunction_##A(void* a, void* b, void* c, void* d)       \
+{                                                                                       \
+    return RunFunctionFmt(my_GstCollectPadsEventFunction_fct_##A, "pppp", a, b, c, d);  \
+}
+SUPER()
+#undef GO
+static void* findGstCollectPadsEventFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GstCollectPadsEventFunction_fct_##A == (uintptr_t)fct) return my_GstCollectPadsEventFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstCollectPadsEventFunction_fct_##A == 0) {my_GstCollectPadsEventFunction_fct_##A = (uintptr_t)fct; return my_GstCollectPadsEventFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstbase GstCollectPadsEventFunction callback\n");
+    return NULL;
+}
+// GstCollectPadsQueryFunction ...
+#define GO(A)   \
+static uintptr_t my_GstCollectPadsQueryFunction_fct_##A = 0;                            \
+static int my_GstCollectPadsQueryFunction_##A(void* a, void* b, void* c, void* d)       \
+{                                                                                       \
+    return RunFunctionFmt(my_GstCollectPadsQueryFunction_fct_##A, "pppp", a, b, c, d);  \
+}
+SUPER()
+#undef GO
+static void* findGstCollectPadsQueryFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GstCollectPadsQueryFunction_fct_##A == (uintptr_t)fct) return my_GstCollectPadsQueryFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstCollectPadsQueryFunction_fct_##A == 0) {my_GstCollectPadsQueryFunction_fct_##A = (uintptr_t)fct; return my_GstCollectPadsQueryFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstbase GstCollectPadsQueryFunction callback\n");
+    return NULL;
+}
+// GstCollectPadsClipFunction ...
+#define GO(A)   \
+static uintptr_t my_GstCollectPadsClipFunction_fct_##A = 0;                                 \
+static int my_GstCollectPadsClipFunction_##A(void* a, void* b, void* c, void* d, void* e)   \
+{                                                                                           \
+    return RunFunctionFmt(my_GstCollectPadsClipFunction_fct_##A, "ppppp", a, b, c, d, e);   \
+}
+SUPER()
+#undef GO
+static void* findGstCollectPadsClipFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GstCollectPadsClipFunction_fct_##A == (uintptr_t)fct) return my_GstCollectPadsClipFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstCollectPadsClipFunction_fct_##A == 0) {my_GstCollectPadsClipFunction_fct_##A = (uintptr_t)fct; return my_GstCollectPadsClipFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstbase GstCollectPadsClipFunction callback\n");
+    return NULL;
+}
+// GstCollectPadsBufferFunction ...
+#define GO(A)   \
+static uintptr_t my_GstCollectPadsBufferFunction_fct_##A = 0;                           \
+static int my_GstCollectPadsBufferFunction_##A(void* a, void* b, void* c, void* d)      \
+{                                                                                       \
+    return RunFunctionFmt(my_GstCollectPadsBufferFunction_fct_##A, "pppp", a, b, c, d); \
+}
+SUPER()
+#undef GO
+static void* findGstCollectPadsBufferFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GstCollectPadsBufferFunction_fct_##A == (uintptr_t)fct) return my_GstCollectPadsBufferFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstCollectPadsBufferFunction_fct_##A == 0) {my_GstCollectPadsBufferFunction_fct_##A = (uintptr_t)fct; return my_GstCollectPadsBufferFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstbase GstCollectPadsBufferFunction callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+EXPORT void my_gst_collect_pads_set_function(x64emu_t* emu, void* p, void* f, void* data)
+{
+    my->gst_collect_pads_set_function(p, findGstCollectPadsFunctionFct(f), data);
+}
+
+EXPORT void* my_gst_collect_pads_add_pad(x64emu_t* emu, void* pads, void* pad, uint32_t size, void* d, int lock)
+{
+    return my->gst_collect_pads_add_pad(pads, pad, size, findGstCollectDataDestroyNotifyFct(d), lock);
+}
+
+EXPORT void my_gst_collect_pads_set_event_function(x64emu_t* emu, void* pads, void* f, void* data)
+{
+    my->gst_collect_pads_set_event_function(pads, findGstCollectPadsEventFunctionFct(f), data);
+}
+
+EXPORT void my_gst_collect_pads_set_query_function(x64emu_t* emu, void* pads, void* f, void* data)
+{
+    my->gst_collect_pads_set_query_function(pads, findGstCollectPadsQueryFunctionFct(f), data);
+}
+
+EXPORT void my_gst_collect_pads_set_clip_function(x64emu_t* emu, void* pads, void* f, void* data)
+{
+    my->gst_collect_pads_set_clip_function(pads, findGstCollectPadsClipFunctionFct(f), data);
+}
+
+EXPORT void my_gst_collect_pads_set_buffer_function(x64emu_t* emu, void* pads, void* f, void* data)
+{
+    my->gst_collect_pads_set_buffer_function(pads, findGstCollectPadsBufferFunctionFct(f), data);
+}
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
 
+#define CUSTOM_INIT \
+    getMy(lib);     \
+    SetGstBaseTransformID(my->gst_base_transform_get_type());\
+    SetGstBaseSinkID(my->gst_base_sink_get_type());\
+    SetGstAggregatorID(my->gst_aggregator_get_type());\
+    SetGstPushSrcID(my->gst_push_src_get_type());\
+    SetGstBaseSrcID(my->gst_base_src_get_type());\
+    SetGstAggregatorPadID(my->gst_aggregator_pad_get_type());\
+    setNeededLibs(lib, 1, "libgstreamer-1.0.so.0");
+
+#define CUSTOM_FINI \
+    freeMy();
+
 #include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstbase_private.h b/src/wrapped/wrappedgstbase_private.h
index f203a1b5..68b52422 100644
--- a/src/wrapped/wrappedgstbase_private.h
+++ b/src/wrapped/wrappedgstbase_private.h
@@ -2,9 +2,9 @@
 #error meh!
 #endif
 
-//GO(gst_adapter_available, 
+GO(gst_adapter_available, LFp)
 GO(gst_adapter_available_fast, LFp)
-//GO(gst_adapter_clear, 
+GO(gst_adapter_clear, vFp)
 GO(gst_adapter_copy, vFppLL)
 GO(gst_adapter_copy_bytes, pFpLL)
 GO(gst_adapter_distance_from_discont, LFp)
@@ -14,7 +14,7 @@ GO(gst_adapter_flush, vFpL)
 GO(gst_adapter_get_buffer_fast, pFpL)
 GO(gst_adapter_get_buffer_list, pFpL)
 GO(gst_adapter_get_list, pFpL)
-//GO(gst_adapter_get_type, 
+GO(gst_adapter_get_type, LFv)
 GO(gst_adapter_map, pFpL)
 GO(gst_adapter_masked_scan_uint32, lFpuuLL)
 GO(gst_adapter_masked_scan_uint32_peek, lFpuuLLp)
@@ -28,20 +28,20 @@ GO(gst_adapter_prev_offset, LFpp)
 //GO(gst_adapter_pts_at_discont, 
 GO(gst_adapter_push, vFpp)
 GO(gst_adapter_take, pFpL)
-//GO(gst_adapter_take_buffer, 
+GO(gst_adapter_take_buffer, pFpL)
 //GO(gst_adapter_take_buffer_fast, 
 //GO(gst_adapter_take_buffer_list, 
 //GO(gst_adapter_take_list, 
-//GO(gst_adapter_unmap, 
-//GO(gst_aggregator_finish_buffer, 
+GO(gst_adapter_unmap, vFp)
+GO(gst_aggregator_finish_buffer, iFpp)
 //GO(gst_aggregator_finish_buffer_list, 
 //GO(gst_aggregator_get_allocator, 
 //GO(gst_aggregator_get_buffer_pool, 
 //GO(gst_aggregator_get_latency, 
-//GO(gst_aggregator_get_type, 
+GO(gst_aggregator_get_type, LFv)
 //GO(gst_aggregator_negotiate, 
 //GO(gst_aggregator_pad_drop_buffer, 
-//GO(gst_aggregator_pad_get_type, 
+GO(gst_aggregator_pad_get_type, LFv)
 //GO(gst_aggregator_pad_has_buffer, 
 //GO(gst_aggregator_pad_is_eos, 
 //GO(gst_aggregator_pad_peek_buffer, 
@@ -89,7 +89,7 @@ GO(gst_adapter_take, pFpL)
 //GO(gst_base_sink_get_sync, 
 //GO(gst_base_sink_get_throttle_time, 
 //GO(gst_base_sink_get_ts_offset, 
-//GO(gst_base_sink_get_type, 
+GO(gst_base_sink_get_type, LFv)
 //GO(gst_base_sink_is_async_enabled, 
 //GO(gst_base_sink_is_last_sample_enabled, 
 //GO(gst_base_sink_is_qos_enabled, 
@@ -110,44 +110,44 @@ GO(gst_adapter_take, pFpL)
 //GO(gst_base_sink_wait_clock, 
 //GO(gst_base_sink_wait_preroll, 
 //GO(gst_base_src_get_allocator, 
-//GO(gst_base_src_get_blocksize, 
+GO(gst_base_src_get_blocksize, uFp)
 //GO(gst_base_src_get_buffer_pool, 
 //GO(gst_base_src_get_do_timestamp, 
-//GO(gst_base_src_get_type, 
+GO(gst_base_src_get_type, LFv)
 //GO(gst_base_src_is_async, 
-//GO(gst_base_src_is_live, 
+GO(gst_base_src_is_live, iFp)
 //GO(gst_base_src_negotiate, 
 //GO(gst_base_src_new_seamless_segment, 
 //GO(gst_base_src_new_segment, 
 //GO(gst_base_src_query_latency, 
 //GO(gst_base_src_set_async, 
-//GO(gst_base_src_set_automatic_eos, 
-//GO(gst_base_src_set_blocksize, 
-//GO(gst_base_src_set_caps, 
+GO(gst_base_src_set_automatic_eos, vFpi)
+GO(gst_base_src_set_blocksize, vFpu)
+GO(gst_base_src_set_caps, iFpp)
 //GO(gst_base_src_set_do_timestamp, 
 //GO(gst_base_src_set_dynamic_size, 
 //GO(gst_base_src_set_format, 
-//GO(gst_base_src_set_live, 
+GO(gst_base_src_set_live, vFpi)
 //GO(gst_base_src_start_complete, 
 //GO(gst_base_src_start_wait, 
 //GO(gst_base_src_submit_buffer_list, 
 //GO(gst_base_src_wait_playing, 
 //GO(gst_base_transform_get_allocator, 
 //GO(gst_base_transform_get_buffer_pool, 
-//GO(gst_base_transform_get_type, 
+GO(gst_base_transform_get_type, LFv)
 //GO(gst_base_transform_is_in_place, 
-//GO(gst_base_transform_is_passthrough, 
+GO(gst_base_transform_is_passthrough, iFp)
 //GO(gst_base_transform_is_qos_enabled, 
 //GO(gst_base_transform_reconfigure, 
 //GO(gst_base_transform_reconfigure_sink, 
-//GO(gst_base_transform_reconfigure_src, 
-//GO(gst_base_transform_set_gap_aware, 
-//GO(gst_base_transform_set_in_place, 
-//GO(gst_base_transform_set_passthrough, 
-//GO(gst_base_transform_set_prefer_passthrough, 
+GO(gst_base_transform_reconfigure_src, vFp)
+GO(gst_base_transform_set_gap_aware, vFpi)
+GO(gst_base_transform_set_in_place, vFpi)
+GO(gst_base_transform_set_passthrough, vFpi)
+GO(gst_base_transform_set_prefer_passthrough, vFpi)
 //GO(gst_base_transform_set_qos_enabled, 
 //GO(gst_base_transform_update_qos, 
-//GO(gst_base_transform_update_src_caps, 
+GO(gst_base_transform_update_src_caps, iFpp)
 //GO(gst_bit_reader_free, 
 //GO(gst_bit_reader_get_bits_uint16, 
 //GO(gst_bit_reader_get_bits_uint32, 
@@ -248,18 +248,18 @@ GO(gst_byte_reader_peek_string_utf8, iFpp)
 //GO(gst_byte_reader_peek_uint64_be, 
 //GO(gst_byte_reader_peek_uint64_le, 
 //GO(gst_byte_reader_peek_uint8, 
-//GO(gst_byte_reader_set_pos, 
+GO(gst_byte_reader_set_pos, iFpu)
 //GO(gst_byte_reader_skip, 
 //GO(gst_byte_reader_skip_string_utf16, 
 GO(gst_byte_reader_skip_string_utf32, iFp)
 //GO(gst_byte_reader_skip_string_utf8, 
 //GO(gst_byte_writer_ensure_free_space, 
 //GO(gst_byte_writer_fill, 
-//GO(gst_byte_writer_free, 
-//GO(gst_byte_writer_free_and_get_buffer, 
+GO(gst_byte_writer_free, vFp)
+GO(gst_byte_writer_free_and_get_buffer, pFp)
 //GO(gst_byte_writer_free_and_get_data, 
 GO(gst_byte_writer_get_remaining, uFp)
-//GO(gst_byte_writer_init, 
+GO(gst_byte_writer_init, vFp)
 GO(gst_byte_writer_init_with_data, vFppui)
 GO(gst_byte_writer_init_with_size, vFpui)
 GO(gst_byte_writer_new, pFv)
@@ -294,31 +294,31 @@ GO(gst_byte_writer_put_string_utf8, iFpp)
 GO(gst_byte_writer_reset, vFp)
 GO(gst_byte_writer_reset_and_get_buffer, pFp)
 GO(gst_byte_writer_reset_and_get_data, pFp)
-//GO(gst_collect_pads_add_pad, 
+GOM(gst_collect_pads_add_pad, pFEppupi)
 GO(gst_collect_pads_available, uFp)
-//GO(gst_collect_pads_clip_running_time, 
-//GO(gst_collect_pads_event_default, 
+GO(gst_collect_pads_clip_running_time, iFppppp)
+GO(gst_collect_pads_event_default, iFpppi)
 //GO(gst_collect_pads_flush, 
 //GO(gst_collect_pads_get_type, 
 GO(gst_collect_pads_new, pFv)
-//GO(gst_collect_pads_peek, 
-//GO(gst_collect_pads_pop, 
-//GO(gst_collect_pads_query_default, 
+GO(gst_collect_pads_peek, pFpp)
+GO(gst_collect_pads_pop, pFpp)
+GO(gst_collect_pads_query_default, iFpppi)
 //GO(gst_collect_pads_read_buffer, 
-//GO(gst_collect_pads_remove_pad, 
-//GO(gst_collect_pads_set_buffer_function, 
-//GO(gst_collect_pads_set_clip_function, 
+GO(gst_collect_pads_remove_pad, iFpp)
+GOM(gst_collect_pads_set_buffer_function, vFEppp)
+GOM(gst_collect_pads_set_clip_function, vFEppp)
 //GO(gst_collect_pads_set_compare_function, 
-//GO(gst_collect_pads_set_event_function, 
+GOM(gst_collect_pads_set_event_function, vFEppp)
 //GO(gst_collect_pads_set_flush_function, 
 GO(gst_collect_pads_set_flushing, vFpi)
-//GO(gst_collect_pads_set_function, 
-//GO(gst_collect_pads_set_query_function, 
-//GO(gst_collect_pads_set_waiting, 
+GOM(gst_collect_pads_set_function, vFEppp)
+GOM(gst_collect_pads_set_query_function, vFEppp)
+GO(gst_collect_pads_set_waiting, vFppi)
 //GO(gst_collect_pads_src_event_default, 
-//GO(gst_collect_pads_start, 
-//GO(gst_collect_pads_stop, 
-//GO(gst_collect_pads_take_buffer, 
+GO(gst_collect_pads_start, vFp)
+GO(gst_collect_pads_stop, vFp)
+GO(gst_collect_pads_take_buffer, pFppu)
 GO(gst_data_queue_drop_head, iFpL)
 //GO(gst_data_queue_flush, 
 GO(gst_data_queue_get_level, vFpp)
@@ -332,17 +332,17 @@ GO(gst_data_queue_peek, iFpp)
 //GO(gst_data_queue_push, 
 //GO(gst_data_queue_push_force, 
 GO(gst_data_queue_set_flushing, vFpi)
-//GO(gst_flow_combiner_add_pad, 
-//GO(gst_flow_combiner_clear, 
-//GO(gst_flow_combiner_free, 
-//GO(gst_flow_combiner_get_type, 
+GO(gst_flow_combiner_add_pad, vFpp)
+GO(gst_flow_combiner_clear, vFp)
+GO(gst_flow_combiner_free, vFp)
+GO(gst_flow_combiner_get_type, LFv)
 GO(gst_flow_combiner_new, pFv)
 GO(gst_flow_combiner_ref, pFp)
-//GO(gst_flow_combiner_remove_pad, 
-//GO(gst_flow_combiner_reset, 
+GO(gst_flow_combiner_remove_pad, vFpp)
+GO(gst_flow_combiner_reset, vFp)
 //GO(gst_flow_combiner_unref, 
 GO(gst_flow_combiner_update_flow, iFpi)
-//GO(gst_flow_combiner_update_pad_flow, 
+GO(gst_flow_combiner_update_pad_flow, iFppi)
 GO(gst_push_src_get_type, LFv)
 GO(gst_queue_array_clear, vFp)
 //GO(gst_queue_array_drop_element, 
@@ -367,7 +367,7 @@ GO(gst_queue_array_peek_tail_struct, pFp)
 GO(gst_queue_array_push_tail_struct, vFpp)
 //GO(gst_queue_array_set_clear_func, 
 //GO(gst_type_find_helper, 
-//GO(gst_type_find_helper_for_buffer, 
+GO(gst_type_find_helper_for_buffer, pFppp)
 //GO(gst_type_find_helper_for_buffer_with_extension, 
 //GO(gst_type_find_helper_for_data, 
 GO(gst_type_find_helper_for_data_with_extension, pFppLpp)
diff --git a/src/wrapped/wrappedgstcheck.c b/src/wrapped/wrappedgstcheck.c
new file mode 100644
index 00000000..e7fe36b8
--- /dev/null
+++ b/src/wrapped/wrappedgstcheck.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstcheckName = "libgstcheck-1.0.so.0";
+#define LIBNAME gstcheck
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstcheck_private.h b/src/wrapped/wrappedgstcheck_private.h
new file mode 100644
index 00000000..b2f2bfc0
--- /dev/null
+++ b/src/wrapped/wrappedgstcheck_private.h
@@ -0,0 +1,203 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+//DATAB(buffers, 
+//DATAB(check_cond, 
+//DATAB(check_debug, 
+//GO(check_fork, 
+//DATAB(check_major_version, 
+//DATA(check_micro_version, 
+//DATA(check_minor_version, 
+//DATAB(check_mutex, 
+//GO(check_waitpid_and_exit, 
+//GO(_ck_assert_failed, 
+//GO(_fail_unless, 
+//GO(gst_buffer_straw_get_buffer, 
+//GO(gst_buffer_straw_start_pipeline, 
+//GO(gst_buffer_straw_stop_pipeline, 
+//GO(gst_check_abi_list, 
+//GO(gst_check_add_log_filter, 
+//GO(gst_check_buffer_data, 
+//GO(gst_check_caps_equal, 
+//GO(gst_check_chain_func, 
+//GO(gst_check_clear_log_filter, 
+//GO(gst_check_drop_buffers, 
+//GO(gst_check_element_push_buffer, 
+//GO(gst_check_element_push_buffer_list, 
+//DATAB(_gst_check_expecting_log, 
+//GO(gst_check_init, 
+//DATAB(_gst_check_list_tests, 
+//GO(gst_check_message_error, 
+//GO(gst_check_object_destroyed_on_unref, 
+//GO(gst_check_objects_destroyed_on_unref, 
+//DATAB(_gst_check_raised_critical, 
+//DATAB(_gst_check_raised_warning, 
+//GO(gst_check_remove_log_filter, 
+//GO(gst_check_run_suite, 
+//GO(_gst_check_run_test_func, 
+//GO(gst_check_setup_element, 
+//GO(gst_check_setup_events, 
+//GO(gst_check_setup_events_with_stream_id, 
+//GO(gst_check_setup_sink_pad, 
+//GO(gst_check_setup_sink_pad_by_name, 
+//GO(gst_check_setup_sink_pad_by_name_from_template, 
+//GO(gst_check_setup_sink_pad_from_template, 
+//GO(gst_check_setup_src_pad, 
+//GO(gst_check_setup_src_pad_by_name, 
+//GO(gst_check_setup_src_pad_by_name_from_template, 
+//GO(gst_check_setup_src_pad_from_template, 
+//GO(gst_check_teardown_element, 
+//GO(gst_check_teardown_pad_by_name, 
+//GO(gst_check_teardown_sink_pad, 
+//GO(gst_check_teardown_src_pad, 
+//DATAB(_gst_check_threads_running, 
+//GO(gst_consistency_checker_add_pad, 
+//GO(gst_consistency_checker_free, 
+//GO(gst_consistency_checker_new, 
+//GO(gst_consistency_checker_reset, 
+//GO(gst_harness_add_element_full, 
+//GO(gst_harness_add_element_sink_pad, 
+//GO(gst_harness_add_element_src_pad, 
+//GO(gst_harness_add_parse, 
+//GO(gst_harness_add_probe, 
+//GO(gst_harness_add_propose_allocation_meta, 
+//GO(gst_harness_add_sink, 
+//GO(gst_harness_add_sink_harness, 
+//GO(gst_harness_add_sink_parse, 
+//GO(gst_harness_add_src, 
+//GO(gst_harness_add_src_harness, 
+//GO(gst_harness_add_src_parse, 
+//GO(gst_harness_buffers_in_queue, 
+//GO(gst_harness_buffers_received, 
+//GO(gst_harness_crank_multiple_clock_waits, 
+//GO(gst_harness_crank_single_clock_wait, 
+//GO(gst_harness_create_buffer, 
+//GO(gst_harness_dump_to_file, 
+//GO(gst_harness_events_in_queue, 
+//GO(gst_harness_events_received, 
+//GO(gst_harness_find_element, 
+//GO(gst_harness_get, 
+//GO(gst_harness_get_allocator, 
+//GO(gst_harness_get_last_pushed_timestamp, 
+//GO(gst_harness_get_testclock, 
+//GO(gst_harness_new, 
+//GO(gst_harness_new_empty, 
+//GO(gst_harness_new_full, 
+//GO(gst_harness_new_parse, 
+//GO(gst_harness_new_with_element, 
+//GO(gst_harness_new_with_padnames, 
+//GO(gst_harness_new_with_templates, 
+//GO(gst_harness_play, 
+//GO(gst_harness_pull, 
+//GO(gst_harness_pull_event, 
+//GO(gst_harness_pull_until_eos, 
+//GO(gst_harness_pull_upstream_event, 
+//GO(gst_harness_push, 
+//GO(gst_harness_push_and_pull, 
+//GO(gst_harness_push_event, 
+//GO(gst_harness_push_from_src, 
+//GO(gst_harness_push_to_sink, 
+//GO(gst_harness_push_upstream_event, 
+//GO(gst_harness_query_latency, 
+//GO(gst_harness_set, 
+//GO(gst_harness_set_blocking_push_mode, 
+//GO(gst_harness_set_caps, 
+//GO(gst_harness_set_caps_str, 
+//GO(gst_harness_set_drop_buffers, 
+//GO(gst_harness_set_forwarding, 
+//GO(gst_harness_set_live, 
+//GO(gst_harness_set_propose_allocator, 
+//GO(gst_harness_set_sink_caps, 
+//GO(gst_harness_set_sink_caps_str, 
+//GO(gst_harness_set_src_caps, 
+//GO(gst_harness_set_src_caps_str, 
+//GO(gst_harness_set_time, 
+//GO(gst_harness_set_upstream_latency, 
+//GO(gst_harness_sink_push_many, 
+//GO(gst_harness_src_crank_and_push_many, 
+//GO(gst_harness_src_push_event, 
+//GO(gst_harness_stress_custom_start, 
+//GO(gst_harness_stress_property_start_full, 
+//GO(gst_harness_stress_push_buffer_start_full, 
+//GO(gst_harness_stress_push_buffer_with_cb_start_full, 
+//GO(gst_harness_stress_push_event_start_full, 
+//GO(gst_harness_stress_push_event_with_cb_start_full, 
+//GO(gst_harness_stress_push_upstream_event_start_full, 
+//GO(gst_harness_stress_push_upstream_event_with_cb_start_full, 
+//GO(gst_harness_stress_requestpad_start_full, 
+//GO(gst_harness_stress_statechange_start_full, 
+//GO(gst_harness_stress_thread_stop, 
+//GO(gst_harness_take_all_data, 
+//GO(gst_harness_take_all_data_as_buffer, 
+//GO(gst_harness_take_all_data_as_bytes, 
+//GO(gst_harness_teardown, 
+//GO(gst_harness_try_pull, 
+//GO(gst_harness_try_pull_event, 
+//GO(gst_harness_try_pull_upstream_event, 
+//GO(gst_harness_upstream_events_in_queue, 
+//GO(gst_harness_upstream_events_received, 
+//GO(gst_harness_use_systemclock, 
+//GO(gst_harness_use_testclock, 
+//GO(gst_harness_wait_for_clock_id_waits, 
+//GO(gst_test_clock_advance_time, 
+//GO(gst_test_clock_crank, 
+//GO(gst_test_clock_get_next_entry_time, 
+GO(gst_test_clock_get_type, LFv)
+//GO(gst_test_clock_has_id, 
+//GO(gst_test_clock_id_list_get_latest_time, 
+//GO(gst_test_clock_new, 
+//GO(gst_test_clock_new_with_start_time, 
+//GO(gst_test_clock_peek_id_count, 
+//GO(gst_test_clock_peek_next_pending_id, 
+//GO(gst_test_clock_process_id, 
+//GO(gst_test_clock_process_id_list, 
+//GO(gst_test_clock_process_next_clock_id, 
+//GO(gst_test_clock_set_time, 
+//GO(gst_test_clock_timed_wait_for_multiple_pending_ids, 
+//GO(gst_test_clock_wait_for_multiple_pending_ids, 
+//GO(gst_test_clock_wait_for_next_pending_id, 
+//GO(gst_test_clock_wait_for_pending_id_count, 
+//GO(_mark_point, 
+//DATAB(mutex, 
+//GO(srunner_add_suite, 
+//GO(srunner_create, 
+//GO(srunner_failures, 
+//GO(srunner_fork_status, 
+//GO(srunner_free, 
+//GO(srunner_has_log, 
+//GO(srunner_has_tap, 
+//GO(srunner_has_xml, 
+//GO(srunner_log_fname, 
+//GO(srunner_ntests_failed, 
+//GO(srunner_ntests_run, 
+//GO(srunner_print, 
+//GO(srunner_results, 
+//GO(srunner_run, 
+//GO(srunner_run_all, 
+//GO(srunner_run_tagged, 
+//GO(srunner_set_fork_status, 
+//GO(srunner_set_log, 
+//GO(srunner_set_tap, 
+//GO(srunner_set_xml, 
+//GO(srunner_tap_fname, 
+//GO(srunner_xml_fname, 
+//DATAB(start_cond, 
+//GO(suite_add_tcase, 
+//GO(suite_create, 
+//GO(suite_tcase, 
+//DATAB(sync_cond, 
+//GO(tcase_add_checked_fixture, 
+//GO(_tcase_add_test, 
+//GO(tcase_add_unchecked_fixture, 
+//GO(tcase_create, 
+//GO(tcase_fn_start, 
+//GO(tcase_set_tags, 
+//GO(tcase_set_timeout, 
+//DATAB(thread_list, 
+//GO(tr_ctx, 
+//GO(tr_lfile, 
+//GO(tr_lno, 
+//GO(tr_msg, 
+//GO(tr_rtype, 
+//GO(tr_tcname, 
diff --git a/src/wrapped/wrappedgstcontroller.c b/src/wrapped/wrappedgstcontroller.c
new file mode 100644
index 00000000..a6da1b3d
--- /dev/null
+++ b/src/wrapped/wrappedgstcontroller.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstcontrollerName = "libgstcontroller-1.0.so.0";
+#define LIBNAME gstcontroller
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstcontroller_private.h b/src/wrapped/wrappedgstcontroller_private.h
new file mode 100644
index 00000000..0cbde97f
--- /dev/null
+++ b/src/wrapped/wrappedgstcontroller_private.h
@@ -0,0 +1,31 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+GO(gst_argb_control_binding_get_type, LFv)
+//GO(gst_argb_control_binding_new, 
+//GO(gst_control_point_copy, 
+//GO(gst_control_point_free, 
+GO(gst_control_point_get_type, LFv)
+GO(gst_direct_control_binding_get_type, LFv)
+//GO(gst_direct_control_binding_new, 
+//GO(gst_direct_control_binding_new_absolute, 
+GO(gst_interpolation_control_source_get_type, LFv)
+//GO(gst_interpolation_control_source_new, 
+GO(gst_interpolation_mode_get_type, LFv)
+GO(gst_lfo_control_source_get_type, LFv)
+//GO(gst_lfo_control_source_new, 
+GO(gst_lfo_waveform_get_type, LFv)
+GO(gst_proxy_control_binding_get_type, LFv)
+GO(gst_proxy_control_binding_new, pFpppp)
+//GO(gst_timed_value_control_invalidate_cache, 
+//GO(gst_timed_value_control_source_find_control_point_iter, 
+//GO(gst_timed_value_control_source_get_all, 
+//GO(gst_timed_value_control_source_get_count, 
+GO(gst_timed_value_control_source_get_type, LFv)
+//GO(gst_timed_value_control_source_set, 
+//GO(gst_timed_value_control_source_set_from_list, 
+//GO(gst_timed_value_control_source_unset, 
+//GO(gst_timed_value_control_source_unset_all, 
+GO(gst_trigger_control_source_get_type, LFv)
+//GO(gst_trigger_control_source_new, 
diff --git a/src/wrapped/wrappedgstfft.c b/src/wrapped/wrappedgstfft.c
new file mode 100644
index 00000000..27e07517
--- /dev/null
+++ b/src/wrapped/wrappedgstfft.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstfftName = "libgstfft-1.0.so.0";
+#define LIBNAME gstfft
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstfft_private.h b/src/wrapped/wrappedgstfft_private.h
new file mode 100644
index 00000000..64934231
--- /dev/null
+++ b/src/wrapped/wrappedgstfft_private.h
@@ -0,0 +1,25 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+//GO(gst_fft_f32_fft, 
+//GO(gst_fft_f32_free, 
+//GO(gst_fft_f32_inverse_fft, 
+//GO(gst_fft_f32_new, 
+//GO(gst_fft_f32_window, 
+//GO(gst_fft_f64_fft, 
+//GO(gst_fft_f64_free, 
+//GO(gst_fft_f64_inverse_fft, 
+//GO(gst_fft_f64_new, 
+//GO(gst_fft_f64_window, 
+//GO(gst_fft_next_fast_length, 
+//GO(gst_fft_s16_fft, 
+//GO(gst_fft_s16_free, 
+//GO(gst_fft_s16_inverse_fft, 
+//GO(gst_fft_s16_new, 
+//GO(gst_fft_s16_window, 
+//GO(gst_fft_s32_fft, 
+//GO(gst_fft_s32_free, 
+//GO(gst_fft_s32_inverse_fft, 
+//GO(gst_fft_s32_new, 
+//GO(gst_fft_s32_window, 
diff --git a/src/wrapped/wrappedgstgl.c b/src/wrapped/wrappedgstgl.c
index bc23c293..9e05326b 100644
--- a/src/wrapped/wrappedgstgl.c
+++ b/src/wrapped/wrappedgstgl.c
@@ -1,7 +1,7 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <dlfcn.h>
 
 #include "wrappedlibs.h"
@@ -11,12 +11,269 @@
 #include "bridge.h"
 #include "librarian/library_private.h"
 #include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+#include "myalign.h"
+#include "gtkclass.h"
+#include "fileutils.h"
+#include "gltools.h"
 
 const char* gstglName = "libgstgl-1.0.so.0";
 #define LIBNAME gstgl
 
+typedef size_t  (*LFv_t)();
+
+#define ADDED_FUNCTIONS()                   \
+    GO(gst_gl_base_filter_get_type, LFv_t)  \
+    GO(gst_gl_filter_get_type, LFv_t)       \
+    GO(gst_gl_base_src_get_type, LFv_t)     \
+
+#include "generated/wrappedgstgltypes.h"
+
+#include "wrappercallback.h"
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)   \
+
+// getprocaddress_with_platform ...
+#define GO(A)   \
+static uint64_t my_getprocaddress_platform_##A = 0;                                                 \
+static void* my_getprocaddress_with_platform_##A(const char* name)                                  \
+{                                                                                                   \
+    int type = my_getprocaddress_platform_##A >> 32;                                                \
+    int api = my_getprocaddress_platform_##A & 0xffffffff;                                          \
+    return my->gst_gl_context_get_proc_address_with_platform(type, api, (void*)name);               \
+}
+SUPER()
+#undef GO
+static glprocaddress_t findGetProcAddressPlatformFct(int type, int gl_api)
+{
+    uint64_t key = (((uint64_t)type)<<32) | (gl_api);
+    #define GO(A) if(my_getprocaddress_platform_##A == key) return my_getprocaddress_with_platform_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_getprocaddress_platform_##A == 0) {my_getprocaddress_platform_##A = key; return my_getprocaddress_with_platform_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstgl gst_gl_context_get_proc_address_with_platform callback\n");
+    return NULL;
+}
+
+// getprocaddress_with_api ...
+#define GO(A)   \
+static int my_getprocaddress_api_##A = 0;                                                           \
+static void* my_getprocaddress_with_api_##A(const char* name)                                       \
+{                                                                                                   \
+    return my->gst_gl_context_default_get_proc_address(my_getprocaddress_api_##A, (void*)name);     \
+}
+SUPER()
+#undef GO
+static glprocaddress_t findGetProcAddressAPIFct(int api)
+{
+    #define GO(A) if(my_getprocaddress_api_##A == api) return my_getprocaddress_with_api_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_getprocaddress_api_##A == 0) {my_getprocaddress_api_##A = api; return my_getprocaddress_with_api_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstgl gst_gl_context_default_get_proc_address callback\n");
+    return NULL;
+}
+// GDestroyFunc ...
+#define GO(A)   \
+static uintptr_t my_destroyfunc_fct_##A = 0;                               \
+static int my_destroyfunc_##A(void* a, void* b)                            \
+{                                                                          \
+    return RunFunctionFmt(my_destroyfunc_fct_##A, "pp", a, b); \
+}
+SUPER()
+#undef GO
+static void* findDestroyFct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_destroyfunc_fct_##A == (uintptr_t)fct) return my_destroyfunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_destroyfunc_fct_##A == 0) {my_destroyfunc_fct_##A = (uintptr_t)fct; return my_destroyfunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstgl GDestroyNotify callback\n");
+    return NULL;
+}
+//GstGLContextThreadFunc
+#define GO(A)   \
+static uintptr_t my_GstGLContextThreadFunc_fct_##A = 0;             \
+static void my_GstGLContextThreadFunc_##A(void* a, void* b)         \
+{                                                                   \
+    RunFunctionFmt(my_GstGLContextThreadFunc_fct_##A, "pp", a, b);  \
+}
+SUPER()
+#undef GO
+static void* findGstGLContextThreadFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstGLContextThreadFunc_fct_##A == (uintptr_t)fct) return my_GstGLContextThreadFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstGLContextThreadFunc_fct_##A == 0) {my_GstGLContextThreadFunc_fct_##A = (uintptr_t)fct; return my_GstGLContextThreadFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstgl GstGLContextThreadFunc callback\n");
+    return NULL;
+}
+//GstGLFilterRenderFunc
+#define GO(A)   \
+static uintptr_t my_GstGLFilterRenderFunc_fct_##A = 0;                              \
+static int my_GstGLFilterRenderFunc_##A(void* a, void* b, void* c)                  \
+{                                                                                   \
+    return (int)RunFunctionFmt(my_GstGLFilterRenderFunc_fct_##A, "ppp", a, b, c);   \
+}
+SUPER()
+#undef GO
+static void* findGstGLFilterRenderFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstGLFilterRenderFunc_fct_##A == (uintptr_t)fct) return my_GstGLFilterRenderFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstGLFilterRenderFunc_fct_##A == 0) {my_GstGLFilterRenderFunc_fct_##A = (uintptr_t)fct; return my_GstGLFilterRenderFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstgl GstGLFilterRenderFunc callback\n");
+    return NULL;
+}
+//GstGLFramebufferFunc
+#define GO(A)   \
+static uintptr_t my_GstGLFramebufferFunc_fct_##A = 0;                       \
+static int my_GstGLFramebufferFunc_##A(void* a)                             \
+{                                                                           \
+    return (int)RunFunctionFmt(my_GstGLFramebufferFunc_fct_##A, "p", a);    \
+}
+SUPER()
+#undef GO
+static void* findGstGLFramebufferFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstGLFramebufferFunc_fct_##A == (uintptr_t)fct) return my_GstGLFramebufferFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstGLFramebufferFunc_fct_##A == 0) {my_GstGLFramebufferFunc_fct_##A = (uintptr_t)fct; return my_GstGLFramebufferFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstgl GstGLFramebufferFunc callback\n");
+    return NULL;
+}
+//GstGLWindowCB
+#define GO(A)   \
+static uintptr_t my_GstGLWindowCB_fct_##A = 0;          \
+static void my_GstGLWindowCB_##A(void* a)               \
+{                                                       \
+    RunFunctionFmt(my_GstGLWindowCB_fct_##A, "p", a);   \
+}
+SUPER()
+#undef GO
+static void* findGstGLWindowCBFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstGLWindowCB_fct_##A == (uintptr_t)fct) return my_GstGLWindowCB_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstGLWindowCB_fct_##A == 0) {my_GstGLWindowCB_fct_##A = (uintptr_t)fct; return my_GstGLWindowCB_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstgl GstGLWindowCB callback\n");
+    return NULL;
+}
+#undef SUPER
+
+EXPORT void* my_gst_gl_context_get_proc_address_with_platform(x64emu_t* emu, int type, int gl_api, const char* name)
+{
+    return getGLProcAddress(emu, findGetProcAddressPlatformFct(type, gl_api), name);
+}
+
+EXPORT void* my_gst_gl_context_default_get_proc_address(x64emu_t* emu, int gl_api, const char* name)
+{
+    return getGLProcAddress(emu, findGetProcAddressAPIFct(gl_api), name);
+}
+
+EXPORT void my_gst_gl_context_thread_add(x64emu_t* emu, void* context, void* f, void* data)
+{
+    my->gst_gl_context_thread_add(context, findGstGLContextThreadFuncFct(f), data);
+}
+
+EXPORT int my_gst_gl_filter_render_to_target(x64emu_t* emu, void* filter, void* input, void* output, void* f, void* data)
+{
+    return my->gst_gl_filter_render_to_target(filter, input, output, findGstGLFilterRenderFuncFct(f), data);
+}
+
+EXPORT int my_gst_gl_framebuffer_draw_to_texture(x64emu_t* emu, void* fb, void* mem, void* f, void* data)
+{
+    return my->gst_gl_framebuffer_draw_to_texture(fb, mem, findGstGLFramebufferFuncFct(f), data);
+}
+
+EXPORT void my_gst_gl_insert_debug_marker(x64emu_t* emu, void* context, void* fmt, uintptr_t* b)
+{
+    #ifdef PREFER_CONVERT_VAARG
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 2);
+    #else
+    myStackAlign(emu, (const char*)fmt, b, emu->scratch, R_EAX, 2);
+    PREPARE_VALIST;
+    #endif
+    char* buff = NULL;
+    if(vasprintf(&buff, (const char*)fmt, VARARGS)<0)
+        return; // meh
+    my->gst_gl_insert_debug_marker(context, buff);
+    free(buff);
+}
+
+EXPORT void my_gst_gl_window_send_message(x64emu_t* emu, void* window, void* f, void* data)
+{
+    my->gst_gl_window_send_message(window, findGstGLWindowCBFct(f), data);
+}
+
+EXPORT void my_gst_gl_window_set_close_callback(x64emu_t* emu, void* window, void* f, void* data, void* d)
+{
+    my->gst_gl_window_set_close_callback(window, findGstGLWindowCBFct(f), data, findDestroyFct(d));
+}
+
+EXPORT void my_gst_gl_window_set_draw_callback(x64emu_t* emu, void* window, void* f, void* data, void* d)
+{
+    my->gst_gl_window_set_draw_callback(window, findGstGLWindowCBFct(f), data, findDestroyFct(d));
+}
+
+EXPORT void my_gst_gl_window_set_resize_callback(x64emu_t* emu, void* window, void* f, void* data, void* d)
+{
+    my->gst_gl_window_set_resize_callback(window, findGstGLWindowCBFct(f), data, findDestroyFct(d));
+}
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
 
+#define CUSTOM_INIT \
+    getMy(lib);     \
+    SetGstGLBaseFilterID(my->gst_gl_base_filter_get_type());        \
+    SetGstGLFilterID(my->gst_gl_filter_get_type());                 \
+    SetGstGLBaseSrcID(my->gst_gl_base_src_get_type());              \
+    setNeededLibs(lib, 2, "libGL.so.1", "libgstreamer-1.0.so.0");
+
+#define CUSTOM_FINI \
+    freeMy();
+
 #include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstgl_private.h b/src/wrapped/wrappedgstgl_private.h
index 6ca18ccb..92e247cf 100644
--- a/src/wrapped/wrappedgstgl_private.h
+++ b/src/wrapped/wrappedgstgl_private.h
@@ -2,29 +2,29 @@
 #error meh!
 #endif
 
-//GO(gst_buffer_add_gl_sync_meta, 
+GO(gst_buffer_add_gl_sync_meta, pFpp)
 //GO(gst_buffer_add_gl_sync_meta_full, 
 //GO(gst_buffer_pool_config_get_gl_allocation_params, 
 //GO(gst_buffer_pool_config_set_gl_allocation_params, 
 GO(gst_context_get_gl_display, iFpp)
 GO(gst_context_set_gl_display, vFpp)
 //GO(gst_egl_get_error_string, 
-//GO(gst_egl_image_export_dmabuf, 
+GO(gst_egl_image_export_dmabuf, iFpppp)
 //GO(gst_egl_image_from_dmabuf, 
 //GO(gst_egl_image_from_dmabuf_direct, 
 //GO(gst_egl_image_from_dmabuf_direct_target, 
-//GO(gst_egl_image_from_texture, 
+GO(gst_egl_image_from_texture, pFppp)
 //GO(gst_egl_image_get_image, 
-//GO(gst_egl_image_get_type, 
+GO(gst_egl_image_get_type, LFv)
 //GO(gst_egl_image_new_wrapped, 
 //GO(gst_gl_allocation_params_copy, 
 //GO(gst_gl_allocation_params_copy_data, 
-//GO(gst_gl_allocation_params_free, 
+GO(gst_gl_allocation_params_free, vFp)
 //GO(gst_gl_allocation_params_free_data, 
-//GO(gst_gl_allocation_params_get_type, 
+GO(gst_gl_allocation_params_get_type, LFv)
 //GO(gst_gl_allocation_params_init, 
 GO(gst_gl_api_from_string, uFp)
-//GO(gst_gl_api_get_type, 
+GO(gst_gl_api_get_type, LFv)
 GO(gst_gl_api_to_string, pFu)
 //GO(gst_gl_async_debug_free, 
 //GO(gst_gl_async_debug_freeze, 
@@ -35,36 +35,36 @@ GO(gst_gl_api_to_string, pFu)
 //GO(gst_gl_async_debug_store_log_msg_valist, 
 //GO(gst_gl_async_debug_thaw, 
 //GO(gst_gl_async_debug_unset, 
-//GO(gst_gl_base_filter_find_gl_context, 
-//GO(gst_gl_base_filter_get_gl_context, 
-//GO(gst_gl_base_filter_get_type, 
-//GO(gst_gl_base_memory_alloc, 
-//GO(gst_gl_base_memory_allocator_get_type, 
+GO(gst_gl_base_filter_find_gl_context, iFp)
+GO(gst_gl_base_filter_get_gl_context, pFp)
+GO(gst_gl_base_filter_get_type, LFv)
+GO(gst_gl_base_memory_alloc, pFpp)
+GO(gst_gl_base_memory_allocator_get_type, LFv)
 //GO(gst_gl_base_memory_alloc_data, 
-//GO(gst_gl_base_memory_error_get_type, 
+GO(gst_gl_base_memory_error_get_type, LFv)
 GO(gst_gl_base_memory_error_quark, uFv)
-//GO(gst_gl_base_memory_get_type, 
+GO(gst_gl_base_memory_get_type, LFv)
 //GO(gst_gl_base_memory_init, 
 //GO(gst_gl_base_memory_init_once, 
 //GO(gst_gl_base_memory_memcpy, 
-//GO(gst_gl_base_memory_transfer_get_type, 
-//GO(gst_gl_base_src_get_type, 
-//GO(gst_gl_buffer_allocation_params_get_type, 
+GO(gst_gl_base_memory_transfer_get_type, LFv)
+GO(gst_gl_base_src_get_type, LFv)
+GO(gst_gl_buffer_allocation_params_get_type, LFv)
 //GO(gst_gl_buffer_allocation_params_new, 
-//GO(gst_gl_buffer_allocator_get_type, 
-//GO(gst_gl_buffer_get_type, 
+GO(gst_gl_buffer_allocator_get_type, LFv)
+GO(gst_gl_buffer_get_type, LFv)
 //GO(gst_gl_buffer_init_once, 
 //GO(gst_gl_buffer_pool_get_gl_allocation_params, 
-//GO(gst_gl_buffer_pool_get_type, 
-//GO(gst_gl_buffer_pool_new, 
+GO(gst_gl_buffer_pool_get_type, LFv)
+GO(gst_gl_buffer_pool_new, pFp)
 GO(gst_gl_check_extension, iFpp)
-//GO(gst_gl_color_convert_decide_allocation, 
-//GO(gst_gl_color_convert_fixate_caps, 
-//GO(gst_gl_color_convert_get_type, 
-//GO(gst_gl_color_convert_new, 
-//GO(gst_gl_color_convert_perform, 
-//GO(gst_gl_color_convert_set_caps, 
-//GO(gst_gl_color_convert_transform_caps, 
+GO(gst_gl_color_convert_decide_allocation, iFpp)
+GO(gst_gl_color_convert_fixate_caps, pFpipp)
+GO(gst_gl_color_convert_get_type, LFv)
+GO(gst_gl_color_convert_new, pFp)
+GO(gst_gl_color_convert_perform, pFpp)
+GO(gst_gl_color_convert_set_caps, iFppp)
+GO(gst_gl_color_convert_transform_caps, pFpipp)
 //DATA(GST_GL_CONFIG_ATTRIB_ALPHA_SIZE_NAME, 
 //DATA(GST_GL_CONFIG_ATTRIB_BLUE_SIZE_NAME, 
 //DATA(GST_GL_CONFIG_ATTRIB_CAVEAT_NAME, 
@@ -88,38 +88,38 @@ GO(gst_gl_check_extension, iFpp)
 //DATA(GST_GL_CONFIG_ATTRIB_SAMPLES_NAME, 
 //DATA(GST_GL_CONFIG_ATTRIB_STENCIL_SIZE_NAME, 
 //DATA(GST_GL_CONFIG_ATTRIB_SURFACE_TYPE_NAME, 
-//GO(gst_gl_config_caveat_get_type, 
+GO(gst_gl_config_caveat_get_type, LFv)
 GO(gst_gl_config_caveat_to_string, pFu)
-//GO(gst_gl_config_surface_type_get_type, 
+GO(gst_gl_config_surface_type_get_type, LFv)
 GO(gst_gl_config_surface_type_to_string, pFu)
 //GO(gst_gl_context_activate, 
 //GO(gst_gl_context_can_share, 
 //GO(gst_gl_context_check_feature, 
 //GO(gst_gl_context_check_framebuffer_status, 
-//GO(gst_gl_context_check_gl_version, 
+GO(gst_gl_context_check_gl_version, iFpiii)
 //GO(gst_gl_context_clear_framebuffer, 
-//GO(gst_gl_context_clear_shader, 
+GO(gst_gl_context_clear_shader, vFp)
 //GO(gst_gl_context_create, 
-GO(gst_gl_context_default_get_proc_address, pFup)
+GOM(gst_gl_context_default_get_proc_address, pFEup)
 //GO(gst_gl_context_destroy, 
-//GO(gst_gl_context_error_get_type, 
+GO(gst_gl_context_error_get_type, LFv)
 //GO(gst_gl_context_error_quark, 
 //GO(gst_gl_context_fill_info, 
 //GO(gst_gl_context_get_config, 
-//GO(gst_gl_context_get_current, 
+GO(gst_gl_context_get_current, pFv)
 GO(gst_gl_context_get_current_gl_api, uFupp)
 GO(gst_gl_context_get_current_gl_context, LFu)
 //GO(gst_gl_context_get_display, 
-//GO(gst_gl_context_get_gl_api, 
+GO(gst_gl_context_get_gl_api, iFp)
 //GO(gst_gl_context_get_gl_context, 
-//GO(gst_gl_context_get_gl_platform, 
+GO(gst_gl_context_get_gl_platform, iFp)
 //GO(gst_gl_context_get_gl_platform_version, 
 //GO(gst_gl_context_get_gl_version, 
 //GO(gst_gl_context_get_proc_address, 
-GO(gst_gl_context_get_proc_address_with_platform, pFuup)
+GOM(gst_gl_context_get_proc_address_with_platform, pFEuup)
 //GO(gst_gl_context_get_thread, 
-//GO(gst_gl_context_get_type, 
-//GO(gst_gl_context_get_window, 
+GO(gst_gl_context_get_type, LFv)
+GO(gst_gl_context_get_window, pFp)
 //GO(gst_gl_context_is_shared, 
 //GO(gst_gl_context_new, 
 //GO(gst_gl_context_new_wrapped, 
@@ -130,100 +130,100 @@ GO(gst_gl_context_get_proc_address_with_platform, pFuup)
 //GO(gst_gl_context_supports_precision, 
 //GO(gst_gl_context_supports_precision_highp, 
 //GO(gst_gl_context_swap_buffers, 
-//GO(gst_gl_context_thread_add, 
+GOM(gst_gl_context_thread_add, vFEppp)
 GO(gst_gl_display_add_context, iFpp)
 GO(gst_gl_display_create_context, iFpppp)
 //GO(gst_gl_display_create_window, 
-//GO(gst_gl_display_egl_device_get_type, 
+GO(gst_gl_display_egl_device_get_type, LFv)
 //GO(gst_gl_display_egl_device_new, 
 //GO(gst_gl_display_egl_device_new_with_egl_device, 
 //GO(gst_gl_display_egl_from_gl_display, 
 //GO(gst_gl_display_egl_get_from_native, 
-//GO(gst_gl_display_egl_get_type, 
+GO(gst_gl_display_egl_get_type, LFv)
 //GO(gst_gl_display_egl_new, 
 //GO(gst_gl_display_egl_new_with_egl_display, 
-//GO(gst_gl_display_filter_gl_api, 
+GO(gst_gl_display_filter_gl_api, vFpi)
 //GO(gst_gl_display_find_window, 
 //GO(gst_gl_display_get_gl_api, 
 //GO(gst_gl_display_get_gl_api_unlocked, 
-//GO(gst_gl_display_get_gl_context_for_thread, 
+GO(gst_gl_display_get_gl_context_for_thread, pFpp)
 //GO(gst_gl_display_get_handle, 
 //GO(gst_gl_display_get_handle_type, 
-//GO(gst_gl_display_get_type, 
+GO(gst_gl_display_get_type, LFv)
 GO(gst_gl_display_new, pFv)
 GO(gst_gl_display_new_with_type, pFi)
 //GO(gst_gl_display_remove_context, 
 //GO(gst_gl_display_remove_window, 
 //GO(gst_gl_display_retrieve_window, 
-//GO(gst_gl_display_type_get_type, 
-//GO(gst_gl_display_wayland_get_type, 
+GO(gst_gl_display_type_get_type, LFv)
+GO(gst_gl_display_wayland_get_type, LFv)
 //GO(gst_gl_display_wayland_new, 
 //GO(gst_gl_display_wayland_new_with_display, 
-//GO(gst_gl_display_x11_get_type, 
+GO(gst_gl_display_x11_get_type, LFv)
 //GO(gst_gl_display_x11_new, 
 //GO(gst_gl_display_x11_new_with_display, 
 //GO(gst_gl_element_propagate_display_context, 
 GO(gst_gl_ensure_element_data, iFppp)
-//GO(gst_gl_filter_add_rgba_pad_templates, 
-//GO(gst_gl_filter_draw_fullscreen_quad, 
-//GO(gst_gl_filter_filter_texture, 
-//GO(gst_gl_filter_get_type, 
-//GO(gst_gl_filter_render_to_target, 
-//GO(gst_gl_filter_render_to_target_with_shader, 
+GO(gst_gl_filter_add_rgba_pad_templates, vFp)
+GO(gst_gl_filter_draw_fullscreen_quad, vFp)
+GO(gst_gl_filter_filter_texture, iFppp)
+GO(gst_gl_filter_get_type, LFv)
+GOM(gst_gl_filter_render_to_target, iFEppppp)
+GO(gst_gl_filter_render_to_target_with_shader, vFpppp)
 //GO(gst_gl_format_from_video_info, 
-//GO(gst_gl_format_get_type, 
+GO(gst_gl_format_get_type, LFv)
 //GO(gst_gl_format_is_supported, 
 GO(gst_gl_format_type_from_sized_gl_format, vFupp)
 GO(gst_gl_format_type_n_bytes, uFuu)
 //GO(gst_gl_framebuffer_attach, 
 //GO(gst_gl_framebuffer_bind, 
-//GO(gst_gl_framebuffer_draw_to_texture, 
+GOM(gst_gl_framebuffer_draw_to_texture, iFEpppp)
 GO(gst_gl_framebuffer_get_effective_dimensions, vFppp)
 GO(gst_gl_framebuffer_get_id, uFp)
-//GO(gst_gl_framebuffer_get_type, 
+GO(gst_gl_framebuffer_get_type, LFv)
 //GO(gst_gl_framebuffer_new, 
-//GO(gst_gl_framebuffer_new_with_default_depth, 
-//GO(gst_gl_get_affine_transformation_meta_as_ndc, 
+GO(gst_gl_framebuffer_new_with_default_depth, pFpuu)
+GO(gst_gl_get_affine_transformation_meta_as_ndc, vFpp)
 //GO(gst_gl_get_plane_data_size, 
 //GO(gst_gl_get_plane_start, 
-//GO(gst_gl_handle_context_query, 
+GO(gst_gl_handle_context_query, iFppppp)
 GO(gst_gl_handle_set_context, iFpppp)
-//GO(gst_gl_insert_debug_marker, 
+GOM(gst_gl_insert_debug_marker, vFppV)
 //GO(gst_gl_memory_allocator_get_default, 
-//GO(gst_gl_memory_allocator_get_type, 
+GO(gst_gl_memory_allocator_get_type, LFv)
 //GO(gst_gl_memory_copy_into, 
 //GO(gst_gl_memory_copy_teximage, 
-//GO(gst_gl_memory_egl_allocator_get_type, 
+GO(gst_gl_memory_egl_allocator_get_type, LFv)
 //GO(gst_gl_memory_egl_get_display, 
 //GO(gst_gl_memory_egl_get_image, 
-//GO(gst_gl_memory_egl_get_type, 
+GO(gst_gl_memory_egl_get_type, LFv)
 //GO(gst_gl_memory_egl_init_once, 
 //GO(gst_gl_memory_get_texture_format, 
-//GO(gst_gl_memory_get_texture_height, 
-//GO(gst_gl_memory_get_texture_id, 
-//GO(gst_gl_memory_get_texture_target, 
-//GO(gst_gl_memory_get_texture_width, 
-//GO(gst_gl_memory_get_type, 
+GO(gst_gl_memory_get_texture_height, iFp)
+GO(gst_gl_memory_get_texture_id, uFp)
+GO(gst_gl_memory_get_texture_target, iFp)
+GO(gst_gl_memory_get_texture_width, iFp)
+GO(gst_gl_memory_get_type, LFv)
 //GO(gst_gl_memory_init, 
 //GO(gst_gl_memory_init_once, 
-//GO(gst_gl_memory_pbo_allocator_get_type, 
+GO(gst_gl_memory_pbo_allocator_get_type, LFv)
 //GO(gst_gl_memory_pbo_copy_into_texture, 
-//GO(gst_gl_memory_pbo_download_transfer, 
-//GO(gst_gl_memory_pbo_get_type, 
+GO(gst_gl_memory_pbo_download_transfer, vFp)
+GO(gst_gl_memory_pbo_get_type, LFv)
 //GO(gst_gl_memory_pbo_init_once, 
 //GO(gst_gl_memory_pbo_upload_transfer, 
 //GO(gst_gl_memory_read_pixels, 
 //GO(gst_gl_memory_setup_buffer, 
 //GO(gst_gl_memory_texsubimage, 
 GO(gst_gl_multiply_matrix4, vFppp)
-//GO(gst_gl_overlay_compositor_add_caps, 
-//GO(gst_gl_overlay_compositor_draw_overlays, 
-//GO(gst_gl_overlay_compositor_free_overlays, 
+GO(gst_gl_overlay_compositor_add_caps, pFp)
+GO(gst_gl_overlay_compositor_draw_overlays, vFp)
+GO(gst_gl_overlay_compositor_free_overlays, vFp)
 GO(gst_gl_overlay_compositor_get_type, LFv)
-//GO(gst_gl_overlay_compositor_new, 
-//GO(gst_gl_overlay_compositor_upload_overlays, 
+GO(gst_gl_overlay_compositor_new, pFp)
+GO(gst_gl_overlay_compositor_upload_overlays, vFpp)
 GO(gst_gl_platform_from_string, uFp)
-//GO(gst_gl_platform_get_type, 
+GO(gst_gl_platform_get_type, LFv)
 GO(gst_gl_platform_to_string, pFu)
 //GO(gst_gl_query_counter, 
 //GO(gst_gl_query_end, 
@@ -233,39 +233,39 @@ GO(gst_gl_query_local_gl_context, iFpup)
 //GO(gst_gl_query_new, 
 //GO(gst_gl_query_result, 
 //GO(gst_gl_query_start, 
-//GO(gst_gl_query_type_get_type, 
+GO(gst_gl_query_type_get_type, LFv)
 //GO(gst_gl_query_unset, 
-//GO(gst_gl_renderbuffer_allocation_params_get_type, 
+GO(gst_gl_renderbuffer_allocation_params_get_type, LFv)
 //GO(gst_gl_renderbuffer_allocation_params_new, 
 //GO(gst_gl_renderbuffer_allocation_params_new_wrapped, 
-//GO(gst_gl_renderbuffer_allocator_get_type, 
+GO(gst_gl_renderbuffer_allocator_get_type, LFv)
 //GO(gst_gl_renderbuffer_get_format, 
 //GO(gst_gl_renderbuffer_get_height, 
 //GO(gst_gl_renderbuffer_get_id, 
-//GO(gst_gl_renderbuffer_get_type, 
+GO(gst_gl_renderbuffer_get_type, LFv)
 //GO(gst_gl_renderbuffer_get_width, 
 GO(gst_gl_renderbuffer_init_once, vFv)
-//GO(gst_gl_set_affine_transformation_meta_from_ndc, 
-//GO(gst_gl_shader_attach, 
-//GO(gst_gl_shader_attach_unlocked, 
-//GO(gst_gl_shader_bind_attribute_location, 
+GO(gst_gl_set_affine_transformation_meta_from_ndc, vFpp)
+GO(gst_gl_shader_attach, iFpp)
+GO(gst_gl_shader_attach_unlocked, iFpp)
+GO(gst_gl_shader_bind_attribute_location, vFpup)
 GO(gst_gl_shader_bind_frag_data_location, vFpup)
-//GO(gst_gl_shader_compile_attach_stage, 
-//GO(gst_gl_shader_detach, 
-//GO(gst_gl_shader_detach_unlocked, 
+GO(gst_gl_shader_compile_attach_stage, iFppp)
+GO(gst_gl_shader_detach, vFpp)
+GO(gst_gl_shader_detach_unlocked, vFpp)
 GO(gst_gl_shader_get_attribute_location, iFpp)
 GO(gst_gl_shader_get_program_handle, iFp)
-//GO(gst_gl_shader_get_type, 
+GO(gst_gl_shader_get_type, LFv)
 GO(gst_gl_shader_is_linked, iFp)
 GO(gst_gl_shader_link, iFpp)
-//GO(gst_gl_shader_new, 
-//GO(gst_gl_shader_new_default, 
-//GO(gst_gl_shader_new_link_with_stages, 
-//GO(gst_gl_shader_new_with_stages, 
+GO(gst_gl_shader_new, pFp)
+GO(gst_gl_shader_new_default, pFpp)
+GO(gst_gl_shader_new_link_with_stages, pFpppppppppppp)  //vaargs
+GO(gst_gl_shader_new_with_stages, pFpppppppppppp)   //vaarg
 //GO(gst_gl_shader_release, 
 //GO(gst_gl_shader_release_unlocked, 
 GO(gst_gl_shader_set_uniform_1f, vFppf)
-//GO(gst_gl_shader_set_uniform_1fv, 
+GO(gst_gl_shader_set_uniform_1fv, vFppup)
 GO(gst_gl_shader_set_uniform_1i, vFppi)
 //GO(gst_gl_shader_set_uniform_1iv, 
 GO(gst_gl_shader_set_uniform_2f, vFppff)
@@ -286,121 +286,121 @@ GO(gst_gl_shader_set_uniform_4iv, vFppup)
 //GO(gst_gl_shader_set_uniform_matrix_3fv, 
 //GO(gst_gl_shader_set_uniform_matrix_3x2fv, 
 //GO(gst_gl_shader_set_uniform_matrix_3x4fv, 
-//GO(gst_gl_shader_set_uniform_matrix_4fv, 
+GO(gst_gl_shader_set_uniform_matrix_4fv, vFppiip)
 //GO(gst_gl_shader_set_uniform_matrix_4x2fv, 
 GO(gst_gl_shader_set_uniform_matrix_4x3fv, vFppiip)
 //DATA(gst_gl_shader_string_fragment_default, 
 //DATA(gst_gl_shader_string_fragment_external_oes_default, 
-//GO(gst_gl_shader_string_fragment_external_oes_get_default, 
-//GO(gst_gl_shader_string_fragment_get_default, 
-//DATA(gst_gl_shader_string_fragment_highp_precision, 
-//DATA(gst_gl_shader_string_fragment_mediump_precision, 
-//GO(gst_gl_shader_string_get_highest_precision, 
-//DATA(gst_gl_shader_string_vertex_default, 
-//DATA(gst_gl_shader_string_vertex_mat4_texture_transform, 
-//DATA(gst_gl_shader_string_vertex_mat4_vertex_transform, 
+GO(gst_gl_shader_string_fragment_external_oes_get_default, pFpii)
+GO(gst_gl_shader_string_fragment_get_default, pFpii)
+DATA(gst_gl_shader_string_fragment_highp_precision, sizeof(void*))
+DATA(gst_gl_shader_string_fragment_mediump_precision, sizeof(void*))
+GO(gst_gl_shader_string_get_highest_precision, pFpii)
+DATA(gst_gl_shader_string_vertex_default, sizeof(void*))
+DATA(gst_gl_shader_string_vertex_mat4_texture_transform, sizeof(void*))
+DATA(gst_gl_shader_string_vertex_mat4_vertex_transform, sizeof(void*))
 GO(gst_gl_shader_use, vFp)
 //GO(gst_gl_sized_gl_format_from_gl_format_type, 
-//GO(gst_glsl_error_get_type, 
-//GO(gst_glsl_error_quark, 
+GO(gst_glsl_error_get_type, LFv)
+GO(gst_glsl_error_quark, pFv)
 GO(gst_glsl_profile_from_string, iFp)
-//GO(gst_glsl_profile_get_type, 
+GO(gst_glsl_profile_get_type, LFv)
 GO(gst_glsl_profile_to_string, pFi)
-//GO(gst_glsl_stage_compile, 
+GO(gst_glsl_stage_compile, iFpp)
 //GO(gst_glsl_stage_get_handle, 
 //GO(gst_glsl_stage_get_profile, 
 //GO(gst_glsl_stage_get_shader_type, 
-//GO(gst_glsl_stage_get_type, 
+GO(gst_glsl_stage_get_type, LFv)
 //GO(gst_glsl_stage_get_version, 
 //GO(gst_glsl_stage_new, 
-//GO(gst_glsl_stage_new_default_fragment, 
-//GO(gst_glsl_stage_new_default_vertex, 
-//GO(gst_glsl_stage_new_with_string, 
-//GO(gst_glsl_stage_new_with_strings, 
+GO(gst_glsl_stage_new_default_fragment, pFp)
+GO(gst_glsl_stage_new_default_vertex, pFp)
+GO(gst_glsl_stage_new_with_string, pFpuiip)
+GO(gst_glsl_stage_new_with_strings, pFpuiiip)
 //GO(gst_glsl_stage_set_strings, 
 GO(gst_glsl_string_get_version_profile, iFppp)
 GO(gst_glsl_version_from_string, uFp)
-//GO(gst_glsl_version_get_type, 
+GO(gst_glsl_version_get_type, LFv)
 //GO(gst_glsl_version_profile_from_string, 
 GO(gst_glsl_version_profile_to_string, pFui)
 GO(gst_glsl_version_to_string, pFu)
-//GO(gst_gl_stereo_downmix_get_type, 
-//GO(gst_gl_stereo_downmix_mode_get_type, 
-//GO(gst_gl_sync_meta_api_get_type, 
+GO(gst_gl_stereo_downmix_get_type, LFv)
+GO(gst_gl_stereo_downmix_mode_get_type, LFv)
+GO(gst_gl_sync_meta_api_get_type, LFv)
 //GO(gst_gl_sync_meta_get_info, 
-//GO(gst_gl_sync_meta_set_sync_point, 
-//GO(gst_gl_sync_meta_wait, 
-//GO(gst_gl_sync_meta_wait_cpu, 
+GO(gst_gl_sync_meta_set_sync_point, vFpp)
+GO(gst_gl_sync_meta_wait, vFpp)
+GO(gst_gl_sync_meta_wait_cpu, vFpp)
 GO(gst_gl_texture_target_from_gl, uFu)
 GO(gst_gl_texture_target_from_string, uFp)
-//GO(gst_gl_texture_target_get_type, 
+GO(gst_gl_texture_target_get_type, LFv)
 GO(gst_gl_texture_target_to_buffer_pool_option, pFu)
 GO(gst_gl_texture_target_to_gl, uFu)
-//GO(gst_gl_texture_target_to_string, 
-//GO(gst_gl_upload_get_caps, 
-//GO(gst_gl_upload_get_input_template_caps, 
-//GO(gst_gl_upload_get_type, 
-//GO(gst_gl_upload_new, 
-//GO(gst_gl_upload_perform_with_buffer, 
-//GO(gst_gl_upload_propose_allocation, 
-//GO(gst_gl_upload_return_get_type, 
-//GO(gst_gl_upload_set_caps, 
-//GO(gst_gl_upload_set_context, 
-//GO(gst_gl_upload_transform_caps, 
+GO(gst_gl_texture_target_to_string, pFi)
+GO(gst_gl_upload_get_caps, vFppp)
+GO(gst_gl_upload_get_input_template_caps, pFv)
+GO(gst_gl_upload_get_type, LFv)
+GO(gst_gl_upload_new, pFp)
+GO(gst_gl_upload_perform_with_buffer, iFppp)
+GO(gst_gl_upload_propose_allocation, vFppp)
+GO(gst_gl_upload_return_get_type, LFv)
+GO(gst_gl_upload_set_caps, iFppp)
+GO(gst_gl_upload_set_context, vFpp)
+GO(gst_gl_upload_transform_caps, pFppipp)
 GO(gst_gl_value_get_texture_target_mask, uFp)
 GO(gst_gl_value_set_texture_target, iFpu)
 //GO(gst_gl_value_set_texture_target_from_mask, 
 GO(gst_gl_version_to_glsl_version, uFuii)
 //GO(gst_gl_video_allocation_params_copy_data, 
 //GO(gst_gl_video_allocation_params_free_data, 
-//GO(gst_gl_video_allocation_params_get_type, 
+GO(gst_gl_video_allocation_params_get_type, LFv)
 //GO(gst_gl_video_allocation_params_init_full, 
-//GO(gst_gl_video_allocation_params_new, 
+GO(gst_gl_video_allocation_params_new, pFpppupii)
 //GO(gst_gl_video_allocation_params_new_wrapped_data, 
 //GO(gst_gl_video_allocation_params_new_wrapped_gl_handle, 
 //GO(gst_gl_video_allocation_params_new_wrapped_texture, 
-//GO(gst_gl_view_convert_fixate_caps, 
-//GO(gst_gl_view_convert_get_output, 
-//GO(gst_gl_view_convert_get_type, 
-//GO(gst_gl_view_convert_new, 
-//GO(gst_gl_view_convert_perform, 
-//GO(gst_gl_view_convert_reset, 
-//GO(gst_gl_view_convert_set_caps, 
-//GO(gst_gl_view_convert_set_context, 
-//GO(gst_gl_view_convert_submit_input_buffer, 
-//GO(gst_gl_view_convert_transform_caps, 
-//GO(gst_gl_window_controls_viewport, 
-//GO(gst_gl_window_draw, 
-//GO(gst_gl_window_error_get_type, 
-//GO(gst_gl_window_error_quark, 
+GO(gst_gl_view_convert_fixate_caps, pFpipp)
+GO(gst_gl_view_convert_get_output, iFpp)
+GO(gst_gl_view_convert_get_type, LFv)
+GO(gst_gl_view_convert_new, pFv)
+GO(gst_gl_view_convert_perform, pFpp)
+GO(gst_gl_view_convert_reset, vFp)
+GO(gst_gl_view_convert_set_caps, iFppp)
+GO(gst_gl_view_convert_set_context, vFpp)
+GO(gst_gl_view_convert_submit_input_buffer, iFpip)
+GO(gst_gl_view_convert_transform_caps, pFpipp)
+GO(gst_gl_window_controls_viewport, iFp)
+GO(gst_gl_window_draw, iFp)
+GO(gst_gl_window_error_get_type, LFv)
+GO(gst_gl_window_error_quark, pFv)
 //GO(gst_gl_window_get_context, 
 //GO(gst_gl_window_get_display, 
-//GO(gst_gl_window_get_surface_dimensions, 
-//GO(gst_gl_window_get_type, 
+GO(gst_gl_window_get_surface_dimensions, vFppp)
+GO(gst_gl_window_get_type, LFv)
 //GO(gst_gl_window_get_window_handle, 
-//GO(gst_gl_window_handle_events, 
+GO(gst_gl_window_handle_events, vFpi)
 //GO(gst_gl_window_has_output_surface, 
 //GO(gst_gl_window_new, 
-//GO(gst_gl_window_queue_resize, 
+GO(gst_gl_window_queue_resize, vFp)
 //GO(gst_gl_window_quit, 
 //GO(gst_gl_window_resize, 
 //GO(gst_gl_window_run, 
 //GO(gst_gl_window_send_key_event, 
-//GO(gst_gl_window_send_message, 
+GOM(gst_gl_window_send_message, vFEppp)
 //GO(gst_gl_window_send_message_async, 
 //GO(gst_gl_window_send_mouse_event, 
 //GO(gst_gl_window_send_scroll_event, 
-//GO(gst_gl_window_set_close_callback, 
-//GO(gst_gl_window_set_draw_callback, 
-//GO(gst_gl_window_set_preferred_size, 
-//GO(gst_gl_window_set_render_rectangle, 
-//GO(gst_gl_window_set_resize_callback, 
-//GO(gst_gl_window_set_window_handle, 
-//GO(gst_gl_window_show, 
+GOM(gst_gl_window_set_close_callback, vFEpppp)
+GOM(gst_gl_window_set_draw_callback, vFEpppp)
+GO(gst_gl_window_set_preferred_size, vFpii)
+GO(gst_gl_window_set_render_rectangle, iFpiiii)
+GOM(gst_gl_window_set_resize_callback, vFEpppp)
+GO(gst_gl_window_set_window_handle, vFpL)
+GO(gst_gl_window_show, vFp)
 //GO(gst_is_gl_base_memory, 
 //GO(gst_is_gl_buffer, 
 //GO(gst_is_gl_memory, 
 //GO(gst_is_gl_memory_egl, 
-//GO(gst_is_gl_memory_pbo, 
+GO(gst_is_gl_memory_pbo, iFp)
 //GO(gst_is_gl_renderbuffer, 
 
diff --git a/src/wrapped/wrappedgstnet.c b/src/wrapped/wrappedgstnet.c
new file mode 100644
index 00000000..68737bde
--- /dev/null
+++ b/src/wrapped/wrappedgstnet.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstnetName = "libgstnet-1.0.so.0";
+#define LIBNAME gstnet
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstnet_private.h b/src/wrapped/wrappedgstnet_private.h
new file mode 100644
index 00000000..03a500cc
--- /dev/null
+++ b/src/wrapped/wrappedgstnet_private.h
@@ -0,0 +1,33 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+//GO(gst_buffer_add_net_address_meta, 
+//GO(gst_buffer_add_net_control_message_meta, 
+//GO(gst_buffer_get_net_address_meta, 
+GO(gst_net_address_meta_api_get_type, LFv)
+//GO(gst_net_address_meta_get_info, 
+GO(gst_net_client_clock_get_type, LFv)
+//GO(gst_net_client_clock_new, 
+GO(gst_net_control_message_meta_api_get_type, LFv)
+//GO(gst_net_control_message_meta_get_info, 
+//GO(gst_net_time_packet_copy, 
+//GO(gst_net_time_packet_free, 
+GO(gst_net_time_packet_get_type, LFv)
+//GO(gst_net_time_packet_new, 
+//GO(gst_net_time_packet_receive, 
+//GO(gst_net_time_packet_send, 
+//GO(gst_net_time_packet_serialize, 
+GO(gst_net_time_provider_get_type, LFv)
+//GO(gst_net_time_provider_new, 
+//GO(gst_net_utils_set_socket_tos, 
+GO(gst_ntp_clock_get_type, LFv)
+//GO(gst_ntp_clock_new, 
+GO(gst_ptp_clock_get_type, LFv)
+//GO(gst_ptp_clock_new, 
+//GO(gst_ptp_deinit, 
+//GO(gst_ptp_init, 
+//GO(gst_ptp_is_initialized, 
+//GO(gst_ptp_is_supported, 
+//GO(gst_ptp_statistics_callback_add, 
+//GO(gst_ptp_statistics_callback_remove, 
diff --git a/src/wrapped/wrappedgstpbutils.c b/src/wrapped/wrappedgstpbutils.c
new file mode 100644
index 00000000..d3694646
--- /dev/null
+++ b/src/wrapped/wrappedgstpbutils.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstpbutilsName = "libgstpbutils-1.0.so.0";
+#define LIBNAME gstpbutils
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstpbutils_private.h b/src/wrapped/wrappedgstpbutils_private.h
new file mode 100644
index 00000000..3957627d
--- /dev/null
+++ b/src/wrapped/wrappedgstpbutils_private.h
@@ -0,0 +1,195 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+GO(gst_audio_visualizer_get_type, LFv)
+GO(gst_audio_visualizer_shader_get_type, LFv)
+GO(gst_codec_utils_aac_caps_set_level_and_profile, iFppu)
+//GO(gst_codec_utils_aac_get_channels, 
+//GO(gst_codec_utils_aac_get_index_from_sample_rate, 
+//GO(gst_codec_utils_aac_get_level, 
+//GO(gst_codec_utils_aac_get_profile, 
+//GO(gst_codec_utils_aac_get_sample_rate, 
+//GO(gst_codec_utils_aac_get_sample_rate_from_index, 
+//GO(gst_codec_utils_caps_from_mime_codec, 
+//GO(gst_codec_utils_caps_get_mime_codec, 
+GO(gst_codec_utils_h264_caps_set_level_and_profile, iFppu)
+//GO(gst_codec_utils_h264_get_level, 
+//GO(gst_codec_utils_h264_get_level_idc, 
+//GO(gst_codec_utils_h264_get_profile, 
+//GO(gst_codec_utils_h264_get_profile_flags_level, 
+GO(gst_codec_utils_h265_caps_set_level_tier_and_profile, iFppu)
+//GO(gst_codec_utils_h265_get_level, 
+//GO(gst_codec_utils_h265_get_level_idc, 
+//GO(gst_codec_utils_h265_get_profile, 
+//GO(gst_codec_utils_h265_get_tier, 
+GO(gst_codec_utils_mpeg4video_caps_set_level_and_profile, iFppu)
+//GO(gst_codec_utils_mpeg4video_get_level, 
+//GO(gst_codec_utils_mpeg4video_get_profile, 
+GO(gst_codec_utils_opus_create_caps, pFuCCCCp)
+GO(gst_codec_utils_opus_create_caps_from_header, pFpp)
+GO(gst_codec_utils_opus_create_header, pFuCCCCpWw)
+GO(gst_codec_utils_opus_parse_caps, iFppppppp)
+//GO(gst_codec_utils_opus_parse_header, 
+//GO(gst_discoverer_audio_info_get_bitrate, 
+//GO(gst_discoverer_audio_info_get_channel_mask, 
+//GO(gst_discoverer_audio_info_get_channels, 
+//GO(gst_discoverer_audio_info_get_depth, 
+//GO(gst_discoverer_audio_info_get_language, 
+//GO(gst_discoverer_audio_info_get_max_bitrate, 
+//GO(gst_discoverer_audio_info_get_sample_rate, 
+GO(gst_discoverer_audio_info_get_type, LFv)
+//GO(gst_discoverer_container_info_get_streams, 
+//GO(gst_discoverer_container_info_get_tags, 
+GO(gst_discoverer_container_info_get_type, LFv)
+//GO(gst_discoverer_discover_uri, 
+//GO(gst_discoverer_discover_uri_async, 
+GO(gst_discoverer_get_type, LFv)
+//GO(gst_discoverer_info_copy, 
+//GO(gst_discoverer_info_from_variant, 
+//GO(gst_discoverer_info_get_audio_streams, 
+//GO(gst_discoverer_info_get_container_streams, 
+//GO(gst_discoverer_info_get_duration, 
+//GO(gst_discoverer_info_get_live, 
+//GO(gst_discoverer_info_get_misc, 
+//GO(gst_discoverer_info_get_missing_elements_installer_details, 
+//GO(gst_discoverer_info_get_result, 
+//GO(gst_discoverer_info_get_seekable, 
+//GO(gst_discoverer_info_get_stream_info, 
+//GO(gst_discoverer_info_get_stream_list, 
+//GO(gst_discoverer_info_get_streams, 
+//GO(gst_discoverer_info_get_subtitle_streams, 
+//GO(gst_discoverer_info_get_tags, 
+//GO(gst_discoverer_info_get_toc, 
+GO(gst_discoverer_info_get_type, LFv)
+//GO(gst_discoverer_info_get_uri, 
+//GO(gst_discoverer_info_get_video_streams, 
+//GO(gst_discoverer_info_to_variant, 
+//GO(gst_discoverer_new, 
+GO(gst_discoverer_result_get_type, LFv)
+GO(gst_discoverer_serialize_flags_get_type, LFv)
+//GO(gst_discoverer_start, 
+//GO(gst_discoverer_stop, 
+//GO(gst_discoverer_stream_info_get_caps, 
+//GO(gst_discoverer_stream_info_get_misc, 
+//GO(gst_discoverer_stream_info_get_next, 
+//GO(gst_discoverer_stream_info_get_previous, 
+//GO(gst_discoverer_stream_info_get_stream_id, 
+//GO(gst_discoverer_stream_info_get_stream_number, 
+//GO(gst_discoverer_stream_info_get_stream_type_nick, 
+//GO(gst_discoverer_stream_info_get_tags, 
+//GO(gst_discoverer_stream_info_get_toc, 
+GO(gst_discoverer_stream_info_get_type, LFv)
+//GO(gst_discoverer_stream_info_list_free, 
+//GO(gst_discoverer_subtitle_info_get_language, 
+GO(gst_discoverer_subtitle_info_get_type, LFv)
+//GO(gst_discoverer_video_info_get_bitrate, 
+//GO(gst_discoverer_video_info_get_depth, 
+//GO(gst_discoverer_video_info_get_framerate_denom, 
+//GO(gst_discoverer_video_info_get_framerate_num, 
+//GO(gst_discoverer_video_info_get_height, 
+//GO(gst_discoverer_video_info_get_max_bitrate, 
+//GO(gst_discoverer_video_info_get_par_denom, 
+//GO(gst_discoverer_video_info_get_par_num, 
+GO(gst_discoverer_video_info_get_type, LFv)
+//GO(gst_discoverer_video_info_get_width, 
+//GO(gst_discoverer_video_info_is_image, 
+//GO(gst_discoverer_video_info_is_interlaced, 
+GO(gst_encoding_audio_profile_get_type, LFv)
+//GO(gst_encoding_audio_profile_new, 
+//GO(gst_encoding_container_profile_add_profile, 
+//GO(gst_encoding_container_profile_contains_profile, 
+//GO(gst_encoding_container_profile_get_profiles, 
+GO(gst_encoding_container_profile_get_type, LFv)
+//GO(gst_encoding_container_profile_new, 
+//GO(gst_encoding_list_all_targets, 
+//GO(gst_encoding_list_available_categories, 
+//GO(gst_encoding_profile_copy, 
+//GO(gst_encoding_profile_find, 
+//GO(gst_encoding_profile_from_discoverer, 
+//GO(gst_encoding_profile_get_allow_dynamic_output, 
+//GO(gst_encoding_profile_get_description, 
+//GO(gst_encoding_profile_get_element_properties, 
+//GO(gst_encoding_profile_get_file_extension, 
+//GO(gst_encoding_profile_get_format, 
+//GO(gst_encoding_profile_get_input_caps, 
+//GO(gst_encoding_profile_get_name, 
+//GO(gst_encoding_profile_get_presence, 
+//GO(gst_encoding_profile_get_preset, 
+//GO(gst_encoding_profile_get_preset_name, 
+//GO(gst_encoding_profile_get_restriction, 
+//GO(gst_encoding_profile_get_single_segment, 
+GO(gst_encoding_profile_get_type, LFv)
+//GO(gst_encoding_profile_get_type_nick, 
+//GO(gst_encoding_profile_is_enabled, 
+//GO(gst_encoding_profile_is_equal, 
+//GO(gst_encoding_profile_set_allow_dynamic_output, 
+//GO(gst_encoding_profile_set_description, 
+//GO(gst_encoding_profile_set_element_properties, 
+//GO(gst_encoding_profile_set_enabled, 
+//GO(gst_encoding_profile_set_format, 
+//GO(gst_encoding_profile_set_name, 
+//GO(gst_encoding_profile_set_presence, 
+//GO(gst_encoding_profile_set_preset, 
+//GO(gst_encoding_profile_set_preset_name, 
+//GO(gst_encoding_profile_set_restriction, 
+//GO(gst_encoding_profile_set_single_segment, 
+//GO(gst_encoding_target_add_profile, 
+//GO(gst_encoding_target_get_category, 
+//GO(gst_encoding_target_get_description, 
+//GO(gst_encoding_target_get_name, 
+//GO(gst_encoding_target_get_path, 
+//GO(gst_encoding_target_get_profile, 
+//GO(gst_encoding_target_get_profiles, 
+GO(gst_encoding_target_get_type, LFv)
+//GO(gst_encoding_target_load, 
+//GO(gst_encoding_target_load_from_file, 
+//GO(gst_encoding_target_new, 
+//GO(gst_encoding_target_save, 
+//GO(gst_encoding_target_save_to_file, 
+//GO(gst_encoding_video_profile_get_pass, 
+GO(gst_encoding_video_profile_get_type, LFv)
+//GO(gst_encoding_video_profile_get_variableframerate, 
+//GO(gst_encoding_video_profile_new, 
+//GO(gst_encoding_video_profile_set_pass, 
+//GO(gst_encoding_video_profile_set_variableframerate, 
+//GO(gst_install_plugins_async, 
+//GO(gst_install_plugins_context_copy, 
+//GO(gst_install_plugins_context_free, 
+GO(gst_install_plugins_context_get_type, LFv)
+//GO(gst_install_plugins_context_new, 
+//GO(gst_install_plugins_context_set_confirm_search, 
+//GO(gst_install_plugins_context_set_desktop_id, 
+//GO(gst_install_plugins_context_set_startup_notification_id, 
+//GO(gst_install_plugins_context_set_xid, 
+//GO(gst_install_plugins_installation_in_progress, 
+//GO(gst_install_plugins_return_get_name, 
+GO(gst_install_plugins_return_get_type, LFv)
+//GO(gst_install_plugins_supported, 
+//GO(gst_install_plugins_sync, 
+//GO(gst_is_missing_plugin_message, 
+//GO(gst_missing_decoder_installer_detail_new, 
+//GO(gst_missing_decoder_message_new, 
+//GO(gst_missing_element_installer_detail_new, 
+//GO(gst_missing_element_message_new, 
+//GO(gst_missing_encoder_installer_detail_new, 
+//GO(gst_missing_encoder_message_new, 
+//GO(gst_missing_plugin_message_get_description, 
+//GO(gst_missing_plugin_message_get_installer_detail, 
+//GO(gst_missing_uri_sink_installer_detail_new, 
+//GO(gst_missing_uri_sink_message_new, 
+//GO(gst_missing_uri_source_installer_detail_new, 
+//GO(gst_missing_uri_source_message_new, 
+GO(gst_pb_utils_add_codec_description_to_tag_list, iFppp)
+GO(gst_pb_utils_caps_description_flags_get_type, LFv)
+//GO(gst_pb_utils_get_caps_description_flags, 
+GO(gst_pb_utils_get_codec_description, pFp)
+//GO(gst_pb_utils_get_decoder_description, 
+//GO(gst_pb_utils_get_element_description, 
+//GO(gst_pb_utils_get_encoder_description, 
+//GO(gst_pb_utils_get_file_extension_from_caps, 
+//GO(gst_pb_utils_get_sink_description, 
+//GO(gst_pb_utils_get_source_description, 
+GO(gst_pb_utils_init, vFv)
+//GO(gst_plugins_base_version, 
+//GO(gst_plugins_base_version_string, 
diff --git a/src/wrapped/wrappedgstreamer.c b/src/wrapped/wrappedgstreamer.c
index 2f682b34..cb51b192 100644
--- a/src/wrapped/wrappedgstreamer.c
+++ b/src/wrapped/wrappedgstreamer.c
@@ -1,8 +1,9 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#define _GNU_SOURCE         /* See feature_test_macros(7) */
 #include <dlfcn.h>
+#include <dirent.h> 
 
 #include "wrappedlibs.h"
 
@@ -23,6 +24,7 @@
 const char* gstreamerName = "libgstreamer-1.0.so.0";
 #define LIBNAME gstreamer
 
+typedef void    (*vFv_t)();
 typedef void*   (*pFppA_t)(void*, void*, va_list);
 typedef void*   (*pFv_t)();
 typedef size_t  (*LFv_t)();
@@ -30,11 +32,22 @@ typedef void*   (*pFp_t)(void*);
 typedef void    (*vFpp_t)(void*, void*);
 typedef int     (*iFpp_t)(void*, void*);
 
+void* my_dlopen(x64emu_t* emu, void *filename, int flag);
+int my_dlclose(x64emu_t* emu, void *handle);
+void* my_dlsym(x64emu_t* emu, void *handle, void *symbol);
+
+#ifndef MAX_PATH
+#define MAX_PATH 4096
+#endif
+
 #define ADDED_FUNCTIONS()                   \
     GO(gst_object_get_type, LFv_t)          \
     GO(gst_allocator_get_type, LFv_t)       \
     GO(gst_task_pool_get_type, LFv_t)       \
-    GO(gst_structure_new_valist, pFppA_t)   \
+    GO(gst_element_get_type, LFv_t)         \
+    GO(gst_bin_get_type, LFv_t)             \
+    GO(gst_pad_get_type, LFv_t)             \
+    GO(gst_uri_handler_get_type, LFv_t)     \
     GO(gst_structure_new_empty, pFp_t)      \
     GO(gst_caps_new_empty, pFv_t)           \
     GO(gst_caps_replace, iFpp_t)            \
@@ -42,6 +55,26 @@ typedef int     (*iFpp_t)(void*, void*);
     GO(gst_bin_add, iFpp_t)                 \
     GO(gst_element_link, iFpp_t)            \
 
+typedef struct my_gst_plugin_s {
+    void* handle;
+    int   is_native;
+} my_gst_plugin_t;
+
+#define ADDED_STRUCT()  \
+    int plugin_cnt;     \
+    int plugin_cap;     \
+    my_gst_plugin_t* plugins;     \
+
+#define ADDED_FINI()                                    \
+    for(int i=0; i<my->plugin_cnt; ++i) {               \
+        if(my->plugins[i].is_native)                    \
+            dlclose(my->plugins[i].handle);             \
+        else                                            \
+            my_dlclose(thread_get_emu(), my->plugins[i].handle);   \
+    }                                                   \
+    if(my->plugins) box_free(my->plugins);              \
+
+
 #include "generated/wrappedgstreamertypes.h"
 
 #include "wrappercallback.h"
@@ -51,6 +84,15 @@ GO(0)   \
 GO(1)   \
 GO(2)   \
 GO(3)   \
+GO(4)   \
+GO(5)   \
+GO(6)   \
+GO(7)   \
+GO(8)   \
+GO(9)   \
+GO(10)  \
+GO(11)  \
+GO(12)  \
 
 // GDestroyFunc ...
 #define GO(A)   \
@@ -275,6 +317,272 @@ static void* findGstCapsFilterMapFuncFct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstCapsFilterMapFunc callback\n");
     return NULL;
 }
+//GstPluginInit
+#define GO(A)   \
+static uintptr_t my_GstPluginInit_fct_##A = 0;                      \
+static int my_GstPluginInit_##A(void* a)                            \
+{                                                                   \
+    return (int)RunFunctionFmt(my_GstPluginInit_fct_##A, "p", a);   \
+}
+SUPER()
+#undef GO
+static void* findGstPluginInitFct(void* fct)
+{
+    if(!fct) return fct;
+    #define GO(A) if(my_GstPluginInit_fct_##A == (uintptr_t)fct) return my_GstPluginInit_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstPluginInit_fct_##A == 0) {my_GstPluginInit_fct_##A = (uintptr_t)fct; return my_GstPluginInit_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstPluginInit callback\n");
+    return NULL;
+}
+//GstIteratorFoldFunction
+#define GO(A)   \
+static uintptr_t my_GstIteratorFoldFunction_fct_##A = 0;                            \
+static int my_GstIteratorFoldFunction_##A(void* a, void* b, void* c)                \
+{                                                                                   \
+    return (int)RunFunctionFmt(my_GstIteratorFoldFunction_fct_##A, "ppp", a, b, c); \
+}
+SUPER()
+#undef GO
+static void* findGstIteratorFoldFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    #define GO(A) if(my_GstIteratorFoldFunction_fct_##A == (uintptr_t)fct) return my_GstIteratorFoldFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstIteratorFoldFunction_fct_##A == 0) {my_GstIteratorFoldFunction_fct_##A = (uintptr_t)fct; return my_GstIteratorFoldFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstIteratorFoldFunction callback\n");
+    return NULL;
+}
+//GCompareDataFunc
+#define GO(A)   \
+static uintptr_t my_GCompareDataFunc_fct_##A = 0;                            \
+static int my_GCompareDataFunc_##A(void* a, void* b, void* c)                \
+{                                                                            \
+    return (int)RunFunctionFmt(my_GCompareDataFunc_fct_##A, "ppp", a, b, c); \
+}
+SUPER()
+#undef GO
+static void* findGCompareDataFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    #define GO(A) if(my_GCompareDataFunc_fct_##A == (uintptr_t)fct) return my_GCompareDataFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GCompareDataFunc_fct_##A == 0) {my_GCompareDataFunc_fct_##A = (uintptr_t)fct; return my_GCompareDataFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GCompareDataFunc callback\n");
+    return NULL;
+}
+//GstTaskFunction
+#define GO(A)   \
+static uintptr_t my_GstTaskFunction_fct_##A = 0;        \
+static void my_GstTaskFunction_##A(void* a)             \
+{                                                       \
+    RunFunctionFmt(my_GstTaskFunction_fct_##A, "p", a); \
+}
+SUPER()
+#undef GO
+static void* findGstTaskFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    #define GO(A) if(my_GstTaskFunction_fct_##A == (uintptr_t)fct) return my_GstTaskFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstTaskFunction_fct_##A == 0) {my_GstTaskFunction_fct_##A = (uintptr_t)fct; return my_GstTaskFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstTaskFunction callback\n");
+    return NULL;
+}
+//GstTagForeachFunc
+#define GO(A)   \
+static uintptr_t my_GstTagForeachFunc_fct_##A = 0;                  \
+static void my_GstTagForeachFunc_##A(void* a, void* b, void* c)     \
+{                                                                   \
+    RunFunctionFmt(my_GstTagForeachFunc_fct_##A, "ppp", a, b, c);   \
+}
+SUPER()
+#undef GO
+static void* findGstTagForeachFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    #define GO(A) if(my_GstTagForeachFunc_fct_##A == (uintptr_t)fct) return my_GstTagForeachFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstTagForeachFunc_fct_##A == 0) {my_GstTagForeachFunc_fct_##A = (uintptr_t)fct; return my_GstTagForeachFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstTagForeachFunc callback\n");
+    return NULL;
+}
+//GstPadActivateFunction
+#define GO(A)   \
+static uintptr_t my_GstPadActivateFunction_fct_##A = 0;                         \
+static int my_GstPadActivateFunction_##A(void* a, void* b)                      \
+{                                                                               \
+    return (int)RunFunctionFmt(my_GstPadActivateFunction_fct_##A, "pp", a, b);  \
+}
+SUPER()
+#undef GO
+static void* findGstPadActivateFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstPadActivateFunction_fct_##A == (uintptr_t)fct) return my_GstPadActivateFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstPadActivateFunction_fct_##A == 0) {my_GstPadActivateFunction_fct_##A = (uintptr_t)fct; return my_GstPadActivateFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstPadActivateFunction callback\n");
+    return NULL;
+}
+//GstPadProbeCallback
+#define GO(A)   \
+static uintptr_t my_GstPadProbeCallback_fct_##A = 0;                            \
+static int my_GstPadProbeCallback_##A(void* a, void* b, void* c)                \
+{                                                                               \
+    return (int)RunFunctionFmt(my_GstPadProbeCallback_fct_##A, "ppp", a, b, c); \
+}
+SUPER()
+#undef GO
+static void* findGstPadProbeCallbackFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstPadProbeCallback_fct_##A == (uintptr_t)fct) return my_GstPadProbeCallback_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstPadProbeCallback_fct_##A == 0) {my_GstPadProbeCallback_fct_##A = (uintptr_t)fct; return my_GstPadProbeCallback_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstPadProbeCallback callback\n");
+    return NULL;
+}
+//GstStructureForeachFunc
+#define GO(A)   \
+static uintptr_t my_GstStructureForeachFunc_fct_##A = 0;                            \
+static int my_GstStructureForeachFunc_##A(void* a, void* b, void* c)                \
+{                                                                                   \
+    return (int)RunFunctionFmt(my_GstStructureForeachFunc_fct_##A, "ppp", a, b, c); \
+}
+SUPER()
+#undef GO
+static void* findGstStructureForeachFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstStructureForeachFunc_fct_##A == (uintptr_t)fct) return my_GstStructureForeachFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstStructureForeachFunc_fct_##A == 0) {my_GstStructureForeachFunc_fct_##A = (uintptr_t)fct; return my_GstStructureForeachFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstStructureForeachFunc callback\n");
+    return NULL;
+}
+//GstPadLinkFunction
+#define GO(A)   \
+static uintptr_t my_GstPadLinkFunction_fct_##A = 0;                             \
+static int my_GstPadLinkFunction_##A(void* a, void* b, void* c)                 \
+{                                                                               \
+    return (int)RunFunctionFmt(my_GstPadLinkFunction_fct_##A, "ppp", a, b, c);  \
+}
+SUPER()
+#undef GO
+static void* findGstPadLinkFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstPadLinkFunction_fct_##A == (uintptr_t)fct) return my_GstPadLinkFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstPadLinkFunction_fct_##A == 0) {my_GstPadLinkFunction_fct_##A = (uintptr_t)fct; return my_GstPadLinkFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstPadLinkFunction callback\n");
+    return NULL;
+}
+//GstStructureFilterMapFunc
+#define GO(A)   \
+static uintptr_t my_GstStructureFilterMapFunc_fct_##A = 0;                              \
+static int my_GstStructureFilterMapFunc_##A(void* a, void* b, void* c)                  \
+{                                                                                       \
+    return (int)RunFunctionFmt(my_GstStructureFilterMapFunc_fct_##A, "ppp", a, b, c);   \
+}
+SUPER()
+#undef GO
+static void* findGstStructureFilterMapFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstStructureFilterMapFunc_fct_##A == (uintptr_t)fct) return my_GstStructureFilterMapFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstStructureFilterMapFunc_fct_##A == 0) {my_GstStructureFilterMapFunc_fct_##A = (uintptr_t)fct; return my_GstStructureFilterMapFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstStructureFilterMapFunc callback\n");
+    return NULL;
+}
+//GstElementForeachPadFunc
+#define GO(A)   \
+static uintptr_t my_GstElementForeachPadFunc_fct_##A = 0;                               \
+static int my_GstElementForeachPadFunc_##A(void* a, void* b, void* c)                   \
+{                                                                                       \
+    return (int)RunFunctionFmt(my_GstElementForeachPadFunc_fct_##A, "ppp", a, b, c);    \
+}
+SUPER()
+#undef GO
+static void* findGstElementForeachPadFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstElementForeachPadFunc_fct_##A == (uintptr_t)fct) return my_GstElementForeachPadFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstElementForeachPadFunc_fct_##A == 0) {my_GstElementForeachPadFunc_fct_##A = (uintptr_t)fct; return my_GstElementForeachPadFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstElementForeachPadFunc callback\n");
+    return NULL;
+}
+//GstTypeFindFunction
+#define GO(A)   \
+static uintptr_t my_GstTypeFindFunction_fct_##A = 0;                \
+static void my_GstTypeFindFunction_##A(void* a, void* b)            \
+{                                                                   \
+    RunFunctionFmt(my_GstTypeFindFunction_fct_##A, "pp", a, b);     \
+}
+SUPER()
+#undef GO
+static void* findGstTypeFindFunctionFct(void* fct)
+{
+    if(!fct) return fct;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_GstTypeFindFunction_fct_##A == (uintptr_t)fct) return my_GstTypeFindFunction_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GstTypeFindFunction_fct_##A == 0) {my_GstTypeFindFunction_fct_##A = (uintptr_t)fct; return my_GstTypeFindFunction_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstTypeFindFunction callback\n");
+    return NULL;
+}
 
 #undef SUPER
 
@@ -445,30 +753,303 @@ EXPORT int my_gst_element_link_many(x64emu_t* emu, void* e1, void* e2, void** b)
     }
     return ret;
 }
-/*
+
 EXPORT void* my_gst_plugin_load_file(x64emu_t* emu, const char* filename, void** error)
 {
-printf_log(LOG_INFO, "using gst_plugin_load_file, file %s (is x86_64=%d)\n", filename, FileIsX64ELF(filename));
+    printf_log(LOG_INFO, "using gst_plugin_load_file, file %s (is x86_64=%d)\n", filename, FileIsX64ELF(filename));
     return my->gst_plugin_load_file((void*)filename, error);
 }
 
-EXPORT int my_gst_init_check(x64emu_t* emu, int* argc, char*** argv, void** error)
+static void register_plugins_from_folder(x64emu_t* emu, const char* folder)
 {
-printf_log(LOG_INFO, "will call gst_init_check(%o, %p, %p)\n", argc, argv, error);
-if(argc && argv) {
-    printf_log(LOG_INFO, " argc=%d, argv=[", *argc);
-    for(int i=0; i<*argc; ++i)
-        printf_log(LOG_INFO, "%s\"%s\"", i?", ":"", (*argv)[i]);
-    printf_log(LOG_INFO, "]");
+    if(!folder) {
+        printf_log(/*LOG_DEBUG*/LOG_INFO, "BOX64 didn't detect any custom gstreamer-1.0 folder");
+        return;
+    }
+    DIR *d;
+    struct dirent *dir;
+    // get folder where gstreamer came from
+    char native_folder[MAX_PATH+1] = {0};
+    Dl_info dli;
+    if(dladdr(my->gst_init_check, &dli)) {
+        strcpy(native_folder, dli.dli_fname);
+        char* p = strrchr(native_folder, '/');
+        *p = '\0';
+        strcat(native_folder, "/gstreamer-1.0/");
+        printf_log(/*LOG_DEBUG*/LOG_INFO, "BOX64 Will look for native gstreamer plugin in %s", native_folder);
+    }
+    d = opendir(folder);
+    if(!d)
+        return;
+    while((dir = readdir(d)) != NULL) {
+        if(strstr(dir->d_name, "libgst")==dir->d_name && strstr(dir->d_name, ".so")) {
+            // handling this one, stripping to get the plugin name
+            char name[500];
+            int is_native = 0;
+            void* handle = NULL;
+            char filename[MAX_PATH];
+            char regfunc_name[500];
+            // get the name of the function
+            strcpy(name, dir->d_name + strlen("libgst"));
+            *strrchr(name, '.') = '\0';
+            snprintf(regfunc_name, sizeof(regfunc_name), "gst_plugin_%s_register", name);
+            // check if native version exist
+            if(native_folder[0]) {
+                strcpy(filename, native_folder);
+                strcat(filename, dir->d_name);
+                handle = dlopen(filename, 2);
+            }
+            if(handle) 
+                is_native = 1;
+            else {
+                strcpy(filename, folder);
+                strcat(filename, "/");
+                strcat(filename, dir->d_name);
+                handle = my_dlopen(emu, filename, 2);
+            }
+            void* f_init = handle?(is_native?dlsym(handle, regfunc_name):my_dlsym(emu, handle, regfunc_name)):NULL;
+            if(f_init) {
+                printf_log(LOG_DEBUG, "BOX64: Will registering %sgstplugin %s\n", is_native?"native ":"", filename);
+                if(is_native)
+                    ((vFv_t)(f_init))();
+                else
+                    RunFunctionFmt((uintptr_t)f_init, "");
+                if(my->plugin_cnt==my->plugin_cap) {
+                    my->plugin_cap += 8;
+                    my->plugins = (my_gst_plugin_t*)box_realloc(my->plugins, my->plugin_cap*sizeof(my_gst_plugin_t));
+                }
+                my->plugins[my->plugin_cnt].is_native = is_native;
+                my->plugins[my->plugin_cnt++].handle = handle;
+            } else {
+                printf_log(LOG_DEBUG, "BOX64: Failled to register %sgstplugin %s, name=%s, handle=%p\n", is_native?"native ":"", filename, name, handle);
+            }
+            if(handle && !f_init) {
+                is_native?dlclose(handle):my_dlclose(emu, handle);
+                handle = NULL;
+            }
+        }
+    }
+    closedir(d);
 }
-if(getenv("GST_PLUGIN_LOADING_WHITELIST"))
-    printf_log(LOG_INFO, "\nGST_PLUGIN_LOADING_WHITELIST=%s", getenv("GST_PLUGIN_LOADING_WHITELIST"));
-printf_log(LOG_INFO, "\n");
+
+extern const char* box64_custom_gstreamer;
+EXPORT int my_gst_init_check(x64emu_t* emu, int* argc, char*** argv, void** error)
+{
     int ret = my->gst_init_check(argc, argv, error);
-printf_log(LOG_INFO, "gst_init_check(...) return = %d\n", ret);
+    register_plugins_from_folder(emu, box64_custom_gstreamer);
     return ret;
 }
-*/
+
+EXPORT void my_gst_init(x64emu_t* emu, int* argc, char*** argv)
+{
+    my->gst_init(argc, argv);
+    register_plugins_from_folder(emu, box64_custom_gstreamer);
+}
+
+EXPORT int my_gst_plugin_register_static(x64emu_t* emu, int maj_v, int min_v, void* name, void* desc, void* init_f, void* ver, void* lic, void* source, void* pack, void* orig)
+{
+    return my->gst_plugin_register_static(maj_v, min_v, name, desc, findGstPluginInitFct(init_f), ver, lic, source, pack, orig);
+}
+
+EXPORT int my_gst_info_vasprintf(x64emu_t* emu, void* res, void* fmt, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    return my->gst_info_vasprintf(res, fmt, VARARGS);
+}
+
+EXPORT void* my__gst_element_error_printf(x64emu_t* emu, void* fmt, uintptr_t* b)
+{
+    char* buffer;
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 1);
+    int len = my->gst_info_vasprintf(&buffer, fmt, VARARGS);
+    if(len<0)
+        buffer = NULL;
+    return buffer;
+}
+
+EXPORT void my_gst_structure_set_valist(x64emu_t* emu, void* st, void* fieldname, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    my->gst_structure_set_valist(st, fieldname, VARARGS);
+}
+
+EXPORT void my_gst_structure_set(x64emu_t* emu, void* st, void* fieldname, uintptr_t* b)
+{
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 2);
+    my->gst_structure_set_valist(st, fieldname, VARARGS);
+}
+
+EXPORT int my_gst_iterator_fold(x64emu_t* emu, void* it, void* f, void* ret, void* data)
+{
+    return my->gst_iterator_fold(it, findGstIteratorFoldFunctionFct(f), ret, data);
+}
+
+EXPORT void* my_gst_util_array_binary_search(x64emu_t* emu, void* array, uint32_t num, size_t size, void* f, int mode, void* search, void* data)
+{
+    return my->gst_util_array_binary_search(array, num, size, findGCompareDataFuncFct(f), mode, search, data);
+}
+
+EXPORT void* my_gst_structure_new_valist(x64emu_t* emu, void* name, void* first, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    my->gst_structure_new_valist(name, first, VARARGS);
+}
+
+EXPORT void* my_gst_make_element_message_details(x64emu_t* emu, void* name, uintptr_t* b)
+{
+    if(!name)
+        return NULL;
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 1);
+    my->gst_structure_new_valist("detail", name, VARARGS);
+}
+
+EXPORT int my_gst_pad_start_task(x64emu_t* emu, void* pad, void* f, void* data, void* d)
+{
+    return my->gst_pad_start_task(pad, findGstTaskFunctionFct(f), data, findDestroyFct(d));
+}
+
+EXPORT void my_gst_tag_list_foreach(x64emu_t* emu, void* list, void* f, void* data)
+{
+    my->gst_tag_list_foreach(list, findGstTagForeachFuncFct(f), data);
+}
+
+EXPORT void* my_gst_memory_new_wrapped(x64emu_t* emu, int flags, void* data, size_t maxsz, size_t offset, size_t size, void* user_data, void* d)
+{
+    return my->gst_memory_new_wrapped(flags, data, maxsz, offset, size, user_data, findDestroyFct(d));
+}
+
+EXPORT void* my_gst_pad_create_stream_id_printf_valist(x64emu_t* emu, void* pad, void* parent, void* id, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    return my->gst_pad_create_stream_id_printf_valist(pad, parent, id, VARARGS);
+}
+
+EXPORT void* my_gst_pad_create_stream_id_printf(x64emu_t* emu, void* pad, void* parent, void* id, uintptr_t* b)
+{
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 3);
+    return my->gst_pad_create_stream_id_printf_valist(pad, parent, id, VARARGS);
+}
+
+EXPORT void my_gst_pad_set_activate_function_full(x64emu_t* emu, void* pad, void* f, void* data, void* d)
+{
+    my->gst_pad_set_activate_function_full(pad, findGstPadActivateFunctionFct(f), data, findDestroyFct(d));
+}
+
+EXPORT void my_gst_tag_list_add_valist(x64emu_t* emu, void* list, int mode, void* tag, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    my->gst_tag_list_add_valist(list, mode, tag, VARARGS);
+}
+EXPORT void my_gst_tag_list_add(x64emu_t* emu, void* list, int mode, void* tag, uintptr_t* b)
+{
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 3);
+    my->gst_tag_list_add_valist(list, mode, tag, VARARGS);
+}
+
+EXPORT void* my_gst_tag_list_new_valist(x64emu_t* emu, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    return my->gst_tag_list_new_valist(VARARGS);
+}
+
+EXPORT void* my_gst_tag_list_new(x64emu_t* emu, void* arg, uintptr_t* b)
+{
+    // construct VARARGS with arg[0] too, because gst_tag_list_new_valist have just the va_list
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 0);
+    return my->gst_tag_list_new_valist(VARARGS);
+}
+
+EXPORT void* my_gst_caps_features_new_valist(x64emu_t* emu, void* feat1, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    return my->gst_caps_features_new_valist(feat1, VARARGS);
+}
+
+EXPORT void* my_gst_caps_features_new(x64emu_t* emu, void* feat1, uintptr_t* b)
+{
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 1);
+    return my->gst_caps_features_new_valist(feat1, VARARGS);
+}
+
+EXPORT unsigned long my_gst_pad_add_probe(x64emu_t* emu, void* pad, int mask, void* f, void* data, void* d)
+{
+    return my->gst_pad_add_probe(pad, mask, findGstPadProbeCallbackFct(f), data, findDestroyFct(d));
+}
+
+EXPORT int my_gst_structure_foreach(x64emu_t* emu, void* st, void* f, void* data)
+{
+    return my->gst_structure_foreach(st, findGstStructureForeachFuncFct(f), data);
+}
+
+EXPORT void my_gst_pad_set_link_function_full(x64emu_t* emu, void* pad, void* f, void* data, void *d)
+{
+    my->gst_pad_set_link_function_full(pad, findGstPadLinkFunctionFct(f), data, findDestroyFct(d));
+}
+
+EXPORT void my_gst_tag_list_add_valist_values(x64emu_t* emu, void* list, int mode, void* tag, x64_va_list_t V)
+{
+    #ifdef CONVERT_VALIST
+    CONVERT_VALIST(V);
+    #else
+    CREATE_VALIST_FROM_VALIST(V, emu->scratch);
+    #endif
+    my->gst_tag_list_add_valist_values(list, mode, tag, VARARGS);
+}
+
+EXPORT void my_gst_tag_list_add_values(x64emu_t* emu, void* list, int mode, void* tag, uintptr_t* b)
+{
+    CREATE_VALIST_FROM_VAARG(b, emu->scratch, 3);
+    my->gst_tag_list_add_valist_values(list, mode, tag, VARARGS);
+}
+
+EXPORT void my_gst_structure_filter_and_map_in_place(x64emu_t* emu, void* s, void* f, void* data)
+{
+    my->gst_structure_filter_and_map_in_place(s, findGstStructureFilterMapFuncFct(f), data);
+}
+
+EXPORT int my_gst_element_foreach_sink_pad(x64emu_t* emu, void* element, void* f, void* data)
+{
+    return my->gst_element_foreach_sink_pad(element, findGstElementForeachPadFuncFct(f),data);
+}
+
+EXPORT void* my_gst_task_new(x64emu_t* emu, void* f, void* data, void* d)
+{
+    return my->gst_task_new(findGstTaskFunctionFct(f), data, findDestroyFct(d));
+}
+
+EXPORT int my_gst_type_find_register(x64emu_t* emu, void* plugin, void* name, uint32_t rank, void* f, void* ext, void* caps, void* data, void* d)
+{
+    return my->gst_type_find_register(plugin, name, rank, findGstTypeFindFunctionFct(f), ext, caps, data, findDestroyFct(f));
+}
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
@@ -478,6 +1059,10 @@ printf_log(LOG_INFO, "gst_init_check(...) return = %d\n", ret);
     SetGstObjectID(my->gst_object_get_type());                 \
     SetGstAllocatorID(my->gst_allocator_get_type());           \
     SetGstTaskPoolID(my->gst_task_pool_get_type());            \
+    SetGstElementID(my->gst_element_get_type());               \
+    SetGstBinID(my->gst_bin_get_type());                       \
+    SetGstPadID(my->gst_pad_get_type());                       \
+    SetGstURIHandlerID(my->gst_uri_handler_get_type());        \
     setNeededLibs(lib, 1, "libgtk-3.so.0");
 
 #define CUSTOM_FINI \
diff --git a/src/wrapped/wrappedgstreamer_private.h b/src/wrapped/wrappedgstreamer_private.h
index e5fcfc9a..8b6a5e2e 100644
--- a/src/wrapped/wrappedgstreamer_private.h
+++ b/src/wrapped/wrappedgstreamer_private.h
@@ -5,9 +5,9 @@
 GO(gst_allocation_params_copy, pFp)
 //GO(gst_allocation_params_free, 
 //GO(gst_allocation_params_get_type, 
-//GO(gst_allocation_params_init, 
+GO(gst_allocation_params_init, vFp)
 GO(gst_allocator_alloc, pFpLp)
-//GO(gst_allocator_find, 
+GO(gst_allocator_find, pFp)
 //GO(gst_allocator_flags_get_type, 
 //GO(gst_allocator_free, 
 GO(gst_allocator_get_type, pFv)
@@ -86,10 +86,10 @@ GO(gst_buffer_list_calculate_size, LFp)
 //GO(gst_buffer_list_copy, 
 GO(gst_buffer_list_copy_deep, pFp)
 //GO(gst_buffer_list_foreach, 
-//GO(gst_buffer_list_get, 
+GO(gst_buffer_list_get, pFpu)
 //GO(gst_buffer_list_get_type, 
 //GO(gst_buffer_list_get_writable, 
-//GO(gst_buffer_list_insert, 
+GO(gst_buffer_list_insert, vFpip)
 GO(gst_buffer_list_length, uFp)
 GO(gst_buffer_list_new, pFv)
 GO(gst_buffer_list_new_sized, pFu)
@@ -105,6 +105,7 @@ GO(gst_buffer_memcmp, iFpLpL)
 GO(gst_buffer_memset, LFpLCL)
 GO(gst_buffer_new, pFv)
 GO(gst_buffer_new_allocate, pFplp)
+GO(gst_buffer_new_memdup, pFpL)
 GO(gst_buffer_new_wrapped, pFpl)
 GO(gst_buffer_new_wrapped_bytes, pFp)
 GOM(gst_buffer_new_wrapped_full, pFEiplllpp)
@@ -120,10 +121,10 @@ GO(gst_buffer_pool_config_has_option, iFpp)
 GO(gst_buffer_pool_config_n_options, uFp)
 GO(gst_buffer_pool_config_set_allocator, vFppp)
 GO(gst_buffer_pool_config_set_params, vFppuuu)
-//GO(gst_buffer_pool_config_validate_params, 
+GO(gst_buffer_pool_config_validate_params, iFppuuu)
 GO(gst_buffer_pool_get_config, pFp)
 GO(gst_buffer_pool_get_options, pFp)
-//GO(gst_buffer_pool_get_type, 
+GO(gst_buffer_pool_get_type, LFv)
 GO(gst_buffer_pool_has_option, iFpp)
 GO(gst_buffer_pool_is_active, iFp)
 GO(gst_buffer_pool_new, pFv)
@@ -176,20 +177,20 @@ GO(gst_bus_sync_signal_handler, iFppp)
 GO(gst_bus_timed_pop, pFpU)
 GO(gst_bus_timed_pop_filtered, pFpUi)
 GO(gst_calculate_linear_regression, iFppuppppp)
-//DATAB(_gst_caps_any, 
+DATAB(_gst_caps_any, sizeof(void*))
 GO(gst_caps_append, vFpp)
 GO(gst_caps_append_structure, vFpp)
 GO(gst_caps_append_structure_full, vFppp)
 GO(gst_caps_can_intersect, iFpp)
 GO(gst_caps_copy, pFp)
 GO(gst_caps_copy_nth, pFpu)
-//GOM(gst_caps_features_add, vFEpBp)
+GO(gst_caps_features_add, vFpp)
 //GO(gst_caps_features_add_id, 
 //DATAB(_gst_caps_features_any, 
 GO(gst_caps_features_contains, iFpp)
 GO(gst_caps_features_contains_id, iFpu)
 GO(gst_caps_features_copy, pFp)
-//GO(gst_caps_features_free, 
+GO(gst_caps_features_free, vFp)
 GO(gst_caps_features_from_string, pFp)
 GO(gst_caps_features_get_nth, pFpu)
 GO(gst_caps_features_get_nth_id, uFpu)
@@ -197,13 +198,13 @@ GO(gst_caps_features_get_size, uFp)
 //GO(gst_caps_features_get_type, 
 GO(gst_caps_features_is_any, iFp)
 GO(gst_caps_features_is_equal, iFpp)
-//DATAB(_gst_caps_features_memory_system_memory, 
-//GO(gst_caps_features_new, 
+DATAB(_gst_caps_features_memory_system_memory, sizeof(void*))
+GOM(gst_caps_features_new, pFEpV)
 GO(gst_caps_features_new_any, pFv)
 //GO(gst_caps_features_new_empty, 
 //GO(gst_caps_features_new_id, 
 GO(gst_caps_features_new_id_valist, pFup)
-GO(gst_caps_features_new_valist, pFpp)
+GOM(gst_caps_features_new_valist, pFEpA)
 GO(gst_caps_features_remove, vFpp)
 GO(gst_caps_features_remove_id, vFpu)
 GO(gst_caps_features_set_parent_refcount, iFpp)
@@ -241,7 +242,7 @@ GO(gst_caps_new_empty_simple, pFp)
 //GOM(gst_caps_new_full, pFEpV)
 //GOM(gst_caps_new_full_valist, pFEpA)
 GOM(gst_caps_new_simple, pFEppV)
-//DATAB(_gst_caps_none, 
+DATAB(_gst_caps_none, sizeof(void*))
 GO(gst_caps_normalize, pFp)
 GO(gst_caps_ref, pFp)
 GO(gst_caps_remove_structure, vFpp)
@@ -291,14 +292,14 @@ DATAB(GST_CAT_DEFAULT, sizeof(void*))
 //DATAB(GST_CAT_SCHEDULING, 
 //DATAB(GST_CAT_SIGNAL, 
 //DATAB(GST_CAT_STATES, 
-//GO(gst_child_proxy_child_added, 
+GO(gst_child_proxy_child_added, vFppp)
 GO(gst_child_proxy_child_removed, vFppp)
 //GO(gst_child_proxy_get, 
 GO(gst_child_proxy_get_child_by_index, pFpu)
 //GO(gst_child_proxy_get_child_by_name, 
 GO(gst_child_proxy_get_children_count, uFp)
 GO(gst_child_proxy_get_property, vFppp)
-//GO(gst_child_proxy_get_type, 
+GO(gst_child_proxy_get_type, LFv)
 //GO(gst_child_proxy_get_valist, 
 GO(gst_child_proxy_lookup, iFpppp)
 //GO(gst_child_proxy_set, 
@@ -375,7 +376,7 @@ GO(gst_control_binding_sync_values, iFppLL)
 //GO(gst_control_source_get_value, 
 //GO(gst_control_source_get_value_array, 
 //GO(gst_core_error_get_type, 
-//GO(gst_core_error_quark, 
+GO(gst_core_error_quark, pFv)
 //GO(gst_date_time_get_day, 
 //GO(gst_date_time_get_hour, 
 GO(gst_date_time_get_microsecond, iFp)
@@ -407,7 +408,7 @@ GO(gst_date_time_ref, pFp)
 GO(gst_date_time_to_g_date_time, pFp)
 GO(gst_date_time_to_iso8601_string, pFp)
 DATAB(_gst_date_time_type, sizeof(void*))
-//GO(gst_date_time_unref, 
+GO(gst_date_time_unref, vFp)
 //GO(gst_debug_add_log_function, 
 GO(gst_debug_add_ring_buffer_logger, vFuu)
 GO(gst_debug_bin_to_dot_data, pFpi)
@@ -445,7 +446,7 @@ GOM(gst_debug_log_valist, vFEpippippA)
 DATAB(_gst_debug_min, sizeof(int))
 //GO(_gst_debug_nameof_funcptr, 
 //GO(gst_debug_print_stack_trace, 
-//GO(_gst_debug_register_funcptr, 
+GO(_gst_debug_register_funcptr, vFpp)
 //GO(gst_debug_remove_log_function, 
 GO(gst_debug_remove_log_function_by_data, uFp)
 //GO(gst_debug_remove_ring_buffer_logger, 
@@ -533,7 +534,7 @@ GO(gst_element_class_set_metadata, vFppppp)
 GO(gst_element_class_set_static_metadata, vFppppp)
 GO(gst_element_continue_state, uFpu)
 //GOM(gst_element_create_all_pads, iFEpBp)
-//GO(_gst_element_error_printf, 
+GOM(_gst_element_error_printf, pFEpV)
 GO(gst_element_factory_can_sink_all_caps, iFpp)
 GO(gst_element_factory_can_sink_any_caps, iFpp)
 GO(gst_element_factory_can_src_all_caps, iFpp)
@@ -555,7 +556,7 @@ GO(gst_element_factory_list_is_type, iFpL)
 GO(gst_element_factory_make, pFpp)
 GO(gst_element_flags_get_type, pFv)
 //GOM(gst_element_foreach_pad, iFEpBp)
-//GOM(gst_element_foreach_sink_pad, iFEpBp)
+GOM(gst_element_foreach_sink_pad, iFEppp)
 //GOM(gst_element_foreach_src_pad, iFEpBp)
 GO(gst_element_get_base_time, UFp)
 GO(gst_element_get_bus, pFp)
@@ -575,7 +576,7 @@ GO(gst_element_get_pad_template_list, pFp)
 GO(gst_element_get_start_time, UFp)
 GO(gst_element_get_state, uFpppL)
 GO(gst_element_get_static_pad, pFpp)
-GO(gst_element_get_type, pFv)
+GO(gst_element_get_type, LFv)
 GO(gst_element_is_locked_state, iFp)
 GO(gst_element_iterate_pads, pFp)
 GO(gst_element_iterate_sink_pads, pFp)
@@ -720,30 +721,30 @@ GO(gst_get_main_executable_path, pFv)
 //GO(gst_ghost_pad_activate_mode_default, 
 //GO(gst_ghost_pad_construct, 
 //GO(gst_ghost_pad_get_target, 
-//GO(gst_ghost_pad_get_type, 
+GO(gst_ghost_pad_get_type, LFv)
 //GO(gst_ghost_pad_internal_activate_mode_default, 
 GO(gst_ghost_pad_new, pFpp)
 //GO(gst_ghost_pad_new_from_template, 
 //GO(gst_ghost_pad_new_no_target, 
 //GO(gst_ghost_pad_new_no_target_from_template, 
-//GO(gst_ghost_pad_set_target, 
+GO(gst_ghost_pad_set_target, iFpp)
 //GO(gst_g_thread_get_type, 
 //GO(gst_info_strdup_printf, 
 //GO(gst_info_strdup_vprintf, 
-//GO(gst_info_vasprintf, 
-GO(gst_init, vFpp)
-GO(gst_init_check, iFppp)
+GOM(gst_info_vasprintf, iFEppA)
+GOM(gst_init, vFEpp)
+GOM(gst_init_check, iFEppp)
 GO(gst_init_get_option_group, pFv)
 //GO(gst_int64_range_get_type, 
 //DATAB(_gst_int64_range_type, 
-//GO(gst_int_range_get_type, 
+GO(gst_int_range_get_type, LFv)
 DATAB(_gst_int_range_type, sizeof(void*))
 GO(gst_is_caps_features, iFp)
 GO(gst_is_initialized, iFv)
 //GO(gst_iterator_copy, 
 //GO(gst_iterator_filter, 
 //GO(gst_iterator_find_custom, 
-//GO(gst_iterator_fold, 
+GOM(gst_iterator_fold, iFEpppp)
 //GO(gst_iterator_foreach, 
 GO(gst_iterator_free, vFp)
 //GO(gst_iterator_get_type, 
@@ -756,21 +757,21 @@ GO(gst_iterator_next, iFpp)
 //GO(gst_iterator_result_get_type, 
 GO(gst_iterator_resync, vFp)
 //GO(gst_library_error_get_type, 
-//GO(gst_library_error_quark, 
+GO(gst_library_error_quark, pFv)
 //GO(gst_lock_flags_get_type, 
-//GO(gst_make_element_message_details, 
+GOM(gst_make_element_message_details, pFEpV)
 //GO(gst_map_flags_get_type, 
 //DATA(gst_memory_alignment, 
 //GO(gst_memory_copy, 
 //GO(gst_memory_flags_get_type, 
-//GO(gst_memory_get_sizes, 
+GO(gst_memory_get_sizes, iFppp)
 //GO(gst_memory_get_type, 
 GO(gst_memory_init, vFpuppLLLL)
 //GO(gst_memory_is_span, 
 //GO(gst_memory_is_type, 
 //GO(gst_memory_make_mapped, 
 GO(gst_memory_map, iFppu)
-//GO(gst_memory_new_wrapped, 
+GOM(gst_memory_new_wrapped, pFEipLLLpp)
 //GO(gst_memory_ref, 
 //GO(gst_memory_resize, 
 //GO(gst_memory_share, 
@@ -904,7 +905,7 @@ GO(gst_mini_object_is_writable, iFp)
 GO(gst_mini_object_make_writable, pFp)
 GO(gst_mini_object_ref, pFp)
 //GO(gst_mini_object_remove_parent, 
-//GO(gst_mini_object_replace, 
+GO(gst_mini_object_replace, iFpp)
 GOM(gst_mini_object_set_qdata, vFEpppp)
 //GO(gst_mini_object_steal, 
 //GO(gst_mini_object_steal_qdata, 
@@ -945,14 +946,14 @@ GO(gst_object_sync_values, iFpL)
 GO(gst_object_unparent, vFp)
 GO(gst_object_unref, vFp)
 GO(gst_pad_activate_mode, iFpii)
-//GO(gst_pad_add_probe, iFEpiBpB)
+GOM(gst_pad_add_probe, LFEpippp)
 GO(gst_pad_can_link, iFpp)
 GO(gst_pad_chain, iFpp)
 GO(gst_pad_chain_list, iFpp)
 GO(gst_pad_check_reconfigure, iFp)
 GO(gst_pad_create_stream_id, pFppp)
-//GOM(gst_pad_create_stream_id_printf, pFEpppV)
-//GOM(gst_pad_create_stream_id_printf_valist, pFEpppA)
+GOM(gst_pad_create_stream_id_printf, pFEpppV)
+GOM(gst_pad_create_stream_id_printf_valist, pFEpppA)
 GO(gst_pad_direction_get_type, pFv)
 GO(gst_pad_event_default, iFppp)
 GO(gst_pad_flags_get_type, pFv)
@@ -973,7 +974,7 @@ GO(gst_pad_get_sticky_event, pFppu)
 GO(gst_pad_get_stream, pFp)
 GO(gst_pad_get_stream_id, pFp)
 GO(gst_pad_get_task_state, iFp)
-GO(gst_pad_get_type, pFv)
+GO(gst_pad_get_type, LFv)
 GO(gst_pad_has_current_caps, iFp)
 GO(gst_pad_is_active, iFp)
 GO(gst_pad_is_blocked, iFp)
@@ -1024,7 +1025,7 @@ GO(gst_pad_query_duration, iFppp)
 GO(gst_pad_query_position, iFppp)
 GO(gst_pad_remove_probe, vFpL)
 GO(gst_pad_send_event, iFpp)
-//GOM(gst_pad_set_activate_function_full, vFEpBpB)
+GOM(gst_pad_set_activate_function_full, vFEpppp)
 GOM(gst_pad_set_activatemode_function_full, vFEpppp)
 GO(gst_pad_set_active, iFpi)
 GOM(gst_pad_set_chain_function_full, vFEpppp)
@@ -1034,21 +1035,21 @@ GO(gst_pad_set_element_private, vFpp)
 GOM(gst_pad_set_event_function_full, vFEpppp)
 GOM(gst_pad_set_getrange_function_full, vFEpppp)
 //GOM(gst_pad_set_iterate_internal_links_function_full, vFEpBpB)
-//GOM(gst_pad_set_link_function_full, vFEpBpB)
+GOM(gst_pad_set_link_function_full, vFEpppp)
 GO(gst_pad_set_offset, vFpI)
 GOM(gst_pad_set_query_function_full, vFEpppp)
 //GOM(gst_pad_set_unlink_function_full, vFEpBpB)
-//GOM(gst_pad_start_task, vFEpBpB)
+GOM(gst_pad_start_task, iFEpppp)
 //GOM(gst_pad_sticky_events_foreach, vFEpBp)
 GO(gst_pad_stop_task, iFp)
 GO(gst_pad_store_sticky_event, iFpp)
 GO(gst_pad_template_flags_get_type, pFv)
-//GO(gst_pad_template_get_caps, 
+GO(gst_pad_template_get_caps, pFp)
 //GO(gst_pad_template_get_documentation_caps, 
 //GO(gst_pad_template_get_type, 
 GO(gst_pad_template_new, pFpiip)
 //GO(gst_pad_template_new_from_static_pad_template_with_gtype, 
-//GO(gst_pad_template_new_with_gtype, 
+GO(gst_pad_template_new_with_gtype, pFpiipL)
 //GO(gst_pad_template_pad_created, 
 //GO(gst_pad_template_set_documentation_caps, 
 GO(gst_pad_unlink, iFpp)
@@ -1122,8 +1123,8 @@ GO(gst_plugin_is_loaded, iFp)
 GO(gst_plugin_load, pFp)
 GO(gst_plugin_load_by_name, pFp)
 //GO(_gst_plugin_loader_client_run, 
-GO(gst_plugin_load_file, pFpp)
-//GO(gst_plugin_register_static, 
+GOM(gst_plugin_load_file, pFEpp)
+GOM(gst_plugin_register_static, iFEiipppppppp)
 //GO(gst_plugin_register_static_full, 
 GO(gst_plugin_set_cache_data, vFpp)
 //GO(gst_poll_add_fd, 
@@ -1153,7 +1154,7 @@ GO(gst_preset_delete_preset, iFpp)
 GO(gst_preset_get_meta, iFpppp)
 //GO(gst_preset_get_preset_names, 
 GO(gst_preset_get_property_names, pFp)
-//GO(gst_preset_get_type, 
+GO(gst_preset_get_type, LFv)
 GO(gst_preset_is_editable, iFp)
 //GO(gst_preset_load_preset, 
 GO(gst_preset_rename_preset, iFppp)
@@ -1307,7 +1308,7 @@ GO(gst_registry_remove_feature, vFpp)
 GO(gst_registry_remove_plugin, vFpp)
 GO(gst_registry_scan_path, iFpp)
 //GO(gst_resource_error_get_type, 
-//GO(gst_resource_error_quark, 
+GO(gst_resource_error_quark, pFv)
 GO(gst_sample_copy, pFp)
 GO(gst_sample_get_buffer, pFp)
 GO(gst_sample_get_buffer_list, pFp)
@@ -1359,9 +1360,9 @@ GO(gst_state_get_type, pFv)
 GO(gst_static_caps_cleanup, vFp)
 GO(gst_static_caps_get, pFp)
 GO(gst_static_caps_get_type, pFv)
-//GO(gst_static_pad_template_get, 
-//GO(gst_static_pad_template_get_caps, 
-//GO(gst_static_pad_template_get_type, 
+GO(gst_static_pad_template_get, pFp)
+GO(gst_static_pad_template_get_caps, pFp)
+GO(gst_static_pad_template_get_type, LFv)
 GO(gst_stream_collection_add_stream, iFpp)
 GO(gst_stream_collection_get_size, uFp)
 GO(gst_stream_collection_get_stream, pFpu)
@@ -1369,7 +1370,7 @@ GO(gst_stream_collection_get_stream, pFpu)
 GO(gst_stream_collection_get_upstream_id, pFp)
 GO(gst_stream_collection_new, pFp)
 //GO(gst_stream_error_get_type, 
-//GO(gst_stream_error_quark, 
+GO(gst_stream_error_quark, pFv)
 //GO(gst_stream_flags_get_type, 
 GO(gst_stream_get_caps, pFp)
 GO(gst_stream_get_stream_flags, uFp)
@@ -1388,7 +1389,7 @@ GO(gst_stream_type_get_name, pFu)
 GO(gst_structure_can_intersect, iFpp)
 //GO(gst_structure_change_type_get_type, 
 GO(gst_structure_copy, pFp)
-//GOM(gst_structure_filter_and_map_in_place, vFEpBp)
+GOM(gst_structure_filter_and_map_in_place, vFEppp)
 GO(gst_structure_fixate, vFp)
 GO(gst_structure_fixate_field, iFpp)
 GO(gst_structure_fixate_field_boolean, iFppi)
@@ -1396,7 +1397,7 @@ GO(gst_structure_fixate_field_nearest_double, iFppd)
 GO(gst_structure_fixate_field_nearest_fraction, iFppii)
 GO(gst_structure_fixate_field_nearest_int, iFppi)
 GO(gst_structure_fixate_field_string, iFppp)
-//GOM(gst_structure_foreach, iFEpBp)
+GOM(gst_structure_foreach, iFEppp)
 GO(gst_structure_free, vFp)
 GO(gst_structure_from_string, pFpp)
 GOM(gst_structure_get, iFEppV)
@@ -1442,19 +1443,19 @@ GO(gst_structure_new_empty, pFp)
 GO(gst_structure_new_from_string, pFp)
 //GOM(gst_structure_new_id, pFEppV)
 GO(gst_structure_new_id_empty, pFu)
-//GOM(gst_structure_new_valist, pFppA)
+GOM(gst_structure_new_valist, pFppA)
 GO(gst_structure_n_fields, iFp)
 GO(gst_structure_nth_field_name, pFpu)
 GO(gst_structure_remove_all_fields, vFp)
 GO(gst_structure_remove_field, vFpp)
 GOM(gst_structure_remove_fields, vFEppV)
 GOM(gst_structure_remove_fields_valist, vFEppA)
-//GOM(gst_structure_set, vFEppV)
+GOM(gst_structure_set, vFEppV)
 GO(gst_structure_set_array, vFppp)
 GO(gst_structure_set_list, vFppp)
 GO(gst_structure_set_name, vFpp)
 GO(gst_structure_set_parent_refcount, iFpp)
-//GOM(gst_structure_set_valist, vFEppA)
+GOM(gst_structure_set_valist, vFEppA)
 GO(gst_structure_set_value, vFppp)
 GO(gst_structure_take, iFpp)
 GO(gst_structure_take_value, vFppp)
@@ -1468,16 +1469,16 @@ GO(gst_system_clock_set_default, vFp)
 GO(gst_tag_get_description, pFp)
 GO(gst_tag_get_flag, uFp)
 //GO(gst_tag_get_nick, 
-//GO(gst_tag_get_type, 
+GO(gst_tag_get_type, LFp)
 //GO(gst_tag_is_fixed, 
-//GOM(gst_tag_list_add, vFEpipV)
-//GOM(gst_tag_list_add_valist, vFEpipA)
-//GOM(gst_tag_list_add_valist_values, vFEpipA)
+GOM(gst_tag_list_add, vFEpipV)
+GOM(gst_tag_list_add_valist, vFEpipA)
+GOM(gst_tag_list_add_valist_values, vFEpipA)
 GO(gst_tag_list_add_value, vFpipp)
-//GOM(gst_tag_list_add_values, vFEpipV)
+GOM(gst_tag_list_add_values, vFEpipV)
 GO(gst_tag_list_copy, pFp)
 GO(gst_tag_list_copy_value, iFppp)
-//GOM(gst_tag_list_foreach, vFEpBp)
+GOM(gst_tag_list_foreach, vFEppp)
 GO(gst_tag_list_get_boolean, iFppp)
 GO(gst_tag_list_get_boolean_index, iFppup)
 GO(gst_tag_list_get_date, iFppp)
@@ -1510,10 +1511,10 @@ GO(gst_tag_list_insert, vFppi)
 GO(gst_tag_list_is_empty, iFp)
 GO(gst_tag_list_is_equal, iFpp)
 GO(gst_tag_list_merge, pFppi)
-//GOM(gst_tag_list_new, pFEpV)
+GOM(gst_tag_list_new, pFEpV)
 GO(gst_tag_list_new_empty, pFv)
 GO(gst_tag_list_new_from_string, pFp)
-//GOM(gst_tag_list_new_valist, pFA)
+GOM(gst_tag_list_new_valist, pFA)
 GO(gst_tag_list_n_tags, iFp)
 GO(gst_tag_list_nth_tag_name, pFpu)
 GO(gst_tag_list_peek_string_index, iFppup)
@@ -1536,19 +1537,19 @@ GO(gst_tag_merge_mode_get_type, pFv)
 //GO(gst_tag_setter_add_tag_valist_values, 
 GO(gst_tag_setter_add_tag_value, vFpupp)
 //GO(gst_tag_setter_add_tag_values, 
-//GO(gst_tag_setter_get_tag_list, 
+GO(gst_tag_setter_get_tag_list, pFp)
 GO(gst_tag_setter_get_tag_merge_mode, uFp)
-//GO(gst_tag_setter_get_type, 
-//GO(gst_tag_setter_merge_tags, 
+GO(gst_tag_setter_get_type, LFv)
+GO(gst_tag_setter_merge_tags, vFppi)
 GO(gst_tag_setter_reset_tags, vFp)
 GO(gst_tag_setter_set_tag_merge_mode, vFpu)
 //GO(gst_task_cleanup_all, 
 //GO(gst_task_get_pool, 
 //GO(gst_task_get_state, 
 GO(gst_task_get_type, pFv)
-//GO(gst_task_join, 
-//GO(gst_task_new, 
-//GO(gst_task_pause, 
+GO(gst_task_join, iFp)
+GOM(gst_task_new, pFEppp)
+GO(gst_task_pause, iFp)
 GO(gst_task_pool_cleanup, vFp)
 GO(gst_task_pool_get_type, pFv)
 //GO(gst_task_pool_join, 
@@ -1558,12 +1559,12 @@ GO(gst_task_pool_prepare, vFp)
 //GO(gst_task_resume, 
 //GO(gst_task_set_enter_callback, 
 //GO(gst_task_set_leave_callback, 
-//GO(gst_task_set_lock, 
+GO(gst_task_set_lock, vFpp)
 GO(gst_task_set_pool, vFpp)
 //GO(gst_task_set_state, 
-//GO(gst_task_start, 
-//GO(gst_task_state_get_type, 
-//GO(gst_task_stop, 
+GO(gst_task_start, iFp)
+GO(gst_task_state_get_type, LFv)
+GO(gst_task_stop, iFp)
 GO(gst_toc_append_entry, vFpp)
 //GO(gst_toc_dump, 
 GO(gst_toc_entry_append_sub_entry, vFpp)
@@ -1572,24 +1573,24 @@ GO(gst_toc_entry_get_loop, iFppp)
 GO(gst_toc_entry_get_parent, pFp)
 GO(gst_toc_entry_get_start_stop_times, iFppp)
 GO(gst_toc_entry_get_sub_entries, pFp)
-//GO(gst_toc_entry_get_tags, 
+GO(gst_toc_entry_get_tags, pFp)
 GO(gst_toc_entry_get_toc, pFp)
 //GO(gst_toc_entry_get_type, 
 GO(gst_toc_entry_get_uid, pFp)
 //GO(gst_toc_entry_is_alternative, 
 GO(gst_toc_entry_is_sequence, iFp)
-//GO(gst_toc_entry_merge_tags, 
+GO(gst_toc_entry_merge_tags, vFppi)
 GO(gst_toc_entry_new, pFip)
 GO(gst_toc_entry_set_loop, vFpui)
 GO(gst_toc_entry_set_start_stop_times, vFpll)
-//GO(gst_toc_entry_set_tags, 
+GO(gst_toc_entry_set_tags, vFpp)
 //DATAB(_gst_toc_entry_type, 
 GO(gst_toc_entry_type_get_nick, pFi)
 //GO(gst_toc_entry_type_get_type, 
 GO(gst_toc_find_entry, pFpp)
 GO(gst_toc_get_entries, pFp)
 GO(gst_toc_get_scope, uFp)
-//GO(gst_toc_get_tags, 
+GO(gst_toc_get_tags, pFp)
 //GO(gst_toc_get_type, 
 //GO(gst_toc_loop_type_get_type, 
 //GO(gst_toc_merge_tags, 
@@ -1597,7 +1598,7 @@ GO(gst_toc_new, pFu)
 //GO(gst_toc_scope_get_type, 
 //GO(gst_toc_set_tags, 
 GO(gst_toc_setter_get_toc, pFp)
-//GO(gst_toc_setter_get_type, 
+GO(gst_toc_setter_get_type, LFv)
 GO(gst_toc_setter_reset, vFp)
 GO(gst_toc_setter_set_toc, vFpp)
 DATAB(_gst_toc_type, sizeof(void*))
@@ -1619,12 +1620,12 @@ GO(gst_type_find_factory_get_extensions, pFp)
 GO(gst_type_find_factory_get_list, pFv)
 //GO(gst_type_find_factory_get_type, 
 GO(gst_type_find_factory_has_function, iFp)
-//GO(gst_type_find_get_length, 
+GO(gst_type_find_get_length, UFp)
 //GO(gst_type_find_get_type, 
-//GO(gst_type_find_peek, 
+GO(gst_type_find_peek, pFpUu)
 //GO(gst_type_find_probability_get_type, 
-//GO(gst_type_find_register, 
-//GO(gst_type_find_suggest, 
+GOM(gst_type_find_register, iFEppuppppp)
+GO(gst_type_find_suggest, vFpup)
 //GO(gst_type_find_suggest_simple, 
 GO(gst_type_is_plugin_api, iFLp)
 GO(gst_type_mark_as_plugin_api, vFLu)
@@ -1635,7 +1636,7 @@ GO(gst_update_registry, iFv)
 GO(gst_uri_copy, pFp)
 GO(gst_uri_equal, iFpp)
 //GO(gst_uri_error_get_type, 
-//GO(gst_uri_error_quark, 
+GO(gst_uri_error_quark, pFv)
 //GO(gst_uri_from_string, 
 GO(gst_uri_from_string_escaped, pFp)
 GO(gst_uri_from_string_with_base, pFpp)
@@ -1656,13 +1657,13 @@ GO(gst_uri_get_query_value, pFpp)
 //GO(gst_uri_get_type, 
 //GO(gst_uri_get_userinfo, 
 GO(gst_uri_handler_get_protocols, pFp)
-//GO(gst_uri_handler_get_type, 
+GO(gst_uri_handler_get_type, LFv)
 GO(gst_uri_handler_get_uri, pFp)
 GO(gst_uri_handler_get_uri_type, uFp)
 GO(gst_uri_handler_set_uri, iFppp)
 GO(gst_uri_has_protocol, iFpp)
 GO(gst_uri_is_normalized, iFp)
-//GO(gst_uri_is_valid, 
+GO(gst_uri_is_valid, iFp)
 //GO(gst_uri_is_writable, 
 GO(gst_uri_join, pFpp)
 GO(gst_uri_join_strings, pFpp)
@@ -1689,13 +1690,13 @@ GO(gst_uri_set_query_value, iFppp)
 //GO(gst_uri_to_string, 
 //GO(gst_uri_type_get_type, 
 //GO(gst_uri_unref, 
-//GO(gst_util_array_binary_search, 
+GOM(gst_util_array_binary_search, pFpuLpipp)
 GO(gst_util_double_to_fraction, vFdpp)
 //GO(gst_util_dump_buffer, 
 GO(gst_util_dump_mem, vFpu)
 GO(gst_util_fraction_add, iFiiiipp)
 GO(gst_util_fraction_compare, iFiiii)
-//GO(gst_util_fraction_multiply, 
+GO(gst_util_fraction_multiply, iFiiiipp)
 GO(gst_util_fraction_to_double, vFiip)
 GO(gst_util_gdouble_to_guint64, LFd)
 GO(gst_util_get_object_array, iFppp)
@@ -1711,13 +1712,13 @@ GO(gst_util_set_object_array, iFppp)
 GO(gst_util_set_value_from_string, vFpp)
 GO(gst_util_uint64_scale, UFUUU)
 GO(gst_util_uint64_scale_ceil, LFLLL)
-//GO(gst_util_uint64_scale_int, 
+GO(gst_util_uint64_scale_int, UFUii)
 GO(gst_util_uint64_scale_int_ceil, LFLii)
-//GO(gst_util_uint64_scale_int_round, 
-//GO(gst_util_uint64_scale_round, 
+GO(gst_util_uint64_scale_int_round, UFUii)
+GO(gst_util_uint64_scale_round, UFUUU)
 GO(gst_value_array_append_and_take_value, vFpp)
-//GO(gst_value_array_append_value, 
-//GO(gst_value_array_get_size, 
+GO(gst_value_array_append_value, vFpp)
+GO(gst_value_array_get_size, iFp)
 //GO(gst_value_array_get_type, 
 GO(gst_value_array_get_value, pFpu)
 GO(gst_value_array_init, pFpu)
@@ -1733,41 +1734,41 @@ GO(gst_value_fixate, iFpp)
 //GO(gst_value_fraction_multiply, 
 //GO(gst_value_fraction_subtract, 
 GO(gst_value_get_bitmask, LFp)
-//GO(gst_value_get_caps, 
+GO(gst_value_get_caps, pFp)
 GO(gst_value_get_caps_features, pFp)
 GO(gst_value_get_double_range_max, dFp)
 //GO(gst_value_get_double_range_min, 
-//GO(gst_value_get_flagset_flags, 
+GO(gst_value_get_flagset_flags, uFp)
 GO(gst_value_get_flagset_mask, uFp)
 GO(gst_value_get_fraction_denominator, iFp)
-//GO(gst_value_get_fraction_numerator, 
+GO(gst_value_get_fraction_numerator, iFp)
 GO(gst_value_get_fraction_range_max, pFp)
-//GO(gst_value_get_fraction_range_min, 
+GO(gst_value_get_fraction_range_min, pFp)
 //GO(gst_value_get_int64_range_max, 
 //GO(gst_value_get_int64_range_min, 
 GO(gst_value_get_int64_range_step, lFp)
-//GO(gst_value_get_int_range_max, 
-//GO(gst_value_get_int_range_min, 
+GO(gst_value_get_int_range_max, iFp)
+GO(gst_value_get_int_range_min, iFp)
 //GO(gst_value_get_int_range_step, 
 GO(gst_value_get_structure, pFp)
-//GO(gst_value_init_and_copy, 
+GO(gst_value_init_and_copy, vFpp)
 //GO(gst_value_intersect, 
 GO(gst_value_is_fixed, iFp)
 //GO(gst_value_is_subset, 
-//GO(gst_value_list_append_and_take_value, 
-//GO(gst_value_list_append_value, 
+GO(gst_value_list_append_and_take_value, vFpp)
+GO(gst_value_list_append_value, vFpp)
 //GO(gst_value_list_concat, 
-//GO(gst_value_list_get_size, 
-//GO(gst_value_list_get_type, 
-//GO(gst_value_list_get_value, 
+GO(gst_value_list_get_size, uFp)
+GO(gst_value_list_get_type, LFv)
+GO(gst_value_list_get_value, pFpu)
 //GO(gst_value_list_init, 
-//GO(gst_value_list_merge, 
+GO(gst_value_list_merge, vFppp)
 //GO(gst_value_list_prepend_value, 
 DATAB(_gst_value_list_type, sizeof(void*))
 //GO(gst_value_register, 
 GO(gst_value_serialize, pFp)
 GO(gst_value_set_bitmask, vFpL)
-//GO(gst_value_set_caps, 
+GO(gst_value_set_caps, vFpp)
 GO(gst_value_set_caps_features, vFpp)
 GO(gst_value_set_double_range, vFpdd)
 GO(gst_value_set_flagset, vFpuu)
@@ -1776,10 +1777,12 @@ GO(gst_value_set_fraction_range, vFppp)
 GO(gst_value_set_fraction_range_full, vFpiiii)
 GO(gst_value_set_int64_range, vFpll)
 GO(gst_value_set_int64_range_step, vFplll)
-//GO(gst_value_set_int_range, 
+GO(gst_value_set_int_range, vFpii)
 GO(gst_value_set_int_range_step, vFpiii)
 GO(gst_value_set_structure, vFpp)
 GO(gst_value_subtract, iFppp)
 //GO(gst_value_union, 
 GO(gst_version, vFpppp)
 GO(gst_version_string, pFv)
+
+GO(dummy_iFpipLpp, iFpipLpp)    // for gtkclass
\ No newline at end of file
diff --git a/src/wrapped/wrappedgstriff.c b/src/wrapped/wrappedgstriff.c
new file mode 100644
index 00000000..35a300f1
--- /dev/null
+++ b/src/wrapped/wrappedgstriff.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstriffName = "libgstriff-1.0.so.0";
+#define LIBNAME gstriff
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstriff_private.h b/src/wrapped/wrappedgstriff_private.h
new file mode 100644
index 00000000..1952be96
--- /dev/null
+++ b/src/wrapped/wrappedgstriff_private.h
@@ -0,0 +1,19 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+GO(gst_riff_create_audio_caps, pFWpppppp)
+GO(gst_riff_create_audio_template_caps, pFv)
+//GO(gst_riff_create_iavs_caps, 
+//GO(gst_riff_create_iavs_template_caps, 
+GO(gst_riff_create_video_caps, pFuppppp)
+GO(gst_riff_create_video_template_caps, pFv)
+GO(gst_riff_init, vFv)
+//GO(gst_riff_parse_chunk, 
+//GO(gst_riff_parse_file_header, 
+//GO(gst_riff_parse_info, 
+//GO(gst_riff_parse_strf_auds, 
+//GO(gst_riff_parse_strf_iavs, 
+//GO(gst_riff_parse_strf_vids, 
+//GO(gst_riff_parse_strh, 
+//GO(gst_riff_read_chunk, 
diff --git a/src/wrapped/wrappedgstrtp.c b/src/wrapped/wrappedgstrtp.c
new file mode 100644
index 00000000..8a32f535
--- /dev/null
+++ b/src/wrapped/wrappedgstrtp.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstrtpName = "libgstrtp-1.0.so.0";
+#define LIBNAME gstrtp
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstrtp_private.h b/src/wrapped/wrappedgstrtp_private.h
new file mode 100644
index 00000000..91c55cb5
--- /dev/null
+++ b/src/wrapped/wrappedgstrtp_private.h
@@ -0,0 +1,215 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+//GO(gst_buffer_add_rtp_source_meta, 
+//GO(gst_buffer_get_rtp_source_meta, 
+//GO(gst_rtcp_buffer_add_packet, 
+//GO(gst_rtcp_buffer_get_first_packet, 
+//GO(gst_rtcp_buffer_get_packet_count, 
+//GO(gst_rtcp_buffer_map, 
+//GO(gst_rtcp_buffer_new, 
+//GO(gst_rtcp_buffer_new_copy_data, 
+//GO(gst_rtcp_buffer_new_take_data, 
+//GO(gst_rtcp_buffer_unmap, 
+//GO(gst_rtcp_buffer_validate, 
+//GO(gst_rtcp_buffer_validate_data, 
+//GO(gst_rtcp_buffer_validate_data_reduced, 
+//GO(gst_rtcp_buffer_validate_reduced, 
+GO(gst_rtcpfb_type_get_type, LFv)
+//GO(gst_rtcp_ntp_to_unix, 
+//GO(gst_rtcp_packet_add_profile_specific_ext, 
+//GO(gst_rtcp_packet_add_rb, 
+//GO(gst_rtcp_packet_app_get_data, 
+//GO(gst_rtcp_packet_app_get_data_length, 
+//GO(gst_rtcp_packet_app_get_name, 
+//GO(gst_rtcp_packet_app_get_ssrc, 
+//GO(gst_rtcp_packet_app_get_subtype, 
+//GO(gst_rtcp_packet_app_set_data_length, 
+//GO(gst_rtcp_packet_app_set_name, 
+//GO(gst_rtcp_packet_app_set_ssrc, 
+//GO(gst_rtcp_packet_app_set_subtype, 
+//GO(gst_rtcp_packet_bye_add_ssrc, 
+//GO(gst_rtcp_packet_bye_add_ssrcs, 
+//GO(gst_rtcp_packet_bye_get_nth_ssrc, 
+//GO(gst_rtcp_packet_bye_get_reason, 
+//GO(gst_rtcp_packet_bye_get_reason_len, 
+//GO(gst_rtcp_packet_bye_get_ssrc_count, 
+//GO(gst_rtcp_packet_bye_set_reason, 
+//GO(gst_rtcp_packet_copy_profile_specific_ext, 
+//GO(gst_rtcp_packet_fb_get_fci, 
+//GO(gst_rtcp_packet_fb_get_fci_length, 
+//GO(gst_rtcp_packet_fb_get_media_ssrc, 
+//GO(gst_rtcp_packet_fb_get_sender_ssrc, 
+GO(gst_rtcp_packet_fb_get_type, LFv)
+//GO(gst_rtcp_packet_fb_set_fci_length, 
+//GO(gst_rtcp_packet_fb_set_media_ssrc, 
+//GO(gst_rtcp_packet_fb_set_sender_ssrc, 
+//GO(gst_rtcp_packet_fb_set_type, 
+//GO(gst_rtcp_packet_get_count, 
+//GO(gst_rtcp_packet_get_length, 
+//GO(gst_rtcp_packet_get_padding, 
+//GO(gst_rtcp_packet_get_profile_specific_ext, 
+//GO(gst_rtcp_packet_get_profile_specific_ext_length, 
+//GO(gst_rtcp_packet_get_rb, 
+//GO(gst_rtcp_packet_get_rb_count, 
+GO(gst_rtcp_packet_get_type, LFv)
+//GO(gst_rtcp_packet_move_to_next, 
+//GO(gst_rtcp_packet_remove, 
+//GO(gst_rtcp_packet_rr_get_ssrc, 
+//GO(gst_rtcp_packet_rr_set_ssrc, 
+//GO(gst_rtcp_packet_sdes_add_entry, 
+//GO(gst_rtcp_packet_sdes_add_item, 
+//GO(gst_rtcp_packet_sdes_copy_entry, 
+//GO(gst_rtcp_packet_sdes_first_entry, 
+//GO(gst_rtcp_packet_sdes_first_item, 
+//GO(gst_rtcp_packet_sdes_get_entry, 
+//GO(gst_rtcp_packet_sdes_get_item_count, 
+//GO(gst_rtcp_packet_sdes_get_ssrc, 
+//GO(gst_rtcp_packet_sdes_next_entry, 
+//GO(gst_rtcp_packet_sdes_next_item, 
+//GO(gst_rtcp_packet_set_rb, 
+//GO(gst_rtcp_packet_sr_get_sender_info, 
+//GO(gst_rtcp_packet_sr_set_sender_info, 
+//GO(gst_rtcp_packet_xr_first_rb, 
+//GO(gst_rtcp_packet_xr_get_block_length, 
+//GO(gst_rtcp_packet_xr_get_block_type, 
+//GO(gst_rtcp_packet_xr_get_dlrr_block, 
+//GO(gst_rtcp_packet_xr_get_prt_by_seq, 
+//GO(gst_rtcp_packet_xr_get_prt_info, 
+//GO(gst_rtcp_packet_xr_get_rle_info, 
+//GO(gst_rtcp_packet_xr_get_rle_nth_chunk, 
+//GO(gst_rtcp_packet_xr_get_rrt, 
+//GO(gst_rtcp_packet_xr_get_ssrc, 
+//GO(gst_rtcp_packet_xr_get_summary_info, 
+//GO(gst_rtcp_packet_xr_get_summary_jitter, 
+//GO(gst_rtcp_packet_xr_get_summary_pkt, 
+//GO(gst_rtcp_packet_xr_get_summary_ttl, 
+//GO(gst_rtcp_packet_xr_get_voip_burst_metrics, 
+//GO(gst_rtcp_packet_xr_get_voip_configuration_params, 
+//GO(gst_rtcp_packet_xr_get_voip_delay_metrics, 
+//GO(gst_rtcp_packet_xr_get_voip_jitter_buffer_params, 
+//GO(gst_rtcp_packet_xr_get_voip_metrics_ssrc, 
+//GO(gst_rtcp_packet_xr_get_voip_packet_metrics, 
+//GO(gst_rtcp_packet_xr_get_voip_quality_metrics, 
+//GO(gst_rtcp_packet_xr_get_voip_signal_metrics, 
+//GO(gst_rtcp_packet_xr_next_rb, 
+//GO(gst_rtcp_sdes_name_to_type, 
+GO(gst_rtcpsdes_type_get_type, LFv)
+//GO(gst_rtcp_sdes_type_to_name, 
+GO(gst_rtcp_type_get_type, LFv)
+//GO(gst_rtcp_unix_to_ntp, 
+GO(gst_rtcpxr_type_get_type, LFv)
+//GO(gst_rtp_base_audio_payload_flush, 
+//GO(gst_rtp_base_audio_payload_get_adapter, 
+GO(gst_rtp_base_audio_payload_get_type, LFv)
+//GO(gst_rtp_base_audio_payload_push, 
+//GO(gst_rtp_base_audio_payload_set_frame_based, 
+//GO(gst_rtp_base_audio_payload_set_frame_options, 
+//GO(gst_rtp_base_audio_payload_set_sample_based, 
+//GO(gst_rtp_base_audio_payload_set_samplebits_options, 
+//GO(gst_rtp_base_audio_payload_set_sample_options, 
+GO(gst_rtp_base_depayload_get_type, LFv)
+//GO(gst_rtp_base_depayload_is_source_info_enabled, 
+//GO(gst_rtp_base_depayload_push, 
+//GO(gst_rtp_base_depayload_push_list, 
+//GO(gst_rtp_base_depayload_set_source_info_enabled, 
+//GO(gst_rtp_base_payload_allocate_output_buffer, 
+//GO(gst_rtp_base_payload_get_source_count, 
+GO(gst_rtp_base_payload_get_type, LFv)
+//GO(gst_rtp_base_payload_is_filled, 
+//GO(gst_rtp_base_payload_is_source_info_enabled, 
+//GO(gst_rtp_base_payload_push, 
+//GO(gst_rtp_base_payload_push_list, 
+//GO(gst_rtp_base_payload_set_options, 
+//GO(gst_rtp_base_payload_set_outcaps, 
+//GO(gst_rtp_base_payload_set_outcaps_structure, 
+//GO(gst_rtp_base_payload_set_source_info_enabled, 
+//GO(gst_rtp_buffer_add_extension_onebyte_header, 
+//GO(gst_rtp_buffer_add_extension_twobytes_header, 
+//GO(gst_rtp_buffer_allocate_data, 
+//GO(gst_rtp_buffer_calc_header_len, 
+//GO(gst_rtp_buffer_calc_packet_len, 
+//GO(gst_rtp_buffer_calc_payload_len, 
+//GO(gst_rtp_buffer_compare_seqnum, 
+//GO(gst_rtp_buffer_default_clock_rate, 
+//GO(gst_rtp_buffer_ext_timestamp, 
+GO(gst_rtp_buffer_flags_get_type, LFv)
+//GO(gst_rtp_buffer_get_csrc, 
+//GO(gst_rtp_buffer_get_csrc_count, 
+//GO(gst_rtp_buffer_get_extension, 
+//GO(gst_rtp_buffer_get_extension_bytes, 
+//GO(gst_rtp_buffer_get_extension_data, 
+//GO(gst_rtp_buffer_get_extension_onebyte_header, 
+//GO(gst_rtp_buffer_get_extension_onebyte_header_from_bytes, 
+//GO(gst_rtp_buffer_get_extension_twobytes_header, 
+//GO(gst_rtp_buffer_get_header_len, 
+//GO(gst_rtp_buffer_get_marker, 
+//GO(gst_rtp_buffer_get_packet_len, 
+//GO(gst_rtp_buffer_get_padding, 
+//GO(gst_rtp_buffer_get_payload, 
+//GO(gst_rtp_buffer_get_payload_buffer, 
+//GO(gst_rtp_buffer_get_payload_bytes, 
+//GO(gst_rtp_buffer_get_payload_len, 
+//GO(gst_rtp_buffer_get_payload_subbuffer, 
+//GO(gst_rtp_buffer_get_payload_type, 
+//GO(gst_rtp_buffer_get_seq, 
+//GO(gst_rtp_buffer_get_ssrc, 
+//GO(gst_rtp_buffer_get_timestamp, 
+//GO(gst_rtp_buffer_get_version, 
+//GO(gst_rtp_buffer_map, 
+GO(gst_rtp_buffer_map_flags_get_type, LFv)
+//GO(gst_rtp_buffer_new_allocate, 
+//GO(gst_rtp_buffer_new_allocate_len, 
+//GO(gst_rtp_buffer_new_copy_data, 
+//GO(gst_rtp_buffer_new_take_data, 
+//GO(gst_rtp_buffer_pad_to, 
+//GO(gst_rtp_buffer_remove_extension_data, 
+//GO(gst_rtp_buffer_set_csrc, 
+//GO(gst_rtp_buffer_set_extension, 
+//GO(gst_rtp_buffer_set_extension_data, 
+//GO(gst_rtp_buffer_set_marker, 
+//GO(gst_rtp_buffer_set_packet_len, 
+//GO(gst_rtp_buffer_set_padding, 
+//GO(gst_rtp_buffer_set_payload_type, 
+//GO(gst_rtp_buffer_set_seq, 
+//GO(gst_rtp_buffer_set_ssrc, 
+//GO(gst_rtp_buffer_set_timestamp, 
+//GO(gst_rtp_buffer_set_version, 
+//GO(gst_rtp_buffer_unmap, 
+//GO(gst_rtp_get_header_extension_list, 
+//GO(gst_rtp_hdrext_get_ntp_56, 
+//GO(gst_rtp_hdrext_get_ntp_64, 
+//GO(gst_rtp_hdrext_set_ntp_56, 
+//GO(gst_rtp_hdrext_set_ntp_64, 
+//GO(gst_rtp_header_extension_class_set_uri, 
+//GO(gst_rtp_header_extension_create_from_uri, 
+GO(gst_rtp_header_extension_direction_get_type, LFv)
+GO(gst_rtp_header_extension_flags_get_type, LFv)
+//GO(gst_rtp_header_extension_get_direction, 
+//GO(gst_rtp_header_extension_get_id, 
+//GO(gst_rtp_header_extension_get_max_size, 
+//GO(gst_rtp_header_extension_get_sdp_caps_field_name, 
+//GO(gst_rtp_header_extension_get_supported_flags, 
+GO(gst_rtp_header_extension_get_type, LFv)
+//GO(gst_rtp_header_extension_get_uri, 
+//GO(gst_rtp_header_extension_read, 
+//GO(gst_rtp_header_extension_set_attributes_from_caps, 
+//GO(gst_rtp_header_extension_set_caps_from_attributes, 
+//GO(gst_rtp_header_extension_set_caps_from_attributes_helper, 
+//GO(gst_rtp_header_extension_set_direction, 
+//GO(gst_rtp_header_extension_set_id, 
+//GO(gst_rtp_header_extension_set_non_rtp_sink_caps, 
+//GO(gst_rtp_header_extension_set_wants_update_non_rtp_src_caps, 
+//GO(gst_rtp_header_extension_update_non_rtp_src_caps, 
+//GO(gst_rtp_header_extension_wants_update_non_rtp_src_caps, 
+//GO(gst_rtp_header_extension_write, 
+GO(gst_rtp_payload_get_type, LFv)
+//GO(gst_rtp_payload_info_for_name, 
+//GO(gst_rtp_payload_info_for_pt, 
+GO(gst_rtp_profile_get_type, LFv)
+GO(gst_rtp_source_meta_api_get_type, LFv)
+//GO(gst_rtp_source_meta_append_csrc, 
+//GO(gst_rtp_source_meta_get_info, 
+//GO(gst_rtp_source_meta_get_source_count, 
+//GO(gst_rtp_source_meta_set_ssrc, 
diff --git a/src/wrapped/wrappedgstrtsp.c b/src/wrapped/wrappedgstrtsp.c
new file mode 100644
index 00000000..c9afd743
--- /dev/null
+++ b/src/wrapped/wrappedgstrtsp.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstrtspName = "libgstrtsp-1.0.so.0";
+#define LIBNAME gstrtsp
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstrtsp_private.h b/src/wrapped/wrappedgstrtsp_private.h
new file mode 100644
index 00000000..f9d9ebfc
--- /dev/null
+++ b/src/wrapped/wrappedgstrtsp_private.h
@@ -0,0 +1,170 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+GO(gst_rtsp_auth_credential_get_type, LFv)
+//GO(gst_rtsp_auth_credentials_free, 
+GO(gst_rtsp_auth_method_get_type, LFv)
+//GO(gst_rtsp_auth_param_copy, 
+//GO(gst_rtsp_auth_param_free, 
+GO(gst_rtsp_auth_param_get_type, LFv)
+//GO(gst_rtsp_connection_accept, 
+//GO(gst_rtsp_connection_clear_auth_params, 
+//GO(gst_rtsp_connection_close, 
+//GO(gst_rtsp_connection_connect, 
+//GO(gst_rtsp_connection_connect_usec, 
+//GO(gst_rtsp_connection_connect_with_response, 
+//GO(gst_rtsp_connection_connect_with_response_usec, 
+//GO(gst_rtsp_connection_create, 
+//GO(gst_rtsp_connection_create_from_socket, 
+//GO(gst_rtsp_connection_do_tunnel, 
+//GO(gst_rtsp_connection_flush, 
+//GO(gst_rtsp_connection_free, 
+//GO(gst_rtsp_connection_get_ignore_x_server_reply, 
+//GO(gst_rtsp_connection_get_ip, 
+//GO(gst_rtsp_connection_get_read_socket, 
+//GO(gst_rtsp_connection_get_remember_session_id, 
+//GO(gst_rtsp_connection_get_tls, 
+//GO(gst_rtsp_connection_get_tls_database, 
+//GO(gst_rtsp_connection_get_tls_interaction, 
+//GO(gst_rtsp_connection_get_tls_validation_flags, 
+//GO(gst_rtsp_connection_get_tunnelid, 
+//GO(gst_rtsp_connection_get_url, 
+//GO(gst_rtsp_connection_get_write_socket, 
+//GO(gst_rtsp_connection_is_tunneled, 
+//GO(gst_rtsp_connection_next_timeout, 
+//GO(gst_rtsp_connection_next_timeout_usec, 
+//GO(gst_rtsp_connection_poll, 
+//GO(gst_rtsp_connection_poll_usec, 
+//GO(gst_rtsp_connection_read, 
+//GO(gst_rtsp_connection_read_usec, 
+//GO(gst_rtsp_connection_receive, 
+//GO(gst_rtsp_connection_receive_usec, 
+//GO(gst_rtsp_connection_reset_timeout, 
+//GO(gst_rtsp_connection_send, 
+//GO(gst_rtsp_connection_send_messages, 
+//GO(gst_rtsp_connection_send_messages_usec, 
+//GO(gst_rtsp_connection_send_usec, 
+//GO(gst_rtsp_connection_set_accept_certificate_func, 
+//GO(gst_rtsp_connection_set_auth, 
+//GO(gst_rtsp_connection_set_auth_param, 
+//GO(gst_rtsp_connection_set_content_length_limit, 
+//GO(gst_rtsp_connection_set_http_mode, 
+//GO(gst_rtsp_connection_set_ignore_x_server_reply, 
+//GO(gst_rtsp_connection_set_ip, 
+//GO(gst_rtsp_connection_set_proxy, 
+//GO(gst_rtsp_connection_set_qos_dscp, 
+//GO(gst_rtsp_connection_set_remember_session_id, 
+//GO(gst_rtsp_connection_set_tls_database, 
+//GO(gst_rtsp_connection_set_tls_interaction, 
+//GO(gst_rtsp_connection_set_tls_validation_flags, 
+//GO(gst_rtsp_connection_set_tunneled, 
+//GO(gst_rtsp_connection_write, 
+//GO(gst_rtsp_connection_write_usec, 
+GO(gst_rtsp_event_get_type, LFv)
+//GO(gst_rtsp_extension_after_send, 
+//GO(gst_rtsp_extension_before_send, 
+//GO(gst_rtsp_extension_configure_stream, 
+//GO(gst_rtsp_extension_detect_server, 
+//GO(gst_rtsp_extension_get_transports, 
+GO(gst_rtsp_extension_get_type, LFv)
+//GO(gst_rtsp_extension_parse_sdp, 
+//GO(gst_rtsp_extension_receive_request, 
+//GO(gst_rtsp_extension_send, 
+//GO(gst_rtsp_extension_setup_media, 
+//GO(gst_rtsp_extension_stream_select, 
+GO(gst_rtsp_family_get_type, LFv)
+//GO(gst_rtsp_find_header_field, 
+//GO(gst_rtsp_find_method, 
+//GO(gst_rtsp_generate_digest_auth_response, 
+//GO(gst_rtsp_generate_digest_auth_response_from_md5, 
+//GO(gst_rtsp_header_allow_multiple, 
+//GO(gst_rtsp_header_as_text, 
+GO(gst_rtsp_header_field_get_type, LFv)
+GO(gst_rtsp_lower_trans_get_type, LFv)
+//GO(gst_rtsp_message_add_header, 
+//GO(gst_rtsp_message_add_header_by_name, 
+//GO(gst_rtsp_message_append_headers, 
+//GO(gst_rtsp_message_copy, 
+//GO(gst_rtsp_message_dump, 
+//GO(gst_rtsp_message_free, 
+//GO(gst_rtsp_message_get_body, 
+//GO(gst_rtsp_message_get_body_buffer, 
+//GO(gst_rtsp_message_get_header, 
+//GO(gst_rtsp_message_get_header_by_name, 
+GO(gst_rtsp_message_get_type, LFv)
+//GO(gst_rtsp_message_has_body_buffer, 
+//GO(gst_rtsp_message_init, 
+//GO(gst_rtsp_message_init_data, 
+//GO(gst_rtsp_message_init_request, 
+//GO(gst_rtsp_message_init_response, 
+//GO(gst_rtsp_message_new, 
+//GO(gst_rtsp_message_new_data, 
+//GO(gst_rtsp_message_new_request, 
+//GO(gst_rtsp_message_new_response, 
+//GO(gst_rtsp_message_parse_auth_credentials, 
+//GO(gst_rtsp_message_parse_data, 
+//GO(gst_rtsp_message_parse_request, 
+//GO(gst_rtsp_message_parse_response, 
+//GO(gst_rtsp_message_remove_header, 
+//GO(gst_rtsp_message_remove_header_by_name, 
+//GO(gst_rtsp_message_set_body, 
+//GO(gst_rtsp_message_set_body_buffer, 
+//GO(gst_rtsp_message_steal_body, 
+//GO(gst_rtsp_message_steal_body_buffer, 
+//GO(gst_rtsp_message_take_body, 
+//GO(gst_rtsp_message_take_body_buffer, 
+//GO(gst_rtsp_message_take_header, 
+//GO(gst_rtsp_message_take_header_by_name, 
+//GO(gst_rtsp_message_unset, 
+//GO(gst_rtsp_method_as_text, 
+GO(gst_rtsp_method_get_type, LFv)
+GO(gst_rtsp_msg_get_type, LFv)
+GO(gst_rtsp_msg_type_get_type, LFv)
+//GO(gst_rtsp_options_as_text, 
+//GO(gst_rtsp_options_from_text, 
+GO(gst_rtsp_profile_get_type, LFv)
+//GO(gst_rtsp_range_convert_units, 
+//GO(gst_rtsp_range_free, 
+//GO(gst_rtsp_range_get_times, 
+//GO(gst_rtsp_range_parse, 
+//GO(gst_rtsp_range_to_string, 
+GO(gst_rtsp_range_unit_get_type, LFv)
+GO(gst_rtsp_result_get_type, LFv)
+GO(gst_rtsp_state_get_type, LFv)
+//GO(gst_rtsp_status_as_text, 
+GO(gst_rtsp_status_code_get_type, LFv)
+//GO(gst_rtsp_strresult, 
+GO(gst_rtsp_time_type_get_type, LFv)
+GO(gst_rtsp_trans_mode_get_type, LFv)
+//GO(gst_rtsp_transport_as_text, 
+//GO(gst_rtsp_transport_free, 
+//GO(gst_rtsp_transport_get_manager, 
+//GO(gst_rtsp_transport_get_media_type, 
+//GO(gst_rtsp_transport_get_mime, 
+//GO(gst_rtsp_transport_init, 
+//GO(gst_rtsp_transport_new, 
+//GO(gst_rtsp_transport_parse, 
+//GO(gst_rtsp_url_copy, 
+//GO(gst_rtsp_url_decode_path_components, 
+//GO(gst_rtsp_url_free, 
+//GO(gst_rtsp_url_get_port, 
+//GO(gst_rtsp_url_get_request_uri, 
+//GO(gst_rtsp_url_get_request_uri_with_control, 
+GO(gst_rtsp_url_get_type, LFv)
+//GO(gst_rtsp_url_parse, 
+//GO(gst_rtsp_url_set_port, 
+//GO(gst_rtsp_version_as_text, 
+GO(gst_rtsp_version_get_type, LFv)
+//GO(gst_rtsp_watch_attach, 
+//GO(gst_rtsp_watch_get_send_backlog, 
+//GO(gst_rtsp_watch_new, 
+//GO(gst_rtsp_watch_reset, 
+//GO(gst_rtsp_watch_send_message, 
+//GO(gst_rtsp_watch_send_messages, 
+//GO(gst_rtsp_watch_set_flushing, 
+//GO(gst_rtsp_watch_set_send_backlog, 
+//GO(gst_rtsp_watch_unref, 
+//GO(gst_rtsp_watch_wait_backlog, 
+//GO(gst_rtsp_watch_wait_backlog_usec, 
+//GO(gst_rtsp_watch_write_data, 
diff --git a/src/wrapped/wrappedgstsdp.c b/src/wrapped/wrappedgstsdp.c
new file mode 100644
index 00000000..833f4165
--- /dev/null
+++ b/src/wrapped/wrappedgstsdp.c
@@ -0,0 +1,22 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+
+const char* gstsdpName = "libgstsdp-1.0.so.0";
+#define LIBNAME gstsdp
+
+#define PRE_INIT    \
+    if(box64_nogtk) \
+        return -1;
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstsdp_private.h b/src/wrapped/wrappedgstsdp_private.h
new file mode 100644
index 00000000..ba88728f
--- /dev/null
+++ b/src/wrapped/wrappedgstsdp_private.h
@@ -0,0 +1,178 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+//GO(gst_mikey_message_add_cs_srtp, 
+//GO(gst_mikey_message_add_payload, 
+//GO(gst_mikey_message_add_pke, 
+//GO(gst_mikey_message_add_rand, 
+//GO(gst_mikey_message_add_rand_len, 
+//GO(gst_mikey_message_add_t, 
+//GO(gst_mikey_message_add_t_now_ntp_utc, 
+//GO(gst_mikey_message_base64_encode, 
+//GO(gst_mikey_message_find_payload, 
+//GO(gst_mikey_message_get_cs_srtp, 
+//GO(gst_mikey_message_get_n_cs, 
+//GO(gst_mikey_message_get_n_payloads, 
+//GO(gst_mikey_message_get_payload, 
+GO(gst_mikey_message_get_type, LFv)
+//GO(gst_mikey_message_insert_cs_srtp, 
+//GO(gst_mikey_message_insert_payload, 
+//GO(gst_mikey_message_new, 
+//GO(gst_mikey_message_new_from_bytes, 
+//GO(gst_mikey_message_new_from_caps, 
+//GO(gst_mikey_message_new_from_data, 
+//GO(gst_mikey_message_remove_cs_srtp, 
+//GO(gst_mikey_message_remove_payload, 
+//GO(gst_mikey_message_replace_cs_srtp, 
+//GO(gst_mikey_message_replace_payload, 
+//GO(gst_mikey_message_set_info, 
+//GO(gst_mikey_message_to_bytes, 
+//GO(gst_mikey_message_to_caps, 
+GO(gst_mikey_payload_get_type, LFv)
+//GO(gst_mikey_payload_kemac_add_sub, 
+//GO(gst_mikey_payload_kemac_get_n_sub, 
+//GO(gst_mikey_payload_kemac_get_sub, 
+//GO(gst_mikey_payload_kemac_remove_sub, 
+//GO(gst_mikey_payload_kemac_set, 
+//GO(gst_mikey_payload_key_data_set_interval, 
+//GO(gst_mikey_payload_key_data_set_key, 
+//GO(gst_mikey_payload_key_data_set_salt, 
+//GO(gst_mikey_payload_key_data_set_spi, 
+//GO(gst_mikey_payload_new, 
+//GO(gst_mikey_payload_pke_set, 
+//GO(gst_mikey_payload_rand_set, 
+//GO(gst_mikey_payload_sp_add_param, 
+//GO(gst_mikey_payload_sp_get_n_params, 
+//GO(gst_mikey_payload_sp_get_param, 
+//GO(gst_mikey_payload_sp_remove_param, 
+//GO(gst_mikey_payload_sp_set, 
+//GO(gst_mikey_payload_t_set, 
+//GO(gst_sdp_address_is_multicast, 
+//GO(gst_sdp_attribute_clear, 
+//GO(gst_sdp_attribute_set, 
+//GO(gst_sdp_bandwidth_clear, 
+//GO(gst_sdp_bandwidth_set, 
+//GO(gst_sdp_connection_clear, 
+//GO(gst_sdp_connection_set, 
+//GO(gst_sdp_make_keymgmt, 
+//GO(gst_sdp_media_add_attribute, 
+//GO(gst_sdp_media_add_bandwidth, 
+//GO(gst_sdp_media_add_connection, 
+//GO(gst_sdp_media_add_format, 
+//GO(gst_sdp_media_as_text, 
+//GO(gst_sdp_media_attributes_len, 
+//GO(gst_sdp_media_attributes_to_caps, 
+//GO(gst_sdp_media_bandwidths_len, 
+//GO(gst_sdp_media_connections_len, 
+//GO(gst_sdp_media_copy, 
+//GO(gst_sdp_media_formats_len, 
+//GO(gst_sdp_media_free, 
+//GO(gst_sdp_media_get_attribute, 
+//GO(gst_sdp_media_get_attribute_val, 
+//GO(gst_sdp_media_get_attribute_val_n, 
+//GO(gst_sdp_media_get_bandwidth, 
+//GO(gst_sdp_media_get_caps_from_media, 
+//GO(gst_sdp_media_get_connection, 
+//GO(gst_sdp_media_get_format, 
+//GO(gst_sdp_media_get_information, 
+//GO(gst_sdp_media_get_key, 
+//GO(gst_sdp_media_get_media, 
+//GO(gst_sdp_media_get_num_ports, 
+//GO(gst_sdp_media_get_port, 
+//GO(gst_sdp_media_get_proto, 
+//GO(gst_sdp_media_init, 
+//GO(gst_sdp_media_insert_attribute, 
+//GO(gst_sdp_media_insert_bandwidth, 
+//GO(gst_sdp_media_insert_connection, 
+//GO(gst_sdp_media_insert_format, 
+//GO(gst_sdp_media_new, 
+//GO(gst_sdp_media_parse_keymgmt, 
+//GO(gst_sdp_media_remove_attribute, 
+//GO(gst_sdp_media_remove_bandwidth, 
+//GO(gst_sdp_media_remove_connection, 
+//GO(gst_sdp_media_remove_format, 
+//GO(gst_sdp_media_replace_attribute, 
+//GO(gst_sdp_media_replace_bandwidth, 
+//GO(gst_sdp_media_replace_connection, 
+//GO(gst_sdp_media_replace_format, 
+//GO(gst_sdp_media_set_information, 
+//GO(gst_sdp_media_set_key, 
+//GO(gst_sdp_media_set_media, 
+//GO(gst_sdp_media_set_media_from_caps, 
+//GO(gst_sdp_media_set_port_info, 
+//GO(gst_sdp_media_set_proto, 
+//GO(gst_sdp_media_uninit, 
+//GO(gst_sdp_message_add_attribute, 
+//GO(gst_sdp_message_add_bandwidth, 
+//GO(gst_sdp_message_add_email, 
+//GO(gst_sdp_message_add_media, 
+//GO(gst_sdp_message_add_phone, 
+//GO(gst_sdp_message_add_time, 
+//GO(gst_sdp_message_add_zone, 
+//GO(gst_sdp_message_as_text, 
+//GO(gst_sdp_message_as_uri, 
+//GO(gst_sdp_message_attributes_len, 
+//GO(gst_sdp_message_attributes_to_caps, 
+//GO(gst_sdp_message_bandwidths_len, 
+//GO(gst_sdp_message_copy, 
+//GO(gst_sdp_message_dump, 
+//GO(gst_sdp_message_emails_len, 
+//GO(gst_sdp_message_free, 
+//GO(gst_sdp_message_get_attribute, 
+//GO(gst_sdp_message_get_attribute_val, 
+//GO(gst_sdp_message_get_attribute_val_n, 
+//GO(gst_sdp_message_get_bandwidth, 
+//GO(gst_sdp_message_get_connection, 
+//GO(gst_sdp_message_get_email, 
+//GO(gst_sdp_message_get_information, 
+//GO(gst_sdp_message_get_key, 
+//GO(gst_sdp_message_get_media, 
+//GO(gst_sdp_message_get_origin, 
+//GO(gst_sdp_message_get_phone, 
+//GO(gst_sdp_message_get_session_name, 
+//GO(gst_sdp_message_get_time, 
+GO(gst_sdp_message_get_type, LFv)
+//GO(gst_sdp_message_get_uri, 
+//GO(gst_sdp_message_get_version, 
+//GO(gst_sdp_message_get_zone, 
+//GO(gst_sdp_message_init, 
+//GO(gst_sdp_message_insert_attribute, 
+//GO(gst_sdp_message_insert_bandwidth, 
+//GO(gst_sdp_message_insert_email, 
+//GO(gst_sdp_message_insert_phone, 
+//GO(gst_sdp_message_insert_time, 
+//GO(gst_sdp_message_insert_zone, 
+//GO(gst_sdp_message_medias_len, 
+//GO(gst_sdp_message_new, 
+//GO(gst_sdp_message_new_from_text, 
+//GO(gst_sdp_message_parse_buffer, 
+//GO(gst_sdp_message_parse_keymgmt, 
+//GO(gst_sdp_message_parse_uri, 
+//GO(gst_sdp_message_phones_len, 
+//GO(gst_sdp_message_remove_attribute, 
+//GO(gst_sdp_message_remove_bandwidth, 
+//GO(gst_sdp_message_remove_email, 
+//GO(gst_sdp_message_remove_phone, 
+//GO(gst_sdp_message_remove_time, 
+//GO(gst_sdp_message_remove_zone, 
+//GO(gst_sdp_message_replace_attribute, 
+//GO(gst_sdp_message_replace_bandwidth, 
+//GO(gst_sdp_message_replace_email, 
+//GO(gst_sdp_message_replace_phone, 
+//GO(gst_sdp_message_replace_time, 
+//GO(gst_sdp_message_replace_zone, 
+//GO(gst_sdp_message_set_connection, 
+//GO(gst_sdp_message_set_information, 
+//GO(gst_sdp_message_set_key, 
+//GO(gst_sdp_message_set_origin, 
+//GO(gst_sdp_message_set_session_name, 
+//GO(gst_sdp_message_set_uri, 
+//GO(gst_sdp_message_set_version, 
+//GO(gst_sdp_message_times_len, 
+//GO(gst_sdp_message_uninit, 
+//GO(gst_sdp_message_zones_len, 
+//GO(gst_sdp_time_clear, 
+//GO(gst_sdp_time_set, 
+//GO(gst_sdp_zone_clear, 
+//GO(gst_sdp_zone_set, 
diff --git a/src/wrapped/wrappedgsttag_private.h b/src/wrapped/wrappedgsttag_private.h
index 26e284ae..9049c9e8 100644
--- a/src/wrapped/wrappedgsttag_private.h
+++ b/src/wrapped/wrappedgsttag_private.h
@@ -5,7 +5,7 @@
 //GO(gst_tag_check_language_code, 
 //GO(gst_tag_demux_get_type, 
 //GO(gst_tag_demux_result_get_type, 
-//GO(gst_tag_freeform_string_to_utf8, 
+GO(gst_tag_freeform_string_to_utf8, pFpip)
 //GO(gst_tag_from_id3_tag, 
 //GO(gst_tag_from_id3_user_tag, 
 //GO(gst_tag_from_vorbis_tag, 
@@ -24,15 +24,15 @@ GO(gst_tag_get_language_name, pFp)
 //GO(gst_tag_get_license_version, 
 //GO(gst_tag_id3_genre_count, 
 //GO(gst_tag_id3_genre_get, 
-//GO(gst_tag_image_data_to_image_sample, 
+GO(gst_tag_image_data_to_image_sample, pFpui)
 //GO(gst_tag_image_type_get_type, 
 //GO(gst_tag_license_flags_get_type, 
 //GO(gst_tag_list_add_id3_image, 
 //GO(gst_tag_list_from_exif_buffer, 
 //GO(gst_tag_list_from_exif_buffer_with_tiff_header, 
 //GO(gst_tag_list_from_id3v2_tag, 
-//GO(gst_tag_list_from_vorbiscomment, 
-//GO(gst_tag_list_from_vorbiscomment_buffer, 
+GO(gst_tag_list_from_vorbiscomment, pFpLpup)
+GO(gst_tag_list_from_vorbiscomment_buffer, pFppup)
 //GO(gst_tag_list_from_xmp_buffer, 
 //GO(gst_tag_list_new_from_id3v1, 
 //GO(gst_tag_list_to_exif_buffer, 
diff --git a/src/wrapped/wrappedgstvideo.c b/src/wrapped/wrappedgstvideo.c
index 7bb08d74..eb9bbd16 100644
--- a/src/wrapped/wrappedgstvideo.c
+++ b/src/wrapped/wrappedgstvideo.c
@@ -11,12 +11,47 @@
 #include "bridge.h"
 #include "librarian/library_private.h"
 #include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+#include "myalign.h"
+#include "gtkclass.h"
+#include "fileutils.h"
 
 const char* gstvideoName = "libgstvideo-1.0.so.0";
 #define LIBNAME gstvideo
 
+typedef size_t  (*LFv_t)();
+
+#define ADDED_FUNCTIONS()                           \
+    GO(gst_video_decoder_get_type, LFv_t)           \
+    GO(gst_video_encoder_get_type, LFv_t)           \
+    GO(gst_video_sink_get_type, LFv_t)              \
+    GO(gst_video_aggregator_get_type, LFv_t)        \
+    GO(gst_video_aggregator_pad_get_type, LFv_t)    \
+    GO(gst_video_filter_get_type, LFv_t)            \
+
+#include "generated/wrappedgstbasetypes.h"
+
+#include "wrappercallback.h"
+
 #define PRE_INIT    \
     if(box64_nogtk) \
         return -1;
 
+#define CUSTOM_INIT \
+    getMy(lib);     \
+    SetGstVideoDecoderID(my->gst_video_decoder_get_type());\
+    SetGstVideoEncoderID(my->gst_video_encoder_get_type());\
+    SetGstVideoSinkID(my->gst_video_sink_get_type());\
+    SetGstVideoAggregatorID(my->gst_video_aggregator_get_type());\
+    SetGstVideoAggregatorPadID(my->gst_video_aggregator_pad_get_type());\
+    SetGstVideoFilterID(my->gst_video_filter_get_type());\
+    setNeededLibs(lib, 1, "libgstreamer-1.0.so.0");
+
+#define CUSTOM_FINI \
+    freeMy();
+
 #include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedgstvideo_private.h b/src/wrapped/wrappedgstvideo_private.h
index 27eb4aec..56d66473 100644
--- a/src/wrapped/wrappedgstvideo_private.h
+++ b/src/wrapped/wrappedgstvideo_private.h
@@ -3,44 +3,53 @@
 #endif
 
 //GO(gst_buffer_add_video_afd_meta, 
-//GO(gst_buffer_add_video_affine_transformation_meta, 
+GO(gst_buffer_add_video_affine_transformation_meta, pFp)
 //GO(gst_buffer_add_video_bar_meta, 
-//GO(gst_buffer_add_video_caption_meta, 
+GO(gst_buffer_add_video_caption_meta, pFpipL)
+GO(gst_buffer_add_video_codec_alpha_meta, pFpp)
 //GO(gst_buffer_add_video_gl_texture_upload_meta, 
-//GO(gst_buffer_add_video_meta, 
-//GO(gst_buffer_add_video_meta_full, 
+GO(gst_buffer_add_video_meta, pFpiiuu)
+GO(gst_buffer_add_video_meta_full, pFpiiuuupp)
 //GO(gst_buffer_add_video_overlay_composition_meta, 
 //GO(gst_buffer_add_video_region_of_interest_meta, 
 //GO(gst_buffer_add_video_region_of_interest_meta_id, 
-//GO(gst_buffer_add_video_time_code_meta, 
+GO(gst_buffer_add_video_time_code_meta, pFpp)
 //GO(gst_buffer_add_video_time_code_meta_full, 
-//GO(gst_buffer_get_video_meta, 
+GO(gst_buffer_get_video_meta, pFp)
 //GO(gst_buffer_get_video_meta_id, 
 //GO(gst_buffer_get_video_region_of_interest_meta_id, 
 GO(gst_buffer_pool_config_get_video_alignment, iFpp)
 GO(gst_buffer_pool_config_set_video_alignment, vFpp)
-//GO(gst_color_balance_channel_get_type, 
+GO(gst_color_balance_channel_get_type, LFv)
 GO(gst_color_balance_get_balance_type, uFp)
-//GO(gst_color_balance_get_type, 
+GO(gst_color_balance_get_type, LFv)
 GO(gst_color_balance_get_value, iFpp)
 GO(gst_color_balance_list_channels, pFp)
-//GO(gst_color_balance_set_value, 
+GO(gst_color_balance_set_value, vFppi)
 //GO(gst_color_balance_type_get_type, 
 GO(gst_color_balance_value_changed, vFppi)
 //GO(gst_is_video_overlay_prepare_window_handle_message, 
 //GO(gst_navigation_command_get_type, 
-//GO(gst_navigation_event_get_type, 
+GO(gst_navigation_event_get_coordinates, iFppp)
+GO(gst_navigation_event_get_type, LFv)
+GO(gst_navigation_event_new_key_press, pFpi)
+GO(gst_navigation_event_new_key_release, pFpi)
+GO(gst_navigation_event_new_mouse_button_press, pFpddi)
+GO(gst_navigation_event_new_mouse_button_release, pFpddi)
+GO(gst_navigation_event_new_mouse_move, pFddi)
+GO(gst_navigation_event_new_mouse_scroll, pFddddi)
 //GO(gst_navigation_event_parse_command, 
-//GO(gst_navigation_event_parse_key_event, 
+GO(gst_navigation_event_parse_key_event, iFpp)
 //GO(gst_navigation_event_parse_mouse_button_event, 
 //GO(gst_navigation_event_parse_mouse_move_event, 
-//GO(gst_navigation_event_parse_mouse_scroll_event, 
+GO(gst_navigation_event_parse_mouse_scroll_event, iFppppp)
+GO(gst_navigation_event_set_coordinates, iFpdd)
 //GO(gst_navigation_event_type_get_type, 
-//GO(gst_navigation_get_type, 
+GO(gst_navigation_get_type, LFv)
 //GO(gst_navigation_message_get_type, 
 //GO(gst_navigation_message_new_angles_changed, 
 //GO(gst_navigation_message_new_commands_changed, 
-//GO(gst_navigation_message_new_event, 
+GO(gst_navigation_message_new_event, pFpp)
 //GO(gst_navigation_message_new_mouse_over, 
 //GO(gst_navigation_message_parse_angles_changed, 
 //GO(gst_navigation_message_parse_event, 
@@ -55,136 +64,140 @@ GO(gst_color_balance_value_changed, vFppi)
 //GO(gst_navigation_query_set_angles, 
 //GO(gst_navigation_query_set_commands, 
 //GO(gst_navigation_query_set_commandsv, 
-//GO(gst_navigation_query_type_get_type, 
+GO(gst_navigation_query_type_get_type, LFv)
 GO(gst_navigation_send_command, vFpu)
 GO(gst_navigation_send_event, vFpp)
+GO(gst_navigation_send_event_simple, vFpp)
 GO(gst_navigation_send_key_event, vFppp)
 GO(gst_navigation_send_mouse_event, vFppidd)
 GO(gst_navigation_send_mouse_scroll_event, vFpdddd)
-//GO(gst_video_afd_meta_api_get_type, 
+GO(gst_video_afd_meta_api_get_type, LFv)
 //GO(gst_video_afd_meta_get_info, 
-//GO(gst_video_afd_spec_get_type, 
-//GO(gst_video_afd_value_get_type, 
-//GO(gst_video_affine_transformation_meta_api_get_type, 
+GO(gst_video_afd_spec_get_type, LFv)
+GO(gst_video_afd_value_get_type, LFv)
+GO(gst_video_affine_transformation_meta_api_get_type, LFv)
 //GO(gst_video_affine_transformation_meta_apply_matrix, 
 //GO(gst_video_affine_transformation_meta_get_info, 
-//GO(gst_video_aggregator_convert_pad_get_type, 
+GO(gst_video_aggregator_convert_pad_get_type, LFv)
 //GO(gst_video_aggregator_convert_pad_update_conversion_info, 
-//GO(gst_video_aggregator_get_type, 
-//GO(gst_video_aggregator_pad_get_current_buffer, 
+GO(gst_video_aggregator_get_type, LFv)
+GO(gst_video_aggregator_pad_get_current_buffer, pFp)
 //GO(gst_video_aggregator_pad_get_prepared_frame, 
-//GO(gst_video_aggregator_pad_get_type, 
+GO(gst_video_aggregator_pad_get_type, LFv)
 //GO(gst_video_aggregator_pad_has_current_buffer, 
 //GO(gst_video_aggregator_pad_set_needs_alpha, 
 GO(gst_video_alignment_reset, vFp)
-//GO(gst_video_alpha_mode_get_type, 
-//GO(gst_video_ancillary_di_d16_get_type, 
-//GO(gst_video_ancillary_did_get_type, 
-//GO(gst_video_bar_meta_api_get_type, 
+GO(gst_video_alpha_mode_get_type, LFv)
+GO(gst_video_ancillary_di_d16_get_type, LFv)
+GO(gst_video_ancillary_did_get_type, LFv)
+GO(gst_video_bar_meta_api_get_type, LFv)
 //GO(gst_video_bar_meta_get_info, 
 //GO(gst_video_blend, 
 //GO(gst_video_blend_scale_linear_RGBA, 
-//GO(gst_video_buffer_flags_get_type, 
-//GO(gst_video_buffer_pool_get_type, 
+GO(gst_video_buffer_flags_get_type, LFv)
+GO(gst_video_buffer_pool_get_type, LFv)
 GO(gst_video_buffer_pool_new, pFv)
 GO(gst_video_calculate_display_ratio, iFppuuuuuu)
-//GO(gst_video_caption_meta_api_get_type, 
+GO(gst_video_caption_meta_api_get_type, LFv)
 //GO(gst_video_caption_meta_get_info, 
 //GO(gst_video_caption_type_from_caps, 
-//GO(gst_video_caption_type_get_type, 
+GO(gst_video_caption_type_get_type, LFv)
 //GO(gst_video_caption_type_to_caps, 
-//GO(gst_video_chroma_flags_get_type, 
+GO(gst_video_chroma_flags_get_type, LFv)
 //GO(gst_video_chroma_from_string, 
-//GO(gst_video_chroma_method_get_type, 
-//GO(gst_video_chroma_mode_get_type, 
+GO(gst_video_chroma_method_get_type, LFv)
+GO(gst_video_chroma_mode_get_type, LFv)
 GO(gst_video_chroma_resample, vFppi)
 GO(gst_video_chroma_resample_free, vFp)
 GO(gst_video_chroma_resample_get_info, vFppp)
 GO(gst_video_chroma_resample_new, pFuuuuii)
-//GO(gst_video_chroma_site_get_type, 
+GO(gst_video_chroma_site_get_type, LFv)
 GO(gst_video_chroma_to_string, pFu)
-//GO(gst_video_codec_frame_get_type, 
+GO(gst_video_codec_frame_get_type, LFv)
 //GO(gst_video_codec_frame_get_user_data, 
-//GO(gst_video_codec_frame_ref, 
+GO(gst_video_codec_frame_ref, pFp)
 //GO(gst_video_codec_frame_set_user_data, 
-//GO(gst_video_codec_frame_unref, 
-//GO(gst_video_codec_state_get_type, 
-//GO(gst_video_codec_state_ref, 
-//GO(gst_video_codec_state_unref, 
+GO(gst_video_codec_frame_unref, vFp)
+GO(gst_video_codec_state_get_type, LFv)
+GO(gst_video_codec_state_ref, pFp)
+GO(gst_video_codec_state_unref, vFp)
 GO(gst_video_colorimetry_from_string, iFpp)
 GO(gst_video_colorimetry_is_equal, iFpp)
 GO(gst_video_colorimetry_matches, iFpp)
 GO(gst_video_colorimetry_to_string, pFp)
 GO(gst_video_color_matrix_from_iso, uFu)
 GO(gst_video_color_matrix_get_Kr_Kb, iFupp)
-//GO(gst_video_color_matrix_get_type, 
+GO(gst_video_color_matrix_get_type, LFv)
 GO(gst_video_color_matrix_to_iso, uFu)
 GO(gst_video_color_primaries_from_iso, uFu)
 GO(gst_video_color_primaries_get_info, pFu)
-//GO(gst_video_color_primaries_get_type, 
+GO(gst_video_color_primaries_get_type, LFv)
 GO(gst_video_color_primaries_to_iso, uFu)
-//GO(gst_video_color_range_get_type, 
+GO(gst_video_color_range_get_type, LFv)
 //GO(gst_video_color_range_offsets, 
 //GO(gst_video_color_transfer_decode, 
 //GO(gst_video_color_transfer_encode, 
-//GO(gst_video_content_light_level_add_to_caps, 
+GO(gst_video_content_light_level_add_to_caps, iFpp)
 //GO(gst_video_content_light_level_from_caps, 
 GO(gst_video_content_light_level_from_string, iFpp)
 GO(gst_video_content_light_level_init, vFp)
 GO(gst_video_content_light_level_to_string, pFp)
-//GO(gst_video_converter_frame, 
-//GO(gst_video_converter_free, 
+GO(gst_video_converter_frame, vFppp)
+GO(gst_video_converter_free, vFp)
 GO(gst_video_converter_get_config, pFp)
-//GO(gst_video_converter_new, 
+GO(gst_video_converter_new, pFppp)
 GO(gst_video_converter_set_config, iFpp)
 //GO(gst_video_convert_sample, 
 //GO(gst_video_convert_sample_async, 
-//GO(gst_video_crop_meta_api_get_type, 
-//GO(gst_video_crop_meta_get_info, 
-//GO(gst_video_decoder_add_to_frame, 
+GO(gst_video_crop_meta_api_get_type, LFv)
+GO(gst_video_crop_meta_get_info, pFv)
+GO(gst_video_decoder_add_to_frame, vFpi)
 //GO(gst_video_decoder_allocate_output_buffer, 
-//GO(gst_video_decoder_allocate_output_frame, 
+GO(gst_video_decoder_allocate_output_frame, iFpp)
 //GO(gst_video_decoder_allocate_output_frame_with_params, 
-//GO(gst_video_decoder_drop_frame, 
-//GO(_gst_video_decoder_error, 
-//GO(gst_video_decoder_finish_frame, 
+GO(gst_video_decoder_drop_frame, iFpp)
+GO(_gst_video_decoder_error, iFpipippppi)
+GO(gst_video_decoder_finish_frame, iFpp)
 //GO(gst_video_decoder_get_allocator, 
-//GO(gst_video_decoder_get_buffer_pool, 
+GO(gst_video_decoder_get_buffer_pool, pFp)
 //GO(gst_video_decoder_get_estimate_rate, 
-//GO(gst_video_decoder_get_frame, 
-//GO(gst_video_decoder_get_frames, 
+GO(gst_video_decoder_get_frame, pFpi)
+GO(gst_video_decoder_get_frames, pFp)
 //GO(gst_video_decoder_get_latency, 
-//GO(gst_video_decoder_get_max_decode_time, 
+GO(gst_video_decoder_get_max_decode_time, IFpp)
 //GO(gst_video_decoder_get_max_errors, 
 //GO(gst_video_decoder_get_needs_format, 
 //GO(gst_video_decoder_get_oldest_frame, 
-//GO(gst_video_decoder_get_output_state, 
+GO(gst_video_decoder_get_output_state, pFp)
 //GO(gst_video_decoder_get_packetized, 
 //GO(gst_video_decoder_get_pending_frame_size, 
 //GO(gst_video_decoder_get_qos_proportion, 
-//GO(gst_video_decoder_get_type, 
-//GO(gst_video_decoder_have_frame, 
-//GO(gst_video_decoder_merge_tags, 
-//GO(gst_video_decoder_negotiate, 
-//GO(gst_video_decoder_proxy_getcaps, 
-//GO(gst_video_decoder_release_frame, 
+GO(gst_video_decoder_get_subframe_mode, iFp)
+GO(gst_video_decoder_get_type, LFv)
+GO(gst_video_decoder_have_frame, iFp)
+GO(gst_video_decoder_have_last_subframe, iFpp)
+GO(gst_video_decoder_merge_tags, vFppi)
+GO(gst_video_decoder_negotiate, iFp)
+GO(gst_video_decoder_proxy_getcaps, pFppp)
+GO(gst_video_decoder_release_frame, vFpp)
 //GO(gst_video_decoder_set_estimate_rate, 
-//GO(gst_video_decoder_set_interlaced_output_state, 
-//GO(gst_video_decoder_set_latency, 
+GO(gst_video_decoder_set_interlaced_output_state, pFpiiuup)
+GO(gst_video_decoder_set_latency, vFpUU)
 //GO(gst_video_decoder_set_max_errors, 
-//GO(gst_video_decoder_set_needs_format, 
-//GO(gst_video_decoder_set_output_state, 
-//GO(gst_video_decoder_set_packetized, 
-//GO(gst_video_decoder_set_use_default_pad_acceptcaps, 
-//GO(gst_video_direction_get_type, 
+GO(gst_video_decoder_set_needs_format, vFpi)
+GO(gst_video_decoder_set_output_state, pFpiuup)
+GO(gst_video_decoder_set_packetized, vFpi)
+GO(gst_video_decoder_set_subframe_mode, vFpi)
+GO(gst_video_decoder_set_use_default_pad_acceptcaps, vFpi)
+GO(gst_video_direction_get_type, LFv)
 //GO(gst_video_dither_flags_get_type, 
 GO(gst_video_dither_free, vFp)
 GO(gst_video_dither_line, vFppuuu)
-//GO(gst_video_dither_method_get_type, 
+GO(gst_video_dither_method_get_type, LFv)
 GO(gst_video_dither_new, pFuuupu)
-//GO(gst_video_encoder_allocate_output_buffer, 
-//GO(gst_video_encoder_allocate_output_frame, 
-//GO(gst_video_encoder_finish_frame, 
+GO(gst_video_encoder_allocate_output_buffer, pFpL)
+GO(gst_video_encoder_allocate_output_frame, iFppL)
+GO(gst_video_encoder_finish_frame, iFpp)
 //GO(gst_video_encoder_finish_subframe, 
 //GO(gst_video_encoder_get_allocator, 
 //GO(gst_video_encoder_get_frame, 
@@ -192,36 +205,36 @@ GO(gst_video_dither_new, pFuuupu)
 //GO(gst_video_encoder_get_latency, 
 //GO(gst_video_encoder_get_max_encode_time, 
 //GO(gst_video_encoder_get_min_force_key_unit_interval, 
-//GO(gst_video_encoder_get_oldest_frame, 
+GO(gst_video_encoder_get_oldest_frame, pFp)
 //GO(gst_video_encoder_get_output_state, 
-//GO(gst_video_encoder_get_type, 
+GO(gst_video_encoder_get_type, LFv)
 //GO(gst_video_encoder_is_qos_enabled, 
-//GO(gst_video_encoder_merge_tags, 
-//GO(gst_video_encoder_negotiate, 
-//GO(gst_video_encoder_proxy_getcaps, 
-//GO(gst_video_encoder_set_headers, 
+GO(gst_video_encoder_merge_tags, vFppi)
+GO(gst_video_encoder_negotiate, iFp)
+GO(gst_video_encoder_proxy_getcaps, pFppp)
+GO(gst_video_encoder_set_headers, vFpp)
 //GO(gst_video_encoder_set_latency, 
 //GO(gst_video_encoder_set_min_force_key_unit_interval, 
-//GO(gst_video_encoder_set_min_pts, 
-//GO(gst_video_encoder_set_output_state, 
+GO(gst_video_encoder_set_min_pts, vFpU)
+GO(gst_video_encoder_set_output_state, pFppp)
 //GO(gst_video_encoder_set_qos_enabled, 
 //GO(gst_video_event_is_force_key_unit, 
 //GO(gst_video_event_new_downstream_force_key_unit, 
 //GO(gst_video_event_new_still_frame, 
 //GO(gst_video_event_new_upstream_force_key_unit, 
 //GO(gst_video_event_parse_downstream_force_key_unit, 
-//GO(gst_video_event_parse_still_frame, 
+GO(gst_video_event_parse_still_frame, iFpp)
 //GO(gst_video_event_parse_upstream_force_key_unit, 
 GO(gst_video_field_order_from_string, uFp)
-GO(gst_video_field_order_get_type, pFv)
+GO(gst_video_field_order_get_type, LFv)
 GO(gst_video_field_order_to_string, pFu)
-GO(gst_video_filter_get_type, pFv)
-GO(gst_video_flags_get_type, pFv)
-GO(gst_video_format_flags_get_type, pFv)
+GO(gst_video_filter_get_type, LFv)
+GO(gst_video_flags_get_type, LFv)
+GO(gst_video_format_flags_get_type, LFv)
 GO(gst_video_format_from_fourcc, uFu)
 GO(gst_video_format_from_masks, uFiiiuuuu)
 GO(gst_video_format_from_string, uFp)
-//GO(gst_video_format_get_info, 
+GO(gst_video_format_get_info, pFi)
 GO(gst_video_format_get_palette, pFup)
 //GO(gst_video_format_get_type, 
 //GO(gst_video_format_info_component, 
@@ -229,14 +242,14 @@ GO(gst_video_formats_raw, pFp)
 GO(gst_video_format_to_fourcc, uFu)
 GO(gst_video_format_to_string, pFu)
 GO(gst_video_frame_copy, iFpp)
-//GO(gst_video_frame_copy_plane, 
+GO(gst_video_frame_copy_plane, iFppu)
 //GO(gst_video_frame_flags_get_type, 
 GO(gst_video_frame_map, iFpppu)
 //GO(gst_video_frame_map_flags_get_type, 
 //GO(gst_video_frame_map_id, 
 GO(gst_video_frame_unmap, vFp)
-//GO(gst_video_gamma_mode_get_type, 
-//GO(gst_video_gl_texture_upload_meta_api_get_type, 
+GO(gst_video_gamma_mode_get_type, LFv)
+GO(gst_video_gl_texture_upload_meta_api_get_type, LFv)
 //GO(gst_video_gl_texture_upload_meta_get_info, 
 //GO(gst_video_gl_texture_upload_meta_upload, 
 GO(gst_video_guess_framerate, iFLpp)
@@ -246,7 +259,7 @@ GO(gst_video_info_convert, iFpiIip)
 GO(gst_video_info_copy, pFp)
 GO(gst_video_info_free, vFp)
 GO(gst_video_info_from_caps, iFpp)
-GO(gst_video_info_get_type, pFv)
+GO(gst_video_info_get_type, LFv)
 GO(gst_video_info_init, vFp)
 GO(gst_video_info_is_equal, iFpp)
 GO(gst_video_info_new, pFv)
@@ -254,28 +267,29 @@ GO(gst_video_info_set_format, iFpiuu)
 GO(gst_video_info_set_interlaced_format, iFpiiuu)
 GO(gst_video_info_to_caps, pFp)
 GO(gst_video_interlace_mode_from_string, uFp)
-GO(gst_video_interlace_mode_get_type, pFv)
+GO(gst_video_interlace_mode_get_type, LFv)
 GO(gst_video_interlace_mode_to_string, pFu)
+GO(gst_video_is_common_aspect_ratio, iFiiii)
 //GO(gst_video_make_raw_caps, 
 //GO(gst_video_make_raw_caps_with_features, 
-//GO(gst_video_mastering_display_info_add_to_caps, 
+GO(gst_video_mastering_display_info_add_to_caps, iFpp)
 //GO(gst_video_mastering_display_info_from_caps, 
 GO(gst_video_mastering_display_info_from_string, iFpp)
 GO(gst_video_mastering_display_info_init, vFp)
 GO(gst_video_mastering_display_info_is_equal, iFpp)
 GO(gst_video_mastering_display_info_to_string, pFp)
-//GO(gst_video_matrix_mode_get_type, 
-GO(gst_video_meta_api_get_type, pFv)
+GO(gst_video_matrix_mode_get_type, LFv)
+GO(gst_video_meta_api_get_type, LFv)
 //GO(gst_video_meta_get_info, 
 //GO(gst_video_meta_get_plane_height, 
 //GO(gst_video_meta_get_plane_size, 
 //GO(gst_video_meta_map, 
-//GO(gst_video_meta_set_alignment, 
-GO(gst_video_meta_transform_scale_get_quark, uFv)
+GO(gst_video_meta_set_alignment, iFpi)
+GO(gst_video_meta_transform_scale_get_quark, pFv)
 //GO(gst_video_meta_unmap, 
-//GO(gst_video_multiview_flagset_get_type, 
-//GO(gst_video_multiview_flags_get_type, 
-//GO(gst_video_multiview_frame_packing_get_type, 
+GO(gst_video_multiview_flagset_get_type, LFv)
+GO(gst_video_multiview_flags_get_type, LFv)
+GO(gst_video_multiview_frame_packing_get_type, LFv)
 //GO(gst_video_multiview_get_doubled_height_modes, 
 GO(gst_video_multiview_get_doubled_size_modes, pFv)
 //GO(gst_video_multiview_get_doubled_width_modes, 
@@ -283,15 +297,16 @@ GO(gst_video_multiview_get_doubled_size_modes, pFv)
 //GO(gst_video_multiview_get_unpacked_modes, 
 GO(gst_video_multiview_guess_half_aspect, iFiuuuu)
 GO(gst_video_multiview_mode_from_caps_string, iFp)
-//GO(gst_video_multiview_mode_get_type, 
+GO(gst_video_multiview_mode_get_type, LFv)
 GO(gst_video_multiview_mode_to_caps_string, pFi)
-//GO(gst_video_multiview_video_info_change_mode, 
+GO(gst_video_multiview_video_info_change_mode, vFpii)
+GO(gst_video_orientation_from_tag, iFpp)
 //GO(gst_video_orientation_get_hcenter, 
 //GO(gst_video_orientation_get_hflip, 
-//GO(gst_video_orientation_get_type, 
+GO(gst_video_orientation_get_type, LFv)
 GO(gst_video_orientation_get_vcenter, iFpp)
 GO(gst_video_orientation_get_vflip, iFpp)
-//GO(gst_video_orientation_method_get_type, 
+GO(gst_video_orientation_method_get_type, LFv)
 //GO(gst_video_orientation_set_hcenter, 
 //GO(gst_video_orientation_set_hflip, 
 GO(gst_video_orientation_set_vcenter, iFpi)
@@ -301,18 +316,18 @@ GO(gst_video_overlay_composition_add_rectangle, vFpp)
 //GO(gst_video_overlay_composition_copy, 
 GO(gst_video_overlay_composition_get_rectangle, pFpu)
 GO(gst_video_overlay_composition_get_seqnum, uFp)
-//GO(gst_video_overlay_composition_get_type, 
+GO(gst_video_overlay_composition_get_type, LFv)
 GO(gst_video_overlay_composition_make_writable, pFp)
-//GO(gst_video_overlay_composition_meta_api_get_type, 
+GO(gst_video_overlay_composition_meta_api_get_type, LFv)
 //GO(gst_video_overlay_composition_meta_get_info, 
 GO(gst_video_overlay_composition_new, pFp)
-//GO(gst_video_overlay_composition_n_rectangles, 
-//GO(gst_video_overlay_expose, 
-//GO(gst_video_overlay_format_flags_get_type, 
-//GO(gst_video_overlay_get_type, 
+GO(gst_video_overlay_composition_n_rectangles, uFp)
+GO(gst_video_overlay_expose, vFp)
+GO(gst_video_overlay_format_flags_get_type, LFv)
+GO(gst_video_overlay_get_type, LFv)
 GO(gst_video_overlay_got_window_handle, vFpL)
 GO(gst_video_overlay_handle_events, vFpi)
-//GO(gst_video_overlay_install_properties, 
+GO(gst_video_overlay_install_properties, vFpi)
 GO(gst_video_overlay_prepare_window_handle, vFp)
 GO(gst_video_overlay_rectangle_copy, pFp)
 GO(gst_video_overlay_rectangle_get_flags, uFp)
@@ -325,46 +340,46 @@ GO(gst_video_overlay_rectangle_get_global_alpha, fFp)
 //GO(gst_video_overlay_rectangle_get_pixels_unscaled_raw, 
 GO(gst_video_overlay_rectangle_get_render_rectangle, iFppppp)
 GO(gst_video_overlay_rectangle_get_seqnum, uFp)
-//GO(gst_video_overlay_rectangle_get_type, 
+GO(gst_video_overlay_rectangle_get_type, LFv)
 //GO(gst_video_overlay_rectangle_new_raw, 
 GO(gst_video_overlay_rectangle_set_global_alpha, vFpf)
 GO(gst_video_overlay_rectangle_set_render_rectangle, vFpiiuu)
 GO(gst_video_overlay_set_property, iFpiup)
 GO(gst_video_overlay_set_render_rectangle, iFpiiii)
-//GO(gst_video_overlay_set_window_handle, 
-//GO(gst_video_pack_flags_get_type, 
-//GO(gst_video_primaries_mode_get_type, 
+GO(gst_video_overlay_set_window_handle, vFpL)
+GO(gst_video_pack_flags_get_type, LFv)
+GO(gst_video_primaries_mode_get_type, LFv)
 //GO(gst_video_region_of_interest_meta_add_param, 
-//GO(gst_video_region_of_interest_meta_api_get_type, 
+GO(gst_video_region_of_interest_meta_api_get_type, LFv)
 //GO(gst_video_region_of_interest_meta_get_info, 
 //GO(gst_video_region_of_interest_meta_get_param, 
 GO(gst_video_resampler_clear, vFp)
-//GO(gst_video_resampler_flags_get_type, 
+GO(gst_video_resampler_flags_get_type, LFv)
 GO(gst_video_resampler_init, iFpuuuuduup)
-//GO(gst_video_resampler_method_get_type, 
+GO(gst_video_resampler_method_get_type, LFv)
 GO(gst_video_scaler_2d, vFppupipiuuuu)
 GO(gst_video_scaler_combine_packed_YUV, pFppuu)
-//GO(gst_video_scaler_flags_get_type, 
+GO(gst_video_scaler_flags_get_type, LFv)
 GO(gst_video_scaler_free, vFp)
 GO(gst_video_scaler_get_coeff, pFpupp)
 GO(gst_video_scaler_get_max_taps, uFp)
 GO(gst_video_scaler_horizontal, vFpuppuu)
 GO(gst_video_scaler_new, pFuuuuup)
 GO(gst_video_scaler_vertical, vFpuppuu)
-//GO(gst_video_sink_center_rect, 
-//GO(gst_video_sink_get_type, 
+GO(gst_video_sink_center_rect, vFpppppi)    // this is vFHHpi, with 2 GstVideoRectangle struct that are 4 ints
+GO(gst_video_sink_get_type, LFv)
 GO(gst_video_tile_get_index, uFuiiii)
-//GO(gst_video_tile_mode_get_type, 
-//GO(gst_video_tile_type_get_type, 
+GO(gst_video_tile_mode_get_type, LFv)
+GO(gst_video_tile_type_get_type, LFv)
 GO(gst_video_time_code_add_frames, vFpl)
 GO(gst_video_time_code_add_interval, pFpp)
 //GO(gst_video_time_code_clear, 
 GO(gst_video_time_code_compare, iFpp)
 GO(gst_video_time_code_copy, pFp)
-//GO(gst_video_time_code_flags_get_type, 
+GO(gst_video_time_code_flags_get_type, LFv)
 GO(gst_video_time_code_frames_since_daily_jam, LFp)
-//GO(gst_video_time_code_free, 
-//GO(gst_video_time_code_get_type, 
+GO(gst_video_time_code_free, vFp)
+GO(gst_video_time_code_get_type, LFv)
 GO(gst_video_time_code_increment_frame, vFp)
 GO(gst_video_time_code_init, vFpuupuuuuuu)
 GO(gst_video_time_code_init_from_date_time, vFpuupuu)
@@ -372,12 +387,12 @@ GO(gst_video_time_code_init_from_date_time_full, iFpuupuu)
 GO(gst_video_time_code_interval_clear, vFp)
 GO(gst_video_time_code_interval_copy, pFp)
 //GO(gst_video_time_code_interval_free, 
-//GO(gst_video_time_code_interval_get_type, 
+GO(gst_video_time_code_interval_get_type, LFv)
 GO(gst_video_time_code_interval_init, vFpuuuu)
 GO(gst_video_time_code_interval_new, pFuuuu)
 GO(gst_video_time_code_interval_new_from_string, pFp)
 GO(gst_video_time_code_is_valid, iFp)
-//GO(gst_video_time_code_meta_api_get_type, 
+GO(gst_video_time_code_meta_api_get_type, LFv)
 //GO(gst_video_time_code_meta_get_info, 
 GO(gst_video_time_code_new, pFuupuuuuuu)
 GO(gst_video_time_code_new_empty, pFv)
diff --git a/src/wrapped/wrappedlibogg_private.h b/src/wrapped/wrappedlibogg_private.h
index 3440cc2e..1f1a96f9 100644
--- a/src/wrapped/wrappedlibogg_private.h
+++ b/src/wrapped/wrappedlibogg_private.h
@@ -47,8 +47,8 @@ GO(ogg_page_checksum_set, iFp)
 GO(ogg_page_continued, iFp)
 GO(ogg_page_eos, iFp)
 GO(ogg_page_granulepos, IFp)
-//GO(ogg_page_packets, 
-//GO(ogg_page_pageno, 
+GO(ogg_page_packets, iFp)
+GO(ogg_page_pageno, lFp)
 GO(ogg_page_serialno, iFp)
 //GO(ogg_page_version, 
 //GO(ogg_stream_check, 
diff --git a/src/wrapped/wrappedlibva_private.h b/src/wrapped/wrappedlibva_private.h
index cba8dc0e..c8592038 100644
--- a/src/wrapped/wrappedlibva_private.h
+++ b/src/wrapped/wrappedlibva_private.h
@@ -2,7 +2,7 @@
 #error meh!
 #endif
 
-//GO(vaAcquireBufferHandle, 
+GO(vaAcquireBufferHandle, iFpup)
 //GO(vaAssociateSubpicture, 
 //GO(vaAttachProtectedSession, 
 GO(vaBeginPicture, iFpup)
@@ -74,10 +74,10 @@ GO(vaQueryVendorString, pFp)
 //GO(vaQueryVideoProcFilterCaps, 
 //GO(vaQueryVideoProcFilters, 
 GO(vaQueryVideoProcPipelineCaps, iFpupup)
-//GO(vaReleaseBufferHandle, 
+GO(vaReleaseBufferHandle, iFpu)
 GO(vaRenderPicture, iFpupi)
 //GO(vaSetDisplayAttributes, 
-//GO(vaSetDriverName, 
+GO(vaSetDriverName, iFpp)
 GOM(vaSetErrorCallback, pFEppp)
 //GO(vaSetImagePalette, 
 GOM(vaSetInfoCallback, pFEppp)