about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-12-13 15:24:03 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-12-13 15:24:11 +0100
commitfa3db3df11f0d10a4a46f5ec5b0aaeaf34656d72 (patch)
tree74dacd24ef44f155a2b6f0ab517bfe25c2e48dc2
parent4b4c0143d951b6aa18e2102136b4b72e165459d4 (diff)
downloadbox64-fa3db3df11f0d10a4a46f5ec5b0aaeaf34656d72.tar.gz
box64-fa3db3df11f0d10a4a46f5ec5b0aaeaf34656d72.zip
[BOX32][WRAPPER] Added a arge batch of 32bits wrapped function to X11 and friends
-rw-r--r--src/libtools/my_x11_conv.c216
-rw-r--r--src/libtools/my_x11_conv.h16
-rw-r--r--src/libtools/my_x11_defs.h81
-rw-r--r--src/libtools/my_x11_defs_32.h92
-rw-r--r--src/wrapped32/generated/functions_list.txt88
-rw-r--r--src/wrapped32/generated/wrappedlibx11types32.h52
-rw-r--r--src/wrapped32/generated/wrappedlibxcursortypes32.h6
-rw-r--r--src/wrapped32/generated/wrappedlibxitypes32.h12
-rw-r--r--src/wrapped32/generated/wrappedlibxrandrtypes32.h2
-rw-r--r--src/wrapped32/generated/wrapper32.c40
-rw-r--r--src/wrapped32/generated/wrapper32.h20
-rw-r--r--src/wrapped32/wrappedlibx11.c383
-rw-r--r--src/wrapped32/wrappedlibx11_private.h86
-rw-r--r--src/wrapped32/wrappedlibxcursor.c14
-rw-r--r--src/wrapped32/wrappedlibxcursor_private.h96
-rw-r--r--src/wrapped32/wrappedlibxext_private.h10
-rw-r--r--src/wrapped32/wrappedlibxi.c60
-rw-r--r--src/wrapped32/wrappedlibxi_private.h18
-rw-r--r--src/wrapped32/wrappedlibxrandr.c7
-rw-r--r--src/wrapped32/wrappedlibxrandr_private.h2
20 files changed, 1132 insertions, 169 deletions
diff --git a/src/libtools/my_x11_conv.c b/src/libtools/my_x11_conv.c
index c9efd6e3..dec9b3b1 100644
--- a/src/libtools/my_x11_conv.c
+++ b/src/libtools/my_x11_conv.c
@@ -150,6 +150,11 @@ my_Visual_t* getVisual64(int N, my_Visual_32_t* a)
     khint_t k = kh_get(visuals, my32_Displays_Visuals[N], key);
     Visuals_t* ret = NULL;
     if(k==kh_end(my32_Displays_Visuals[N])) {
+        // workaround for already "64" Visual
+        // needed for retrocityrampge (probably other)
+        // TODO: fix the underlying issue
+        if(!a->ext_data && !a->visualid)
+            return (my_Visual_t*)a;
         int r;
         k = kh_put(visuals, my32_Displays_Visuals[N], key, &r);
         ret = &kh_value(my32_Displays_Visuals[N], k);
@@ -1005,25 +1010,53 @@ int inplace_XIDeviceInfo_enlarge(void* a)
     return n;
 }
 
-void inplace_XDevice_shrink(void* a)
+void* inplace_XDevice_shrink(void* a)
 {
-    if(!a) return;
+    if(!a) return a;
     my_XDevice_t* src = a;
     my_XDevice_32_t* dst = a;
 
-    dst->device_id = src->device_id;
+    dst->device_id = to_ulong(src->device_id);
     dst->num_classes = src->num_classes;
     dst->classes = to_ptrv(src->classes);
+
+    return a;
 }
-void inplace_XDevice_enlarge(void* a)
+void* inplace_XDevice_enlarge(void* a)
 {
-    if(!a) return;
+    if(!a) return a;
     my_XDevice_32_t* src = a;
     my_XDevice_t* dst = a;
 
     dst->classes = from_ptrv(src->classes);
     dst->num_classes = src->num_classes;
-    dst->device_id = src->device_id;
+    dst->device_id = from_ulong(src->device_id);
+
+    return a;
+}
+void* inplace_XDeviceState_shrink(void* a)
+{
+    if(!a) return a;
+    my_XDeviceState_t* src = a;
+    my_XDeviceState_32_t* dst = a;
+
+    dst->device_id = to_ulong(src->device_id);
+    dst->num_classes = src->num_classes;
+    dst->data = to_ptrv(src->data);
+
+    return a;
+}
+void* inplace_XDeviceState_enlarge(void* a)
+{
+    if(!a) return a;
+    my_XDeviceState_32_t* src = a;
+    my_XDeviceState_t* dst = a;
+
+    dst->data = from_ptrv(src->data);
+    dst->num_classes = src->num_classes;
+    dst->device_id = from_ulong(src->device_id);
+
+    return a;
 }
 
 void convert_XShmSegmentInfo_to_32(void* d, void* s)
@@ -1043,4 +1076,173 @@ void convert_XShmSegmentInfo_to_64(void* d, void* s)
     dst->shmaddr = from_ptrv(src->shmaddr);
     dst->shmid = src->shmid;
     dst->shmseg = from_ulong(src->shmseg);
-}
\ No newline at end of file
+}
+void* inplace_XkbNamesRec_shrink(void* a)
+{
+    if(a) {
+        my_XkbNamesRec_t* src = a;
+        my_XkbNamesRec_32_t* dst = a;
+
+        for(int i=0; i<src->num_rg; ++i)
+            src->radio_groups[i] = to_ulong(src->radio_groups[i]);
+        dst->keycodes = to_ulong(src->keycodes);
+        dst->geometry = to_ulong(src->geometry);
+        dst->symbols = to_ulong(src->symbols);
+        dst->types = to_ulong(src->types);
+        dst->compat = to_ulong(src->compat);
+        for(int i=0; i<16; ++i)
+            dst->vmods[i] = to_ulong(src->vmods[i]);
+        for(int i=0; i<32; ++i)
+            dst->indicators[i] = to_ulong(src->indicators[i]);
+        for(int i=0; i<4; ++i)
+            dst->groups[i] = to_ulong(src->groups[i]);
+        dst->keys = to_ptrv(src->keys);
+        dst->key_aliases = to_ptrv(src->key_aliases);
+        dst->radio_groups = to_ptrv(src->radio_groups);
+        dst->phys_symbols = to_ulong(src->phys_symbols);
+        dst->num_keys = src->num_keys;
+        dst->num_key_aliases = src->num_key_aliases;
+        dst->num_rg = src->num_rg;
+    }
+    return a;
+}
+void* inplace_XkbNamesRec_enlarge(void* a)
+{
+    if(a) {
+        my_XkbNamesRec_32_t* src = a;
+        my_XkbNamesRec_t* dst = a;
+
+        dst->num_rg = src->num_rg;
+        dst->num_key_aliases = src->num_key_aliases;
+        dst->num_keys = src->num_keys;
+        dst->phys_symbols = from_ulong(src->phys_symbols);
+        dst->radio_groups = from_ptrv(src->radio_groups);
+        dst->key_aliases = from_ptrv(src->key_aliases);
+        for(int i=4-1; i>=0; --i)
+            dst->groups[i] = from_ulong(src->groups[i]);
+        for(int i=32-1; i>=0; --i)
+            dst->indicators[i] = from_ulong(src->indicators[i]);
+        for(int i=16-1; i>=0; --i)
+            dst->vmods[i] = from_ulong(src->vmods[i]);
+        dst->compat = from_ulong(src->compat);
+        dst->types = from_ulong(src->types);
+        dst->symbols = from_ulong(src->symbols);
+        dst->geometry = from_ulong(src->geometry);
+        dst->keys = from_ptrv(src->keys);
+        dst->keycodes = from_ulong(src->keycodes);
+
+        for(int i=src->num_rg-1; i>=0; --i)
+            dst->radio_groups[i] = from_ulong(dst->radio_groups[i]);
+    }
+    return a;
+}
+
+void* inplace_XkbDescRec_shrink(void* a)
+{
+    if(a) {
+        my_XkbDescRec_t* src = a;
+        my_XkbDescRec_32_t* dst = a;
+
+        dst->display = to_ptrv(FindDisplay(src->display));
+        dst->flags = src->flags;
+        dst->device_spec = src->device_spec;
+        dst->min_key_code = src->min_key_code;
+        dst->max_key_code = src->max_key_code;
+        dst->ctrls = to_ptrv(src->ctrls);
+        dst->server = to_ptrv(src->server);
+        dst->map = to_ptrv(src->map);
+        dst->indicators = to_ptrv(src->indicators);
+        dst->names = to_ptrv(inplace_XkbNamesRec_shrink(src->names));
+        dst->compat = to_ptrv(src->compat);
+        dst->geom = to_ptrv(src->geom);
+    }
+    return a;
+}
+void* inplace_XkbDescRec_enlarge(void* a)
+{
+    if(a) {
+        my_XkbDescRec_32_t* src = a;
+        my_XkbDescRec_t* dst = a;
+
+        dst->geom = from_ptrv(src->geom);
+        dst->compat = from_ptrv(src->compat);
+        dst->names = inplace_XkbNamesRec_enlarge(from_ptrv(src->names));
+        dst->indicators = from_ptrv(src->indicators);
+        dst->map = from_ptrv(src->map);
+        dst->server = from_ptrv(src->server);
+        dst->ctrls = from_ptrv(src->ctrls);
+        dst->max_key_code = src->max_key_code;
+        dst->min_key_code = src->min_key_code;
+        dst->device_spec = src->device_spec;
+        dst->flags = src->flags;
+        dst->display = getDisplay(from_ptrv(src->display));
+    }
+    return a;
+}
+
+void convert_XAnyClassInfo_to_32(void* d, void* s)
+{
+    if(!d || !s) return;
+    my_XAnyClassInfo_t* src = s;
+    my_XAnyClassInfo_32_t* dst = d;
+
+    dst->c_class = to_ulong(src->c_class);
+    dst->length = src->length;
+
+}
+void convert_XAnyClassInfo_to_64(void* d, void* s)
+{
+    if(!d || !s) return;
+    my_XAnyClassInfo_32_t* src = s;
+    my_XAnyClassInfo_t* dst = d;
+
+    dst->length = src->length;
+    dst->c_class = from_ulong(src->c_class);
+}
+void* inplace_XAnyClassInfo_shrink(void* a)
+{
+    if(a)
+        convert_XAnyClassInfo_to_32(a, a);
+    return a;
+}
+void* inplace_XAnyClassInfo_enlarge(void* a)
+{
+    if(a)
+        convert_XAnyClassInfo_to_64(a, a);
+    return a;
+}
+
+void* inplace_XDeviceInfo_shrink(void* a)
+{
+    if(a) {
+        my_XDeviceInfo_t* src = a;
+        my_XDeviceInfo_32_t* dst = a;
+
+        for(int i=0; i<src->num_classes; ++i)
+            convert_XAnyClassInfo_to_32(&((my_XAnyClassInfo_32_t*)src->inputclassinfo)[i], &src->inputclassinfo[i]);
+        dst->id = to_ulong(src->id);
+        dst->type = to_ulong(src->type);
+        dst->name = to_ptrv(src->name);
+        dst->num_classes = src->num_classes;
+        dst->use = src->use;
+        dst->inputclassinfo = to_ptrv(src->inputclassinfo);
+    }
+    return a;
+}
+void* inplace_XDeviceInfo_enlarge(void* a)
+{
+    if(a) {
+        my_XDeviceInfo_32_t* src = a;
+        my_XDeviceInfo_t* dst = a;
+
+        dst->inputclassinfo = from_ptrv(src->inputclassinfo);
+        dst->use = src->use;
+        dst->num_classes = src->num_classes;
+        dst->name = from_ptrv(src->name);
+        dst->type = from_ulong(src->type);
+        dst->id = from_ulong(src->id);
+        for(int i=dst->num_classes-1; i>=0; --i)
+            convert_XAnyClassInfo_to_64(&dst->inputclassinfo[i], &((my_XAnyClassInfo_32_t*)dst->inputclassinfo)[i]);
+    }
+    return a;
+}
diff --git a/src/libtools/my_x11_conv.h b/src/libtools/my_x11_conv.h
index 01b37d5d..d119e9e4 100644
--- a/src/libtools/my_x11_conv.h
+++ b/src/libtools/my_x11_conv.h
@@ -86,8 +86,10 @@ void* inplace_XRRPropertyInfo_shrink(void* a);
 void inplace_XIDeviceInfo_shrink(void* a, int n);
 int inplace_XIDeviceInfo_enlarge(void* a);
 
-void inplace_XDevice_shrink(void* a);
-void inplace_XDevice_enlarge(void* a);
+void* inplace_XDevice_shrink(void* a);
+void* inplace_XDevice_enlarge(void* a);
+void* inplace_XDeviceState_shrink(void* a);
+void* inplace_XDeviceState_enlarge(void* a);
 
 void register_XDevice_events(my_XDevice_t* a);
 void unregister_XDevice_events(my_XDevice_t* a);
@@ -98,4 +100,14 @@ void unregister_XRandR_events();
 
 void convert_XShmSegmentInfo_to_32(void* d, void* s);
 void convert_XShmSegmentInfo_to_64(void* d, void* s);
+
+void* inplace_XkbDescRec_shrink(void* a);
+void* inplace_XkbDescRec_enlarge(void* a);
+
+void convert_XAnyClassInfo_to_32(void* d, void* s);
+void convert_XAnyClassInfo_to_64(void* d, void* s);
+void* inplace_XAnyClassInfo_shrink(void* a);
+void* inplace_XAnyClassInfo_enlarge(void* a);
+void* inplace_XDeviceInfo_shrink(void* a);
+void* inplace_XDeviceInfo_enlarge(void* a);
 #endif//MY_X11_CONV
\ No newline at end of file
diff --git a/src/libtools/my_x11_defs.h b/src/libtools/my_x11_defs.h
index 97b328eb..adc82b56 100644
--- a/src/libtools/my_x11_defs.h
+++ b/src/libtools/my_x11_defs.h
@@ -1101,6 +1101,15 @@ typedef struct my_XDevicePropertyNotifyEvent_s
     XID           atom;
     int           state;
 } my_XDevicePropertyNotifyEvent_t;
+typedef struct my_XInputClass_s {
+     unsigned char class;
+     unsigned char length;
+} my_XInputClass_t;
+typedef struct my_XDeviceState_s {
+     XID device_id;
+     int num_classes;
+     my_XInputClass_t* data;
+} my_XDeviceState_t;
 
 typedef struct my_XFixesSelectionNotifyEvent_s
 {
@@ -1339,4 +1348,76 @@ typedef struct my_XShmSegmentInfo_s {
     int     readOnly;
 } my_XShmSegmentInfo_t;
 
+typedef struct my_XkbNamesRec_s {
+    XID             keycodes;
+    XID             geometry;
+    XID             symbols;
+    XID             types;
+    XID             compat;
+    XID             vmods[16];
+    XID             indicators[32];
+    XID             groups[4];
+    void*           keys; //XkbKeyNameRec* as array[xkb->max_key_code + 1]
+    void*           key_aliases; //XkbKeyAliasRec* as array[num_key_aliases]
+    XID*            radio_groups;
+    XID             phys_symbols;
+    unsigned char   num_keys;
+    unsigned char   num_key_aliases;
+    unsigned short  num_rg;
+} my_XkbNamesRec_t;
+
+typedef struct my_XkbDescRec_s {
+   my_XDisplay_t*     display;
+   unsigned short     flags;
+   unsigned short     device_spec;
+   uint8_t            min_key_code;
+   uint8_t            max_key_code;
+   void*              ctrls; //XkbControlsPtr
+   void*              server; //XkbServerMapPtr
+   void*              map; //XkbClientMapPtr
+   void*              indicators; //XkbIndicatorPtr
+   my_XkbNamesRec_t*  names;
+   void*              compat; //XkbCompatMapPtr
+   void*              geom; //XkbGeometryPtr
+} my_XkbDescRec_t;
+
+typedef struct my_XmbTextItem_s {
+    void*       chars;  //char*
+    int         nchars;
+    int         delta;
+    void*       font_set;   //XFontSet
+} my_XmbTextItem_t;
+
+typedef struct my_XwcTextItem_s {
+    void*           chars;  //wchar_t*
+    int             nchars;
+    int             delta;
+    void*           font_set;   //XFontSet
+} my_XwcTextItem_t;
+
+typedef struct my_XAnyClassinfo_s {
+    XID         c_class;
+    int         length;
+} my_XAnyClassInfo_t;
+
+typedef struct my_XDeviceInfo_s
+{
+    XID                 id;        
+    XID                 type;
+    char*               name;
+    int                 num_classes;
+    int                 use;
+    my_XAnyClassInfo_t* inputclassinfo;
+} my_XDeviceInfo_t;
+
+typedef struct my_XTimeCoord_s {
+	unsigned long time;
+	short x, y;
+} my_XTimeCoord_t;
+
+typedef struct my_XDeviceTimeCoord_s {
+    unsigned long   time;
+    int*            data;
+} my_XDeviceTimeCoord_t;
+
 #endif//MY_X11_DEFS
\ No newline at end of file
diff --git a/src/libtools/my_x11_defs_32.h b/src/libtools/my_x11_defs_32.h
index 8e131848..51c2e923 100644
--- a/src/libtools/my_x11_defs_32.h
+++ b/src/libtools/my_x11_defs_32.h
@@ -1034,6 +1034,16 @@ typedef struct my_XDevicePropertyNotifyEvent_32_s
     XID_32        atom;
     int           state;
 } my_XDevicePropertyNotifyEvent_32_t;
+typedef struct my_XInputClass_32_s {
+     unsigned char class;
+     unsigned char length;
+} my_XInputClass_32_t;
+typedef struct my_XDeviceState_32_s {
+     XID_32 device_id;
+     int num_classes;
+     ptr_t data;    //my_XInputClass_32_t*
+} my_XDeviceState_32_t;
+
 typedef struct my_XFixesSelectionNotifyEvent_32_s
 {
     int     type;
@@ -1271,4 +1281,86 @@ typedef struct my_XShmSegmentInfo_32_s {
     int     readOnly;
 } my_XShmSegmentInfo_32_t;
 
+typedef struct my_XkbNamesRec_32_s {
+    XID_32          keycodes;
+    XID_32          geometry;
+    XID_32          symbols;
+    XID_32          types;
+    XID_32          compat;
+    XID_32          vmods[16];
+    XID_32          indicators[32];
+    XID_32          groups[4];
+    ptr_t           keys; //XkbKeyNameRec* as array[xkb->max_key_code + 1]
+    ptr_t           key_aliases; //XkbKeyAliasRec* as array[num_key_aliases]
+    ptr_t           radio_groups;   //XID*
+    XID_32          phys_symbols;
+    unsigned char   num_keys;
+    unsigned char   num_key_aliases;
+    unsigned short  num_rg;
+} my_XkbNamesRec_32_t;
+
+typedef struct my_XkbDescRec_32_s {
+   ptr_t              display; //my_XDisplay_32_t*
+   unsigned short     flags;
+   unsigned short     device_spec;
+   uint8_t            min_key_code;
+   uint8_t            max_key_code;
+   ptr_t              ctrls; //XkbControlsPtr
+   ptr_t              server; //XkbServerMapPtr
+   ptr_t              map; //XkbClientMapPtr
+   ptr_t              indicators; //XkbIndicatorPtr
+   ptr_t              names; //my_XkbNamesRec_32_t*
+   ptr_t              compat; //XkbCompatMapPtr
+   ptr_t              geom; //XkbGeometryPtr
+} my_XkbDescRec_32_t;
+
+typedef struct my_XmbTextItem_32_s {
+    ptr_t       chars;  //char*
+    int         nchars;
+    int         delta;
+    ptr_t       font_set;   //XFontSet
+} my_XmbTextItem_32_t;
+
+typedef struct my_XwcTextItem_32_s {
+    ptr_t           chars;  //wchar_t*
+    int             nchars;
+    int             delta;
+    ptr_t           font_set;   //XFontSet
+} my_XwcTextItem_32_t;
+
+// virtual structure
+typedef struct my_XFontSet_32_s {
+    void*   fontset;    // the actual fontset
+    ptr_t** names;      // arrays of array of names
+    int names_size;     // size of names
+    ptr_t** fonts;      // array of array of fonts
+    int fonts_size;     // soze of fonts
+} my_XFontSet_32_t;
+
+typedef struct my_XAnyClassinfo_32_s {
+    XID_32      c_class;
+    int         length;
+} my_XAnyClassInfo_32_t;
+
+typedef struct my_XDeviceInfo_32_s
+{
+    XID_32              id;        
+    XID_32              type;
+    ptr_t               name;   //char*
+    int                 num_classes;
+    int                 use;
+    ptr_t               inputclassinfo; //my_XAnyClassInfo_32_t*
+} my_XDeviceInfo_32_t;
+
+typedef struct my_XTimeCoord_32_s {
+	ulong_t time;
+	short x, y;
+} my_XTimeCoord_32_t;
+
+typedef struct my_XDeviceTimeCoord_32_s {
+    ulong_t   time;
+    ptr_t     data; //int*
+} my_XDeviceTimeCoord_32_t;
+
+
 #endif//MY_X11_DEFS_32
\ No newline at end of file
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index d1996f7b..c5efa3ab 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -31,6 +31,7 @@
 #() iEI -> iEI
 #() iEu -> iEu
 #() iFu -> iFu
+#() iFU -> iFU
 #() iEf -> iEf
 #() iEd -> iEd
 #() iEl -> iEl
@@ -294,6 +295,7 @@
 #() LEpp -> LEpp
 #() LFXi -> LFXi
 #() LFXu -> LFXu
+#() LFXU -> LFXU
 #() LFXL -> LFXL
 #() LFXp -> LFXp
 #() pFEv -> pFEv
@@ -543,6 +545,7 @@
 #() iFXup -> iFXup
 #() iFXLi -> iFXLi
 #() iFXLu -> iFXLu
+#() iFXLU -> iFXLU
 #() iFXLf -> iFXLf
 #() iFXLl -> iFXLl
 #() iFXLL -> iFXLL
@@ -715,6 +718,7 @@
 #() vEEipp -> vEEipp
 #() vFEipp -> vFEipp
 #() vEEipV -> vEEipV
+#() vFEpui -> vFEpui
 #() vEEpuu -> vEEpuu
 #() vEEpup -> vEEpup
 #() vFEpup -> vFEpup
@@ -814,6 +818,7 @@
 #() vFXiLu -> vFXiLu
 #() vFXLii -> vFXLii
 #() vFXLip -> vFXLip
+#() vFXLuu -> vFXLuu
 #() vFXLLL -> vFXLLL
 #() vFXLLp -> vFXLLp
 #() vFXLpi -> vFXLpi
@@ -848,6 +853,7 @@
 #() iEESpp -> iEESpp
 #() iEESpV -> iEESpV
 #() iFEXip -> iFEXip
+#() iFEXup -> iFEXup
 #() iFEXlp -> iFEXlp
 #() iFEXLp -> iFEXLp
 #() iFEXpp -> iFEXpp
@@ -945,6 +951,7 @@
 #() LFXLuu -> LFXLuu
 #() LFXpLp -> LFXpLp
 #() pEEipi -> pEEipi
+#() pFEupi -> pFEupi
 #() pFEupp -> pFEupp
 #() pEEpii -> pEEpii
 #() pFEpip -> pFEpip
@@ -954,6 +961,8 @@
 #() pEEppp -> pEEppp
 #() pFEppp -> pFEppp
 #() pFEXip -> pFEXip
+#() pFEXCL -> pFEXCL
+#() pFEXuu -> pFEXuu
 #() pFEXLL -> pFEXLL
 #() pFEXLp -> pFEXLp
 #() pFEXpL -> pFEXpL
@@ -1174,7 +1183,6 @@
 #() iFpCCCC -> iFpCCCC
 #() iFpuipp -> iFpuipp
 #() iFppiUi -> iFppiUi
-#() iFppipp -> iFppipp
 #() iFpppip -> iFpppip
 #() iEpppLi -> iEpppLi
 #() iEpppLp -> iEpppLp
@@ -1378,6 +1386,7 @@
 #() pFEpiiuu -> pFEpiiuu
 #() pEEpLLiN -> pEEpLLiN
 #() pEEppLLp -> pEEppLLp
+#() pFEXLLLp -> pFEXLLLp
 #() pFEXLpii -> pFEXLpii
 #() pFEXpppp -> pFEXpppp
 #() pFWCiWCi -> pFWCiWCi
@@ -1493,13 +1502,14 @@
 #() pFEpLiiiI -> pFEpLiiiI
 #() pEEpLiiil -> pEEpLiiil
 #() pFEpXppip -> pFEpXppip
+#() pFppppiii -> pFppppiii
 #() vFXLLiiibl_ -> vFXLLiiiB
 #() iFXiLibiip_ip -> iFXiLiBip
 #() iFXLibL_ubL_u -> iFXLiBuBu
-#() vFXLpiibpiip_i -> vFXLpiiBi
 #() iFXLpiibpiiL_i -> iFXLpiiBi
 #() LFXLLuubLWWWcc_bLWWWcc_ -> LFXLLuuBB
 #() LFXLLbLWWWcc_bLWWWcc_uu -> LFXLLBBuu
+#() vFEXLpiipi -> vFEXLpiipi
 #() vFiiiiuuip -> vFiiiiuuip
 #() vFiilliilp -> vFiilliilp
 #() vFiupuiuup -> vFiupuiuup
@@ -1531,7 +1541,6 @@
 #() vFXiLpiiuu -> vFXiLpiiuu
 #() vFXLiiiLii -> vFXLiiiLii
 #() vFXLLLiipi -> vFXLLLiipi
-#() vFXLppiipi -> vFXLppiipi
 #() vFXppuulll -> vFXppuulll
 #() iEEpippppp -> iEEpippppp
 #() iEEpLiLppp -> iEEpLiLppp
@@ -1548,9 +1557,11 @@
 #() uFulpppppp -> uFulpppppp
 #() LFEXLppuuu -> LFEXLppuuu
 #() LFXLpuuLLu -> LFXLpuuLLu
+#() pFEXpLLppp -> pFEXpLLppp
 #() iFXLLiippBL_ -> iFXLLiippB
 #() iFXLpppbL_pp -> iFXLpppBpp
 #() vFppibLdd_ipiu -> vFppiBipiu
+#() vFEXLppiipi -> vFEXLppiipi
 #() vFiiiiiiiii -> vFiiiiiiiii
 #() vFiiiiiiill -> vFiiiiiiill
 #() vFiiiiillli -> vFiiiiillli
@@ -1582,7 +1593,6 @@
 #() iFuiiuuiiip -> iFuiiuuiiip
 #() iFuiiupiiup -> iFuiiupiiup
 #() iFdddpppppp -> iFdddpppppp
-#() iFppippippp -> iFppippippp
 #() iFXuuuLiiip -> iFXuuuLiiip
 #() iFXuuuLpppp -> iFXuuuLpppp
 #() iFXLiuiiLLL -> iFXLiuiiLLL
@@ -1619,6 +1629,8 @@
 #() vFuffiiffiip -> vFuffiiffiip
 #() vFuddiiddiip -> vFuddiiddiip
 #() vFffffffffff -> vFffffffffff
+#() iFEppippippp -> iFEppippippp
+#() iFEXpLiipiiL -> iFEXpLiipiiL
 #() iFuiiiuuiiip -> iFuiiiuuiiip
 #() iFppuuiiuuuu -> iFppuuiiuuuu
 #() iFXiLLdduudd -> iFXiLLdduudd
@@ -2319,7 +2331,10 @@ wrappedlibx11:
 - vFX:
   - XLockDisplay
 - iFp:
+  - XContextDependentDrawing
+  - XContextualDrawing
   - XDestroyImage
+  - XDirectionalDependentDrawing
   - XFreeExtensionList
   - XFreeFontNames
   - XFreeModifiermap
@@ -2332,6 +2347,9 @@ wrappedlibx11:
 - LFp:
   - XVisualIDFromVisual
 - pFp:
+  - XBaseFontNameListOfFontSet
+  - XExtentsOfFontSet
+  - XLocaleOfFontSet
   - XSetErrorHandler
   - XSetIOErrorHandler
 - pFX:
@@ -2340,6 +2358,8 @@ wrappedlibx11:
   - XOpenDisplay
 - vFXp:
   - XFreeEventData
+  - XFreeFontSet
+  - _XDeqAsyncHandler
 - iFpL:
   - XFilterEvent
 - iFXp:
@@ -2365,26 +2385,44 @@ wrappedlibx11:
 - pFXp:
   - XListExtensions
   - XLoadQueryFont
+- vFpui:
+  - XkbFreeKeyboard
 - vFXLp:
   - XSetWMNormalHints
 - iFpip:
   - XStringListToTextProperty
 - iFppi:
   - XFreeFontInfo
+  - XTextWidth
   - XTextWidth16
+  - XmbTextEscapement
+  - Xutf8TextEscapement
+  - XwcTextEscapement
+- iFppp:
+  - XFontsOfFontSet
 - iFXip:
   - XCheckTypedEvent
+- iFXup:
+  - XkbGetNames
+  - XkbGetUpdatedMap
 - iFXlp:
   - XMaskEvent
 - iFXLp:
   - XGetWindowAttributes
   - XSetWMHints
+  - XkbGetControls
+- iFXpp:
+  - XAddConnectionWatch
 - LFXii:
   - XGetPixel
 - pFXip:
   - XESetCloseDisplay
   - XESetEventToWire
   - XESetWireToEvent
+- pFXCL:
+  - _XGetRequest
+- pFXuu:
+  - XkbGetMap
 - vFXLpL:
   - XSetWMSizeHints
 - iFXLip:
@@ -2399,6 +2437,7 @@ wrappedlibx11:
   - XSetWMProtocols
   - XStoreColors
 - iFXLpp:
+  - XGetWMColormapWindows
   - XGetWMNormalHints
 - iFXppp:
   - XCheckIfEvent
@@ -2411,8 +2450,13 @@ wrappedlibx11:
   - XListFonts
 - iFXbpLiL_pp:
   - XmbTextPropertyToTextList
+  - Xutf8TextPropertyToTextList
+  - XwcTextPropertyToTextList
 - iFppipp:
   - XLookupString
+  - XmbTextExtents
+  - Xutf8TextExtents
+  - XwcTextExtents
 - iFXLilp:
   - XSendEvent
 - iFXLpiL:
@@ -2422,10 +2466,13 @@ wrappedlibx11:
 - iFXpiup:
   - XmbTextListToTextProperty
   - Xutf8TextListToTextProperty
+  - XwcTextListToTextProperty
 - iFXpppp:
   - XQueryExtension
 - pFpiiuu:
   - XSubImage
+- pFXLLLp:
+  - XGetMotionEvents
 - pFXpppp:
   - XCreateFontSet
 - iFpppipp:
@@ -2436,15 +2483,32 @@ wrappedlibx11:
 - iFXppppp:
   - XRegisterIMInstantiateCallback
   - XUnregisterIMInstantiateCallback
+- vFXLpiipi:
+  - XmbDrawText
+  - Xutf8DrawText
+  - XwcDrawText
 - iFppipppp:
   - XTextExtents
+  - XTextExtents16
+- vFXLppiipi:
+  - XmbDrawImageString
+  - XmbDrawString
+  - Xutf8DrawImageString
+  - Xutf8DrawString
+  - XwcDrawImageString
+  - XwcDrawString
 - iFXLLLiipi:
   - XChangeProperty
 - pFXLiiuuLi:
   - XGetImage
 - vFXLpppippp:
   - XSetWMProperties
+  - XmbSetWMProperties
   - Xutf8SetWMProperties
+- iFppippippp:
+  - XmbTextPerCharExtents
+  - Xutf8TextPerCharExtents
+  - XwcTextPerCharExtents
 - iFXLppiiiiuu:
   - XPutImage
 - pFXpuiipuuii:
@@ -2472,6 +2536,10 @@ wrappedlibxcursor:
   - XcursorCursorsCreate
 - pFXp:
   - XcursorImagesLoadCursors
+- pFupi:
+  - XcursorShapeLoadImages
+- pFppi:
+  - XcursorLibraryLoadImages
 wrappedlibxdamage:
 wrappedlibxext:
 - vFp:
@@ -2505,11 +2573,17 @@ wrappedlibxfixes:
   - XFixesQueryExtension
 wrappedlibxi:
 - vFp:
+  - XFreeDeviceList
+  - XFreeDeviceMotionEvents
+  - XFreeDeviceState
   - XIFreeDeviceInfo
 - iFXp:
   - XCloseDevice
 - pFXL:
   - XOpenDevice
+- pFXp:
+  - XListInputDevices
+  - XQueryDeviceState
 - pFXip:
   - XIQueryDevice
 - pFXLp:
@@ -2518,10 +2592,16 @@ wrappedlibxi:
   - XISelectEvents
 - iFXppu:
   - XGetDeviceButtonMapping
+- pFXpLLppp:
+  - XGetDeviceMotionEvents
+- iFXpLiipiiL:
+  - XGrabDevice
 wrappedlibxrandr:
 - vFp:
   - XRRFreeProviderInfo
   - XRRFreeProviderResources
+- iFp:
+  - XRRUpdateConfiguration
 - pFXL:
   - XRRGetProviderResources
   - XRRGetScreenResources
diff --git a/src/wrapped32/generated/wrappedlibx11types32.h b/src/wrapped32/generated/wrappedlibx11types32.h
index 07cff32c..b8719e0b 100644
--- a/src/wrapped32/generated/wrappedlibx11types32.h
+++ b/src/wrapped32/generated/wrappedlibx11types32.h
@@ -28,14 +28,20 @@ typedef void* (*pFpV_t)(void*, ...);
 typedef void* (*pFXi_t)(void*, int32_t);
 typedef void* (*pFXL_t)(void*, uintptr_t);
 typedef void* (*pFXp_t)(void*, void*);
+typedef void (*vFpui_t)(void*, uint32_t, int32_t);
 typedef void (*vFXLp_t)(void*, uintptr_t, void*);
 typedef int32_t (*iFpip_t)(void*, int32_t, void*);
 typedef int32_t (*iFppi_t)(void*, void*, int32_t);
+typedef int32_t (*iFppp_t)(void*, void*, void*);
 typedef int32_t (*iFXip_t)(void*, int32_t, void*);
+typedef int32_t (*iFXup_t)(void*, uint32_t, void*);
 typedef int32_t (*iFXlp_t)(void*, intptr_t, void*);
 typedef int32_t (*iFXLp_t)(void*, uintptr_t, void*);
+typedef int32_t (*iFXpp_t)(void*, void*, void*);
 typedef uintptr_t (*LFXii_t)(void*, int32_t, int32_t);
 typedef void* (*pFXip_t)(void*, int32_t, void*);
+typedef void* (*pFXCL_t)(void*, uint8_t, uintptr_t);
+typedef void* (*pFXuu_t)(void*, uint32_t, uint32_t);
 typedef void (*vFXLpL_t)(void*, uintptr_t, void*, uintptr_t);
 typedef int32_t (*iFXLip_t)(void*, uintptr_t, int32_t, void*);
 typedef int32_t (*iFXLlp_t)(void*, uintptr_t, intptr_t, void*);
@@ -54,14 +60,18 @@ typedef int32_t (*iFXpiip_t)(void*, void*, int32_t, int32_t, void*);
 typedef int32_t (*iFXpiup_t)(void*, void*, int32_t, uint32_t, void*);
 typedef int32_t (*iFXpppp_t)(void*, void*, void*, void*, void*);
 typedef void* (*pFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t);
+typedef void* (*pFXLLLp_t)(void*, uintptr_t, uintptr_t, uintptr_t, void*);
 typedef void* (*pFXpppp_t)(void*, void*, void*, void*, void*);
 typedef int32_t (*iFpppipp_t)(void*, void*, void*, int32_t, void*, void*);
 typedef int32_t (*iFXLpppp_t)(void*, uintptr_t, void*, void*, void*, void*);
 typedef int32_t (*iFXppppp_t)(void*, void*, void*, void*, void*, void*);
+typedef void (*vFXLpiipi_t)(void*, uintptr_t, void*, int32_t, int32_t, void*, int32_t);
 typedef int32_t (*iFppipppp_t)(void*, void*, int32_t, void*, void*, void*, void*);
+typedef void (*vFXLppiipi_t)(void*, uintptr_t, void*, void*, int32_t, int32_t, void*, int32_t);
 typedef int32_t (*iFXLLLiipi_t)(void*, uintptr_t, uintptr_t, uintptr_t, int32_t, int32_t, void*, int32_t);
 typedef void* (*pFXLiiuuLi_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t);
 typedef void (*vFXLpppippp_t)(void*, uintptr_t, void*, void*, void*, int32_t, void*, void*, void*);
+typedef int32_t (*iFppippippp_t)(void*, void*, int32_t, void*, void*, int32_t, void*, void*, void*);
 typedef int32_t (*iFXLppiiiiuu_t)(void*, uintptr_t, void*, void*, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t);
 typedef void* (*pFXpuiipuuii_t)(void*, void*, uint32_t, int32_t, int32_t, void*, uint32_t, uint32_t, int32_t, int32_t);
 typedef void* (*pFXLiiuuLipii_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t, void*, int32_t, int32_t);
@@ -71,7 +81,10 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32
 #define SUPER() ADDED_FUNCTIONS() \
 	GO(XFreeStringList, vFp_t) \
 	GO(XLockDisplay, vFX_t) \
+	GO(XContextDependentDrawing, iFp_t) \
+	GO(XContextualDrawing, iFp_t) \
 	GO(XDestroyImage, iFp_t) \
+	GO(XDirectionalDependentDrawing, iFp_t) \
 	GO(XFreeExtensionList, iFp_t) \
 	GO(XFreeFontNames, iFp_t) \
 	GO(XFreeModifiermap, iFp_t) \
@@ -81,11 +94,16 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32
 	GO(XCloseDisplay, iFX_t) \
 	GO(XGrabServer, iFX_t) \
 	GO(XVisualIDFromVisual, LFp_t) \
+	GO(XBaseFontNameListOfFontSet, pFp_t) \
+	GO(XExtentsOfFontSet, pFp_t) \
+	GO(XLocaleOfFontSet, pFp_t) \
 	GO(XSetErrorHandler, pFp_t) \
 	GO(XSetIOErrorHandler, pFp_t) \
 	GO(XGetModifierMapping, pFX_t) \
 	GO(XOpenDisplay, XFp_t) \
 	GO(XFreeEventData, vFXp_t) \
+	GO(XFreeFontSet, vFXp_t) \
+	GO(_XDeqAsyncHandler, vFXp_t) \
 	GO(XFilterEvent, iFpL_t) \
 	GO(XFreeFont, iFXp_t) \
 	GO(XGetEventData, iFXp_t) \
@@ -103,18 +121,30 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32
 	GO(XQueryFont, pFXL_t) \
 	GO(XListExtensions, pFXp_t) \
 	GO(XLoadQueryFont, pFXp_t) \
+	GO(XkbFreeKeyboard, vFpui_t) \
 	GO(XSetWMNormalHints, vFXLp_t) \
 	GO(XStringListToTextProperty, iFpip_t) \
 	GO(XFreeFontInfo, iFppi_t) \
+	GO(XTextWidth, iFppi_t) \
 	GO(XTextWidth16, iFppi_t) \
+	GO(XmbTextEscapement, iFppi_t) \
+	GO(Xutf8TextEscapement, iFppi_t) \
+	GO(XwcTextEscapement, iFppi_t) \
+	GO(XFontsOfFontSet, iFppp_t) \
 	GO(XCheckTypedEvent, iFXip_t) \
+	GO(XkbGetNames, iFXup_t) \
+	GO(XkbGetUpdatedMap, iFXup_t) \
 	GO(XMaskEvent, iFXlp_t) \
 	GO(XGetWindowAttributes, iFXLp_t) \
 	GO(XSetWMHints, iFXLp_t) \
+	GO(XkbGetControls, iFXLp_t) \
+	GO(XAddConnectionWatch, iFXpp_t) \
 	GO(XGetPixel, LFXii_t) \
 	GO(XESetCloseDisplay, pFXip_t) \
 	GO(XESetEventToWire, pFXip_t) \
 	GO(XESetWireToEvent, pFXip_t) \
+	GO(_XGetRequest, pFXCL_t) \
+	GO(XkbGetMap, pFXuu_t) \
 	GO(XSetWMSizeHints, vFXLpL_t) \
 	GO(XCheckTypedWindowEvent, iFXLip_t) \
 	GO(XCheckWindowEvent, iFXLlp_t) \
@@ -123,6 +153,7 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32
 	GO(XQueryColors, iFXLpi_t) \
 	GO(XSetWMProtocols, iFXLpi_t) \
 	GO(XStoreColors, iFXLpi_t) \
+	GO(XGetWMColormapWindows, iFXLpp_t) \
 	GO(XGetWMNormalHints, iFXLpp_t) \
 	GO(XCheckIfEvent, iFXppp_t) \
 	GO(XIfEvent, iFXppp_t) \
@@ -130,25 +161,46 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32
 	GO(XGetVisualInfo, pFXlpp_t) \
 	GO(XListFonts, pFXpip_t) \
 	GO(XmbTextPropertyToTextList, iFXbpLiL_pp_t) \
+	GO(Xutf8TextPropertyToTextList, iFXbpLiL_pp_t) \
+	GO(XwcTextPropertyToTextList, iFXbpLiL_pp_t) \
 	GO(XLookupString, iFppipp_t) \
+	GO(XmbTextExtents, iFppipp_t) \
+	GO(Xutf8TextExtents, iFppipp_t) \
+	GO(XwcTextExtents, iFppipp_t) \
 	GO(XSendEvent, iFXLilp_t) \
 	GO(XFreeColors, iFXLpiL_t) \
 	GO(XInternAtoms, iFXpiip_t) \
 	GO(XmbTextListToTextProperty, iFXpiup_t) \
 	GO(Xutf8TextListToTextProperty, iFXpiup_t) \
+	GO(XwcTextListToTextProperty, iFXpiup_t) \
 	GO(XQueryExtension, iFXpppp_t) \
 	GO(XSubImage, pFpiiuu_t) \
+	GO(XGetMotionEvents, pFXLLLp_t) \
 	GO(XCreateFontSet, pFXpppp_t) \
 	GO(XmbLookupString, iFpppipp_t) \
 	GO(Xutf8LookupString, iFpppipp_t) \
 	GO(XQueryTree, iFXLpppp_t) \
 	GO(XRegisterIMInstantiateCallback, iFXppppp_t) \
 	GO(XUnregisterIMInstantiateCallback, iFXppppp_t) \
+	GO(XmbDrawText, vFXLpiipi_t) \
+	GO(Xutf8DrawText, vFXLpiipi_t) \
+	GO(XwcDrawText, vFXLpiipi_t) \
 	GO(XTextExtents, iFppipppp_t) \
+	GO(XTextExtents16, iFppipppp_t) \
+	GO(XmbDrawImageString, vFXLppiipi_t) \
+	GO(XmbDrawString, vFXLppiipi_t) \
+	GO(Xutf8DrawImageString, vFXLppiipi_t) \
+	GO(Xutf8DrawString, vFXLppiipi_t) \
+	GO(XwcDrawImageString, vFXLppiipi_t) \
+	GO(XwcDrawString, vFXLppiipi_t) \
 	GO(XChangeProperty, iFXLLLiipi_t) \
 	GO(XGetImage, pFXLiiuuLi_t) \
 	GO(XSetWMProperties, vFXLpppippp_t) \
+	GO(XmbSetWMProperties, vFXLpppippp_t) \
 	GO(Xutf8SetWMProperties, vFXLpppippp_t) \
+	GO(XmbTextPerCharExtents, iFppippippp_t) \
+	GO(Xutf8TextPerCharExtents, iFppippippp_t) \
+	GO(XwcTextPerCharExtents, iFppippippp_t) \
 	GO(XPutImage, iFXLppiiiiuu_t) \
 	GO(XCreateImage, pFXpuiipuuii_t) \
 	GO(XGetSubImage, pFXLiiuuLipii_t) \
diff --git a/src/wrapped32/generated/wrappedlibxcursortypes32.h b/src/wrapped32/generated/wrappedlibxcursortypes32.h
index b01813c7..0f5ab7ed 100644
--- a/src/wrapped32/generated/wrappedlibxcursortypes32.h
+++ b/src/wrapped32/generated/wrappedlibxcursortypes32.h
@@ -17,6 +17,8 @@ typedef uintptr_t (*LFXp_t)(void*, void*);
 typedef void* (*pFii_t)(int32_t, int32_t);
 typedef void* (*pFXi_t)(void*, int32_t);
 typedef void* (*pFXp_t)(void*, void*);
+typedef void* (*pFupi_t)(uint32_t, void*, int32_t);
+typedef void* (*pFppi_t)(void*, void*, int32_t);
 
 #define SUPER() ADDED_FUNCTIONS() \
 	GO(XcursorCursorsDestroy, vFp_t) \
@@ -27,6 +29,8 @@ typedef void* (*pFXp_t)(void*, void*);
 	GO(XcursorImagesLoadCursor, LFXp_t) \
 	GO(XcursorImageCreate, pFii_t) \
 	GO(XcursorCursorsCreate, pFXi_t) \
-	GO(XcursorImagesLoadCursors, pFXp_t)
+	GO(XcursorImagesLoadCursors, pFXp_t) \
+	GO(XcursorShapeLoadImages, pFupi_t) \
+	GO(XcursorLibraryLoadImages, pFppi_t)
 
 #endif // __wrappedlibxcursorTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedlibxitypes32.h b/src/wrapped32/generated/wrappedlibxitypes32.h
index 0e74b840..a39bd1ef 100644
--- a/src/wrapped32/generated/wrappedlibxitypes32.h
+++ b/src/wrapped32/generated/wrappedlibxitypes32.h
@@ -14,18 +14,28 @@
 typedef void (*vFp_t)(void*);
 typedef int32_t (*iFXp_t)(void*, void*);
 typedef void* (*pFXL_t)(void*, uintptr_t);
+typedef void* (*pFXp_t)(void*, void*);
 typedef void* (*pFXip_t)(void*, int32_t, void*);
 typedef void* (*pFXLp_t)(void*, uintptr_t, void*);
 typedef int32_t (*iFXLpi_t)(void*, uintptr_t, void*, int32_t);
 typedef int32_t (*iFXppu_t)(void*, void*, void*, uint32_t);
+typedef void* (*pFXpLLppp_t)(void*, void*, uintptr_t, uintptr_t, void*, void*, void*);
+typedef int32_t (*iFXpLiipiiL_t)(void*, void*, uintptr_t, int32_t, int32_t, void*, int32_t, int32_t, uintptr_t);
 
 #define SUPER() ADDED_FUNCTIONS() \
+	GO(XFreeDeviceList, vFp_t) \
+	GO(XFreeDeviceMotionEvents, vFp_t) \
+	GO(XFreeDeviceState, vFp_t) \
 	GO(XIFreeDeviceInfo, vFp_t) \
 	GO(XCloseDevice, iFXp_t) \
 	GO(XOpenDevice, pFXL_t) \
+	GO(XListInputDevices, pFXp_t) \
+	GO(XQueryDeviceState, pFXp_t) \
 	GO(XIQueryDevice, pFXip_t) \
 	GO(XIGetSelectedEvents, pFXLp_t) \
 	GO(XISelectEvents, iFXLpi_t) \
-	GO(XGetDeviceButtonMapping, iFXppu_t)
+	GO(XGetDeviceButtonMapping, iFXppu_t) \
+	GO(XGetDeviceMotionEvents, pFXpLLppp_t) \
+	GO(XGrabDevice, iFXpLiipiiL_t)
 
 #endif // __wrappedlibxiTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedlibxrandrtypes32.h b/src/wrapped32/generated/wrappedlibxrandrtypes32.h
index 0de1eca3..efaa1d1d 100644
--- a/src/wrapped32/generated/wrappedlibxrandrtypes32.h
+++ b/src/wrapped32/generated/wrappedlibxrandrtypes32.h
@@ -12,6 +12,7 @@
 #endif
 
 typedef void (*vFp_t)(void*);
+typedef int32_t (*iFp_t)(void*);
 typedef void* (*pFXL_t)(void*, uintptr_t);
 typedef int32_t (*iFXpp_t)(void*, void*, void*);
 typedef void* (*pFXLL_t)(void*, uintptr_t, uintptr_t);
@@ -23,6 +24,7 @@ typedef int32_t (*iFXpLLiiLWpi_t)(void*, void*, uintptr_t, uintptr_t, int32_t, i
 #define SUPER() ADDED_FUNCTIONS() \
 	GO(XRRFreeProviderInfo, vFp_t) \
 	GO(XRRFreeProviderResources, vFp_t) \
+	GO(XRRUpdateConfiguration, iFp_t) \
 	GO(XRRGetProviderResources, pFXL_t) \
 	GO(XRRGetScreenResources, pFXL_t) \
 	GO(XRRGetScreenResourcesCurrent, pFXL_t) \
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 4c353ff4..ef540162 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -122,6 +122,7 @@ typedef int32_t (*iFi_t)(int32_t);
 typedef int32_t (*iEI_t)(int64_t);
 typedef int32_t (*iEu_t)(uint32_t);
 typedef int32_t (*iFu_t)(uint32_t);
+typedef int32_t (*iFU_t)(uint64_t);
 typedef int32_t (*iEf_t)(float);
 typedef int32_t (*iEd_t)(double);
 typedef int32_t (*iEl_t)(intptr_t);
@@ -385,6 +386,7 @@ typedef uintptr_t (*LEpL_t)(void*, uintptr_t);
 typedef uintptr_t (*LEpp_t)(void*, void*);
 typedef uintptr_t (*LFXi_t)(void*, int32_t);
 typedef uintptr_t (*LFXu_t)(void*, uint32_t);
+typedef uintptr_t (*LFXU_t)(void*, uint64_t);
 typedef uintptr_t (*LFXL_t)(void*, uintptr_t);
 typedef uintptr_t (*LFXp_t)(void*, void*);
 typedef void* (*pFEv_t)(x64emu_t*);
@@ -634,6 +636,7 @@ typedef int32_t (*iFXuu_t)(void*, uint32_t, uint32_t);
 typedef int32_t (*iFXup_t)(void*, uint32_t, void*);
 typedef int32_t (*iFXLi_t)(void*, uintptr_t, int32_t);
 typedef int32_t (*iFXLu_t)(void*, uintptr_t, uint32_t);
+typedef int32_t (*iFXLU_t)(void*, uintptr_t, uint64_t);
 typedef int32_t (*iFXLf_t)(void*, uintptr_t, float);
 typedef int32_t (*iFXLl_t)(void*, uintptr_t, intptr_t);
 typedef int32_t (*iFXLL_t)(void*, uintptr_t, uintptr_t);
@@ -806,6 +809,7 @@ typedef void* (*pEppriiiiiiiiilt__t)(void*, void*, struct_iiiiiiiiilt_t*);
 typedef void (*vEEipp_t)(x64emu_t*, int32_t, void*, void*);
 typedef void (*vFEipp_t)(x64emu_t*, int32_t, void*, void*);
 typedef void (*vEEipV_t)(x64emu_t*, int32_t, void*, void*);
+typedef void (*vFEpui_t)(x64emu_t*, void*, uint32_t, int32_t);
 typedef void (*vEEpuu_t)(x64emu_t*, void*, uint32_t, uint32_t);
 typedef void (*vEEpup_t)(x64emu_t*, void*, uint32_t, void*);
 typedef void (*vFEpup_t)(x64emu_t*, void*, uint32_t, void*);
@@ -905,6 +909,7 @@ typedef void (*vFXiiL_t)(void*, int32_t, int32_t, uintptr_t);
 typedef void (*vFXiLu_t)(void*, int32_t, uintptr_t, uint32_t);
 typedef void (*vFXLii_t)(void*, uintptr_t, int32_t, int32_t);
 typedef void (*vFXLip_t)(void*, uintptr_t, int32_t, void*);
+typedef void (*vFXLuu_t)(void*, uintptr_t, uint32_t, uint32_t);
 typedef void (*vFXLLL_t)(void*, uintptr_t, uintptr_t, uintptr_t);
 typedef void (*vFXLLp_t)(void*, uintptr_t, uintptr_t, void*);
 typedef void (*vFXLpi_t)(void*, uintptr_t, void*, int32_t);
@@ -939,6 +944,7 @@ typedef int32_t (*iEEhup_t)(x64emu_t*, uintptr_t, uint32_t, void*);
 typedef int32_t (*iEESpp_t)(x64emu_t*, void*, void*, void*);
 typedef int32_t (*iEESpV_t)(x64emu_t*, void*, void*, void*);
 typedef int32_t (*iFEXip_t)(x64emu_t*, void*, int32_t, void*);
+typedef int32_t (*iFEXup_t)(x64emu_t*, void*, uint32_t, void*);
 typedef int32_t (*iFEXlp_t)(x64emu_t*, void*, intptr_t, void*);
 typedef int32_t (*iFEXLp_t)(x64emu_t*, void*, uintptr_t, void*);
 typedef int32_t (*iFEXpp_t)(x64emu_t*, void*, void*, void*);
@@ -1036,6 +1042,7 @@ typedef uintptr_t (*LFXCii_t)(void*, uint8_t, int32_t, int32_t);
 typedef uintptr_t (*LFXLuu_t)(void*, uintptr_t, uint32_t, uint32_t);
 typedef uintptr_t (*LFXpLp_t)(void*, void*, uintptr_t, void*);
 typedef void* (*pEEipi_t)(x64emu_t*, int32_t, void*, int32_t);
+typedef void* (*pFEupi_t)(x64emu_t*, uint32_t, void*, int32_t);
 typedef void* (*pFEupp_t)(x64emu_t*, uint32_t, void*, void*);
 typedef void* (*pEEpii_t)(x64emu_t*, void*, int32_t, int32_t);
 typedef void* (*pFEpip_t)(x64emu_t*, void*, int32_t, void*);
@@ -1045,6 +1052,8 @@ typedef void* (*pFEppi_t)(x64emu_t*, void*, void*, int32_t);
 typedef void* (*pEEppp_t)(x64emu_t*, void*, void*, void*);
 typedef void* (*pFEppp_t)(x64emu_t*, void*, void*, void*);
 typedef void* (*pFEXip_t)(x64emu_t*, void*, int32_t, void*);
+typedef void* (*pFEXCL_t)(x64emu_t*, void*, uint8_t, uintptr_t);
+typedef void* (*pFEXuu_t)(x64emu_t*, void*, uint32_t, uint32_t);
 typedef void* (*pFEXLL_t)(x64emu_t*, void*, uintptr_t, uintptr_t);
 typedef void* (*pFEXLp_t)(x64emu_t*, void*, uintptr_t, void*);
 typedef void* (*pFEXpL_t)(x64emu_t*, void*, void*, uintptr_t);
@@ -1265,7 +1274,6 @@ typedef int32_t (*iFpippp_t)(void*, int32_t, void*, void*, void*);
 typedef int32_t (*iFpCCCC_t)(void*, uint8_t, uint8_t, uint8_t, uint8_t);
 typedef int32_t (*iFpuipp_t)(void*, uint32_t, int32_t, void*, void*);
 typedef int32_t (*iFppiUi_t)(void*, void*, int32_t, uint64_t, int32_t);
-typedef int32_t (*iFppipp_t)(void*, void*, int32_t, void*, void*);
 typedef int32_t (*iFpppip_t)(void*, void*, void*, int32_t, void*);
 typedef int32_t (*iEpppLi_t)(void*, void*, void*, uintptr_t, int32_t);
 typedef int32_t (*iEpppLp_t)(void*, void*, void*, uintptr_t, void*);
@@ -1469,6 +1477,7 @@ typedef intptr_t (*lEipLipp_t)(int32_t, void*, uintptr_t, int32_t, void*, void*)
 typedef void* (*pFEpiiuu_t)(x64emu_t*, void*, int32_t, int32_t, uint32_t, uint32_t);
 typedef void* (*pEEpLLiN_t)(x64emu_t*, void*, uintptr_t, uintptr_t, int32_t, ...);
 typedef void* (*pEEppLLp_t)(x64emu_t*, void*, void*, uintptr_t, uintptr_t, void*);
+typedef void* (*pFEXLLLp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, uintptr_t, void*);
 typedef void* (*pFEXLpii_t)(x64emu_t*, void*, uintptr_t, void*, int32_t, int32_t);
 typedef void* (*pFEXpppp_t)(x64emu_t*, void*, void*, void*, void*, void*);
 typedef void* (*pFWCiWCi_t)(uint16_t, uint8_t, int32_t, uint16_t, uint8_t, int32_t);
@@ -1584,13 +1593,14 @@ typedef void* (*pEEpLiiiI_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int3
 typedef void* (*pFEpLiiiI_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, int64_t);
 typedef void* (*pEEpLiiil_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, intptr_t);
 typedef void* (*pFEpXppip_t)(x64emu_t*, void*, void*, void*, void*, int32_t, void*);
+typedef void* (*pFppppiii_t)(void*, void*, void*, void*, int32_t, int32_t, int32_t);
 typedef void (*vFXLLiiibl__t)(void*, uintptr_t, uintptr_t, int32_t, int32_t, int32_t, struct_l_t*);
 typedef int32_t (*iFXiLibiip_ip_t)(void*, int32_t, uintptr_t, int32_t, struct_iip_t*, int32_t, void*);
 typedef int32_t (*iFXLibL_ubL_u_t)(void*, uintptr_t, int32_t, struct_L_t*, uint32_t, struct_L_t*, uint32_t);
-typedef void (*vFXLpiibpiip_i_t)(void*, uintptr_t, void*, int32_t, int32_t, struct_piip_t*, int32_t);
 typedef int32_t (*iFXLpiibpiiL_i_t)(void*, uintptr_t, void*, int32_t, int32_t, struct_piiL_t*, int32_t);
 typedef uintptr_t (*LFXLLuubLWWWcc_bLWWWcc__t)(void*, uintptr_t, uintptr_t, uint32_t, uint32_t, struct_LWWWcc_t*, struct_LWWWcc_t*);
 typedef uintptr_t (*LFXLLbLWWWcc_bLWWWcc_uu_t)(void*, uintptr_t, uintptr_t, struct_LWWWcc_t*, struct_LWWWcc_t*, uint32_t, uint32_t);
+typedef void (*vFEXLpiipi_t)(x64emu_t*, void*, uintptr_t, void*, int32_t, int32_t, void*, int32_t);
 typedef void (*vFiiiiuuip_t)(int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, void*);
 typedef void (*vFiilliilp_t)(int32_t, int32_t, intptr_t, intptr_t, int32_t, int32_t, intptr_t, void*);
 typedef void (*vFiupuiuup_t)(int32_t, uint32_t, void*, uint32_t, int32_t, uint32_t, uint32_t, void*);
@@ -1622,7 +1632,6 @@ typedef void (*vFXiLLiipi_t)(void*, int32_t, uintptr_t, uintptr_t, int32_t, int3
 typedef void (*vFXiLpiiuu_t)(void*, int32_t, uintptr_t, void*, int32_t, int32_t, uint32_t, uint32_t);
 typedef void (*vFXLiiiLii_t)(void*, uintptr_t, int32_t, int32_t, int32_t, uintptr_t, int32_t, int32_t);
 typedef void (*vFXLLLiipi_t)(void*, uintptr_t, uintptr_t, uintptr_t, int32_t, int32_t, void*, int32_t);
-typedef void (*vFXLppiipi_t)(void*, uintptr_t, void*, void*, int32_t, int32_t, void*, int32_t);
 typedef void (*vFXppuulll_t)(void*, void*, void*, uint32_t, uint32_t, intptr_t, intptr_t, intptr_t);
 typedef int32_t (*iEEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, void*, void*, void*);
 typedef int32_t (*iEEpLiLppp_t)(x64emu_t*, void*, uintptr_t, int32_t, uintptr_t, void*, void*, void*);
@@ -1639,9 +1648,11 @@ typedef uint32_t (*uFuupuuiuf_t)(uint32_t, uint32_t, void*, uint32_t, uint32_t,
 typedef uint32_t (*uFulpppppp_t)(uint32_t, intptr_t, void*, void*, void*, void*, void*, void*);
 typedef uintptr_t (*LFEXLppuuu_t)(x64emu_t*, void*, uintptr_t, void*, void*, uint32_t, uint32_t, uint32_t);
 typedef uintptr_t (*LFXLpuuLLu_t)(void*, uintptr_t, void*, uint32_t, uint32_t, uintptr_t, uintptr_t, uint32_t);
+typedef void* (*pFEXpLLppp_t)(x64emu_t*, void*, void*, uintptr_t, uintptr_t, void*, void*, void*);
 typedef int32_t (*iFXLLiippBL__t)(void*, uintptr_t, uintptr_t, int32_t, int32_t, void*, void*, struct_L_t*);
 typedef int32_t (*iFXLpppbL_pp_t)(void*, uintptr_t, void*, void*, void*, struct_L_t*, void*, void*);
 typedef void (*vFppibLdd_ipiu_t)(void*, void*, int32_t, struct_Ldd_t*, int32_t, void*, int32_t, uint32_t);
+typedef void (*vFEXLppiipi_t)(x64emu_t*, void*, uintptr_t, void*, void*, int32_t, int32_t, void*, int32_t);
 typedef void (*vFiiiiiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFiiiiiiill_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, intptr_t, intptr_t);
 typedef void (*vFiiiiillli_t)(int32_t, int32_t, int32_t, int32_t, int32_t, intptr_t, intptr_t, intptr_t, int32_t);
@@ -1673,7 +1684,6 @@ typedef int32_t (*iFEXLLLiipi_t)(x64emu_t*, void*, uintptr_t, uintptr_t, uintptr
 typedef int32_t (*iFuiiuuiiip_t)(uint32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFuiiupiiup_t)(uint32_t, int32_t, int32_t, uint32_t, void*, int32_t, int32_t, uint32_t, void*);
 typedef int32_t (*iFdddpppppp_t)(double, double, double, void*, void*, void*, void*, void*, void*);
-typedef int32_t (*iFppippippp_t)(void*, void*, int32_t, void*, void*, int32_t, void*, void*, void*);
 typedef int32_t (*iFXuuuLiiip_t)(void*, uint32_t, uint32_t, uint32_t, uintptr_t, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFXuuuLpppp_t)(void*, uint32_t, uint32_t, uint32_t, uintptr_t, void*, void*, void*, void*);
 typedef int32_t (*iFXLiuiiLLL_t)(void*, uintptr_t, int32_t, uint32_t, int32_t, int32_t, uintptr_t, uintptr_t, uintptr_t);
@@ -1710,6 +1720,8 @@ typedef void (*vFuupuiupuuf_t)(uint32_t, uint32_t, void*, uint32_t, int32_t, uin
 typedef void (*vFuffiiffiip_t)(uint32_t, float, float, int32_t, int32_t, float, float, int32_t, int32_t, void*);
 typedef void (*vFuddiiddiip_t)(uint32_t, double, double, int32_t, int32_t, double, double, int32_t, int32_t, void*);
 typedef void (*vFffffffffff_t)(float, float, float, float, float, float, float, float, float, float);
+typedef int32_t (*iFEppippippp_t)(x64emu_t*, void*, void*, int32_t, void*, void*, int32_t, void*, void*, void*);
+typedef int32_t (*iFEXpLiipiiL_t)(x64emu_t*, void*, void*, uintptr_t, int32_t, int32_t, void*, int32_t, int32_t, uintptr_t);
 typedef int32_t (*iFuiiiuuiiip_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFppuuiiuuuu_t)(void*, void*, uint32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
 typedef int32_t (*iFXiLLdduudd_t)(void*, int32_t, uintptr_t, uintptr_t, double, double, uint32_t, uint32_t, double, double);
@@ -1827,6 +1839,7 @@ void iFi_32(x64emu_t *emu, uintptr_t fcn) { iFi_t fn = (iFi_t)fcn; R_EAX = fn(fr
 void iEI_32(x64emu_t *emu, uintptr_t fcn) { iEI_t fn = (iEI_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptri(int64_t, R_ESP + 4)); emu->libc_err = errno; }
 void iEu_32(x64emu_t *emu, uintptr_t fcn) { iEu_t fn = (iEu_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4)); emu->libc_err = errno; }
 void iFu_32(x64emu_t *emu, uintptr_t fcn) { iFu_t fn = (iFu_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4)); }
+void iFU_32(x64emu_t *emu, uintptr_t fcn) { iFU_t fn = (iFU_t)fcn; R_EAX = fn(from_ptri(uint64_t, R_ESP + 4)); }
 void iEf_32(x64emu_t *emu, uintptr_t fcn) { iEf_t fn = (iEf_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptri(float, R_ESP + 4)); emu->libc_err = errno; }
 void iEd_32(x64emu_t *emu, uintptr_t fcn) { iEd_t fn = (iEd_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptri(double, R_ESP + 4)); emu->libc_err = errno; }
 void iEl_32(x64emu_t *emu, uintptr_t fcn) { iEl_t fn = (iEl_t)fcn; errno = emu->libc_err; R_EAX = fn(from_long(from_ptri(long_t, R_ESP + 4))); emu->libc_err = errno; }
@@ -2090,6 +2103,7 @@ void LEpL_32(x64emu_t *emu, uintptr_t fcn) { LEpL_t fn = (LEpL_t)fcn; errno = em
 void LEpp_32(x64emu_t *emu, uintptr_t fcn) { LEpp_t fn = (LEpp_t)fcn; errno = emu->libc_err; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); emu->libc_err = errno; }
 void LFXi_32(x64emu_t *emu, uintptr_t fcn) { LFXi_t fn = (LFXi_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8))); }
 void LFXu_32(x64emu_t *emu, uintptr_t fcn) { LFXu_t fn = (LFXu_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8))); }
+void LFXU_32(x64emu_t *emu, uintptr_t fcn) { LFXU_t fn = (LFXU_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint64_t, R_ESP + 8))); }
 void LFXL_32(x64emu_t *emu, uintptr_t fcn) { LFXL_t fn = (LFXL_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)))); }
 void LFXp_32(x64emu_t *emu, uintptr_t fcn) { LFXp_t fn = (LFXp_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8))); }
 void pFEv_32(x64emu_t *emu, uintptr_t fcn) { pFEv_t fn = (pFEv_t)fcn; R_EAX = to_ptrv(fn(emu)); }
@@ -2339,6 +2353,7 @@ void iFXuu_32(x64emu_t *emu, uintptr_t fcn) { iFXuu_t fn = (iFXuu_t)fcn; R_EAX =
 void iFXup_32(x64emu_t *emu, uintptr_t fcn) { iFXup_t fn = (iFXup_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
 void iFXLi_32(x64emu_t *emu, uintptr_t fcn) { iFXLi_t fn = (iFXLi_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12)); }
 void iFXLu_32(x64emu_t *emu, uintptr_t fcn) { iFXLu_t fn = (iFXLu_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12)); }
+void iFXLU_32(x64emu_t *emu, uintptr_t fcn) { iFXLU_t fn = (iFXLU_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint64_t, R_ESP + 12)); }
 void iFXLf_32(x64emu_t *emu, uintptr_t fcn) { iFXLf_t fn = (iFXLf_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(float, R_ESP + 12)); }
 void iFXLl_32(x64emu_t *emu, uintptr_t fcn) { iFXLl_t fn = (iFXLl_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_long(from_ptri(long_t, R_ESP + 12))); }
 void iFXLL_32(x64emu_t *emu, uintptr_t fcn) { iFXLL_t fn = (iFXLL_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12))); }
@@ -2511,6 +2526,7 @@ void pEppriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { pEppriiiiiiiiilt__t fn
 void vEEipp_32(x64emu_t *emu, uintptr_t fcn) { vEEipp_t fn = (vEEipp_t)fcn; errno = emu->libc_err; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); emu->libc_err = errno; }
 void vFEipp_32(x64emu_t *emu, uintptr_t fcn) { vFEipp_t fn = (vFEipp_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
 void vEEipV_32(x64emu_t *emu, uintptr_t fcn) { vEEipV_t fn = (vEEipV_t)fcn; errno = emu->libc_err; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptrv(R_ESP + 12)); emu->libc_err = errno; }
+void vFEpui_32(x64emu_t *emu, uintptr_t fcn) { vFEpui_t fn = (vFEpui_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); }
 void vEEpuu_32(x64emu_t *emu, uintptr_t fcn) { vEEpuu_t fn = (vEEpuu_t)fcn; errno = emu->libc_err; fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); emu->libc_err = errno; }
 void vEEpup_32(x64emu_t *emu, uintptr_t fcn) { vEEpup_t fn = (vEEpup_t)fcn; errno = emu->libc_err; fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); emu->libc_err = errno; }
 void vFEpup_32(x64emu_t *emu, uintptr_t fcn) { vFEpup_t fn = (vFEpup_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
@@ -2610,6 +2626,7 @@ void vFXiiL_32(x64emu_t *emu, uintptr_t fcn) { vFXiiL_t fn = (vFXiiL_t)fcn; fn(g
 void vFXiLu_32(x64emu_t *emu, uintptr_t fcn) { vFXiLu_t fn = (vFXiLu_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16)); }
 void vFXLii_32(x64emu_t *emu, uintptr_t fcn) { vFXLii_t fn = (vFXLii_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void vFXLip_32(x64emu_t *emu, uintptr_t fcn) { vFXLip_t fn = (vFXLip_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void vFXLuu_32(x64emu_t *emu, uintptr_t fcn) { vFXLuu_t fn = (vFXLuu_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); }
 void vFXLLL_32(x64emu_t *emu, uintptr_t fcn) { vFXLLL_t fn = (vFXLLL_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16))); }
 void vFXLLp_32(x64emu_t *emu, uintptr_t fcn) { vFXLLp_t fn = (vFXLLp_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16)); }
 void vFXLpi_32(x64emu_t *emu, uintptr_t fcn) { vFXLpi_t fn = (vFXLpi_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
@@ -2644,6 +2661,7 @@ void iEEhup_32(x64emu_t *emu, uintptr_t fcn) { iEEhup_t fn = (iEEhup_t)fcn; errn
 void iEESpp_32(x64emu_t *emu, uintptr_t fcn) { iEESpp_t fn = (iEESpp_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); emu->libc_err = errno; }
 void iEESpV_32(x64emu_t *emu, uintptr_t fcn) { iEESpV_t fn = (iEESpV_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptrv(R_ESP + 12)); emu->libc_err = errno; }
 void iFEXip_32(x64emu_t *emu, uintptr_t fcn) { iFEXip_t fn = (iFEXip_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFEXup_32(x64emu_t *emu, uintptr_t fcn) { iFEXup_t fn = (iFEXup_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
 void iFEXlp_32(x64emu_t *emu, uintptr_t fcn) { iFEXlp_t fn = (iFEXlp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12)); }
 void iFEXLp_32(x64emu_t *emu, uintptr_t fcn) { iFEXLp_t fn = (iFEXLp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12)); }
 void iFEXpp_32(x64emu_t *emu, uintptr_t fcn) { iFEXpp_t fn = (iFEXpp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
@@ -2741,6 +2759,7 @@ void LFXCii_32(x64emu_t *emu, uintptr_t fcn) { LFXCii_t fn = (LFXCii_t)fcn; R_EA
 void LFXLuu_32(x64emu_t *emu, uintptr_t fcn) { LFXLuu_t fn = (LFXLuu_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16))); }
 void LFXpLp_32(x64emu_t *emu, uintptr_t fcn) { LFXpLp_t fn = (LFXpLp_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16))); }
 void pEEipi_32(x64emu_t *emu, uintptr_t fcn) { pEEipi_t fn = (pEEipi_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); emu->libc_err = errno; }
+void pFEupi_32(x64emu_t *emu, uintptr_t fcn) { pFEupi_t fn = (pFEupi_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); }
 void pFEupp_32(x64emu_t *emu, uintptr_t fcn) { pFEupp_t fn = (pFEupp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12))); }
 void pEEpii_32(x64emu_t *emu, uintptr_t fcn) { pEEpii_t fn = (pEEpii_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); emu->libc_err = errno; }
 void pFEpip_32(x64emu_t *emu, uintptr_t fcn) { pFEpip_t fn = (pFEpip_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12))); }
@@ -2750,6 +2769,8 @@ void pFEppi_32(x64emu_t *emu, uintptr_t fcn) { pFEppi_t fn = (pFEppi_t)fcn; R_EA
 void pEEppp_32(x64emu_t *emu, uintptr_t fcn) { pEEppp_t fn = (pEEppp_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12))); emu->libc_err = errno; }
 void pFEppp_32(x64emu_t *emu, uintptr_t fcn) { pFEppp_t fn = (pFEppp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12))); }
 void pFEXip_32(x64emu_t *emu, uintptr_t fcn) { pFEXip_t fn = (pFEXip_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12))); }
+void pFEXCL_32(x64emu_t *emu, uintptr_t fcn) { pFEXCL_t fn = (pFEXCL_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint8_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); }
+void pFEXuu_32(x64emu_t *emu, uintptr_t fcn) { pFEXuu_t fn = (pFEXuu_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12))); }
 void pFEXLL_32(x64emu_t *emu, uintptr_t fcn) { pFEXLL_t fn = (pFEXLL_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); }
 void pFEXLp_32(x64emu_t *emu, uintptr_t fcn) { pFEXLp_t fn = (pFEXLp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12))); }
 void pFEXpL_32(x64emu_t *emu, uintptr_t fcn) { pFEXpL_t fn = (pFEXpL_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); }
@@ -2970,7 +2991,6 @@ void iFpippp_32(x64emu_t *emu, uintptr_t fcn) { iFpippp_t fn = (iFpippp_t)fcn; R
 void iFpCCCC_32(x64emu_t *emu, uintptr_t fcn) { iFpCCCC_t fn = (iFpCCCC_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(uint8_t, R_ESP + 20)); }
 void iFpuipp_32(x64emu_t *emu, uintptr_t fcn) { iFpuipp_t fn = (iFpuipp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void iFppiUi_32(x64emu_t *emu, uintptr_t fcn) { iFppiUi_t fn = (iFppiUi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint64_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 24)); }
-void iFppipp_32(x64emu_t *emu, uintptr_t fcn) { iFppipp_t fn = (iFppipp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void iFpppip_32(x64emu_t *emu, uintptr_t fcn) { iFpppip_t fn = (iFpppip_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void iEpppLi_32(x64emu_t *emu, uintptr_t fcn) { iEpppLi_t fn = (iEpppLi_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptri(int32_t, R_ESP + 20)); emu->libc_err = errno; }
 void iEpppLp_32(x64emu_t *emu, uintptr_t fcn) { iEpppLp_t fn = (iEpppLp_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20)); emu->libc_err = errno; }
@@ -3174,6 +3194,7 @@ void lEipLipp_32(x64emu_t *emu, uintptr_t fcn) { lEipLipp_t fn = (lEipLipp_t)fcn
 void pFEpiiuu_32(x64emu_t *emu, uintptr_t fcn) { pFEpiiuu_t fn = (pFEpiiuu_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20))); }
 void pEEpLLiN_32(x64emu_t *emu, uintptr_t fcn) { pEEpLLiN_t fn = (pEEpLLiN_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); emu->libc_err = errno; }
 void pEEppLLp_32(x64emu_t *emu, uintptr_t fcn) { pEEppLLp_t fn = (pEEppLLp_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); emu->libc_err = errno; }
+void pFEXLLLp_32(x64emu_t *emu, uintptr_t fcn) { pFEXLLLp_t fn = (pFEXLLLp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); }
 void pFEXLpii_32(x64emu_t *emu, uintptr_t fcn) { pFEXLpii_t fn = (pFEXLpii_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); }
 void pFEXpppp_32(x64emu_t *emu, uintptr_t fcn) { pFEXpppp_t fn = (pFEXpppp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); }
 void pFWCiWCi_32(x64emu_t *emu, uintptr_t fcn) { pFWCiWCi_t fn = (pFWCiWCi_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint16_t, R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint16_t, R_ESP + 16), from_ptri(uint8_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24))); }
@@ -3289,13 +3310,14 @@ void pEEpLiiiI_32(x64emu_t *emu, uintptr_t fcn) { pEEpLiiiI_t fn = (pEEpLiiiI_t)
 void pFEpLiiiI_32(x64emu_t *emu, uintptr_t fcn) { pFEpLiiiI_t fn = (pFEpLiiiI_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int64_t, R_ESP + 24))); }
 void pEEpLiiil_32(x64emu_t *emu, uintptr_t fcn) { pEEpLiiil_t fn = (pEEpLiiil_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_long(from_ptri(long_t, R_ESP + 24)))); emu->libc_err = errno; }
 void pFEpXppip_32(x64emu_t *emu, uintptr_t fcn) { pFEpXppip_t fn = (pFEpXppip_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), getDisplay(from_ptriv(R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24))); }
+void pFppppiii_32(x64emu_t *emu, uintptr_t fcn) { pFppppiii_t fn = (pFppppiii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28))); }
 void vFXLLiiibl__32(x64emu_t *emu, uintptr_t fcn) { vFXLLiiibl__t fn = (vFXLLiiibl__t)fcn; struct_l_t arg_28={0}; if (*(ptr_t*)(from_ptr((R_ESP + 28)))) from_struct_l(&arg_28, *(ptr_t*)(from_ptr((R_ESP + 28)))); fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), *(ptr_t*)(from_ptr((R_ESP + 28))) ? &arg_28 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 28)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 28))), &arg_28); }
 void iFXiLibiip_ip_32(x64emu_t *emu, uintptr_t fcn) { iFXiLibiip_ip_t fn = (iFXiLibiip_ip_t)fcn; struct_iip_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_iip(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL, from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28)); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_iip(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); }
 void iFXLibL_ubL_u_32(x64emu_t *emu, uintptr_t fcn) { iFXLibL_ubL_u_t fn = (iFXLibL_ubL_u_t)fcn; struct_L_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_L(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); struct_L_t arg_24={0}; if (*(ptr_t*)(from_ptr((R_ESP + 24)))) from_struct_L(&arg_24, *(ptr_t*)(from_ptr((R_ESP + 24)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_ptri(uint32_t, R_ESP + 20), *(ptr_t*)(from_ptr((R_ESP + 24))) ? &arg_24 : NULL, from_ptri(uint32_t, R_ESP + 28)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); if (*(ptr_t*)(from_ptr((R_ESP + 24)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 24))), &arg_24); }
-void vFXLpiibpiip_i_32(x64emu_t *emu, uintptr_t fcn) { vFXLpiibpiip_i_t fn = (vFXLpiibpiip_i_t)fcn; struct_piip_t arg_24={0}; if (*(ptr_t*)(from_ptr((R_ESP + 24)))) from_struct_piip(&arg_24, *(ptr_t*)(from_ptr((R_ESP + 24)))); fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), *(ptr_t*)(from_ptr((R_ESP + 24))) ? &arg_24 : NULL, from_ptri(int32_t, R_ESP + 28)); if (*(ptr_t*)(from_ptr((R_ESP + 24)))) to_struct_piip(*(ptr_t*)(from_ptr((R_ESP + 24))), &arg_24); }
 void iFXLpiibpiiL_i_32(x64emu_t *emu, uintptr_t fcn) { iFXLpiibpiiL_i_t fn = (iFXLpiibpiiL_i_t)fcn; struct_piiL_t arg_24={0}; if (*(ptr_t*)(from_ptr((R_ESP + 24)))) from_struct_piiL(&arg_24, *(ptr_t*)(from_ptr((R_ESP + 24)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), *(ptr_t*)(from_ptr((R_ESP + 24))) ? &arg_24 : NULL, from_ptri(int32_t, R_ESP + 28)); if (*(ptr_t*)(from_ptr((R_ESP + 24)))) to_struct_piiL(*(ptr_t*)(from_ptr((R_ESP + 24))), &arg_24); }
 void LFXLLuubLWWWcc_bLWWWcc__32(x64emu_t *emu, uintptr_t fcn) { LFXLLuubLWWWcc_bLWWWcc__t fn = (LFXLLuubLWWWcc_bLWWWcc__t)fcn; struct_LWWWcc_t arg_24={0}; if (*(ptr_t*)(from_ptr((R_ESP + 24)))) from_struct_LWWWcc(&arg_24, *(ptr_t*)(from_ptr((R_ESP + 24)))); struct_LWWWcc_t arg_28={0}; if (*(ptr_t*)(from_ptr((R_ESP + 28)))) from_struct_LWWWcc(&arg_28, *(ptr_t*)(from_ptr((R_ESP + 28)))); R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), *(ptr_t*)(from_ptr((R_ESP + 24))) ? &arg_24 : NULL, *(ptr_t*)(from_ptr((R_ESP + 28))) ? &arg_28 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 24)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 24))), &arg_24); if (*(ptr_t*)(from_ptr((R_ESP + 28)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 28))), &arg_28); }
 void LFXLLbLWWWcc_bLWWWcc_uu_32(x64emu_t *emu, uintptr_t fcn) { LFXLLbLWWWcc_bLWWWcc_uu_t fn = (LFXLLbLWWWcc_bLWWWcc_uu_t)fcn; struct_LWWWcc_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_LWWWcc(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); struct_LWWWcc_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_LWWWcc(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL, from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28))); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); }
+void vFEXLpiipi_32(x64emu_t *emu, uintptr_t fcn) { vFEXLpiipi_t fn = (vFEXLpiipi_t)fcn; fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); }
 void vFiiiiuuip_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiuuip_t fn = (vFiiiiuuip_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptriv(R_ESP + 32)); }
 void vFiilliilp_32(x64emu_t *emu, uintptr_t fcn) { vFiilliilp_t fn = (vFiilliilp_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_long(from_ptri(long_t, R_ESP + 12)), from_long(from_ptri(long_t, R_ESP + 16)), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_long(from_ptri(long_t, R_ESP + 28)), from_ptriv(R_ESP + 32)); }
 void vFiupuiuup_32(x64emu_t *emu, uintptr_t fcn) { vFiupuiuup_t fn = (vFiupuiuup_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptriv(R_ESP + 32)); }
@@ -3327,7 +3349,6 @@ void vFXiLLiipi_32(x64emu_t *emu, uintptr_t fcn) { vFXiLLiipi_t fn = (vFXiLLiipi
 void vFXiLpiiuu_32(x64emu_t *emu, uintptr_t fcn) { vFXiLpiiuu_t fn = (vFXiLpiiuu_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32)); }
 void vFXLiiiLii_32(x64emu_t *emu, uintptr_t fcn) { vFXLiiiLii_t fn = (vFXLiiiLii_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ulong(from_ptri(ulong_t, R_ESP + 24)), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32)); }
 void vFXLLLiipi_32(x64emu_t *emu, uintptr_t fcn) { vFXLLLiipi_t fn = (vFXLLLiipi_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28), from_ptri(int32_t, R_ESP + 32)); }
-void vFXLppiipi_32(x64emu_t *emu, uintptr_t fcn) { vFXLppiipi_t fn = (vFXLppiipi_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28), from_ptri(int32_t, R_ESP + 32)); }
 void vFXppuulll_32(x64emu_t *emu, uintptr_t fcn) { vFXppuulll_t fn = (vFXppuulll_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_long(from_ptri(long_t, R_ESP + 24)), from_long(from_ptri(long_t, R_ESP + 28)), from_long(from_ptri(long_t, R_ESP + 32))); }
 void iEEpippppp_32(x64emu_t *emu, uintptr_t fcn) { iEEpippppp_t fn = (iEEpippppp_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28)); emu->libc_err = errno; }
 void iEEpLiLppp_32(x64emu_t *emu, uintptr_t fcn) { iEEpLiLppp_t fn = (iEEpLiLppp_t)fcn; errno = emu->libc_err; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28)); emu->libc_err = errno; }
@@ -3344,9 +3365,11 @@ void uFuupuuiuf_32(x64emu_t *emu, uintptr_t fcn) { uFuupuuiuf_t fn = (uFuupuuiuf
 void uFulpppppp_32(x64emu_t *emu, uintptr_t fcn) { uFulpppppp_t fn = (uFulpppppp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32)); }
 void LFEXLppuuu_32(x64emu_t *emu, uintptr_t fcn) { LFEXLppuuu_t fn = (LFEXLppuuu_t)fcn; R_EAX = to_ulong(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28))); }
 void LFXLpuuLLu_32(x64emu_t *emu, uintptr_t fcn) { LFXLpuuLLu_t fn = (LFXLpuuLLu_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ulong(from_ptri(ulong_t, R_ESP + 24)), from_ulong(from_ptri(ulong_t, R_ESP + 28)), from_ptri(uint32_t, R_ESP + 32))); }
+void pFEXpLLppp_32(x64emu_t *emu, uintptr_t fcn) { pFEXpLLppp_t fn = (pFEXpLLppp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28))); }
 void iFXLLiippBL__32(x64emu_t *emu, uintptr_t fcn) { iFXLLiippBL__t fn = (iFXLLiippBL__t)fcn; struct_L_t arg_32={0}; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28), *(ptr_t*)(from_ptr((R_ESP + 32))) ? &arg_32 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 32)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 32))), &arg_32); }
 void iFXLpppbL_pp_32(x64emu_t *emu, uintptr_t fcn) { iFXLpppbL_pp_t fn = (iFXLpppbL_pp_t)fcn; struct_L_t arg_24={0}; if (*(ptr_t*)(from_ptr((R_ESP + 24)))) from_struct_L(&arg_24, *(ptr_t*)(from_ptr((R_ESP + 24)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), *(ptr_t*)(from_ptr((R_ESP + 24))) ? &arg_24 : NULL, from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32)); if (*(ptr_t*)(from_ptr((R_ESP + 24)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 24))), &arg_24); }
 void vFppibLdd_ipiu_32(x64emu_t *emu, uintptr_t fcn) { vFppibLdd_ipiu_t fn = (vFppibLdd_ipiu_t)fcn; struct_Ldd_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_Ldd(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_Ldd(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
+void vFEXLppiipi_32(x64emu_t *emu, uintptr_t fcn) { vFEXLppiipi_t fn = (vFEXLppiipi_t)fcn; fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28), from_ptri(int32_t, R_ESP + 32)); }
 void vFiiiiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiiii_t fn = (vFiiiiiiiii_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36)); }
 void vFiiiiiiill_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiill_t fn = (vFiiiiiiill_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_long(from_ptri(long_t, R_ESP + 32)), from_long(from_ptri(long_t, R_ESP + 36))); }
 void vFiiiiillli_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiillli_t fn = (vFiiiiillli_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_long(from_ptri(long_t, R_ESP + 24)), from_long(from_ptri(long_t, R_ESP + 28)), from_long(from_ptri(long_t, R_ESP + 32)), from_ptri(int32_t, R_ESP + 36)); }
@@ -3378,7 +3401,6 @@ void iFEXLLLiipi_32(x64emu_t *emu, uintptr_t fcn) { iFEXLLLiipi_t fn = (iFEXLLLi
 void iFuiiuuiiip_32(x64emu_t *emu, uintptr_t fcn) { iFuiiuuiiip_t fn = (iFuiiuuiiip_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptriv(R_ESP + 36)); }
 void iFuiiupiiup_32(x64emu_t *emu, uintptr_t fcn) { iFuiiupiiup_t fn = (iFuiiupiiup_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptriv(R_ESP + 36)); }
 void iFdddpppppp_32(x64emu_t *emu, uintptr_t fcn) { iFdddpppppp_t fn = (iFdddpppppp_t)fcn; R_EAX = fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44), from_ptriv(R_ESP + 48)); }
-void iFppippippp_32(x64emu_t *emu, uintptr_t fcn) { iFppippippp_t fn = (iFppippippp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36)); }
 void iFXuuuLiiip_32(x64emu_t *emu, uintptr_t fcn) { iFXuuuLiiip_t fn = (iFXuuuLiiip_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ulong(from_ptri(ulong_t, R_ESP + 20)), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptriv(R_ESP + 36)); }
 void iFXuuuLpppp_32(x64emu_t *emu, uintptr_t fcn) { iFXuuuLpppp_t fn = (iFXuuuLpppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ulong(from_ptri(ulong_t, R_ESP + 20)), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36)); }
 void iFXLiuiiLLL_32(x64emu_t *emu, uintptr_t fcn) { iFXLiuiiLLL_t fn = (iFXLiuiiLLL_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ulong(from_ptri(ulong_t, R_ESP + 28)), from_ulong(from_ptri(ulong_t, R_ESP + 32)), from_ulong(from_ptri(ulong_t, R_ESP + 36))); }
@@ -3415,6 +3437,8 @@ void vFuupuiupuuf_32(x64emu_t *emu, uintptr_t fcn) { vFuupuiupuuf_t fn = (vFuupu
 void vFuffiiffiip_32(x64emu_t *emu, uintptr_t fcn) { vFuffiiffiip_t fn = (vFuffiiffiip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(float, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptriv(R_ESP + 40)); }
 void vFuddiiddiip_32(x64emu_t *emu, uintptr_t fcn) { vFuddiiddiip_t fn = (vFuddiiddiip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(double, R_ESP + 32), from_ptri(double, R_ESP + 40), from_ptri(int32_t, R_ESP + 48), from_ptri(int32_t, R_ESP + 52), from_ptriv(R_ESP + 56)); }
 void vFffffffffff_32(x64emu_t *emu, uintptr_t fcn) { vFffffffffff_t fn = (vFffffffffff_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(float, R_ESP + 32), from_ptri(float, R_ESP + 36), from_ptri(float, R_ESP + 40)); }
+void iFEppippippp_32(x64emu_t *emu, uintptr_t fcn) { iFEppippippp_t fn = (iFEppippippp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36)); }
+void iFEXpLiipiiL_32(x64emu_t *emu, uintptr_t fcn) { iFEXpLiipiiL_t fn = (iFEXpLiipiiL_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ulong(from_ptri(ulong_t, R_ESP + 36))); }
 void iFuiiiuuiiip_32(x64emu_t *emu, uintptr_t fcn) { iFuiiiuuiiip_t fn = (iFuiiiuuiiip_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptriv(R_ESP + 40)); }
 void iFppuuiiuuuu_32(x64emu_t *emu, uintptr_t fcn) { iFppuuiiuuuu_t fn = (iFppuuiiuuuu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptri(uint32_t, R_ESP + 40)); }
 void iFXiLLdduudd_32(x64emu_t *emu, uintptr_t fcn) { iFXiLLdduudd_t fn = (iFXiLLdduudd_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28), from_ptri(uint32_t, R_ESP + 36), from_ptri(uint32_t, R_ESP + 40), from_ptri(double, R_ESP + 44), from_ptri(double, R_ESP + 52)); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index e39652ab..749ffb60 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -72,6 +72,7 @@ void iFi_32(x64emu_t *emu, uintptr_t fnc);
 void iEI_32(x64emu_t *emu, uintptr_t fnc);
 void iEu_32(x64emu_t *emu, uintptr_t fnc);
 void iFu_32(x64emu_t *emu, uintptr_t fnc);
+void iFU_32(x64emu_t *emu, uintptr_t fnc);
 void iEf_32(x64emu_t *emu, uintptr_t fnc);
 void iEd_32(x64emu_t *emu, uintptr_t fnc);
 void iEl_32(x64emu_t *emu, uintptr_t fnc);
@@ -335,6 +336,7 @@ void LEpL_32(x64emu_t *emu, uintptr_t fnc);
 void LEpp_32(x64emu_t *emu, uintptr_t fnc);
 void LFXi_32(x64emu_t *emu, uintptr_t fnc);
 void LFXu_32(x64emu_t *emu, uintptr_t fnc);
+void LFXU_32(x64emu_t *emu, uintptr_t fnc);
 void LFXL_32(x64emu_t *emu, uintptr_t fnc);
 void LFXp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEv_32(x64emu_t *emu, uintptr_t fnc);
@@ -584,6 +586,7 @@ void iFXuu_32(x64emu_t *emu, uintptr_t fnc);
 void iFXup_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLi_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLu_32(x64emu_t *emu, uintptr_t fnc);
+void iFXLU_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLf_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLl_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLL_32(x64emu_t *emu, uintptr_t fnc);
@@ -756,6 +759,7 @@ void pEppriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc);
 void vEEipp_32(x64emu_t *emu, uintptr_t fnc);
 void vFEipp_32(x64emu_t *emu, uintptr_t fnc);
 void vEEipV_32(x64emu_t *emu, uintptr_t fnc);
+void vFEpui_32(x64emu_t *emu, uintptr_t fnc);
 void vEEpuu_32(x64emu_t *emu, uintptr_t fnc);
 void vEEpup_32(x64emu_t *emu, uintptr_t fnc);
 void vFEpup_32(x64emu_t *emu, uintptr_t fnc);
@@ -855,6 +859,7 @@ void vFXiiL_32(x64emu_t *emu, uintptr_t fnc);
 void vFXiLu_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLii_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLip_32(x64emu_t *emu, uintptr_t fnc);
+void vFXLuu_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLLL_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLLp_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLpi_32(x64emu_t *emu, uintptr_t fnc);
@@ -889,6 +894,7 @@ void iEEhup_32(x64emu_t *emu, uintptr_t fnc);
 void iEESpp_32(x64emu_t *emu, uintptr_t fnc);
 void iEESpV_32(x64emu_t *emu, uintptr_t fnc);
 void iFEXip_32(x64emu_t *emu, uintptr_t fnc);
+void iFEXup_32(x64emu_t *emu, uintptr_t fnc);
 void iFEXlp_32(x64emu_t *emu, uintptr_t fnc);
 void iFEXLp_32(x64emu_t *emu, uintptr_t fnc);
 void iFEXpp_32(x64emu_t *emu, uintptr_t fnc);
@@ -986,6 +992,7 @@ void LFXCii_32(x64emu_t *emu, uintptr_t fnc);
 void LFXLuu_32(x64emu_t *emu, uintptr_t fnc);
 void LFXpLp_32(x64emu_t *emu, uintptr_t fnc);
 void pEEipi_32(x64emu_t *emu, uintptr_t fnc);
+void pFEupi_32(x64emu_t *emu, uintptr_t fnc);
 void pFEupp_32(x64emu_t *emu, uintptr_t fnc);
 void pEEpii_32(x64emu_t *emu, uintptr_t fnc);
 void pFEpip_32(x64emu_t *emu, uintptr_t fnc);
@@ -995,6 +1002,8 @@ void pFEppi_32(x64emu_t *emu, uintptr_t fnc);
 void pEEppp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEppp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXip_32(x64emu_t *emu, uintptr_t fnc);
+void pFEXCL_32(x64emu_t *emu, uintptr_t fnc);
+void pFEXuu_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXLL_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXLp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXpL_32(x64emu_t *emu, uintptr_t fnc);
@@ -1215,7 +1224,6 @@ void iFpippp_32(x64emu_t *emu, uintptr_t fnc);
 void iFpCCCC_32(x64emu_t *emu, uintptr_t fnc);
 void iFpuipp_32(x64emu_t *emu, uintptr_t fnc);
 void iFppiUi_32(x64emu_t *emu, uintptr_t fnc);
-void iFppipp_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppip_32(x64emu_t *emu, uintptr_t fnc);
 void iEpppLi_32(x64emu_t *emu, uintptr_t fnc);
 void iEpppLp_32(x64emu_t *emu, uintptr_t fnc);
@@ -1419,6 +1427,7 @@ void lEipLipp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEpiiuu_32(x64emu_t *emu, uintptr_t fnc);
 void pEEpLLiN_32(x64emu_t *emu, uintptr_t fnc);
 void pEEppLLp_32(x64emu_t *emu, uintptr_t fnc);
+void pFEXLLLp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXLpii_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXpppp_32(x64emu_t *emu, uintptr_t fnc);
 void pFWCiWCi_32(x64emu_t *emu, uintptr_t fnc);
@@ -1534,13 +1543,14 @@ void pEEpLiiiI_32(x64emu_t *emu, uintptr_t fnc);
 void pFEpLiiiI_32(x64emu_t *emu, uintptr_t fnc);
 void pEEpLiiil_32(x64emu_t *emu, uintptr_t fnc);
 void pFEpXppip_32(x64emu_t *emu, uintptr_t fnc);
+void pFppppiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLLiiibl__32(x64emu_t *emu, uintptr_t fnc);
 void iFXiLibiip_ip_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLibL_ubL_u_32(x64emu_t *emu, uintptr_t fnc);
-void vFXLpiibpiip_i_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLpiibpiiL_i_32(x64emu_t *emu, uintptr_t fnc);
 void LFXLLuubLWWWcc_bLWWWcc__32(x64emu_t *emu, uintptr_t fnc);
 void LFXLLbLWWWcc_bLWWWcc_uu_32(x64emu_t *emu, uintptr_t fnc);
+void vFEXLpiipi_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiiiuuip_32(x64emu_t *emu, uintptr_t fnc);
 void vFiilliilp_32(x64emu_t *emu, uintptr_t fnc);
 void vFiupuiuup_32(x64emu_t *emu, uintptr_t fnc);
@@ -1572,7 +1582,6 @@ void vFXiLLiipi_32(x64emu_t *emu, uintptr_t fnc);
 void vFXiLpiiuu_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLiiiLii_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLLLiipi_32(x64emu_t *emu, uintptr_t fnc);
-void vFXLppiipi_32(x64emu_t *emu, uintptr_t fnc);
 void vFXppuulll_32(x64emu_t *emu, uintptr_t fnc);
 void iEEpippppp_32(x64emu_t *emu, uintptr_t fnc);
 void iEEpLiLppp_32(x64emu_t *emu, uintptr_t fnc);
@@ -1589,9 +1598,11 @@ void uFuupuuiuf_32(x64emu_t *emu, uintptr_t fnc);
 void uFulpppppp_32(x64emu_t *emu, uintptr_t fnc);
 void LFEXLppuuu_32(x64emu_t *emu, uintptr_t fnc);
 void LFXLpuuLLu_32(x64emu_t *emu, uintptr_t fnc);
+void pFEXpLLppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLLiippBL__32(x64emu_t *emu, uintptr_t fnc);
 void iFXLpppbL_pp_32(x64emu_t *emu, uintptr_t fnc);
 void vFppibLdd_ipiu_32(x64emu_t *emu, uintptr_t fnc);
+void vFEXLppiipi_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiiiiiiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiiiiiill_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiiiillli_32(x64emu_t *emu, uintptr_t fnc);
@@ -1623,7 +1634,6 @@ void iFEXLLLiipi_32(x64emu_t *emu, uintptr_t fnc);
 void iFuiiuuiiip_32(x64emu_t *emu, uintptr_t fnc);
 void iFuiiupiiup_32(x64emu_t *emu, uintptr_t fnc);
 void iFdddpppppp_32(x64emu_t *emu, uintptr_t fnc);
-void iFppippippp_32(x64emu_t *emu, uintptr_t fnc);
 void iFXuuuLiiip_32(x64emu_t *emu, uintptr_t fnc);
 void iFXuuuLpppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFXLiuiiLLL_32(x64emu_t *emu, uintptr_t fnc);
@@ -1660,6 +1670,8 @@ void vFuupuiupuuf_32(x64emu_t *emu, uintptr_t fnc);
 void vFuffiiffiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFuddiiddiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFffffffffff_32(x64emu_t *emu, uintptr_t fnc);
+void iFEppippippp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEXpLiipiiL_32(x64emu_t *emu, uintptr_t fnc);
 void iFuiiiuuiiip_32(x64emu_t *emu, uintptr_t fnc);
 void iFppuuiiuuuu_32(x64emu_t *emu, uintptr_t fnc);
 void iFXiLLdduudd_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c
index a2d94afc..21e694c4 100644
--- a/src/wrapped32/wrappedlibx11.c
+++ b/src/wrapped32/wrappedlibx11.c
@@ -405,13 +405,12 @@ static void* reverse_register_imFct(library_t* lib, void* fct)
     #undef GO
     return (void*)AddBridge(lib->w.bridge, iFppp_32, fct, 0, NULL);
 }
-#if 0
 // XConnectionWatchProc
 #define GO(A)   \
-static uintptr_t my32_XConnectionWatchProc_fct_##A = 0;                               \
-static void my32_XConnectionWatchProc_##A(void* dpy, void* data, int op, void* d)     \
-{                                                                                   \
-    RunFunctionFmt(my32_XConnectionWatchProc_fct_##A, "ppip", dpy, data, op, d);  \
+static uintptr_t my32_XConnectionWatchProc_fct_##A = 0;                                         \
+static void my32_XConnectionWatchProc_##A(void* dpy, void* data, int op, void* d)               \
+{                                                                                               \
+    RunFunctionFmt(my32_XConnectionWatchProc_fct_##A, "ppip", FindDisplay(dpy), data, op, d);   \
 }
 SUPER()
 #undef GO
@@ -428,7 +427,6 @@ static void* findXConnectionWatchProcFct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libX11 XConnectionWatchProc callback\n");
     return NULL;
 }
-#endif
 // xifevent
 #define GO(A)   \
 static uintptr_t my32_xifevent_fct_##A = 0;                                             \
@@ -455,13 +453,12 @@ static void* findxifeventFct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libX11 xifevent callback\n");
     return NULL;
 }
-#if 0
 // XInternalAsyncHandler
 #define GO(A)   \
-static uintptr_t my32_XInternalAsyncHandler_fct_##A = 0;                                              \
-static int my32_XInternalAsyncHandler_##A(void* dpy, void* rep, void* buf, int len, void* data)       \
-{                                                                                                   \
-    return RunFunctionFmt(my32_XInternalAsyncHandler_fct_##A, "pppip", dpy, rep, buf, len, data);  \
+static uintptr_t my32_XInternalAsyncHandler_fct_##A = 0;                                                        \
+static int my32_XInternalAsyncHandler_##A(void* dpy, void* rep, void* buf, int len, void* data)                 \
+{                                                                                                               \
+    return RunFunctionFmt(my32_XInternalAsyncHandler_fct_##A, "pppip", FindDisplay(dpy), rep, buf, len, data);  \
 }
 SUPER()
 #undef GO
@@ -478,7 +475,6 @@ static void* findXInternalAsyncHandlerFct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libX11 XInternalAsyncHandler callback\n");
     return NULL;
 }
-#endif
 // XSynchronizeProc
 #define GO(A)   \
 static uintptr_t my32_XSynchronizeProc_fct_##A = 0;                       \
@@ -556,12 +552,13 @@ static void* findXUnlockDisplayFct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libX11 XUnlockDisplay callback\n");
     return NULL;
 }
+#endif
 // async_handler
 #define GO(A)   \
-static uintptr_t my32_async_handler_fct_##A = 0;                                      \
-static int my32_async_handler_##A(void* a, void* b, void* c, int d, void* e)          \
-{                                                                                   \
-    return (int)RunFunctionFmt(my32_async_handler_fct_##A, "pppip", a, b, c, d, e);   \
+static uintptr_t my32_async_handler_fct_##A = 0;                                                    \
+static int my32_async_handler_##A(void* a, void* b, void* c, int d, void* e)                        \
+{                                                                                                   \
+    return (int)RunFunctionFmt(my32_async_handler_fct_##A, "pppip", FindDisplay(a), b, c, d, e);    \
 }
 SUPER()
 #undef GO
@@ -578,7 +575,6 @@ static void* find_async_handler_Fct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for libX11 async_handler callback\n");
     return NULL;
 }
-#endif
 // XImage function wrappers
 // create_image
 #define GO(A)   \
@@ -1606,7 +1602,7 @@ EXPORT void my32_XDestroyImage(x64emu_t* emu, void* image)
     to_hash_d((uintptr_t)((XImage*)image)->obdata);
     my->XDestroyImage(image);
 }
-#if 0
+
 typedef struct xintasync_s {
     struct xintasync_s *next;
     int (*handler)(
@@ -1624,7 +1620,6 @@ EXPORT void my32__XDeqAsyncHandler(x64emu_t* emu, void* cb, void* data)
     my->_XDeqAsyncHandler(findXInternalAsyncHandlerFct(cb), data);
 }
 
-#endif
 EXPORT void* my32_XESetWireToEvent(x64emu_t* emu, void* display, int32_t event_number, void* proc)
 {
     void* ret = NULL;
@@ -1661,11 +1656,11 @@ EXPORT int my32_XQueryExtension(x64emu_t* emu, void* display, char* name, int* m
     }
     return ret;
 }
-#if 0
 EXPORT int my32_XAddConnectionWatch(x64emu_t* emu, void* display, char* f, void* data)
 {
     return my->XAddConnectionWatch(display, findXConnectionWatchProcFct(f), data);
 }
+#if 0
 
 EXPORT void my32_XRemoveConnectionWatch(x64emu_t* emu, void* display, char* f, void* data)
 {
@@ -1687,7 +1682,7 @@ EXPORT void* my32_XSynchronize(x64emu_t* emu, void* display, int onoff)
 EXPORT void* my32_XOpenDisplay(void* name)
 {
     void* ret = my->XOpenDisplay(name);
-    if(ret && box64_x11sync) {my->XSynchronize(ret, 1); printf_log(LOG_INFO, "Forcing Syncronized opration on Display %p\n", ret);}
+    if(ret && box64_x11sync) {my->XSynchronize(ret, 1); printf_log(LOG_INFO, "Forcing Syncronized operation on Display %p\n", ret);}
     return ret;
 }
 
@@ -1884,16 +1879,15 @@ EXPORT int my32_XGetWMNormalHints(x64emu_t* emu, void* dpy, XID window, void* hi
     }
     return ret;
 }
-#if 0
 EXPORT void* my32__XGetRequest(x64emu_t* emu, my_XDisplay_t* dpy, uint8_t type, size_t len)
 {
     // check if asynchandler needs updated wrapping
-    struct my32_XInternalAsync * p = dpy->async_handlers;
+    struct my_XInternalAsync * p = dpy->async_handlers;
     while(p) {
         if(GetNativeFnc((uintptr_t)p->handler)!=p->handler) {
             // needs wrapping and autobridge!
             void* new_handler = find_async_handler_Fct(p->handler);
-            AddAutomaticBridge(my_lib->w.bridge, iFpppip, new_handler, 0, "async_handler");
+            AddAutomaticBridge(my_lib->w.bridge, iFpppip_32, new_handler, 0, "async_handler");
             p->handler = new_handler;
         }
         p = p->next;
@@ -1901,7 +1895,6 @@ EXPORT void* my32__XGetRequest(x64emu_t* emu, my_XDisplay_t* dpy, uint8_t type,
 
     return my->_XGetRequest(dpy, type, len);
 }
-#endif
 
 EXPORT int my32_XStringListToTextProperty(x64emu_t* emu, ptr_t* list, int count, void* text)
 {
@@ -1939,6 +1932,18 @@ EXPORT int my32_XmbTextListToTextProperty(x64emu_t* emu, void* dpy, ptr_t* list,
     return ret;
 }
 
+EXPORT int my32_XwcTextListToTextProperty(x64emu_t* emu, void* dpy, ptr_t* list, int count, uint32_t style, void* text)
+{
+    char* l_list[count];
+    if(list)
+        for(int i=0; i<count; ++i)
+            l_list[i] = from_ptrv(list[i]);
+    struct_pLiL_t text_l = {0};
+    int ret = my->XwcTextListToTextProperty(dpy, list?(&l_list):NULL, count, style, &text_l);
+    to_struct_pLiL(to_ptrv(text), &text_l);
+    return ret;
+}
+
 EXPORT int my32_XGetWindowAttributes(x64emu_t* emu, void* dpy, XID window, my_XWindowAttributes_32_t* attr)
 {
     static my_Screen_32_t screen32 = {0};
@@ -2020,6 +2025,29 @@ EXPORT void my32_Xutf8SetWMProperties(x64emu_t* emu, void* dpy, XID window, void
     my->Xutf8SetWMProperties(dpy, window, window_name, icon_name, argv?argv_l:NULL, argc, normal_hints?(&wm_size_l):NULL, wm_hints?(&wm_hints_l):NULL, class_hints?(&class_hints_l):NULL);
 }
 
+EXPORT void my32_XmbSetWMProperties(x64emu_t* emu, void* dpy, XID window, void* window_name, void* icon_name, ptr_t* argv, int argc, void* normal_hints, my_XWMHints_32_t* wm_hints, ptr_t* class_hints)
+{
+    int wm_size_l[17+2] = {0};
+    my_XWMHints_t wm_hints_l = {0};
+    char* class_hints_l[2] = {0};
+    char* argv_l[argc+1];
+
+    if(normal_hints)
+        convert_XSizeHints_to_64(&wm_size_l, normal_hints);
+    if(wm_hints)
+        convert_XWMints_to_64(&wm_hints_l, wm_hints);
+    if(class_hints) {
+        class_hints_l[0] = from_ptrv(class_hints[0]);
+        class_hints_l[1] = from_ptrv(class_hints[1]);
+    }
+    if(argv) {
+        memset(argv_l, 0, sizeof(argv_l));
+        for(int i=0; i<argc; ++i)
+            argv_l[i] = from_ptrv(argv[i]);
+    }
+    my->XmbSetWMProperties(dpy, window, window_name, icon_name, argv?argv_l:NULL, argc, normal_hints?(&wm_size_l):NULL, wm_hints?(&wm_hints_l):NULL, class_hints?(&class_hints_l):NULL);
+}
+
 
 EXPORT void* my32_XListExtensions(x64emu_t* emu, void* dpy, int* n)
 {
@@ -2061,21 +2089,18 @@ EXPORT int my32_XQueryTree(x64emu_t* emu, void* dpy, XID window, XID_32* root, X
     return ret;
 }
 
-EXPORT void* my32_XCreateFontSet(x64emu_t* emu, void* dpy, void* name, ptr_t* missing, int* missing_count, ptr_t* string)
+EXPORT int my32_Xutf8TextPropertyToTextList(x64emu_t* emu, void* dpy, void* prop, ptr_t* list, int* count)
 {
-    void** missing_l = NULL;
-    void* string_l = NULL;
-    void* ret = my->XCreateFontSet(dpy, name, &missing_l, missing_count, string?(&string_l):NULL);
-    if(string) *string = to_ptrv(string_l);
-    // inplace string list shrink
-    *missing = to_ptrv(missing_l);
-    if(missing_l && *missing_count) {
-        for(int i=0; i<*missing_count; ++i)
-            ((ptr_t*)missing_l)[i] = to_ptrv(missing_l[i]);
+    void** list_l = NULL;
+    int ret = my->Xutf8TextPropertyToTextList(dpy, prop, &list_l, count);
+    if(list_l && *count) {
+        for(int i=0; i<*count; ++i)
+            ((ptr_t*)list_l)[i] = to_ptrv(list_l[i]);
     }
     // put end marker, for expansion
-    if(missing_l)
-        ((ptr_t*)missing_l)[*missing_count] = 0;
+    if(list_l)
+        ((ptr_t*)list_l)[*count] = 0;
+    *list = to_ptrv(list_l);
     return ret;
 }
 
@@ -2094,6 +2119,21 @@ EXPORT int my32_XmbTextPropertyToTextList(x64emu_t* emu, void* dpy, void* prop,
     return ret;
 }
 
+EXPORT int my32_XwcTextPropertyToTextList(x64emu_t* emu, void* dpy, void* prop, ptr_t* list, int* count)
+{
+    void** list_l = NULL;
+    int ret = my->XwcTextPropertyToTextList(dpy, prop, &list_l, count);
+    if(list_l && *count) {
+        for(int i=0; i<*count; ++i)
+            ((ptr_t*)list_l)[i] = to_ptrv(list_l[i]);
+    }
+    // put end marker, for expansion
+    if(list_l)
+        ((ptr_t*)list_l)[*count] = 0;
+    *list = to_ptrv(list_l);
+    return ret;
+}
+
 EXPORT void my32_XFreeStringList(x64emu_t* emu, ptr_t* list)
 {
     // need to find size of list
@@ -2226,6 +2266,198 @@ EXPORT int my32_XFreeFont(x64emu_t* emu, void* dpy, void* f)
     return my->XFreeFont(dpy, f);
 }
 
+EXPORT void* my32_XCreateFontSet(x64emu_t* emu, void* dpy, void* name, ptr_t* missing, int* missing_count, ptr_t* string)
+{
+    void** missing_l = NULL;
+    void* string_l = NULL;
+    void* ret = my->XCreateFontSet(dpy, name, &missing_l, missing_count, string?(&string_l):NULL);
+    if(string) *string = to_ptrv(string_l);
+    // inplace string list shrink
+    *missing = to_ptrv(missing_l);
+    if(missing_l && *missing_count) {
+        for(int i=0; i<*missing_count; ++i)
+            ((ptr_t*)missing_l)[i] = to_ptrv(missing_l[i]);
+    }
+    // put end marker, for expansion
+    if(missing_l)
+        ((ptr_t*)missing_l)[*missing_count] = 0;
+    my_XFontSet_32_t* set = box32_calloc(1, sizeof(my_XFontSet_32_t));
+    set->fontset = ret;
+    return set;
+}
+
+EXPORT int my32_XFontsOfFontSet(x64emu_t* emu, my_XFontSet_32_t* set, ptr_t* fonts_ret, ptr_t* names_ret)
+{
+    void* fonts_ret_l = NULL;
+    void* names_ret_l = NULL;
+    int ret = my->XFontsOfFontSet(set->fontset, fonts_ret?(&fonts_ret_l):NULL, names_ret?(&names_ret_l):NULL);
+    if(ret<=0)
+        return ret;
+    if(names_ret) {
+        int j = set->names_size++;
+        set->names = box32_realloc(set->names, sizeof(ptr_t*)*set->names_size);
+        set->names[j] = box32_malloc(sizeof(ptr_t)*ret);
+        for(int i=0; i<ret; ++i)
+            set->names[j][i] = to_ptrv(((void**)names_ret_l)[i]);
+        *names_ret = to_ptrv(set->names[j]);
+    }
+    if(fonts_ret) {
+        int j = set->fonts_size++;
+        set->fonts = box32_realloc(set->fonts, sizeof(ptr_t*)*set->fonts_size);
+        set->fonts[j] = box32_malloc(sizeof(ptr_t)*ret);
+        for(int i=0; i<ret; ++i)
+            set->fonts[j][i] = to_ptrv(((void**)fonts_ret_l)[i]);
+        *fonts_ret = to_ptrv(set->fonts[j]);
+    }
+}
+
+EXPORT void* my32_XExtentsOfFontSet(x64emu_t* emu, my_XFontSet_32_t* set)
+{
+    return my->XExtentsOfFontSet(set->fontset);
+}
+
+EXPORT void* my32_XLocaleOfFontSet(x64emu_t* emu, my_XFontSet_32_t* set)
+{
+    return my->XLocaleOfFontSet(set->fontset);
+}
+
+EXPORT void* my32_XBaseFontNameListOfFontSet(x64emu_t* emu, my_XFontSet_32_t* set)
+{
+    return my->XBaseFontNameListOfFontSet(set->fontset);
+}
+
+EXPORT int my32_XContextDependentDrawing(x64emu_t* emu, my_XFontSet_32_t* set)
+{
+    return my->XContextDependentDrawing(set->fontset);
+}
+
+EXPORT int my32_XDirectionalDependentDrawing(x64emu_t* emu, my_XFontSet_32_t* set)
+{
+    return my->XDirectionalDependentDrawing(set->fontset);
+}
+
+EXPORT int my32_XContextualDrawing(x64emu_t* emu, my_XFontSet_32_t* set)
+{
+    return my->XContextualDrawing(set->fontset);
+}
+
+EXPORT int my32_XmbTextEscapement(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz)
+{
+    return my->XmbTextEscapement(set->fontset, text, sz);
+}
+
+EXPORT int my32_XwcTextEscapement(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz)
+{
+    return my->XwcTextEscapement(set->fontset, text, sz);
+}
+
+EXPORT int my32_Xutf8TextEscapement(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz)
+{
+    return my->Xutf8TextEscapement(set->fontset, text, sz);
+}
+
+EXPORT int my32_XmbTextExtents(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz, void* ink, void* log)
+{
+    return my->XmbTextExtents(set->fontset, text, sz, ink, log);
+}
+
+EXPORT int my32_XwcTextExtents(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz, void* ink, void* log)
+{
+    return my->XwcTextExtents(set->fontset, text, sz, ink, log);
+}
+
+EXPORT int my32_Xutf8TextExtents(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz, void* ink, void* log)
+{
+    return my->Xutf8TextExtents(set->fontset, text, sz, ink, log);
+}
+
+EXPORT int my32_XmbTextPerCharExtents(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz, void* ink, void* log, int buff_sz, void* buff, void* ink_ret, void* log_ret)
+{
+    return my->XmbTextPerCharExtents(set->fontset, text, sz, ink, log, buff_sz, buff, ink_ret, log_ret);
+}
+
+EXPORT int my32_XwcTextPerCharExtents(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz, void* ink, void* log, int buff_sz, void* buff, void* ink_ret, void* log_ret)
+{
+    return my->XwcTextPerCharExtents(set->fontset, text, sz, ink, log, buff_sz, buff, ink_ret, log_ret);
+}
+
+EXPORT int my32_Xutf8TextPerCharExtents(x64emu_t* emu, my_XFontSet_32_t* set, void* text, int sz, void* ink, void* log, int buff_sz, void* buff, void* ink_ret, void* log_ret)
+{
+    return my->Xutf8TextPerCharExtents(set->fontset, text, sz, ink, log, buff_sz, buff, ink_ret, log_ret);
+}
+
+EXPORT void my32_XmbDrawString(x64emu_t* emu, void* dpy, XID d, my_XFontSet_32_t* set, void* gc, int x, int y, void* text, int sz)
+{
+    my->XmbDrawString(dpy, d, set->fontset, gc, x, y, text, sz);
+}
+
+EXPORT void my32_XwcDrawString(x64emu_t* emu, void* dpy, XID d, my_XFontSet_32_t* set, void* gc, int x, int y, void* text, int sz)
+{
+    my->XwcDrawString(dpy, d, set->fontset, gc, x, y, text, sz);
+}
+
+EXPORT void my32_Xutf8DrawString(x64emu_t* emu, void* dpy, XID d, my_XFontSet_32_t* set, void* gc, int x, int y, void* text, int sz)
+{
+    my->Xutf8DrawString(dpy, d, set->fontset, gc, x, y, text, sz);
+}
+
+EXPORT void my32_XmbDrawImageString(x64emu_t* emu, void* dpy, XID d, my_XFontSet_32_t* set, void* gc, int x, int y, void* text, int sz)
+{
+    my->XmbDrawImageString(dpy, d, set->fontset, gc, x, y, text, sz);
+}
+
+EXPORT void my32_XwcDrawImageString(x64emu_t* emu, void* dpy, XID d, my_XFontSet_32_t* set, void* gc, int x, int y, void* text, int sz)
+{
+    my->XwcDrawImageString(dpy, d, set->fontset, gc, x, y, text, sz);
+}
+
+EXPORT void my32_Xutf8DrawImageString(x64emu_t* emu, void* dpy, XID d, my_XFontSet_32_t* set, void* gc, int x, int y, void* text, int sz)
+{
+    my->Xutf8DrawImageString(dpy, d, set->fontset, gc, x, y, text, sz);
+}
+
+EXPORT void my32_XmbDrawText(x64emu_t* emu, void* dpy, XID d, void* gc, int x, int y, my_XmbTextItem_32_t* text, int sz)
+{
+    my_XmbTextItem_t text_l = {0};
+    text_l.chars = from_ptrv(text->chars);
+    text_l.nchars = text->nchars;
+    text_l.delta = text->delta;
+    text_l.font_set = ((my_XFontSet_32_t*)from_ptrv(text->font_set))->fontset;
+    my->XmbDrawText(dpy, d, gc, x, y, &text_l, sz);
+}
+
+EXPORT void my32_XwcDrawText(x64emu_t* emu, void* dpy, XID d, void* gc, int x, int y, my_XwcTextItem_32_t* text, int sz)
+{
+    my_XwcTextItem_t text_l = {0};
+    text_l.chars = from_ptrv(text->chars);
+    text_l.nchars = text->nchars;
+    text_l.delta = text->delta;
+    text_l.font_set = ((my_XFontSet_32_t*)from_ptrv(text->font_set))->fontset;
+    my->XwcDrawText(dpy, d, gc, x, y, &text_l, sz);
+}
+
+EXPORT void my32_Xutf8DrawText(x64emu_t* emu, void* dpy, XID d, void* gc, int x, int y, my_XmbTextItem_32_t* text, int sz)
+{
+    my_XmbTextItem_t text_l = {0};
+    text_l.chars = from_ptrv(text->chars);
+    text_l.nchars = text->nchars;
+    text_l.delta = text->delta;
+    text_l.font_set = ((my_XFontSet_32_t*)from_ptrv(text->font_set))->fontset;
+    my->Xutf8DrawText(dpy, d, gc, x, y, &text_l, sz);
+}
+
+EXPORT void my32_XFreeFontSet(x64emu_t* emu,void* dpy, my_XFontSet_32_t* set)
+{
+    my->XFreeFontSet(dpy, set->fontset);
+    for(int i=0; i<set->names_size; ++i)
+        box32_free(set->names[i]);
+    box32_free(set->names);
+    for(int i=0; i<set->fonts_size; ++i)
+        box32_free(set->names[i]);
+    box32_free(set->fonts);
+    box32_free(set);
+}
+
 EXPORT int my32_XChangeWindowAttributes(x64emu_t* emu, void* dpy, XID window, unsigned long mask, my_XSetWindowAttributes_32_t* attrs)
 {
     my_XSetWindowAttributes_t attrs_l[1];
@@ -2261,6 +2493,15 @@ EXPORT int my32_XTextExtents(x64emu_t* emu, my_XFontStruct_32_t* font_struct, vo
     return ret;
 }
 
+EXPORT int my32_XTextExtents16(x64emu_t* emu, my_XFontStruct_32_t* font_struct, void* string, int nchars, int* dir, int* ascent, int* descent, my_XCharStruct_32_t* overall)
+{
+    //XCharStruct doesn't need any changes
+    inplace_XFontStruct_enlarge(font_struct);
+    int ret = my->XTextExtents16(font_struct, string, nchars, dir, ascent, descent, overall);
+    inplace_XFontStruct_shrink(font_struct);
+    return ret;
+}
+
 EXPORT void* my32_XLoadQueryFont(x64emu_t* emu, void* dpy, void* name)
 {
     void* ret = my->XLoadQueryFont(dpy, name);
@@ -2286,6 +2527,14 @@ EXPORT int my32_XFreeFontInfo(x64emu_t* emu, ptr_t* names, void* free_info, int
     return my->XFreeFontInfo(names_l, free_info, count);
 }
 
+EXPORT int my32_XTextWidth(x64emu_t* emu, void* font, void* string, int count)
+{
+    inplace_XFontStruct_enlarge(font);
+    int ret = my->XTextWidth(font, string, count);
+    inplace_XFontProp_shrink(font);
+    return ret;
+}
+
 EXPORT int my32_XTextWidth16(x64emu_t* emu, void* font, void* string, int count)
 {
     inplace_XFontStruct_enlarge(font);
@@ -2309,6 +2558,66 @@ EXPORT int my32_XGrabServer(x64emu_t* emu, void* dpy)
     return ret;
 }
 
+EXPORT void* my32_XkbGetMap(x64emu_t* emu, void* dpy, uint32_t which, uint32_t dev)
+{
+    return inplace_XkbDescRec_shrink(my->XkbGetMap(dpy, which, dev));
+}
+EXPORT int my32_XkbGetNames(x64emu_t* emu, void* dpy, uint32_t which, my_XkbDescRec_32_t* ptr)
+{
+    inplace_XkbDescRec_enlarge(ptr);
+    int ret = my->XkbGetNames(dpy, which, ptr);
+    inplace_XkbDescRec_shrink(ptr);
+    return ret;
+}
+EXPORT int my32_XkbGetUpdatedMap(x64emu_t* emu, void* dpy, uint32_t which, my_XkbDescRec_32_t* ptr)
+{
+    inplace_XkbDescRec_enlarge(ptr);
+    int ret = my->XkbGetUpdatedMap(dpy, which, ptr);
+    inplace_XkbDescRec_shrink(ptr);
+    return ret;
+}
+
+EXPORT int my32_XkbGetControls(x64emu_t* emu, void* dpy, int which, my_XkbDescRec_32_t* ptr)
+{
+    inplace_XkbDescRec_enlarge(ptr);
+    int ret = my->XkbGetControls(dpy, which, ptr);
+    inplace_XkbDescRec_shrink(ptr);
+    return ret;
+}
+
+EXPORT void my32_XkbFreeKeyboard(x64emu_t* emu, void* xkb, int which, int all)
+{
+    my->XkbFreeKeyboard(inplace_XkbDescRec_enlarge(xkb), which, all);
+}
+
+EXPORT void* my32_XGetMotionEvents(x64emu_t* emu, void* dpy, XID w, unsigned long start, unsigned long stop, int* n)
+{
+    void* ret = my->XGetMotionEvents(dpy, w, start, stop, n);
+    if(ret) {
+        my_XTimeCoord_t *src = ret;
+        my_XTimeCoord_32_t* dst = ret;
+        for(int i=0; i<*n; ++i) {
+            dst[i].time = to_ulong(src[i].time);
+            dst[i].x = src[i].x;
+            dst[i].y = src[i].y;
+        }
+    }
+    return ret;
+}
+
+EXPORT int my32_XGetWMColormapWindows(x64emu_t* emu, void* dpy, XID w, ptr_t* maps, int* n)
+{
+    void* maps_l = NULL;
+    int ret = my->XGetWMColormapWindows(dpy, w, &maps_l, n);
+    *maps = to_ptrv(maps_l);
+    XID* src = maps_l;
+    XID_32* dst = maps_l;
+    for(int i=0; i<*n; ++i) {
+        dst[i] = to_ulong(src[i]);
+    }
+    return ret;
+}
+
 #define CUSTOM_INIT                 \
     AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XLockMutex_fn"), 0, "_XLockMutex_fn"); \
     AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XUnlockMutex_fn"), 0, "_XUnlockMutex_fn"); \
diff --git a/src/wrapped32/wrappedlibx11_private.h b/src/wrapped32/wrappedlibx11_private.h
index 8667078f..991de5b2 100644
--- a/src/wrapped32/wrappedlibx11_private.h
+++ b/src/wrapped32/wrappedlibx11_private.h
@@ -8,7 +8,7 @@
 DATAB(_qfree, 4) // Warning: failed to confirm
 
 GO(XActivateScreenSaver, iFX)
-//GOM(XAddConnectionWatch, iFEXpp)
+GOM(XAddConnectionWatch, iFEXpp)
 GO(XAddExtension, pFX)
 GO(XAddHost, iFXbiip_)
 GO(XAddHosts, iFXbiip_i)
@@ -33,7 +33,7 @@ GO(XAllPlanes, LFv)
 //GO(_XAsyncErrorHandler, iFpppip)
 GO(XAutoRepeatOff, iFX)
 GO(XAutoRepeatOn, iFX)
-GO(XBaseFontNameListOfFontSet, pFp)
+GOM(XBaseFontNameListOfFontSet, pFEp)
 GO(XBell, iFXi)
 GO(XBitmapBitOrder, iFX)
 GO(XBitmapPad, iFX)
@@ -198,8 +198,8 @@ GO(XcmsPrefixOfFormat, pFL)
 GO(XConfigureWindow, iFXLuriiiiiLi_)
 GO(XConnectionNumber, iFX)
 //GO(_XConnectXCB, 
-GO(XContextDependentDrawing, iFp)
-GO(XContextualDrawing, iFp)
+GOM(XContextDependentDrawing, iFEp)
+GOM(XContextualDrawing, iFEp)
 GO(XConvertCase, vFLbL_bL_)
 GO(XConvertSelection, iFXLLLLL)
 GO(XCopyArea, iFXLLpiiuuii)
@@ -249,14 +249,14 @@ GO(XDeleteContext, iFXLi)
 //GO(XDeleteModifiermapEntry, bip_Fbip_Ci)
 GO(XDeleteProperty, iFXLL)
 //GOM(_XDeq, vFEXpp)
-//GOM(_XDeqAsyncHandler, vFEXp)
+GOM(_XDeqAsyncHandler, vFEXp)
 GO(XDestroyIC, vFp)
 GOM(XDestroyImage, iFEp)  //need to unbridge
 GO(XDestroyOC, vFp)
 GO(XDestroyRegion, iFp)
 GO(XDestroySubwindows, iFXL)
 GO(XDestroyWindow, iFXL)
-GO(XDirectionalDependentDrawing, iFp)
+GOM(XDirectionalDependentDrawing, iFEp)
 GO(XDisableAccessControl, iFX)
 GO(XDisplayCells, iFXi)
 GO(XDisplayHeight, iFXi)
@@ -319,7 +319,7 @@ GO(XEventsQueued, iFXi)
 //DATA(_Xevent_to_mask, 
 //GO(_XEventToWire, iFppp)
 GO(XExtendedMaxRequestSize, lFX)
-GO(XExtentsOfFontSet, pFp)
+GOM(XExtentsOfFontSet, pFEp)
 //GO(_XF86BigfontFreeFontMetrics, 
 //GO(_XF86LoadQueryLocaleFont, iFpppp)
 GO(XFetchBuffer, pFXpi)
@@ -338,7 +338,7 @@ GO(_XFlush, vFX)
 GO(XFlush, iFX)
 GO(XFlushGC, vFXp)
 GO(_XFlushGCCache, vFXp)
-//GO(XFontsOfFontSet, iFppp)
+GOM(XFontsOfFontSet, iFEppp)
 GO(XForceScreenSaver, iFXi)
 GO(XFree, iFp)
 //GO(_XFreeAtomTable, 
@@ -355,7 +355,7 @@ GOM(XFreeFont, iFEXp)
 GOM(XFreeFontInfo, iFEppi)
 GOM(XFreeFontNames, iFEp)
 //GO(XFreeFontPath, iFbp_)
-GO(XFreeFontSet, vFXp)
+GOM(XFreeFontSet, vFEXp)
 GO(XFreeGC, iFXp)
 GOM(XFreeModifiermap, iFEp)
 //DATAM(_XFreeMutex_fn, 4)
@@ -367,7 +367,7 @@ GO(XFreeThreads, iFv)
 GO(XGContextFromGC, LFp)
 GO(XGeometry, iFXippuuuiipppp)
 GO(_XGetAsyncData, vFXppiiii)
-//GO(_XGetAsyncReply, pFppppiii)
+GO(_XGetAsyncReply, pFppppiii)
 GO(XGetAtomName, pFXL)
 GO(XGetAtomNames, iFXbL_ibp_)
 //GO(_XGetBitsPerPixel, 
@@ -392,7 +392,7 @@ GO(XGetKeyboardControl, iFXbiiuuLip_)
 GO(XGetKeyboardMapping, pFXCip) // return a KeySym*, so an unsigned long*
 //GO(_XGetLCValues, 
 GOM(XGetModifierMapping, pFEX)
-//GO(XGetMotionEvents, bLww_FXLLLp)
+GOM(XGetMotionEvents, pFEXLLLp)
 //GO(XGetNormalHints, iFpLp)
 //GO(XGetOCValues, pFpppppppppp) // use varargs
 //GOM(XGetOMValues, pFEpV)
@@ -400,7 +400,7 @@ GOM(XGetPixel, LFEXii)  // need unbridging
 GO(dummy_XGetPixel, LFpii)     // for the wrapper
 GO(XGetPointerControl, iFXppp)
 GO(XGetPointerMapping, iFXpi)
-//GOM(_XGetRequest, pFEXCL)
+GOM(_XGetRequest, pFEXCL)
 //GO(XGetRGBColormaps, iFXLbbLLLLLLLLLL__pL)
 //GO(_XGetScanlinePad, 
 GO(XGetScreenSaver, iFXpppp)
@@ -415,7 +415,7 @@ GOM(XGetVisualInfo, pFEXlpp)
 GOM(XGetWindowAttributes, iFEXLp)
 GOM(XGetWindowProperty, iFEXLLlliLppppp)
 GO(XGetWMClientMachine, iFXLbpLiL_)
-//GO(XGetWMColormapWindows, iFXLbbL__p)
+GOM(XGetWMColormapWindows, iFEXLpp)
 GOM(XGetWMHints, pFEXL)
 GO(XGetWMIconName, iFXLbpLiL_)
 GO(XGetWMName, iFXLbpLiL_)
@@ -682,7 +682,7 @@ GO(XkbForceDeviceBell, iFXiiii)
 //GO(XkbFreeGeomSections, vFpiii)
 //GO(XkbFreeGeomShapes, vFpiii)
 //GO(XkbFreeIndicatorMaps, vFp)
-//GO(XkbFreeKeyboard, vFpui)
+GOM(XkbFreeKeyboard, vFEpui)
 //GO(XkbFreeNames, vFpui)
 //GO(_XkbFreeReadBuffer, 
 //GO(XkbFreeServerMap, vFpui)
@@ -691,7 +691,7 @@ GO(XkbGetAutoRepeatRate, iFXupp)
 GO(XkbGetAutoResetControls, iFXpp)
 //GO(_XkbGetCharset, 
 //GO(XkbGetCompatMap, iFpup)
-//GO(XkbGetControls, iFpLp)
+GOM(XkbGetControls, iFEXLp)
 //GO(_XkbGetConverters, 
 GO(XkbGetDetectableAutoRepeat, iFXp)
 //GO(XkbGetDeviceButtonActions, iFppiuu)
@@ -710,17 +710,17 @@ GO(XkbGetIndicatorState, iFXup)
 //GO(XkbGetKeySyms, iFpuup)
 //GO(XkbGetKeyTypes, iFpuup)
 //GO(XkbGetKeyVirtualModMap, iFpuup)
-//GOSM(XkbGetMap, bXWWCCpbWWppppCCCCCCCCCCCCCCCCp_bCCbpCCppLbL__WWbL_pp_bLpppppppppppppppppppppppppppppppp_bLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLppbL_LCCW_bbLCCCCp_ppppWW_bLWWpbup_bup_WWWWWWWWWWWWbpp_bup_bLWWbWWWp_bWWWp_bWWWp_p_bLCwwWWwWWWWWWbwwWWipp_bppppp_pp_bppppp_p__FEXuu)
+GOM(XkbGetMap, pFEXuu)
 //GO(XkbGetMapChanges, iFppp)
 GO(XkbGetNamedDeviceIndicator, iFXuuuLpppp)
 //GO(XkbGetNamedGeometry, iFppL)
 GO(XkbGetNamedIndicator, iFXLpppp)
-//GO(XkbGetNames, iFpup)
+GOM(XkbGetNames, iFEXup)
 GO(XkbGetPerClientControls, iFXp)
 //GO(_XkbGetReadBufferCountedString, 
 //GO(_XkbGetReadBufferPtr, 
 GO(XkbGetState, iFXup)
-//GO(XkbGetUpdatedMap, iFpup)
+GOM(XkbGetUpdatedMap, iFEXup)
 //GO(XkbGetVirtualMods, iFpup)
 GO(XkbGetXlibControls, uFX)
 GO(XkbIgnoreExtension, iFi)
@@ -873,7 +873,7 @@ GO(XListPixmapFormats, pFXp)
 GO(XLoadFont, LFXp)
 GOM(XLoadQueryFont, pFEXp)
 GO(xlocaledir, vFpi)
-GO(XLocaleOfFontSet, pFp)
+GOM(XLocaleOfFontSet, pFEp)
 GO(XLocaleOfIM, pFp)
 GO(XLocaleOfOM, pFp)
 GOM(XLockDisplay, vFEX)
@@ -896,9 +896,9 @@ GO(XMaxRequestSize, lFX)
 //GO(_XmbDefaultTextEscapement, 
 //GO(_XmbDefaultTextExtents, 
 //GO(_XmbDefaultTextPerCharExtents, 
-GO(XmbDrawImageString, vFXLppiipi)
-GO(XmbDrawString, vFXLppiipi)
-GO(XmbDrawText, vFXLpiibpiip_i)
+GOM(XmbDrawImageString, vFEXLppiipi)
+GOM(XmbDrawString, vFEXLppiipi)
+GOM(XmbDrawText, vFEXLpiipi)
 //GO(_XmbGenericDrawImageString, 
 //GO(_XmbGenericDrawString, 
 //GO(_XmbGenericTextEscapement, 
@@ -907,14 +907,14 @@ GO(XmbDrawText, vFXLpiibpiip_i)
 GO(_Xmblen, iFpi)
 GOM(XmbLookupString, iFEpppipp)
 GO(XmbResetIC, pFp)
-//GO(XmbSetWMProperties, vFpLpppippp)
+GOM(XmbSetWMProperties, vFEXLpppippp)
 //GO(_Xmbstoutf8, 
 //GO(_Xmbstowcs, 
-GO(XmbTextEscapement, iFppi)
-GO(XmbTextExtents, iFppipp)
+GOM(XmbTextEscapement, iFEppi)
+GOM(XmbTextExtents, iFEppipp)
 //GO(_XmbTextListToTextProperty, 
 GOM(XmbTextListToTextProperty, iFEXpiup)
-GO(XmbTextPerCharExtents, iFppippippp)
+GOM(XmbTextPerCharExtents, iFEppippippp)
 //GO(_XmbTextPropertyToTextList, 
 GOM(XmbTextPropertyToTextList, iFEXbpLiL_pp)
 GO(_Xmbtowc, iFppi)
@@ -1133,11 +1133,11 @@ GO(XSupportsLocale, iFv)
 GO(XSync, iFXi)
 GOM(XSynchronize, pFEXi)
 GOM(XTextExtents, iFEppipppp)
-//GO(XTextExtents16, iFppipppp)
+GOM(XTextExtents16, iFEppipppp)
 //GO(_XTextHeight, iFppi)
 //GO(_XTextHeight16, iFppi)
 //GO(XTextPropertyToStringList, iFbpLiL_bbp__p)
-//GO(XTextWidth, iFppi)
+GOM(XTextWidth, iFEppi)
 GOM(XTextWidth16, iFEppi)
 //DATAB(_Xthread_self_fn, 4)
 GO(XTranslateCoordinates, iFXLLiippBL_)
@@ -1174,9 +1174,9 @@ GO(XUnsetICFocus, vFp)
 //GO(_Xutf8DefaultTextEscapement, 
 //GO(_Xutf8DefaultTextExtents, 
 //GO(_Xutf8DefaultTextPerCharExtents, 
-GO(Xutf8DrawImageString, vFXLppiipi)
-GO(Xutf8DrawString, vFXLppiipi)
-GO(Xutf8DrawText, vFXLpiibpiip_i)
+GOM(Xutf8DrawImageString, vFEXLppiipi)
+GOM(Xutf8DrawString, vFEXLppiipi)
+GOM(Xutf8DrawText, vFEXLpiipi)
 //GO(_Xutf8GenericDrawImageString, 
 //GO(_Xutf8GenericDrawString, 
 //GO(_Xutf8GenericTextEscapement, 
@@ -1185,13 +1185,13 @@ GO(Xutf8DrawText, vFXLpiibpiip_i)
 GOM(Xutf8LookupString, iFEpppipp)
 GO(Xutf8ResetIC, pFp)
 GOM(Xutf8SetWMProperties, vFEXLpppippp) // Warning: failed to confirm
-GO(Xutf8TextEscapement, iFppi)
-GO(Xutf8TextExtents, iFppipp)
+GOM(Xutf8TextEscapement, iFEppi)
+GOM(Xutf8TextExtents, iFEppipp)
 //GO(_Xutf8TextListToTextProperty, 
 GOM(Xutf8TextListToTextProperty, iFEXpiup)
-GO(Xutf8TextPerCharExtents, iFppippippp)
+GOM(Xutf8TextPerCharExtents, iFEppippippp)
 //GO(_Xutf8TextPropertyToTextList, 
-//GO(Xutf8TextPropertyToTextList, iFXbpLiL_bbp__p)
+GOM(Xutf8TextPropertyToTextList, iFEXbpLiL_pp)
 GOM(XVaCreateNestedList, pFEiV)
 GO(XVendorRelease, iFX)
 GO(_XVIDtoVisual, pFXL)
@@ -1202,9 +1202,9 @@ GO(XWarpPointer, iFXLLiiuuii)
 //GO(_XwcDefaultTextEscapement, 
 //GO(_XwcDefaultTextExtents, 
 //GO(_XwcDefaultTextPerCharExtents, 
-GO(XwcDrawImageString, vFXLppiipi)
-GO(XwcDrawString, vFXLppiipi)
-GO(XwcDrawText, vFXLpiibpiip_i)
+GOM(XwcDrawImageString, vFEXLppiipi)
+GOM(XwcDrawString, vFEXLppiipi)
+GOM(XwcDrawText, vFEXLpiipi)
 //GO(_XwcFreeStringList, 
 GO(XwcFreeStringList, vFbp_)
 //GO(_XwcGenericDrawImageString, 
@@ -1220,13 +1220,13 @@ GO(XwcResetIC, pFp)
 //GO(_Xwcsncmp, 
 //GO(_Xwcsncpy, 
 //GO(_Xwcstombs, 
-GO(XwcTextEscapement, iFppi)
-GO(XwcTextExtents, iFppipp)
+GOM(XwcTextEscapement, iFEppi)
+GOM(XwcTextExtents, iFEppipp)
 //GO(_XwcTextListToTextProperty, 
-//GO(XwcTextListToTextProperty, iFXbp_iubpLiL_)
-GO(XwcTextPerCharExtents, iFppippippp)
+GOM(XwcTextListToTextProperty, iFEXpiup)
+GOM(XwcTextPerCharExtents, iFEppippippp)
 //GO(_XwcTextPropertyToTextList, 
-//GO(XwcTextPropertyToTextList, iFXbpLiL_bbp__p)
+GOM(XwcTextPropertyToTextList, iFEXbpLiL_pp)
 GO(_Xwctomb, iFpi)
 GO(XWhitePixel, LFXi)
 //GOM(XWhitePixelOfScreen, LFEbpXLiiiiipippLLLiiiil_)
diff --git a/src/wrapped32/wrappedlibxcursor.c b/src/wrapped32/wrappedlibxcursor.c
index f03ac6dc..757002ab 100644
--- a/src/wrapped32/wrappedlibxcursor.c
+++ b/src/wrapped32/wrappedlibxcursor.c
@@ -188,5 +188,19 @@ EXPORT void* my32_XcursorImagesLoadCursors(x64emu_t* emu, void* dpy, void* image
 	return ret;
 }
 
+EXPORT void* my32_XcursorLibraryLoadImages(x64emu_t* emu, void* name, void* theme, int size)
+{
+	void* ret = my->XcursorLibraryLoadImages(name, theme, size);
+	inplace_XcursorImages_shrink(ret);
+	return ret;
+}
+
+EXPORT void* my32_XcursorShapeLoadImages(x64emu_t* emu, uint32_t shape, void* theme, int size)
+{
+	void* ret = my->XcursorShapeLoadImages(shape, theme, size);
+	inplace_XcursorImages_shrink(ret);
+	return ret;
+}
+
 #include "wrappedlib_init32.h"
 
diff --git a/src/wrapped32/wrappedlibxcursor_private.h b/src/wrapped32/wrappedlibxcursor_private.h
index e404911f..e24a7519 100644
--- a/src/wrapped32/wrappedlibxcursor_private.h
+++ b/src/wrapped32/wrappedlibxcursor_private.h
@@ -2,35 +2,35 @@
 #error Meh...
 #endif
 
-//GO(XcursorAnimateCreate, pFp)
-//GO(XcursorAnimateDestroy, vFp)
-//GO(XcursorAnimateNext, LFp)
-//GO(XcursorCommentCreate, pFui)
-//GO(XcursorCommentDestroy, vFp)
-//GO(XcursorCommentsCreate, pFi)
-//GO(XcursorCommentsDestroy, vFp)
+//GOM(XcursorAnimateCreate, pFEbXiip_)
+//GOM(XcursorAnimateDestroy, vFEbpi_)
+//GOM(XcursorAnimateNext, LFEbpi_)
+//GOM(XcursorCommentCreate, pFEui)
+//GO(XcursorCommentDestroy, vFbuup_)
+//GOM(XcursorCommentsCreate, pFEi)
+//GOM(XcursorCommentsDestroy, vFEbip_)
 //GO(_XcursorCreateFontCursor, 
 //GO(_XcursorCreateGlyphCursor, 
 GOM(XcursorCursorsCreate, pFEXi)
 GOM(XcursorCursorsDestroy, vFEp)
-//GO(XcursorFileLoad, iFSpp)
-//GO(XcursorFileLoadAllImages, pFS)
-//GO(XcursorFileLoadImage, pFSi)
-//GO(XcursorFileLoadImages, pFSi)
-//GO(XcursorFilenameLoad, iFppp)
-//GO(XcursorFilenameLoadAllImages, pFp)
-//GO(XcursorFilenameLoadCursor, LFpp)
-//GO(XcursorFilenameLoadCursors, pFpp)
-//GO(XcursorFilenameLoadImage, pFpi)
-//GO(XcursorFilenameLoadImages, pFpi)
-//GO(XcursorFilenameSave, iFppp)
-//GO(XcursorFilenameSaveImages, iFpp)
-//GO(XcursorFileSave, iFSpp)
-//GO(XcursorFileSaveImages, iFSp)
-//GO(XcursorGetDefaultSize, iFp)
+//GOM(XcursorFileLoad, iFESbp_bp_)
+//GOM(XcursorFileLoadAllImages, pFES)
+//GOM(XcursorFileLoadImage, pFESi)
+//GOM(XcursorFileLoadImages, pFESi)
+//GOM(XcursorFilenameLoad, iFEpbp_bp_)
+//GOM(XcursorFilenameLoadAllImages, pFEp)
+GO(XcursorFilenameLoadCursor, LFXp)
+//GOM(XcursorFilenameLoadCursors, pFEXp)
+//GOM(XcursorFilenameLoadImage, pFEpi)
+//GOM(XcursorFilenameLoadImages, pFEpi)
+//GOM(XcursorFilenameSave, iFEpbip_bipp_)
+//GOM(XcursorFilenameSaveImages, iFEpbipp_)
+//GOM(XcursorFileSave, iFESbip_bipp_)
+//GOM(XcursorFileSaveImages, iFESbipp_)
+GO(XcursorGetDefaultSize, iFX)
 //GO(_XcursorGetDisplayInfo, 
-//GO(XcursorGetTheme, pFp)
-//GO(XcursorGetThemeCore, iFp)
+GO(XcursorGetTheme, pFX)
+GO(XcursorGetThemeCore, iFX)
 GOM(XcursorImageCreate, pFEii)
 GOM(XcursorImageDestroy, vFEp)
 //GOM(XcursorImageHash, vFEpp)    // needs unbridge XImage (first p)
@@ -39,28 +39,28 @@ GOM(XcursorImagesCreate, pFEi)
 GOM(XcursorImagesDestroy, vFEp)
 GOM(XcursorImagesLoadCursor, LFEXp)
 GOM(XcursorImagesLoadCursors, pFEXp)
-//GO(XcursorImagesSetName, vFpp)
+//GOM(XcursorImagesSetName, vFEpp)
 GO(XcursorLibraryLoadCursor, LFXp)
-//GO(XcursorLibraryLoadCursors, pFpp)
-//GO(XcursorLibraryLoadImage, pFppi)
-//GO(XcursorLibraryLoadImages, pFppi)
-//GO(XcursorLibraryPath, pFv)
-//GO(XcursorLibraryShape, iFp)
-//GO(XcursorNoticeCreateBitmap, vFpLuu)
-//GOM(XcursorNoticePutBitmap, vFEpLp)   //needs unbridge XImage (last p)
-//GO(XcursorSetDefaultSize, iFpi)
-//GO(XcursorSetTheme, iFpp)
-//GO(XcursorSetThemeCore, iFpi)
-//GO(XcursorShapeLoadCursor, LFpu)
-//GO(XcursorShapeLoadCursors, pFpu)
-//GO(XcursorShapeLoadImage, pFupi)
-//GO(XcursorShapeLoadImages, pFupi)
-//GO(XcursorSupportsAnim, iFp)
-//GO(XcursorSupportsARGB, iFp)
-//GO(XcursorTryShapeBitmapCursor, LFpLLppuu)
-//GO(XcursorTryShapeCursor, LFpLLuupp)
-//GO(XcursorXcFileLoad, iFppp)
-//GO(XcursorXcFileLoadAllImages, pFp)
-//GO(XcursorXcFileLoadImage, pFpi)
-//GO(XcursorXcFileLoadImages, pFpi)
-//GO(XcursorXcFileSave, iFppp)
+//GOM(XcursorLibraryLoadCursors, pFEXp)
+//GOM(XcursorLibraryLoadImage, pFEppi)
+GOM(XcursorLibraryLoadImages, pFEppi)
+GO(XcursorLibraryPath, pFv)
+GO(XcursorLibraryShape, iFp)
+GO(XcursorNoticeCreateBitmap, vFXLuu)
+//GOM(XcursorNoticePutBitmap, vFEXLp)   //needs unbridge XImage (last p)
+GO(XcursorSetDefaultSize, iFXi)
+GO(XcursorSetTheme, iFXp)
+GO(XcursorSetThemeCore, iFXi)
+GO(XcursorShapeLoadCursor, LFXu)
+//GOM(XcursorShapeLoadCursors, pFEXu)
+//GOM(XcursorShapeLoadImage, pFEupi)
+GOM(XcursorShapeLoadImages, pFEupi)
+GO(XcursorSupportsAnim, iFX)
+GO(XcursorSupportsARGB, iFX)
+//GO(XcursorTryShapeBitmapCursor, LFXLLbLWWWcc_bLWWWcc_uu)
+//GO(XcursorTryShapeCursor, LFXLLuubLWWWcc_bLWWWcc_)
+//GOM(XcursorXcFileLoad, iFEpbp_bp_)
+//GOM(XcursorXcFileLoadAllImages, pFEp)
+//GOM(XcursorXcFileLoadImage, pFEpi)
+//GOM(XcursorXcFileLoadImages, pFEpi)
+//GOM(XcursorXcFileSave, iFEpbip_bipp_)
diff --git a/src/wrapped32/wrappedlibxext_private.h b/src/wrapped32/wrappedlibxext_private.h
index 0d189dbc..1554a0db 100644
--- a/src/wrapped32/wrappedlibxext_private.h
+++ b/src/wrapped32/wrappedlibxext_private.h
@@ -93,7 +93,7 @@ GO(XSyncAwaitFence, iFXbL_i)
 //GO(XSyncChangeAlarm, iFpLLp)
 //GO(XSyncChangeCounter, iFpuU)
 //GO(XSyncCreateAlarm, LFpLp)     // XSyncAlarm is an XID
-//GO(XSyncCreateCounter, uFpU)    // XSyncValue is a struct of 2 int
+GO(XSyncCreateCounter, LFXU)    // XSyncValue is a struct of 2 int
 GO(XSyncCreateFence, LFXLi)
 GO(XSyncDestroyAlarm, iFXL)
 GO(XSyncDestroyCounter, iFXL)
@@ -111,7 +111,7 @@ GO(XSyncQueryCounter, iFXLp)
 GO(XSyncQueryExtension, iFXpp)
 GO(XSyncQueryFence, iFXLp)
 GO(XSyncResetFence, iFXL)
-//GO(XSyncSetCounter, iFpuU)      // XSyncCounter is an XID
+GO(XSyncSetCounter, iFXLU)      // XSyncCounter is an XID
 GO(XSyncSetPriority, iFXLi)
 GO(XSyncTriggerFence, iFXL)
 //GO(XSyncValueAdd, 
@@ -119,9 +119,9 @@ GO(XSyncTriggerFence, iFXL)
 //GO(XSyncValueGreaterOrEqual, 
 //GO(XSyncValueGreaterThan, 
 //GO(XSyncValueHigh32, 
-//GO(XSyncValueIsNegative, 
-//GO(XSyncValueIsPositive, 
-//GO(XSyncValueIsZero, iFp)
+GO(XSyncValueIsNegative, iFU)
+GO(XSyncValueIsPositive, iFU)
+GO(XSyncValueIsZero, iFU)
 //GO(XSyncValueLessOrEqual, 
 //GO(XSyncValueLessThan, 
 //GO(XSyncValueLow32, 
diff --git a/src/wrapped32/wrappedlibxi.c b/src/wrapped32/wrappedlibxi.c
index 570e2240..90ac4c33 100644
--- a/src/wrapped32/wrappedlibxi.c
+++ b/src/wrapped32/wrappedlibxi.c
@@ -99,4 +99,64 @@ EXPORT int my32_XGetDeviceButtonMapping(x64emu_t* emu, void* dpy, void* d, void*
     inplace_XDevice_shrink(d);
 }
 
+EXPORT void* my32_XQueryDeviceState(x64emu_t* emu, void* dpy, void* d)
+{
+    void* ret = inplace_XDeviceState_shrink(my->XQueryDeviceState(dpy, inplace_XDevice_enlarge(d)));
+    inplace_XDevice_shrink(d);
+    return ret;
+}
+
+EXPORT void my32_XFreeDeviceState(x64emu_t* emu, void* ds)
+{
+    my->XFreeDeviceState(inplace_XDeviceState_enlarge(ds));
+}
+
+EXPORT void* my32_XListInputDevices(x64emu_t* emu, void* dpy, int* n)
+{
+    return inplace_XDeviceInfo_shrink(my->XListInputDevices(dpy, n));
+}
+
+EXPORT void my32_XFreeDeviceList(x64emu_t* emu, void* l)
+{
+    my->XFreeDeviceList(inplace_XDeviceInfo_enlarge(l));
+}
+
+EXPORT void* my32_XGetDeviceMotionEvents(x64emu_t* emu, void* dpy, void* d, unsigned long start, unsigned long stop, int* n, int* mode, int* axis)
+{
+    void* ret = my->XGetDeviceMotionEvents(dpy, inplace_XDevice_enlarge(d), start, stop, n, mode, axis);
+    inplace_XDevice_shrink(d);
+    if(ret) {
+        my_XDeviceTimeCoord_t* src = ret;
+        my_XDeviceTimeCoord_32_t* dst = ret;
+        for(int i=0; i<*n; ++i) {
+            dst[i].time = to_ulong(src[i].time);
+            dst[i].data = to_ptrv(src[i].data);
+        }
+        if(*n) {
+            dst[*n].time = 0; dst[*n].data = 0; // mark the end
+        }
+    }
+}
+
+EXPORT void my32_XFreeDeviceMotionEvents(x64emu_t* emu, void* l)
+{
+    int n=0;
+    my_XDeviceTimeCoord_32_t* src = l;
+    my_XDeviceTimeCoord_t* dst = l;
+    // search length first
+    while(src[n].time || src[n].data) ++n;
+    for(int i=n; i>=0; --i) {
+        dst[i].data = from_ptrv(src[i].data);
+        dst[i].time = from_ulong(src[i].time);
+    }
+    my->XFreeDeviceMotionEvents(l);
+}
+
+EXPORT int my32_XGrabDevice(x64emu_t* emu, void* dpy, void* d, XID w, int owner, int count, void* evt, int this_mode, int other_modes, unsigned long time)
+{
+    int ret = my->XGrabDevice(dpy, inplace_XDevice_enlarge(d), w, owner, count, evt, this_mode, other_modes, time);
+    inplace_XDevice_shrink(d);
+    return ret;
+}
+
 #include "wrappedlib_init32.h"
diff --git a/src/wrapped32/wrappedlibxi_private.h b/src/wrapped32/wrappedlibxi_private.h
index bf3614ce..02fb13ab 100644
--- a/src/wrapped32/wrappedlibxi_private.h
+++ b/src/wrapped32/wrappedlibxi_private.h
@@ -2,6 +2,8 @@
 #error Meh...
 #endif
 
+// XEventClass is a 32bits value, on 32bits and 64bits version, no need to wrap
+
 //GO(XAllowDeviceEvents, iFXbLip_iL)
 //GO(XChangeDeviceControl, iFXbLip_ibLi_)
 //GO(XChangeDeviceDontPropagateList, iFXLibL_i)
@@ -14,9 +16,9 @@ GOM(XCloseDevice, iFEXp)
 //GO(XDeleteDeviceProperty, vFXbLip_L)
 //GO(XDeviceBell, iFXbLip_LLi)
 //GO(XFreeDeviceControl, vFbLi_)
-//GO(XFreeDeviceList, vFbLLpiibLi__)
-//GO(XFreeDeviceMotionEvents, vFbLp_)
-//GO(XFreeDeviceState, vFbLip_)
+GOM(XFreeDeviceList, vFEp)
+GOM(XFreeDeviceMotionEvents, vFEp)
+GOM(XFreeDeviceState, vFEp)
 //GO(XFreeFeedbackList, vFbLiL_)
 GOM(XGetDeviceButtonMapping, iFEXppu)
 //GO(XGetDeviceControl, bLi_FXbLip_i)
@@ -24,12 +26,12 @@ GOM(XGetDeviceButtonMapping, iFEXppu)
 //GO(XGetDeviceFocus, iFXbLip_bL_pbL_)
 //GO(XGetDeviceKeyMapping, bL_FXbLip_Cip)
 //GO(XGetDeviceModifierMapping, bip_FXbLip_)
-//GO(XGetDeviceMotionEvents, bLp_FXbLip_LLppp)
+GOM(XGetDeviceMotionEvents, pFEXpLLppp)
 //GO(XGetDeviceProperty, iFXbLip_LlliLbL_pbL_bL_bp_)
 GO(XGetExtensionVersion, pFXp)
 //GO(XGetFeedbackControl, bLiL_FXbLip_p)
 //GO(XGetSelectedExtensionEvents, iFXLpbbL__pbbL__)
-//GO(XGrabDevice, iFXbLip_LiibL_iiL)
+GOM(XGrabDevice, iFEXpLiipiiL)
 //GO(XGrabDeviceButton, iFXbLip_uubLip_LiubL_ii)
 //GO(XGrabDeviceKey, iFXbLip_uubLip_LiubL_ii)
 GO(XIAllowEvents, iFXiiL)
@@ -67,10 +69,10 @@ GO(XIUngrabKeycode, iFXiiLip)
 GO(XIUngrabTouchBegin, iFXiLip)
 GO(XIWarpPointer, iFXiLLdduudd)
 //GO(XListDeviceProperties, bL_FXbLip_p)
-//GO(XListInputDevices, bLLpiibLi__FXp)
+GOM(XListInputDevices, pFEXp)
 GOM(XOpenDevice, pFEXL)
-//GO(XQueryDeviceState, bLip_FXbLip_)
-//GO(XSelectExtensionEvent, iFXLbL_i)
+GOM(XQueryDeviceState, pFEXp)
+GO(XSelectExtensionEvent, iFXLpi)
 //GO(XSendExtensionEvent, iFppLiipp)
 //GO(XSetDeviceButtonMapping, iFXbLip_pi)
 //GO(XSetDeviceFocus, iFXbLip_LiL)
diff --git a/src/wrapped32/wrappedlibxrandr.c b/src/wrapped32/wrappedlibxrandr.c
index 802d22f3..80079554 100644
--- a/src/wrapped32/wrappedlibxrandr.c
+++ b/src/wrapped32/wrappedlibxrandr.c
@@ -159,6 +159,13 @@ EXPORT int my32_XRRQueryExtension(x64emu_t* emu, void* dpy, int* event_base, int
     return ret;
 }
 
+EXPORT int my32_XRRUpdateConfiguration(x64emu_t* emu, my_XEvent_32_t* evt)
+{
+    my_XEvent_t evt_l = {0};
+    unconvertXEvent(&evt_l, evt);
+    return my->XRRUpdateConfiguration(&evt_l);
+}
+
 #ifdef ANDROID
 #define NEEDED_LIBS "libX11.so", "libXext.so", "libXrender.so"
 #else
diff --git a/src/wrapped32/wrappedlibxrandr_private.h b/src/wrapped32/wrappedlibxrandr_private.h
index a2b9fe89..a2611c5c 100644
--- a/src/wrapped32/wrappedlibxrandr_private.h
+++ b/src/wrapped32/wrappedlibxrandr_private.h
@@ -18,7 +18,7 @@ GOM(XRRGetProviderInfo, pFEXpL)
 GO(XRRConfigureOutputProperty, vFXLLiiibl_)
 GO(XRRSetOutputPrimary, vFXLL)
 GO(XRRFreeOutputInfo, vFp)
-//GO(XRRUpdateConfiguration, iFp)
+GOM(XRRUpdateConfiguration, iFEp)
 GOM(XRRGetScreenResources, pFEXL)
 GO(XRRConfigSizes, pFpp)
 //GO(XRRQueryProviderProperty, biiiibl__FXLL)