about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-12-12 13:09:07 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-12-12 13:09:07 +0100
commit566ff08109b339eb3d45eaf5b0feb67eb2a12215 (patch)
tree00b09d9d2c2ca9c2acadaf0f01c7485e95b0ab5c /src
parent2247b61ed3c67ecce0bf2bd9a9b3f41e769bb05e (diff)
downloadbox64-566ff08109b339eb3d45eaf5b0feb67eb2a12215.tar.gz
box64-566ff08109b339eb3d45eaf5b0feb67eb2a12215.zip
[BOX32][WRAPPER] Added 32bits wrapped libcairo
Diffstat (limited to 'src')
-rwxr-xr-xsrc/include/myalign32.h3
-rw-r--r--src/library_list_32.h2
-rwxr-xr-xsrc/libtools/myalign32.c12
-rw-r--r--src/wrapped32/generated/converter32.c26
-rw-r--r--src/wrapped32/generated/converter32.h14
-rw-r--r--src/wrapped32/generated/functions_list.txt44
-rw-r--r--src/wrapped32/generated/wrappedcairodefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedcairotypes32.h25
-rw-r--r--src/wrapped32/generated/wrappedcairoundefs32.h8
-rw-r--r--src/wrapped32/generated/wrapper32.c70
-rw-r--r--src/wrapped32/generated/wrapper32.h35
-rw-r--r--src/wrapped32/wrappedcairo.c120
-rw-r--r--src/wrapped32/wrappedcairo_private.h399
-rw-r--r--src/wrapped32/wrappedfontconfig.c19
14 files changed, 770 insertions, 15 deletions
diff --git a/src/include/myalign32.h b/src/include/myalign32.h
index d363ff4a..dbc8d055 100755
--- a/src/include/myalign32.h
+++ b/src/include/myalign32.h
@@ -84,6 +84,9 @@ size_t myStackAlignScanfW32(const char* fmt, uint32_t* st, uint64_t* mystack, si
 void myStackAlignScanfW32_final(const char* fmt, uint32_t* st, uint64_t* mystack, size_t nb_elem, int n);
 void myStackAlignW32(const char* fmt, uint32_t* st, uint64_t* mystack);
 
+void* add_xcb_connection32(void* src);
+void del_xcb_connection32(void* src);
+
 void UnalignStat64_32(const void* source, void* dest);
 
 void UnalignStatFS_32(const void* source, void* dest);
diff --git a/src/library_list_32.h b/src/library_list_32.h
index 94d5e5e8..f5cff5b4 100644
--- a/src/library_list_32.h
+++ b/src/library_list_32.h
@@ -69,6 +69,8 @@ GO("libudev.so.0", udev0)
 GO("libudev.so.1", udev1)
 GO("libudev.so", udev1)
 GO("libuuid.so.1", libuuid)
+GO("libcairo.so.2", cairo)
+GO("libcairo.so", cairo)
 
 GO("crashhandler.so", crashhandler)
 GO("libtcmalloc_minimal.so.0", tcmallocminimal)
diff --git a/src/libtools/myalign32.c b/src/libtools/myalign32.c
index 6f94ce99..e32a9571 100755
--- a/src/libtools/myalign32.c
+++ b/src/libtools/myalign32.c
@@ -1610,3 +1610,15 @@ void convert_regext_to_64(void* d, void* s)
     dst->re_nsub = from_ulong(src->re_nsub);
     dst->flags = src->flags;
 }
+
+void* add_xcb_connection(void* src);
+void del_xcb_connection(void* src);
+
+void* add_xcb_connection32(void* src)
+{
+    return add_xcb_connection(src);
+}
+void del_xcb_connection32(void* src)
+{
+    del_xcb_connection(src);
+}
diff --git a/src/wrapped32/generated/converter32.c b/src/wrapped32/generated/converter32.c
index bf4496fa..3757a934 100644
--- a/src/wrapped32/generated/converter32.c
+++ b/src/wrapped32/generated/converter32.c
@@ -292,6 +292,32 @@ void to_struct_up(ptr_t d, const struct_up_t *src) {
 	*(uint32_t*)dest = src->u0; dest += 4;
 	*(ptr_t*)dest = to_ptrv(src->p1); dest += 4;
 }
+void from_struct_upi(struct_upi_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->u0 = *(uint32_t*)src; src += 4;
+	dest->p1 = *(void**)src; src += 4;
+	dest->i2 = *(int*)src; src += 4;
+}
+void to_struct_upi(ptr_t d, const struct_upi_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(uint32_t*)dest = src->u0; dest += 4;
+	*(ptr_t*)dest = to_ptrv(src->p1); dest += 4;
+	*(int*)dest = src->i2; dest += 4;
+}
+void from_struct_Ldd(struct_Ldd_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->L0 = from_ulong(*(ulong_t*)src); src += 4;
+	dest->d1 = *(double*)src; src += 8;
+	dest->d2 = *(double*)src; src += 8;
+}
+void to_struct_Ldd(ptr_t d, const struct_Ldd_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(ulong_t*)dest = to_ulong(src->L0); dest += 4;
+	*(double*)dest = src->d1; dest += 8;
+	*(double*)dest = src->d2; dest += 8;
+}
 void from_struct_LWWWcc(struct_LWWWcc_t *dest, ptr_t s) {
 	uint8_t* src = (uint8_t*)from_ptrv(s);
 	dest->L0 = from_ulong(*(uint32_t*)src); src += 4;
diff --git a/src/wrapped32/generated/converter32.h b/src/wrapped32/generated/converter32.h
index 5b8c4efd..733f2c12 100644
--- a/src/wrapped32/generated/converter32.h
+++ b/src/wrapped32/generated/converter32.h
@@ -146,6 +146,20 @@ typedef struct struct_up_s {
 } struct_up_t;
 void from_struct_up(struct_up_t *dest, ptr_t src);
 void to_struct_up(ptr_t dest, const struct_up_t *src);
+typedef struct struct_upi_s {
+	uint32_t u0;
+	void* p1;
+	int i2;
+} struct_upi_t;
+void from_struct_upi(struct_upi_t *dest, ptr_t src);
+void to_struct_upi(ptr_t dest, const struct_upi_t *src);
+typedef struct struct_Ldd_s {
+	unsigned long L0;
+	double d1;
+	double d2;
+} struct_Ldd_t;
+void from_struct_Ldd(struct_Ldd_t *dest, ptr_t src);
+void to_struct_Ldd(ptr_t dest, const struct_Ldd_t *src);
 typedef struct struct_LWWWcc_s {
 	unsigned long L0;
 	unsigned short W1;
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index e1e41e55..becb4af4 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -122,6 +122,8 @@
 #() iFBp_ -> iFB
 #() LEBL_ -> LEB
 #() lFrll_ -> lFB
+#() vFbLdd_ -> vFB
+#() vFbupi_ -> vFB
 #() iEBllll_ -> iEB
 #() vFbuuipWCCp_ -> vFB
 #() vFbWWpWpWpWp_ -> vFB
@@ -166,6 +168,7 @@
 #() vFpi -> vFpi
 #() vFpC -> vFpC
 #() vFpu -> vFpu
+#() vFpd -> vFpd
 #() vFpl -> vFpl
 #() vEpL -> vEpL
 #() vFpL -> vFpL
@@ -341,6 +344,7 @@
 #() iFbp_i -> iFBi
 #() iFbp_p -> iFBp
 #() iFXbL_ -> iFXB
+#() uFpbp_ -> uFpB
 #() fEpBp_ -> fEpB
 #() dEpBp_ -> dEpB
 #() LFpbp_ -> LFpB
@@ -355,6 +359,7 @@
 #() iFbpi_i -> iFBi
 #() iEBll_p -> iEBp
 #() iFXbip_ -> iFXB
+#() vFpbupi_ -> vFpB
 #() iESBliu_ -> iESB
 #() iFbppi_i -> iFBi
 #() iFXbiip_ -> iFXB
@@ -507,6 +512,7 @@
 #() iFpUU -> iFpUU
 #() iFpfu -> iFpfu
 #() iFpff -> iFpff
+#() iFpdd -> iFpdd
 #() iFpli -> iFpli
 #() iFpll -> iFpll
 #() iEpLi -> iEpLi
@@ -605,11 +611,13 @@
 #() pFEXi -> pFEXi
 #() pFEXL -> pFEXL
 #() pFEXp -> pFEXp
+#() pFiii -> pFiii
 #() pEipL -> pEipL
 #() pFipp -> pFipp
 #() pFulu -> pFulu
 #() pFupi -> pFupi
 #() pFupp -> pFupp
+#() pFddd -> pFddd
 #() pFLpi -> pFLpi
 #() pFpcU -> pFpcU
 #() pEpii -> pEpii
@@ -622,6 +630,7 @@
 #() pEpII -> pEpII
 #() pFpuu -> pFpuu
 #() pFpup -> pFpup
+#() pFpdd -> pFpdd
 #() pEpLL -> pEpLL
 #() pFppu -> pFppu
 #() pEppL -> pEppL
@@ -686,6 +695,7 @@
 #() iFXLbpp_ -> iFXLB
 #() iFXbLC_i -> iFXBi
 #() vFLbL_bL_ -> vFLBB
+#() vFpbLdd_i -> vFpBi
 #() iFpbl_bl_ -> iFpBB
 #() iFpbL_bL_ -> iFpBB
 #() iFbp_bp_p -> iFBBp
@@ -787,11 +797,15 @@
 #() vFpiip -> vFpiip
 #() vFpipi -> vFpipi
 #() vFpipp -> vFpipp
+#() vFpudd -> vFpudd
 #() vFpdii -> vFpdii
 #() vFpddd -> vFpddd
 #() vFplpp -> vFplpp
+#() vFppid -> vFppid
 #() vEppip -> vEppip
 #() vFppui -> vFppui
+#() vFppuu -> vFppuu
+#() vFppdd -> vFppdd
 #() vFpppp -> vFpppp
 #() vFXiiL -> vFXiiL
 #() vFXiLu -> vFXiLu
@@ -945,6 +959,8 @@
 #() pFillu -> pFillu
 #() pEippu -> pEippu
 #() pFullu -> pFullu
+#() pFdddd -> pFdddd
+#() pFpiii -> pFpiii
 #() pEpiLL -> pEpiLL
 #() pFpuii -> pFpuii
 #() pFpupp -> pFpupp
@@ -982,6 +998,8 @@
 #() LEpbp_Lp -> LEpBLp
 #() iEEpprLL_ -> iEEppB
 #() iEpurLL_p -> iEpuBp
+#() vFppbp_bL_ -> vFppBB
+#() vFpbLdd_ip -> vFpBip
 #() iFppbL_bL_ -> iFppBB
 #() iFrpuu_Lui -> iFBLui
 #() iEbp_bL_iS -> iEBBiS
@@ -1095,10 +1113,13 @@
 #() vFfffff -> vFfffff
 #() vFddddp -> vFddddp
 #() vFluipp -> vFluipp
+#() vFpiiii -> vFpiiii
 #() vFpilpp -> vFpilpp
 #() vFpipiu -> vFpipiu
 #() vFpuipp -> vFpuipp
+#() vFpuddd -> vFpuddd
 #() vFpddii -> vFpddii
+#() vFpdddd -> vFpdddd
 #() vFppWui -> vFppWui
 #() vFpppii -> vFpppii
 #() vFppppu -> vFppppu
@@ -1168,7 +1189,10 @@
 #() iFXpppp -> iFXpppp
 #() IFXpIII -> IFXpIII
 #() uEEippu -> uEEippu
+#() uFEpppp -> uFEpppp
+#() uFpuupp -> uFpuupp
 #() uEpLLLS -> uEpLLLS
+#() uFppppp -> uFppppp
 #() UFuiCiu -> UFuiCiu
 #() lFpuipC -> lFpuipC
 #() LFEppLL -> LFEppLL
@@ -1178,15 +1202,18 @@
 #() LFXLpuu -> LFXLpuu
 #() LFXpppi -> LFXpppi
 #() pFEppip -> pFEppip
+#() pFEppdd -> pFEppdd
 #() pFEXipp -> pFEXipp
 #() pFEXlpp -> pFEXlpp
 #() pFEXpip -> pFEXpip
 #() pFEXppi -> pFEXppi
 #() pFuiupp -> pFuiupp
+#() pFpiiii -> pFpiiii
 #() pFpiiuu -> pFpiiuu
 #() pFpippp -> pFpippp
 #() pFpuiii -> pFpuiii
 #() pFpuuip -> pFpuuip
+#() pFpdddd -> pFpdddd
 #() pFppuup -> pFppuup
 #() pFppupp -> pFppupp
 #() pFXLipp -> pFXLipp
@@ -1284,7 +1311,9 @@
 #() vFffffff -> vFffffff
 #() vFdddddd -> vFdddddd
 #() vFpipipV -> vFpipipV
+#() vFpudddd -> vFpudddd
 #() vFpdddii -> vFpdddii
+#() vFpddddd -> vFpddddd
 #() vFpppppp -> vFpppppp
 #() vFXiLppi -> vFXiLppi
 #() vFXLiiii -> vFXLiiii
@@ -1346,6 +1375,7 @@
 #() pEEppLLp -> pEEppLLp
 #() pFEXpppp -> pFEXpppp
 #() pFWCiWCi -> pFWCiWCi
+#() pFdddddd -> pFdddddd
 #() pFpiiiiu -> pFpiiiiu
 #() XFpppppp -> XFpppppp
 #() iFpppbp_pp -> iFpppBpp
@@ -1414,6 +1444,7 @@
 #() vFlliiiip -> vFlliiiip
 #() vFpipipiu -> vFpipipiu
 #() vFpddiidd -> vFpddiidd
+#() vFpdddddd -> vFpdddddd
 #() vFXLiiiLi -> vFXLiiiLi
 #() vFXLiiipi -> vFXLiiipi
 #() vFXLiiuui -> vFXLiiuui
@@ -1446,6 +1477,9 @@
 #() iFXpLiWwL -> iFXpLiWwL
 #() iFXpLuuii -> iFXpLuuii
 #() uFuippppp -> uFuippppp
+#() uFpippppp -> uFpippppp
+#() uFpuupppp -> uFpuupppp
+#() uFppppppp -> uFppppppp
 #() lEEipLpLL -> lEEipLpLL
 #() pFEpiiiiu -> pFEpiiiiu
 #() pFEpLiiii -> pFEpLiiii
@@ -1511,6 +1545,7 @@
 #() LFXLpuuLLu -> LFXLpuuLLu
 #() iFXLLiippBL_ -> iFXLLiippB
 #() iFXLpppbL_pp -> iFXLpppBpp
+#() vFppibLdd_ipiu -> vFppiBipiu
 #() vFiiiiiiiii -> vFiiiiiiiii
 #() vFiiiiiiill -> vFiiiiiiill
 #() vFiiiiillli -> vFiiiiillli
@@ -1656,6 +1691,15 @@
 #!defined(HAVE_LD80BITS) KEKp -> KEKp
 #!defined(HAVE_LD80BITS) KEpBp_a -> KEpBa
 #() UEsvvs -> UEss
+wrappedcairo:
+- pFp:
+  - cairo_ft_scaled_font_lock_face
+  - cairo_xcb_device_get_connection
+- uFpppp:
+  - cairo_set_user_data
+  - cairo_surface_set_user_data
+- pFppdd:
+  - cairo_pdf_surface_create_for_stream
 wrappedcrashhandler:
 wrappedexpat:
 - vFpp:
diff --git a/src/wrapped32/generated/wrappedcairodefs32.h b/src/wrapped32/generated/wrappedcairodefs32.h
new file mode 100644
index 00000000..8435d201
--- /dev/null
+++ b/src/wrapped32/generated/wrappedcairodefs32.h
@@ -0,0 +1,8 @@
+/*********************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) *
+ *********************************************************************/
+#ifndef __wrappedcairoDEFS32_H_
+#define __wrappedcairoDEFS32_H_
+
+
+#endif // __wrappedcairoDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedcairotypes32.h b/src/wrapped32/generated/wrappedcairotypes32.h
new file mode 100644
index 00000000..3a2f9d9b
--- /dev/null
+++ b/src/wrapped32/generated/wrappedcairotypes32.h
@@ -0,0 +1,25 @@
+/*********************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) *
+ *********************************************************************/
+#ifndef __wrappedcairoTYPES32_H_
+#define __wrappedcairoTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef void* (*pFp_t)(void*);
+typedef uint32_t (*uFpppp_t)(void*, void*, void*, void*);
+typedef void* (*pFppdd_t)(void*, void*, double, double);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(cairo_ft_scaled_font_lock_face, pFp_t) \
+	GO(cairo_xcb_device_get_connection, pFp_t) \
+	GO(cairo_set_user_data, uFpppp_t) \
+	GO(cairo_surface_set_user_data, uFpppp_t) \
+	GO(cairo_pdf_surface_create_for_stream, pFppdd_t)
+
+#endif // __wrappedcairoTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedcairoundefs32.h b/src/wrapped32/generated/wrappedcairoundefs32.h
new file mode 100644
index 00000000..79d6164c
--- /dev/null
+++ b/src/wrapped32/generated/wrappedcairoundefs32.h
@@ -0,0 +1,8 @@
+/*********************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) *
+ *********************************************************************/
+#ifndef __wrappedcairoUNDEFS32_H_
+#define __wrappedcairoUNDEFS32_H_
+
+
+#endif // __wrappedcairoUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index 7e9e53b9..f8741198 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -213,6 +213,8 @@ typedef int32_t (*iFbp__t)(struct_p_t*);
 typedef int32_t (*iFBp__t)(struct_p_t*);
 typedef uintptr_t (*LEBL__t)(struct_L_t*);
 typedef intptr_t (*lFrll__t)(struct_ll_t*);
+typedef void (*vFbLdd__t)(struct_Ldd_t*);
+typedef void (*vFbupi__t)(struct_upi_t*);
 typedef int32_t (*iEBllll__t)(struct_llll_t*);
 typedef void (*vFbuuipWCCp__t)(struct_uuipWCCp_t*);
 typedef void (*vFbWWpWpWpWp__t)(struct_WWpWpWpWp_t*);
@@ -257,6 +259,7 @@ typedef void (*vEpi_t)(void*, int32_t);
 typedef void (*vFpi_t)(void*, int32_t);
 typedef void (*vFpC_t)(void*, uint8_t);
 typedef void (*vFpu_t)(void*, uint32_t);
+typedef void (*vFpd_t)(void*, double);
 typedef void (*vFpl_t)(void*, intptr_t);
 typedef void (*vEpL_t)(void*, uintptr_t);
 typedef void (*vFpL_t)(void*, uintptr_t);
@@ -432,6 +435,7 @@ typedef int32_t (*iEHBp__t)(uintptr_t, struct_p_t*);
 typedef int32_t (*iFbp_i_t)(struct_p_t*, int32_t);
 typedef int32_t (*iFbp_p_t)(struct_p_t*, void*);
 typedef int32_t (*iFXbL__t)(void*, struct_L_t*);
+typedef uint32_t (*uFpbp__t)(void*, struct_p_t*);
 typedef float (*fEpBp__t)(void*, struct_p_t*);
 typedef double (*dEpBp__t)(void*, struct_p_t*);
 typedef uintptr_t (*LFpbp__t)(void*, struct_p_t*);
@@ -446,6 +450,7 @@ typedef int32_t (*iEprLL__t)(void*, struct_LL_t*);
 typedef int32_t (*iFbpi_i_t)(struct_pi_t*, int32_t);
 typedef int32_t (*iEBll_p_t)(struct_ll_t*, void*);
 typedef int32_t (*iFXbip__t)(void*, struct_ip_t*);
+typedef void (*vFpbupi__t)(void*, struct_upi_t*);
 typedef int32_t (*iESBliu__t)(void*, struct_liu_t*);
 typedef int32_t (*iFbppi_i_t)(struct_ppi_t*, int32_t);
 typedef int32_t (*iFXbiip__t)(void*, struct_iip_t*);
@@ -598,6 +603,7 @@ typedef int32_t (*iFpup_t)(void*, uint32_t, void*);
 typedef int32_t (*iFpUU_t)(void*, uint64_t, uint64_t);
 typedef int32_t (*iFpfu_t)(void*, float, uint32_t);
 typedef int32_t (*iFpff_t)(void*, float, float);
+typedef int32_t (*iFpdd_t)(void*, double, double);
 typedef int32_t (*iFpli_t)(void*, intptr_t, int32_t);
 typedef int32_t (*iFpll_t)(void*, intptr_t, intptr_t);
 typedef int32_t (*iEpLi_t)(void*, uintptr_t, int32_t);
@@ -696,11 +702,13 @@ typedef void* (*pFEpX_t)(x64emu_t*, void*, void*);
 typedef void* (*pFEXi_t)(x64emu_t*, void*, int32_t);
 typedef void* (*pFEXL_t)(x64emu_t*, void*, uintptr_t);
 typedef void* (*pFEXp_t)(x64emu_t*, void*, void*);
+typedef void* (*pFiii_t)(int32_t, int32_t, int32_t);
 typedef void* (*pEipL_t)(int32_t, void*, uintptr_t);
 typedef void* (*pFipp_t)(int32_t, void*, void*);
 typedef void* (*pFulu_t)(uint32_t, intptr_t, uint32_t);
 typedef void* (*pFupi_t)(uint32_t, void*, int32_t);
 typedef void* (*pFupp_t)(uint32_t, void*, void*);
+typedef void* (*pFddd_t)(double, double, double);
 typedef void* (*pFLpi_t)(uintptr_t, void*, int32_t);
 typedef void* (*pFpcU_t)(void*, int8_t, uint64_t);
 typedef void* (*pEpii_t)(void*, int32_t, int32_t);
@@ -713,6 +721,7 @@ typedef void* (*pEpiS_t)(void*, int32_t, void*);
 typedef void* (*pEpII_t)(void*, int64_t, int64_t);
 typedef void* (*pFpuu_t)(void*, uint32_t, uint32_t);
 typedef void* (*pFpup_t)(void*, uint32_t, void*);
+typedef void* (*pFpdd_t)(void*, double, double);
 typedef void* (*pEpLL_t)(void*, uintptr_t, uintptr_t);
 typedef void* (*pFppu_t)(void*, void*, uint32_t);
 typedef void* (*pEppL_t)(void*, void*, uintptr_t);
@@ -777,6 +786,7 @@ typedef void* (*pFXLbL__t)(void*, uintptr_t, struct_L_t*);
 typedef int32_t (*iFXLbpp__t)(void*, uintptr_t, struct_pp_t*);
 typedef int32_t (*iFXbLC_i_t)(void*, struct_LC_t*, int32_t);
 typedef void (*vFLbL_bL__t)(uintptr_t, struct_L_t*, struct_L_t*);
+typedef void (*vFpbLdd_i_t)(void*, struct_Ldd_t*, int32_t);
 typedef int32_t (*iFpbl_bl__t)(void*, struct_l_t*, struct_l_t*);
 typedef int32_t (*iFpbL_bL__t)(void*, struct_L_t*, struct_L_t*);
 typedef int32_t (*iFbp_bp_p_t)(struct_p_t*, struct_p_t*, void*);
@@ -878,11 +888,15 @@ typedef void (*vFLiii_t)(uintptr_t, int32_t, int32_t, int32_t);
 typedef void (*vFpiip_t)(void*, int32_t, int32_t, void*);
 typedef void (*vFpipi_t)(void*, int32_t, void*, int32_t);
 typedef void (*vFpipp_t)(void*, int32_t, void*, void*);
+typedef void (*vFpudd_t)(void*, uint32_t, double, double);
 typedef void (*vFpdii_t)(void*, double, int32_t, int32_t);
 typedef void (*vFpddd_t)(void*, double, double, double);
 typedef void (*vFplpp_t)(void*, intptr_t, void*, void*);
+typedef void (*vFppid_t)(void*, void*, int32_t, double);
 typedef void (*vEppip_t)(void*, void*, int32_t, void*);
 typedef void (*vFppui_t)(void*, void*, uint32_t, int32_t);
+typedef void (*vFppuu_t)(void*, void*, uint32_t, uint32_t);
+typedef void (*vFppdd_t)(void*, void*, double, double);
 typedef void (*vFpppp_t)(void*, void*, void*, void*);
 typedef void (*vFXiiL_t)(void*, int32_t, int32_t, uintptr_t);
 typedef void (*vFXiLu_t)(void*, int32_t, uintptr_t, uint32_t);
@@ -1036,6 +1050,8 @@ typedef void* (*pFifff_t)(int32_t, float, float, float);
 typedef void* (*pFillu_t)(int32_t, intptr_t, intptr_t, uint32_t);
 typedef void* (*pEippu_t)(int32_t, void*, void*, uint32_t);
 typedef void* (*pFullu_t)(uint32_t, intptr_t, intptr_t, uint32_t);
+typedef void* (*pFdddd_t)(double, double, double, double);
+typedef void* (*pFpiii_t)(void*, int32_t, int32_t, int32_t);
 typedef void* (*pEpiLL_t)(void*, int32_t, uintptr_t, uintptr_t);
 typedef void* (*pFpuii_t)(void*, uint32_t, int32_t, int32_t);
 typedef void* (*pFpupp_t)(void*, uint32_t, void*, void*);
@@ -1073,6 +1089,8 @@ typedef uintptr_t (*LEpBp_ii_t)(void*, struct_p_t*, int32_t, int32_t);
 typedef uintptr_t (*LEpbp_Lp_t)(void*, struct_p_t*, uintptr_t, void*);
 typedef int32_t (*iEEpprLL__t)(x64emu_t*, void*, void*, struct_LL_t*);
 typedef int32_t (*iEpurLL_p_t)(void*, uint32_t, struct_LL_t*, void*);
+typedef void (*vFppbp_bL__t)(void*, void*, struct_p_t*, struct_L_t*);
+typedef void (*vFpbLdd_ip_t)(void*, struct_Ldd_t*, int32_t, void*);
 typedef int32_t (*iFppbL_bL__t)(void*, void*, struct_L_t*, struct_L_t*);
 typedef int32_t (*iFrpuu_Lui_t)(struct_puu_t*, uintptr_t, uint32_t, int32_t);
 typedef int32_t (*iEbp_bL_iS_t)(struct_p_t*, struct_L_t*, int32_t, void*);
@@ -1186,10 +1204,13 @@ typedef void (*vFupppp_t)(uint32_t, void*, void*, void*, void*);
 typedef void (*vFfffff_t)(float, float, float, float, float);
 typedef void (*vFddddp_t)(double, double, double, double, void*);
 typedef void (*vFluipp_t)(intptr_t, uint32_t, int32_t, void*, void*);
+typedef void (*vFpiiii_t)(void*, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFpilpp_t)(void*, int32_t, intptr_t, void*, void*);
 typedef void (*vFpipiu_t)(void*, int32_t, void*, int32_t, uint32_t);
 typedef void (*vFpuipp_t)(void*, uint32_t, int32_t, void*, void*);
+typedef void (*vFpuddd_t)(void*, uint32_t, double, double, double);
 typedef void (*vFpddii_t)(void*, double, double, int32_t, int32_t);
+typedef void (*vFpdddd_t)(void*, double, double, double, double);
 typedef void (*vFppWui_t)(void*, void*, uint16_t, uint32_t, int32_t);
 typedef void (*vFpppii_t)(void*, void*, void*, int32_t, int32_t);
 typedef void (*vFppppu_t)(void*, void*, void*, void*, uint32_t);
@@ -1259,7 +1280,10 @@ typedef int32_t (*iFXpipi_t)(void*, void*, int32_t, void*, int32_t);
 typedef int32_t (*iFXpppp_t)(void*, void*, void*, void*, void*);
 typedef int64_t (*IFXpIII_t)(void*, void*, int64_t, int64_t, int64_t);
 typedef uint32_t (*uEEippu_t)(x64emu_t*, int32_t, void*, void*, uint32_t);
+typedef uint32_t (*uFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
+typedef uint32_t (*uFpuupp_t)(void*, uint32_t, uint32_t, void*, void*);
 typedef uint32_t (*uEpLLLS_t)(void*, uintptr_t, uintptr_t, uintptr_t, void*);
+typedef uint32_t (*uFppppp_t)(void*, void*, void*, void*, void*);
 typedef uint64_t (*UFuiCiu_t)(uint32_t, int32_t, uint8_t, int32_t, uint32_t);
 typedef intptr_t (*lFpuipC_t)(void*, uint32_t, int32_t, void*, uint8_t);
 typedef uintptr_t (*LFEppLL_t)(x64emu_t*, void*, void*, uintptr_t, uintptr_t);
@@ -1269,15 +1293,18 @@ typedef uintptr_t (*LFXLuuu_t)(void*, uintptr_t, uint32_t, uint32_t, uint32_t);
 typedef uintptr_t (*LFXLpuu_t)(void*, uintptr_t, void*, uint32_t, uint32_t);
 typedef uintptr_t (*LFXpppi_t)(void*, void*, void*, void*, int32_t);
 typedef void* (*pFEppip_t)(x64emu_t*, void*, void*, int32_t, void*);
+typedef void* (*pFEppdd_t)(x64emu_t*, void*, void*, double, double);
 typedef void* (*pFEXipp_t)(x64emu_t*, void*, int32_t, void*, void*);
 typedef void* (*pFEXlpp_t)(x64emu_t*, void*, intptr_t, void*, void*);
 typedef void* (*pFEXpip_t)(x64emu_t*, void*, void*, int32_t, void*);
 typedef void* (*pFEXppi_t)(x64emu_t*, void*, void*, void*, int32_t);
 typedef void* (*pFuiupp_t)(uint32_t, int32_t, uint32_t, void*, void*);
+typedef void* (*pFpiiii_t)(void*, int32_t, int32_t, int32_t, int32_t);
 typedef void* (*pFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t);
 typedef void* (*pFpippp_t)(void*, int32_t, void*, void*, void*);
 typedef void* (*pFpuiii_t)(void*, uint32_t, int32_t, int32_t, int32_t);
 typedef void* (*pFpuuip_t)(void*, uint32_t, uint32_t, int32_t, void*);
+typedef void* (*pFpdddd_t)(void*, double, double, double, double);
 typedef void* (*pFppuup_t)(void*, void*, uint32_t, uint32_t, void*);
 typedef void* (*pFppupp_t)(void*, void*, uint32_t, void*, void*);
 typedef void* (*pFXLipp_t)(void*, uintptr_t, int32_t, void*, void*);
@@ -1375,7 +1402,9 @@ typedef void (*vFupiiii_t)(uint32_t, void*, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFffffff_t)(float, float, float, float, float, float);
 typedef void (*vFdddddd_t)(double, double, double, double, double, double);
 typedef void (*vFpipipV_t)(void*, int32_t, void*, int32_t, void*, void*);
+typedef void (*vFpudddd_t)(void*, uint32_t, double, double, double, double);
 typedef void (*vFpdddii_t)(void*, double, double, double, int32_t, int32_t);
+typedef void (*vFpddddd_t)(void*, double, double, double, double, double);
 typedef void (*vFpppppp_t)(void*, void*, void*, void*, void*, void*);
 typedef void (*vFXiLppi_t)(void*, int32_t, uintptr_t, void*, void*, int32_t);
 typedef void (*vFXLiiii_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int32_t);
@@ -1437,6 +1466,7 @@ 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* (*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);
+typedef void* (*pFdddddd_t)(double, double, double, double, double, double);
 typedef void* (*pFpiiiiu_t)(void*, int32_t, int32_t, int32_t, int32_t, uint32_t);
 typedef void* (*XFpppppp_t)(void*, void*, void*, void*, void*, void*);
 typedef int32_t (*iFpppbp_pp_t)(void*, void*, void*, struct_p_t*, void*, void*);
@@ -1505,6 +1535,7 @@ typedef void (*vFudddddd_t)(uint32_t, double, double, double, double, double, do
 typedef void (*vFlliiiip_t)(intptr_t, intptr_t, int32_t, int32_t, int32_t, int32_t, void*);
 typedef void (*vFpipipiu_t)(void*, int32_t, void*, int32_t, void*, int32_t, uint32_t);
 typedef void (*vFpddiidd_t)(void*, double, double, int32_t, int32_t, double, double);
+typedef void (*vFpdddddd_t)(void*, double, double, double, double, double, double);
 typedef void (*vFXLiiiLi_t)(void*, uintptr_t, int32_t, int32_t, int32_t, uintptr_t, int32_t);
 typedef void (*vFXLiiipi_t)(void*, uintptr_t, int32_t, int32_t, int32_t, void*, int32_t);
 typedef void (*vFXLiiuui_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, int32_t);
@@ -1537,6 +1568,9 @@ typedef int32_t (*iFXpiipii_t)(void*, void*, int32_t, int32_t, void*, int32_t, i
 typedef int32_t (*iFXpLiWwL_t)(void*, void*, uintptr_t, int32_t, uint16_t, int16_t, uintptr_t);
 typedef int32_t (*iFXpLuuii_t)(void*, void*, uintptr_t, uint32_t, uint32_t, int32_t, int32_t);
 typedef uint32_t (*uFuippppp_t)(uint32_t, int32_t, void*, void*, void*, void*, void*);
+typedef uint32_t (*uFpippppp_t)(void*, int32_t, void*, void*, void*, void*, void*);
+typedef uint32_t (*uFpuupppp_t)(void*, uint32_t, uint32_t, void*, void*, void*, void*);
+typedef uint32_t (*uFppppppp_t)(void*, void*, void*, void*, void*, void*, void*);
 typedef intptr_t (*lEEipLpLL_t)(x64emu_t*, int32_t, void*, uintptr_t, void*, uintptr_t, uintptr_t);
 typedef void* (*pFEpiiiiu_t)(x64emu_t*, void*, int32_t, int32_t, int32_t, int32_t, uint32_t);
 typedef void* (*pFEpLiiii_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, int32_t, int32_t);
@@ -1602,6 +1636,7 @@ typedef uintptr_t (*LFEXLppuuu_t)(x64emu_t*, void*, uintptr_t, void*, void*, uin
 typedef uintptr_t (*LFXLpuuLLu_t)(void*, uintptr_t, void*, uint32_t, uint32_t, uintptr_t, uintptr_t, uint32_t);
 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 (*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);
@@ -1877,6 +1912,8 @@ void iFbp__32(x64emu_t *emu, uintptr_t fcn) { iFbp__t fn = (iFbp__t)fcn; struct_
 void iFBp__32(x64emu_t *emu, uintptr_t fcn) { iFBp__t fn = (iFBp__t)fcn; struct_p_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void LEBL__32(x64emu_t *emu, uintptr_t fcn) { LEBL__t fn = (LEBL__t)fcn; errno = emu->libc_err; struct_L_t arg_4={0}; R_EAX = to_ulong(fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); emu->libc_err = errno; }
 void lFrll__32(x64emu_t *emu, uintptr_t fcn) { lFrll__t fn = (lFrll__t)fcn; struct_ll_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_ll(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = to_long(fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL)); }
+void vFbLdd__32(x64emu_t *emu, uintptr_t fcn) { vFbLdd__t fn = (vFbLdd__t)fcn; struct_Ldd_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_Ldd(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_Ldd(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
+void vFbupi__32(x64emu_t *emu, uintptr_t fcn) { vFbupi__t fn = (vFbupi__t)fcn; struct_upi_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_upi(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_upi(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void iEBllll__32(x64emu_t *emu, uintptr_t fcn) { iEBllll__t fn = (iEBllll__t)fcn; errno = emu->libc_err; struct_llll_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_llll(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); emu->libc_err = errno; }
 void vFbuuipWCCp__32(x64emu_t *emu, uintptr_t fcn) { vFbuuipWCCp__t fn = (vFbuuipWCCp__t)fcn; struct_uuipWCCp_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_uuipWCCp(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_uuipWCCp(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void vFbWWpWpWpWp__32(x64emu_t *emu, uintptr_t fcn) { vFbWWpWpWpWp__t fn = (vFbWWpWpWpWp__t)fcn; struct_WWpWpWpWp_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_WWpWpWpWp(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_WWpWpWpWp(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
@@ -1921,6 +1958,7 @@ void vEpi_32(x64emu_t *emu, uintptr_t fcn) { vEpi_t fn = (vEpi_t)fcn; errno = em
 void vFpi_32(x64emu_t *emu, uintptr_t fcn) { vFpi_t fn = (vFpi_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
 void vFpC_32(x64emu_t *emu, uintptr_t fcn) { vFpC_t fn = (vFpC_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(uint8_t, R_ESP + 8)); }
 void vFpu_32(x64emu_t *emu, uintptr_t fcn) { vFpu_t fn = (vFpu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8)); }
+void vFpd_32(x64emu_t *emu, uintptr_t fcn) { vFpd_t fn = (vFpd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8)); }
 void vFpl_32(x64emu_t *emu, uintptr_t fcn) { vFpl_t fn = (vFpl_t)fcn; fn(from_ptriv(R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8))); }
 void vEpL_32(x64emu_t *emu, uintptr_t fcn) { vEpL_t fn = (vEpL_t)fcn; errno = emu->libc_err; fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8))); emu->libc_err = errno; }
 void vFpL_32(x64emu_t *emu, uintptr_t fcn) { vFpL_t fn = (vFpL_t)fcn; fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8))); }
@@ -2096,6 +2134,7 @@ void iEHBp__32(x64emu_t *emu, uintptr_t fcn) { iEHBp__t fn = (iEHBp__t)fcn; errn
 void iFbp_i_32(x64emu_t *emu, uintptr_t fcn) { iFbp_i_t fn = (iFbp_i_t)fcn; struct_p_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_p(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptri(int32_t, R_ESP + 8)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void iFbp_p_32(x64emu_t *emu, uintptr_t fcn) { iFbp_p_t fn = (iFbp_p_t)fcn; struct_p_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_p(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void iFXbL__32(x64emu_t *emu, uintptr_t fcn) { iFXbL__t fn = (iFXbL__t)fcn; struct_L_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_L(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
+void uFpbp__32(x64emu_t *emu, uintptr_t fcn) { uFpbp__t fn = (uFpbp__t)fcn; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void fEpBp__32(x64emu_t *emu, uintptr_t fcn) { fEpBp__t fn = (fEpBp__t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; float fl = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); fpu_do_push(emu); ST0val = fl; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; }
 void dEpBp__32(x64emu_t *emu, uintptr_t fcn) { dEpBp__t fn = (dEpBp__t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; double db = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); fpu_do_push(emu); ST0val = db; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; }
 void LFpbp__32(x64emu_t *emu, uintptr_t fcn) { LFpbp__t fn = (LFpbp__t)fcn; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
@@ -2110,6 +2149,7 @@ void iEprLL__32(x64emu_t *emu, uintptr_t fcn) { iEprLL__t fn = (iEprLL__t)fcn; e
 void iFbpi_i_32(x64emu_t *emu, uintptr_t fcn) { iFbpi_i_t fn = (iFbpi_i_t)fcn; struct_pi_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_pi(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptri(int32_t, R_ESP + 8)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_pi(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void iEBll_p_32(x64emu_t *emu, uintptr_t fcn) { iEBll_p_t fn = (iEBll_p_t)fcn; errno = emu->libc_err; struct_ll_t arg_4={0}; R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_ll(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); emu->libc_err = errno; }
 void iFXbip__32(x64emu_t *emu, uintptr_t fcn) { iFXbip__t fn = (iFXbip__t)fcn; struct_ip_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_ip(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_ip(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
+void vFpbupi__32(x64emu_t *emu, uintptr_t fcn) { vFpbupi__t fn = (vFpbupi__t)fcn; struct_upi_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_upi(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_upi(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void iESBliu__32(x64emu_t *emu, uintptr_t fcn) { iESBliu__t fn = (iESBliu__t)fcn; errno = emu->libc_err; struct_liu_t arg_8={0}; R_EAX = fn(io_convert32(from_ptriv(R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_liu(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; }
 void iFbppi_i_32(x64emu_t *emu, uintptr_t fcn) { iFbppi_i_t fn = (iFbppi_i_t)fcn; struct_ppi_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_ppi(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptri(int32_t, R_ESP + 8)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_ppi(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
 void iFXbiip__32(x64emu_t *emu, uintptr_t fcn) { iFXbiip__t fn = (iFXbiip__t)fcn; struct_iip_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_iip(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_iip(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
@@ -2262,6 +2302,7 @@ void iFpup_32(x64emu_t *emu, uintptr_t fcn) { iFpup_t fn = (iFpup_t)fcn; R_EAX =
 void iFpUU_32(x64emu_t *emu, uintptr_t fcn) { iFpUU_t fn = (iFpUU_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint64_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 16)); }
 void iFpfu_32(x64emu_t *emu, uintptr_t fcn) { iFpfu_t fn = (iFpfu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
 void iFpff_32(x64emu_t *emu, uintptr_t fcn) { iFpff_t fn = (iFpff_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12)); }
+void iFpdd_32(x64emu_t *emu, uintptr_t fcn) { iFpdd_t fn = (iFpdd_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16)); }
 void iFpli_32(x64emu_t *emu, uintptr_t fcn) { iFpli_t fn = (iFpli_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12)); }
 void iFpll_32(x64emu_t *emu, uintptr_t fcn) { iFpll_t fn = (iFpll_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_long(from_ptri(long_t, R_ESP + 12))); }
 void iEpLi_32(x64emu_t *emu, uintptr_t fcn) { iEpLi_t fn = (iEpLi_t)fcn; errno = emu->libc_err; R_EAX = fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12)); emu->libc_err = errno; }
@@ -2360,11 +2401,13 @@ void pFEpX_32(x64emu_t *emu, uintptr_t fcn) { pFEpX_t fn = (pFEpX_t)fcn; R_EAX =
 void pFEXi_32(x64emu_t *emu, uintptr_t fcn) { pFEXi_t fn = (pFEXi_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8))); }
 void pFEXL_32(x64emu_t *emu, uintptr_t fcn) { pFEXL_t fn = (pFEXL_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)))); }
 void pFEXp_32(x64emu_t *emu, uintptr_t fcn) { pFEXp_t fn = (pFEXp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8))); }
+void pFiii_32(x64emu_t *emu, uintptr_t fcn) { pFiii_t fn = (pFiii_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); }
 void pEipL_32(x64emu_t *emu, uintptr_t fcn) { pEipL_t fn = (pEipL_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); emu->libc_err = errno; }
 void pFipp_32(x64emu_t *emu, uintptr_t fcn) { pFipp_t fn = (pFipp_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12))); }
 void pFulu_32(x64emu_t *emu, uintptr_t fcn) { pFulu_t fn = (pFulu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12))); }
 void pFupi_32(x64emu_t *emu, uintptr_t fcn) { pFupi_t fn = (pFupi_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); }
 void pFupp_32(x64emu_t *emu, uintptr_t fcn) { pFupp_t fn = (pFupp_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12))); }
+void pFddd_32(x64emu_t *emu, uintptr_t fcn) { pFddd_t fn = (pFddd_t)fcn; R_EAX = to_ptrv(fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20))); }
 void pFLpi_32(x64emu_t *emu, uintptr_t fcn) { pFLpi_t fn = (pFLpi_t)fcn; R_EAX = to_ptrv(fn(from_ulong(from_ptri(ulong_t, R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); }
 void pFpcU_32(x64emu_t *emu, uintptr_t fcn) { pFpcU_t fn = (pFpcU_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int8_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 12))); }
 void pEpii_32(x64emu_t *emu, uintptr_t fcn) { pEpii_t fn = (pEpii_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); emu->libc_err = errno; }
@@ -2377,6 +2420,7 @@ void pEpiS_32(x64emu_t *emu, uintptr_t fcn) { pEpiS_t fn = (pEpiS_t)fcn; errno =
 void pEpII_32(x64emu_t *emu, uintptr_t fcn) { pEpII_t fn = (pEpII_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int64_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 16))); emu->libc_err = errno; }
 void pFpuu_32(x64emu_t *emu, uintptr_t fcn) { pFpuu_t fn = (pFpuu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12))); }
 void pFpup_32(x64emu_t *emu, uintptr_t fcn) { pFpup_t fn = (pFpup_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12))); }
+void pFpdd_32(x64emu_t *emu, uintptr_t fcn) { pFpdd_t fn = (pFpdd_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16))); }
 void pEpLL_32(x64emu_t *emu, uintptr_t fcn) { pEpLL_t fn = (pEpLL_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); emu->libc_err = errno; }
 void pFppu_32(x64emu_t *emu, uintptr_t fcn) { pFppu_t fn = (pFppu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12))); }
 void pEppL_32(x64emu_t *emu, uintptr_t fcn) { pEppL_t fn = (pEppL_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); emu->libc_err = errno; }
@@ -2441,6 +2485,7 @@ void pFXLbL__32(x64emu_t *emu, uintptr_t fcn) { pFXLbL__t fn = (pFXLbL__t)fcn; s
 void iFXLbpp__32(x64emu_t *emu, uintptr_t fcn) { iFXLbpp__t fn = (iFXLbpp__t)fcn; struct_pp_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_pp(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_pp(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
 void iFXbLC_i_32(x64emu_t *emu, uintptr_t fcn) { iFXbLC_i_t fn = (iFXbLC_i_t)fcn; struct_LC_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_LC(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_LC(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void vFLbL_bL__32(x64emu_t *emu, uintptr_t fcn) { vFLbL_bL__t fn = (vFLbL_bL__t)fcn; struct_L_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_L(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_L_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); fn(from_ulong(from_ptri(ulong_t, R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
+void vFpbLdd_i_32(x64emu_t *emu, uintptr_t fcn) { vFpbLdd_i_t fn = (vFpbLdd_i_t)fcn; struct_Ldd_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_Ldd(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_Ldd(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void iFpbl_bl__32(x64emu_t *emu, uintptr_t fcn) { iFpbl_bl__t fn = (iFpbl_bl__t)fcn; struct_l_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_l(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_l_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_l(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
 void iFpbL_bL__32(x64emu_t *emu, uintptr_t fcn) { iFpbL_bL__t fn = (iFpbL_bL__t)fcn; struct_L_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_L(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_L_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); }
 void iFbp_bp_p_32(x64emu_t *emu, uintptr_t fcn) { iFbp_bp_p_t fn = (iFbp_bp_p_t)fcn; struct_p_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_p(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptriv(R_ESP + 12)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
@@ -2542,11 +2587,15 @@ void vFLiii_32(x64emu_t *emu, uintptr_t fcn) { vFLiii_t fn = (vFLiii_t)fcn; fn(f
 void vFpiip_32(x64emu_t *emu, uintptr_t fcn) { vFpiip_t fn = (vFpiip_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFpipi_32(x64emu_t *emu, uintptr_t fcn) { vFpipi_t fn = (vFpipi_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void vFpipp_32(x64emu_t *emu, uintptr_t fcn) { vFpipp_t fn = (vFpipp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void vFpudd_32(x64emu_t *emu, uintptr_t fcn) { vFpudd_t fn = (vFpudd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20)); }
 void vFpdii_32(x64emu_t *emu, uintptr_t fcn) { vFpdii_t fn = (vFpdii_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); }
 void vFpddd_32(x64emu_t *emu, uintptr_t fcn) { vFpddd_t fn = (vFpddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24)); }
 void vFplpp_32(x64emu_t *emu, uintptr_t fcn) { vFplpp_t fn = (vFplpp_t)fcn; fn(from_ptriv(R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void vFppid_32(x64emu_t *emu, uintptr_t fcn) { vFppid_t fn = (vFppid_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(double, R_ESP + 16)); }
 void vEppip_32(x64emu_t *emu, uintptr_t fcn) { vEppip_t fn = (vEppip_t)fcn; errno = emu->libc_err; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); emu->libc_err = errno; }
 void vFppui_32(x64emu_t *emu, uintptr_t fcn) { vFppui_t fn = (vFppui_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
+void vFppuu_32(x64emu_t *emu, uintptr_t fcn) { vFppuu_t fn = (vFppuu_t)fcn; 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)); }
+void vFppdd_32(x64emu_t *emu, uintptr_t fcn) { vFppdd_t fn = (vFppdd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20)); }
 void vFpppp_32(x64emu_t *emu, uintptr_t fcn) { vFpppp_t fn = (vFpppp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFXiiL_32(x64emu_t *emu, uintptr_t fcn) { vFXiiL_t fn = (vFXiiL_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16))); }
 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)); }
@@ -2700,6 +2749,8 @@ void pFifff_32(x64emu_t *emu, uintptr_t fcn) { pFifff_t fn = (pFifff_t)fcn; R_EA
 void pFillu_32(x64emu_t *emu, uintptr_t fcn) { pFillu_t fn = (pFillu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_long(from_ptri(long_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16))); }
 void pEippu_32(x64emu_t *emu, uintptr_t fcn) { pEippu_t fn = (pEippu_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16))); emu->libc_err = errno; }
 void pFullu_32(x64emu_t *emu, uintptr_t fcn) { pFullu_t fn = (pFullu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_long(from_ptri(long_t, R_ESP + 8)), from_long(from_ptri(long_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16))); }
+void pFdddd_32(x64emu_t *emu, uintptr_t fcn) { pFdddd_t fn = (pFdddd_t)fcn; R_EAX = to_ptrv(fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28))); }
+void pFpiii_32(x64emu_t *emu, uintptr_t fcn) { pFpiii_t fn = (pFpiii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); }
 void pEpiLL_32(x64emu_t *emu, uintptr_t fcn) { pEpiLL_t fn = (pEpiLL_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(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)))); emu->libc_err = errno; }
 void pFpuii_32(x64emu_t *emu, uintptr_t fcn) { pFpuii_t fn = (pFpuii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); }
 void pFpupp_32(x64emu_t *emu, uintptr_t fcn) { pFpupp_t fn = (pFpupp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); }
@@ -2737,6 +2788,8 @@ void LEpBp_ii_32(x64emu_t *emu, uintptr_t fcn) { LEpBp_ii_t fn = (LEpBp_ii_t)fcn
 void LEpbp_Lp_32(x64emu_t *emu, uintptr_t fcn) { LEpbp_Lp_t fn = (LEpbp_Lp_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; }
 void iEEpprLL__32(x64emu_t *emu, uintptr_t fcn) { iEEpprLL__t fn = (iEEpprLL__t)fcn; errno = emu->libc_err; struct_LL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); emu->libc_err = errno; }
 void iEpurLL_p_32(x64emu_t *emu, uintptr_t fcn) { iEpurLL_p_t fn = (iEpurLL_p_t)fcn; errno = emu->libc_err; struct_LL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptriv(R_ESP + 16)); emu->libc_err = errno; }
+void vFppbp_bL__32(x64emu_t *emu, uintptr_t fcn) { vFppbp_bL__t fn = (vFppbp_bL__t)fcn; struct_p_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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)))); fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
+void vFpbLdd_ip_32(x64emu_t *emu, uintptr_t fcn) { vFpbLdd_ip_t fn = (vFpbLdd_ip_t)fcn; struct_Ldd_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_Ldd(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_Ldd(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
 void iFppbL_bL__32(x64emu_t *emu, uintptr_t fcn) { iFppbL_bL__t fn = (iFppbL_bL__t)fcn; struct_L_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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)))); R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
 void iFrpuu_Lui_32(x64emu_t *emu, uintptr_t fcn) { iFrpuu_Lui_t fn = (iFrpuu_Lui_t)fcn; struct_puu_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_puu(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void iEbp_bL_iS_32(x64emu_t *emu, uintptr_t fcn) { iEbp_bL_iS_t fn = (iEbp_bL_iS_t)fcn; errno = emu->libc_err; struct_p_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_p(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); struct_L_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_L(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), io_convert32(from_ptriv(R_ESP + 16))); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; }
@@ -2850,10 +2903,13 @@ void vFupppp_32(x64emu_t *emu, uintptr_t fcn) { vFupppp_t fn = (vFupppp_t)fcn; f
 void vFfffff_32(x64emu_t *emu, uintptr_t fcn) { vFfffff_t fn = (vFfffff_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)); }
 void vFddddp_32(x64emu_t *emu, uintptr_t fcn) { vFddddp_t fn = (vFddddp_t)fcn; fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28), from_ptriv(R_ESP + 36)); }
 void vFluipp_32(x64emu_t *emu, uintptr_t fcn) { vFluipp_t fn = (vFluipp_t)fcn; fn(from_long(from_ptri(long_t, 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 vFpiiii_32(x64emu_t *emu, uintptr_t fcn) { vFpiiii_t fn = (vFpiiii_t)fcn; fn(from_ptriv(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)); }
 void vFpilpp_32(x64emu_t *emu, uintptr_t fcn) { vFpilpp_t fn = (vFpilpp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_long(from_ptri(long_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void vFpipiu_32(x64emu_t *emu, uintptr_t fcn) { vFpipiu_t fn = (vFpipiu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20)); }
 void vFpuipp_32(x64emu_t *emu, uintptr_t fcn) { vFpuipp_t fn = (vFpuipp_t)fcn; 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 vFpuddd_32(x64emu_t *emu, uintptr_t fcn) { vFpuddd_t fn = (vFpuddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28)); }
 void vFpddii_32(x64emu_t *emu, uintptr_t fcn) { vFpddii_t fn = (vFpddii_t)fcn; fn(from_ptriv(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)); }
+void vFpdddd_32(x64emu_t *emu, uintptr_t fcn) { vFpdddd_t fn = (vFpdddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24), from_ptri(double, R_ESP + 32)); }
 void vFppWui_32(x64emu_t *emu, uintptr_t fcn) { vFppWui_t fn = (vFppWui_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint16_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); }
 void vFpppii_32(x64emu_t *emu, uintptr_t fcn) { vFpppii_t fn = (vFpppii_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); }
 void vFppppu_32(x64emu_t *emu, uintptr_t fcn) { vFppppu_t fn = (vFppppu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(uint32_t, R_ESP + 20)); }
@@ -2923,7 +2979,10 @@ void iFXpipi_32(x64emu_t *emu, uintptr_t fcn) { iFXpipi_t fn = (iFXpipi_t)fcn; R
 void iFXpppp_32(x64emu_t *emu, uintptr_t fcn) { iFXpppp_t fn = (iFXpppp_t)fcn; R_EAX = fn(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 IFXpIII_32(x64emu_t *emu, uintptr_t fcn) { IFXpIII_t fn = (IFXpIII_t)fcn; ui64_t r; r.i = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int64_t, R_ESP + 12), from_ptri(int64_t, R_ESP + 20), from_ptri(int64_t, R_ESP + 28)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
 void uEEippu_32(x64emu_t *emu, uintptr_t fcn) { uEEippu_t fn = (uEEippu_t)fcn; errno = emu->libc_err; R_EAX = (uint32_t)fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); emu->libc_err = errno; }
+void uFEpppp_32(x64emu_t *emu, uintptr_t fcn) { uFEpppp_t fn = (uFEpppp_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void uFpuupp_32(x64emu_t *emu, uintptr_t fcn) { uFpuupp_t fn = (uFpuupp_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void uEpLLLS_32(x64emu_t *emu, uintptr_t fcn) { uEpLLLS_t fn = (uEpLLLS_t)fcn; errno = emu->libc_err; R_EAX = (uint32_t)fn(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)), io_convert32(from_ptriv(R_ESP + 20))); emu->libc_err = errno; }
+void uFppppp_32(x64emu_t *emu, uintptr_t fcn) { uFppppp_t fn = (uFppppp_t)fcn; R_EAX = (uint32_t)fn(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 UFuiCiu_32(x64emu_t *emu, uintptr_t fcn) { UFuiCiu_t fn = (UFuiCiu_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
 void lFpuipC_32(x64emu_t *emu, uintptr_t fcn) { lFpuipC_t fn = (lFpuipC_t)fcn; R_EAX = to_long(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_ptri(uint8_t, R_ESP + 20))); }
 void LFEppLL_32(x64emu_t *emu, uintptr_t fcn) { LFEppLL_t fn = (LFEppLL_t)fcn; R_EAX = to_ulong(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)))); }
@@ -2933,15 +2992,18 @@ void LFXLuuu_32(x64emu_t *emu, uintptr_t fcn) { LFXLuuu_t fn = (LFXLuuu_t)fcn; R
 void LFXLpuu_32(x64emu_t *emu, uintptr_t fcn) { LFXLpuu_t fn = (LFXLpuu_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))); }
 void LFXpppi_32(x64emu_t *emu, uintptr_t fcn) { LFXpppi_t fn = (LFXpppi_t)fcn; R_EAX = to_ulong(fn(getDisplay(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))); }
 void pFEppip_32(x64emu_t *emu, uintptr_t fcn) { pFEppip_t fn = (pFEppip_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); }
+void pFEppdd_32(x64emu_t *emu, uintptr_t fcn) { pFEppdd_t fn = (pFEppdd_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20))); }
 void pFEXipp_32(x64emu_t *emu, uintptr_t fcn) { pFEXipp_t fn = (pFEXipp_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), from_ptriv(R_ESP + 16))); }
 void pFEXlpp_32(x64emu_t *emu, uintptr_t fcn) { pFEXlpp_t fn = (pFEXlpp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); }
 void pFEXpip_32(x64emu_t *emu, uintptr_t fcn) { pFEXpip_t fn = (pFEXpip_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); }
 void pFEXppi_32(x64emu_t *emu, uintptr_t fcn) { pFEXppi_t fn = (pFEXppi_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_ptri(int32_t, R_ESP + 16))); }
 void pFuiupp_32(x64emu_t *emu, uintptr_t fcn) { pFuiupp_t fn = (pFuiupp_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); }
+void pFpiiii_32(x64emu_t *emu, uintptr_t fcn) { pFpiiii_t fn = (pFpiiii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(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))); }
 void pFpiiuu_32(x64emu_t *emu, uintptr_t fcn) { pFpiiuu_t fn = (pFpiiuu_t)fcn; R_EAX = to_ptrv(fn(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 pFpippp_32(x64emu_t *emu, uintptr_t fcn) { pFpippp_t fn = (pFpippp_t)fcn; R_EAX = to_ptrv(fn(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))); }
 void pFpuiii_32(x64emu_t *emu, uintptr_t fcn) { pFpuiii_t fn = (pFpuiii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_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))); }
 void pFpuuip_32(x64emu_t *emu, uintptr_t fcn) { pFpuuip_t fn = (pFpuuip_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); }
+void pFpdddd_32(x64emu_t *emu, uintptr_t fcn) { pFpdddd_t fn = (pFpdddd_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24), from_ptri(double, R_ESP + 32))); }
 void pFppuup_32(x64emu_t *emu, uintptr_t fcn) { pFppuup_t fn = (pFppuup_t)fcn; R_EAX = to_ptrv(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_ptriv(R_ESP + 20))); }
 void pFppupp_32(x64emu_t *emu, uintptr_t fcn) { pFppupp_t fn = (pFppupp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); }
 void pFXLipp_32(x64emu_t *emu, uintptr_t fcn) { pFXLipp_t fn = (pFXLipp_t)fcn; R_EAX = to_ptrv(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), from_ptriv(R_ESP + 20))); }
@@ -3039,7 +3101,9 @@ void vFupiiii_32(x64emu_t *emu, uintptr_t fcn) { vFupiiii_t fn = (vFupiiii_t)fcn
 void vFffffff_32(x64emu_t *emu, uintptr_t fcn) { vFffffff_t fn = (vFffffff_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)); }
 void vFdddddd_32(x64emu_t *emu, uintptr_t fcn) { vFdddddd_t fn = (vFdddddd_t)fcn; fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28), from_ptri(double, R_ESP + 36), from_ptri(double, R_ESP + 44)); }
 void vFpipipV_32(x64emu_t *emu, uintptr_t fcn) { vFpipipV_t fn = (vFpipipV_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptrv(R_ESP + 24)); }
+void vFpudddd_32(x64emu_t *emu, uintptr_t fcn) { vFpudddd_t fn = (vFpudddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28), from_ptri(double, R_ESP + 36)); }
 void vFpdddii_32(x64emu_t *emu, uintptr_t fcn) { vFpdddii_t fn = (vFpdddii_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36)); }
+void vFpddddd_32(x64emu_t *emu, uintptr_t fcn) { vFpddddd_t fn = (vFpddddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24), from_ptri(double, R_ESP + 32), from_ptri(double, R_ESP + 40)); }
 void vFpppppp_32(x64emu_t *emu, uintptr_t fcn) { vFpppppp_t fn = (vFpppppp_t)fcn; fn(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), from_ptriv(R_ESP + 24)); }
 void vFXiLppi_32(x64emu_t *emu, uintptr_t fcn) { vFXiLppi_t fn = (vFXiLppi_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_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); }
 void vFXLiiii_32(x64emu_t *emu, uintptr_t fcn) { vFXLiiii_t fn = (vFXLiiii_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_ptri(int32_t, R_ESP + 24)); }
@@ -3101,6 +3165,7 @@ void pEEpLLiN_32(x64emu_t *emu, uintptr_t fcn) { pEEpLLiN_t fn = (pEEpLLiN_t)fcn
 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 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))); }
+void pFdddddd_32(x64emu_t *emu, uintptr_t fcn) { pFdddddd_t fn = (pFdddddd_t)fcn; R_EAX = to_ptrv(fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28), from_ptri(double, R_ESP + 36), from_ptri(double, R_ESP + 44))); }
 void pFpiiiiu_32(x64emu_t *emu, uintptr_t fcn) { pFpiiiiu_t fn = (pFpiiiiu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(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(uint32_t, R_ESP + 24))); }
 void XFpppppp_32(x64emu_t *emu, uintptr_t fcn) { XFpppppp_t fn = (XFpppppp_t)fcn; R_EAX = to_ptrv(addDisplay(fn(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), from_ptriv(R_ESP + 24)))); }
 void iFpppbp_pp_32(x64emu_t *emu, uintptr_t fcn) { iFpppbp_pp_t fn = (iFpppbp_pp_t)fcn; struct_p_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_p(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); }
@@ -3169,6 +3234,7 @@ void vFudddddd_32(x64emu_t *emu, uintptr_t fcn) { vFudddddd_t fn = (vFudddddd_t)
 void vFlliiiip_32(x64emu_t *emu, uintptr_t fcn) { vFlliiiip_t fn = (vFlliiiip_t)fcn; fn(from_long(from_ptri(long_t, R_ESP + 4)), from_long(from_ptri(long_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_ptriv(R_ESP + 28)); }
 void vFpipipiu_32(x64emu_t *emu, uintptr_t fcn) { vFpipipiu_t fn = (vFpipipiu_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28)); }
 void vFpddiidd_32(x64emu_t *emu, uintptr_t fcn) { vFpddiidd_t fn = (vFpddiidd_t)fcn; fn(from_ptriv(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)); }
+void vFpdddddd_32(x64emu_t *emu, uintptr_t fcn) { vFpdddddd_t fn = (vFpdddddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24), from_ptri(double, R_ESP + 32), from_ptri(double, R_ESP + 40), from_ptri(double, R_ESP + 48)); }
 void vFXLiiiLi_32(x64emu_t *emu, uintptr_t fcn) { vFXLiiiLi_t fn = (vFXLiiiLi_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)); }
 void vFXLiiipi_32(x64emu_t *emu, uintptr_t fcn) { vFXLiiipi_t fn = (vFXLiiipi_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_ptriv(R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); }
 void vFXLiiuui_32(x64emu_t *emu, uintptr_t fcn) { vFXLiiuui_t fn = (vFXLiiuui_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(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); }
@@ -3201,6 +3267,9 @@ void iFXpiipii_32(x64emu_t *emu, uintptr_t fcn) { iFXpiipii_t fn = (iFXpiipii_t)
 void iFXpLiWwL_32(x64emu_t *emu, uintptr_t fcn) { iFXpLiWwL_t fn = (iFXpLiWwL_t)fcn; R_EAX = fn(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(uint16_t, R_ESP + 20), from_ptri(int16_t, R_ESP + 24), from_ulong(from_ptri(ulong_t, R_ESP + 28))); }
 void iFXpLuuii_32(x64emu_t *emu, uintptr_t fcn) { iFXpLuuii_t fn = (iFXpLuuii_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(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), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); }
 void uFuippppp_32(x64emu_t *emu, uintptr_t fcn) { uFuippppp_t fn = (uFuippppp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, 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)); }
+void uFpippppp_32(x64emu_t *emu, uintptr_t fcn) { uFpippppp_t fn = (uFpippppp_t)fcn; R_EAX = (uint32_t)fn(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)); }
+void uFpuupppp_32(x64emu_t *emu, uintptr_t fcn) { uFpuupppp_t fn = (uFpuupppp_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28)); }
+void uFppppppp_32(x64emu_t *emu, uintptr_t fcn) { uFppppppp_t fn = (uFppppppp_t)fcn; R_EAX = (uint32_t)fn(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), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28)); }
 void lEEipLpLL_32(x64emu_t *emu, uintptr_t fcn) { lEEipLpLL_t fn = (lEEipLpLL_t)fcn; errno = emu->libc_err; R_EAX = to_long(fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16), from_ulong(from_ptri(ulong_t, R_ESP + 20)), from_ulong(from_ptri(ulong_t, R_ESP + 24)))); emu->libc_err = errno; }
 void pFEpiiiiu_32(x64emu_t *emu, uintptr_t fcn) { pFEpiiiiu_t fn = (pFEpiiiiu_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(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24))); }
 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(int32_t, R_ESP + 24))); }
@@ -3266,6 +3335,7 @@ void LFEXLppuuu_32(x64emu_t *emu, uintptr_t fcn) { LFEXLppuuu_t fn = (LFEXLppuuu
 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 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 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)); }
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index 9ec451da..1f0997b7 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -163,6 +163,8 @@ void iFbp__32(x64emu_t *emu, uintptr_t fnc);
 void iFBp__32(x64emu_t *emu, uintptr_t fnc);
 void LEBL__32(x64emu_t *emu, uintptr_t fnc);
 void lFrll__32(x64emu_t *emu, uintptr_t fnc);
+void vFbLdd__32(x64emu_t *emu, uintptr_t fnc);
+void vFbupi__32(x64emu_t *emu, uintptr_t fnc);
 void iEBllll__32(x64emu_t *emu, uintptr_t fnc);
 void vFbuuipWCCp__32(x64emu_t *emu, uintptr_t fnc);
 void vFbWWpWpWpWp__32(x64emu_t *emu, uintptr_t fnc);
@@ -207,6 +209,7 @@ void vEpi_32(x64emu_t *emu, uintptr_t fnc);
 void vFpi_32(x64emu_t *emu, uintptr_t fnc);
 void vFpC_32(x64emu_t *emu, uintptr_t fnc);
 void vFpu_32(x64emu_t *emu, uintptr_t fnc);
+void vFpd_32(x64emu_t *emu, uintptr_t fnc);
 void vFpl_32(x64emu_t *emu, uintptr_t fnc);
 void vEpL_32(x64emu_t *emu, uintptr_t fnc);
 void vFpL_32(x64emu_t *emu, uintptr_t fnc);
@@ -382,6 +385,7 @@ void iEHBp__32(x64emu_t *emu, uintptr_t fnc);
 void iFbp_i_32(x64emu_t *emu, uintptr_t fnc);
 void iFbp_p_32(x64emu_t *emu, uintptr_t fnc);
 void iFXbL__32(x64emu_t *emu, uintptr_t fnc);
+void uFpbp__32(x64emu_t *emu, uintptr_t fnc);
 void fEpBp__32(x64emu_t *emu, uintptr_t fnc);
 void dEpBp__32(x64emu_t *emu, uintptr_t fnc);
 void LFpbp__32(x64emu_t *emu, uintptr_t fnc);
@@ -396,6 +400,7 @@ void iEprLL__32(x64emu_t *emu, uintptr_t fnc);
 void iFbpi_i_32(x64emu_t *emu, uintptr_t fnc);
 void iEBll_p_32(x64emu_t *emu, uintptr_t fnc);
 void iFXbip__32(x64emu_t *emu, uintptr_t fnc);
+void vFpbupi__32(x64emu_t *emu, uintptr_t fnc);
 void iESBliu__32(x64emu_t *emu, uintptr_t fnc);
 void iFbppi_i_32(x64emu_t *emu, uintptr_t fnc);
 void iFXbiip__32(x64emu_t *emu, uintptr_t fnc);
@@ -548,6 +553,7 @@ void iFpup_32(x64emu_t *emu, uintptr_t fnc);
 void iFpUU_32(x64emu_t *emu, uintptr_t fnc);
 void iFpfu_32(x64emu_t *emu, uintptr_t fnc);
 void iFpff_32(x64emu_t *emu, uintptr_t fnc);
+void iFpdd_32(x64emu_t *emu, uintptr_t fnc);
 void iFpli_32(x64emu_t *emu, uintptr_t fnc);
 void iFpll_32(x64emu_t *emu, uintptr_t fnc);
 void iEpLi_32(x64emu_t *emu, uintptr_t fnc);
@@ -646,11 +652,13 @@ void pFEpX_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXi_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXL_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXp_32(x64emu_t *emu, uintptr_t fnc);
+void pFiii_32(x64emu_t *emu, uintptr_t fnc);
 void pEipL_32(x64emu_t *emu, uintptr_t fnc);
 void pFipp_32(x64emu_t *emu, uintptr_t fnc);
 void pFulu_32(x64emu_t *emu, uintptr_t fnc);
 void pFupi_32(x64emu_t *emu, uintptr_t fnc);
 void pFupp_32(x64emu_t *emu, uintptr_t fnc);
+void pFddd_32(x64emu_t *emu, uintptr_t fnc);
 void pFLpi_32(x64emu_t *emu, uintptr_t fnc);
 void pFpcU_32(x64emu_t *emu, uintptr_t fnc);
 void pEpii_32(x64emu_t *emu, uintptr_t fnc);
@@ -663,6 +671,7 @@ void pEpiS_32(x64emu_t *emu, uintptr_t fnc);
 void pEpII_32(x64emu_t *emu, uintptr_t fnc);
 void pFpuu_32(x64emu_t *emu, uintptr_t fnc);
 void pFpup_32(x64emu_t *emu, uintptr_t fnc);
+void pFpdd_32(x64emu_t *emu, uintptr_t fnc);
 void pEpLL_32(x64emu_t *emu, uintptr_t fnc);
 void pFppu_32(x64emu_t *emu, uintptr_t fnc);
 void pEppL_32(x64emu_t *emu, uintptr_t fnc);
@@ -727,6 +736,7 @@ void pFXLbL__32(x64emu_t *emu, uintptr_t fnc);
 void iFXLbpp__32(x64emu_t *emu, uintptr_t fnc);
 void iFXbLC_i_32(x64emu_t *emu, uintptr_t fnc);
 void vFLbL_bL__32(x64emu_t *emu, uintptr_t fnc);
+void vFpbLdd_i_32(x64emu_t *emu, uintptr_t fnc);
 void iFpbl_bl__32(x64emu_t *emu, uintptr_t fnc);
 void iFpbL_bL__32(x64emu_t *emu, uintptr_t fnc);
 void iFbp_bp_p_32(x64emu_t *emu, uintptr_t fnc);
@@ -828,11 +838,15 @@ void vFLiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFpiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFpipi_32(x64emu_t *emu, uintptr_t fnc);
 void vFpipp_32(x64emu_t *emu, uintptr_t fnc);
+void vFpudd_32(x64emu_t *emu, uintptr_t fnc);
 void vFpdii_32(x64emu_t *emu, uintptr_t fnc);
 void vFpddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFplpp_32(x64emu_t *emu, uintptr_t fnc);
+void vFppid_32(x64emu_t *emu, uintptr_t fnc);
 void vEppip_32(x64emu_t *emu, uintptr_t fnc);
 void vFppui_32(x64emu_t *emu, uintptr_t fnc);
+void vFppuu_32(x64emu_t *emu, uintptr_t fnc);
+void vFppdd_32(x64emu_t *emu, uintptr_t fnc);
 void vFpppp_32(x64emu_t *emu, uintptr_t fnc);
 void vFXiiL_32(x64emu_t *emu, uintptr_t fnc);
 void vFXiLu_32(x64emu_t *emu, uintptr_t fnc);
@@ -986,6 +1000,8 @@ void pFifff_32(x64emu_t *emu, uintptr_t fnc);
 void pFillu_32(x64emu_t *emu, uintptr_t fnc);
 void pEippu_32(x64emu_t *emu, uintptr_t fnc);
 void pFullu_32(x64emu_t *emu, uintptr_t fnc);
+void pFdddd_32(x64emu_t *emu, uintptr_t fnc);
+void pFpiii_32(x64emu_t *emu, uintptr_t fnc);
 void pEpiLL_32(x64emu_t *emu, uintptr_t fnc);
 void pFpuii_32(x64emu_t *emu, uintptr_t fnc);
 void pFpupp_32(x64emu_t *emu, uintptr_t fnc);
@@ -1023,6 +1039,8 @@ void LEpBp_ii_32(x64emu_t *emu, uintptr_t fnc);
 void LEpbp_Lp_32(x64emu_t *emu, uintptr_t fnc);
 void iEEpprLL__32(x64emu_t *emu, uintptr_t fnc);
 void iEpurLL_p_32(x64emu_t *emu, uintptr_t fnc);
+void vFppbp_bL__32(x64emu_t *emu, uintptr_t fnc);
+void vFpbLdd_ip_32(x64emu_t *emu, uintptr_t fnc);
 void iFppbL_bL__32(x64emu_t *emu, uintptr_t fnc);
 void iFrpuu_Lui_32(x64emu_t *emu, uintptr_t fnc);
 void iEbp_bL_iS_32(x64emu_t *emu, uintptr_t fnc);
@@ -1136,10 +1154,13 @@ void vFupppp_32(x64emu_t *emu, uintptr_t fnc);
 void vFfffff_32(x64emu_t *emu, uintptr_t fnc);
 void vFddddp_32(x64emu_t *emu, uintptr_t fnc);
 void vFluipp_32(x64emu_t *emu, uintptr_t fnc);
+void vFpiiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFpilpp_32(x64emu_t *emu, uintptr_t fnc);
 void vFpipiu_32(x64emu_t *emu, uintptr_t fnc);
 void vFpuipp_32(x64emu_t *emu, uintptr_t fnc);
+void vFpuddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFpddii_32(x64emu_t *emu, uintptr_t fnc);
+void vFpdddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFppWui_32(x64emu_t *emu, uintptr_t fnc);
 void vFpppii_32(x64emu_t *emu, uintptr_t fnc);
 void vFppppu_32(x64emu_t *emu, uintptr_t fnc);
@@ -1209,7 +1230,10 @@ void iFXpipi_32(x64emu_t *emu, uintptr_t fnc);
 void iFXpppp_32(x64emu_t *emu, uintptr_t fnc);
 void IFXpIII_32(x64emu_t *emu, uintptr_t fnc);
 void uEEippu_32(x64emu_t *emu, uintptr_t fnc);
+void uFEpppp_32(x64emu_t *emu, uintptr_t fnc);
+void uFpuupp_32(x64emu_t *emu, uintptr_t fnc);
 void uEpLLLS_32(x64emu_t *emu, uintptr_t fnc);
+void uFppppp_32(x64emu_t *emu, uintptr_t fnc);
 void UFuiCiu_32(x64emu_t *emu, uintptr_t fnc);
 void lFpuipC_32(x64emu_t *emu, uintptr_t fnc);
 void LFEppLL_32(x64emu_t *emu, uintptr_t fnc);
@@ -1219,15 +1243,18 @@ void LFXLuuu_32(x64emu_t *emu, uintptr_t fnc);
 void LFXLpuu_32(x64emu_t *emu, uintptr_t fnc);
 void LFXpppi_32(x64emu_t *emu, uintptr_t fnc);
 void pFEppip_32(x64emu_t *emu, uintptr_t fnc);
+void pFEppdd_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXipp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXlpp_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXpip_32(x64emu_t *emu, uintptr_t fnc);
 void pFEXppi_32(x64emu_t *emu, uintptr_t fnc);
 void pFuiupp_32(x64emu_t *emu, uintptr_t fnc);
+void pFpiiii_32(x64emu_t *emu, uintptr_t fnc);
 void pFpiiuu_32(x64emu_t *emu, uintptr_t fnc);
 void pFpippp_32(x64emu_t *emu, uintptr_t fnc);
 void pFpuiii_32(x64emu_t *emu, uintptr_t fnc);
 void pFpuuip_32(x64emu_t *emu, uintptr_t fnc);
+void pFpdddd_32(x64emu_t *emu, uintptr_t fnc);
 void pFppuup_32(x64emu_t *emu, uintptr_t fnc);
 void pFppupp_32(x64emu_t *emu, uintptr_t fnc);
 void pFXLipp_32(x64emu_t *emu, uintptr_t fnc);
@@ -1325,7 +1352,9 @@ void vFupiiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFffffff_32(x64emu_t *emu, uintptr_t fnc);
 void vFdddddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFpipipV_32(x64emu_t *emu, uintptr_t fnc);
+void vFpudddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFpdddii_32(x64emu_t *emu, uintptr_t fnc);
+void vFpddddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFpppppp_32(x64emu_t *emu, uintptr_t fnc);
 void vFXiLppi_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLiiii_32(x64emu_t *emu, uintptr_t fnc);
@@ -1387,6 +1416,7 @@ void pEEpLLiN_32(x64emu_t *emu, uintptr_t fnc);
 void pEEppLLp_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);
+void pFdddddd_32(x64emu_t *emu, uintptr_t fnc);
 void pFpiiiiu_32(x64emu_t *emu, uintptr_t fnc);
 void XFpppppp_32(x64emu_t *emu, uintptr_t fnc);
 void iFpppbp_pp_32(x64emu_t *emu, uintptr_t fnc);
@@ -1455,6 +1485,7 @@ void vFudddddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFlliiiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFpipipiu_32(x64emu_t *emu, uintptr_t fnc);
 void vFpddiidd_32(x64emu_t *emu, uintptr_t fnc);
+void vFpdddddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLiiiLi_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLiiipi_32(x64emu_t *emu, uintptr_t fnc);
 void vFXLiiuui_32(x64emu_t *emu, uintptr_t fnc);
@@ -1487,6 +1518,9 @@ void iFXpiipii_32(x64emu_t *emu, uintptr_t fnc);
 void iFXpLiWwL_32(x64emu_t *emu, uintptr_t fnc);
 void iFXpLuuii_32(x64emu_t *emu, uintptr_t fnc);
 void uFuippppp_32(x64emu_t *emu, uintptr_t fnc);
+void uFpippppp_32(x64emu_t *emu, uintptr_t fnc);
+void uFpuupppp_32(x64emu_t *emu, uintptr_t fnc);
+void uFppppppp_32(x64emu_t *emu, uintptr_t fnc);
 void lEEipLpLL_32(x64emu_t *emu, uintptr_t fnc);
 void pFEpiiiiu_32(x64emu_t *emu, uintptr_t fnc);
 void pFEpLiiii_32(x64emu_t *emu, uintptr_t fnc);
@@ -1552,6 +1586,7 @@ void LFEXLppuuu_32(x64emu_t *emu, uintptr_t fnc);
 void LFXLpuuLLu_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 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);
diff --git a/src/wrapped32/wrappedcairo.c b/src/wrapped32/wrappedcairo.c
new file mode 100644
index 00000000..da155f07
--- /dev/null
+++ b/src/wrapped32/wrappedcairo.c
@@ -0,0 +1,120 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box32context.h"
+#include "emu/x64emu_private.h"
+#include "myalign32.h"
+#include "converter32.h"
+
+static const char* cairoName = "libcairo.so.2";
+#define LIBNAME cairo
+
+#include "generated/wrappedcairotypes32.h"
+
+#include "wrappercallback32.h"
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// destroy ...
+#define GO(A)   \
+static uintptr_t my_destroy_fct_##A = 0;        \
+static void my_destroy_##A(void* a)             \
+{                                               \
+    RunFunctionFmt(my_destroy_fct_##A, "p", a); \
+}
+SUPER()
+#undef GO
+static void* find_destroy_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_destroy_fct_##A == (uintptr_t)fct) return my_destroy_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_destroy_fct_##A == 0) {my_destroy_fct_##A = (uintptr_t)fct; return my_destroy_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for cairo destroy callback\n");
+    return NULL;
+}
+static void* reverse_destroy_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(CheckBridged(my_lib->w.bridge, fct))
+        return (void*)CheckBridged(my_lib->w.bridge, fct);
+    #define GO(A) if(my_destroy_##A == fct) return (void*)my_destroy_fct_##A;
+    SUPER()
+    #undef GO
+    return (void*)AddBridge(my_lib->w.bridge, vFp_32, fct, 0, NULL);
+}
+// cairo_write_func ...
+#define GO(A)   \
+static uintptr_t my_cairo_write_func_fct_##A = 0;                       \
+static uint32_t my_cairo_write_func_##A(void* a, void* b, uint32_t c)   \
+{                                                                       \
+    return RunFunctionFmt(my_cairo_write_func_fct_##A, "ppu", a, b, c); \
+}
+SUPER()
+#undef GO
+static void* find_cairo_write_func_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_cairo_write_func_fct_##A == (uintptr_t)fct) return my_cairo_write_func_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_cairo_write_func_fct_##A == 0) {my_cairo_write_func_fct_##A = (uintptr_t)fct; return my_cairo_write_func_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for cairo cairo_write_func callback\n");
+    return NULL;
+}
+#undef SUPER
+
+EXPORT void* my32_cairo_xcb_device_get_connection(x64emu_t* emu, void* a)
+{
+    return add_xcb_connection32(my->cairo_xcb_device_get_connection(a));
+}
+
+EXPORT uint32_t my32_cairo_surface_set_user_data(x64emu_t* emu, void* surf, void* key, void* data, void* d)
+{
+    return my->cairo_surface_set_user_data(surf, key, data, find_destroy_Fct(d));
+}
+
+EXPORT uint32_t my32_cairo_set_user_data(x64emu_t* emu, void* cr, void* key, void* data, void* d)
+{
+    return my->cairo_set_user_data(cr, key, data, find_destroy_Fct(d));
+}
+
+void inplace_FT_FaceRec_shrink(void* a);
+EXPORT void* my32_cairo_ft_scaled_font_lock_face(x64emu_t* emu, void* font)
+{
+    void* ret = my->cairo_ft_scaled_font_lock_face(font);
+    inplace_FT_FaceRec_shrink(ret);
+    return ret;
+}
+
+EXPORT void* my32_cairo_pdf_surface_create_for_stream(x64emu_t* emu, void* f, void* closure, double width, double height)
+{
+    return my->cairo_pdf_surface_create_for_stream(find_cairo_write_func_Fct(f), closure, width, height);
+}
+
+#include "wrappedlib_init32.h"
\ No newline at end of file
diff --git a/src/wrapped32/wrappedcairo_private.h b/src/wrapped32/wrappedcairo_private.h
new file mode 100644
index 00000000..1e2dfdc7
--- /dev/null
+++ b/src/wrapped32/wrappedcairo_private.h
@@ -0,0 +1,399 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh...
+#endif
+
+GO(cairo_append_path, vFpbupi_)
+GO(cairo_arc, vFpddddd)
+GO(cairo_arc_negative, vFpddddd)
+GO(cairo_clip, vFp)
+GO(cairo_clip_extents, vFppppp)
+GO(cairo_clip_preserve, vFp)
+GO(cairo_close_path, vFp)
+//GOM(cairo_copy_clip_rectangle_list, pFEp)
+GO(cairo_copy_page, vFp)
+//GOM(cairo_copy_path, pFEp)
+//GOM(cairo_copy_path_flat, pFEp)
+GO(cairo_create, pFp)
+GO(cairo_curve_to, vFpdddddd)
+GO(cairo_debug_reset_static_data, vFv)
+GO(cairo_destroy, vFp)
+GO(cairo_device_acquire, uFp)
+GO(cairo_device_destroy, vFp)
+GO(cairo_device_finish, vFp)
+GO(cairo_device_flush, vFp)
+GO(cairo_device_get_reference_count, uFp)
+GO(cairo_device_get_type, iFp)
+GO(cairo_device_get_user_data, pFpp)
+GO(cairo_device_observer_elapsed, dFp)
+GO(cairo_device_observer_fill_elapsed, dFp)
+GO(cairo_device_observer_glyphs_elapsed, dFp)
+GO(cairo_device_observer_mask_elapsed, dFp)
+GO(cairo_device_observer_paint_elapsed, dFp)
+//GOM(cairo_device_observer_print, uFEppp)
+GO(cairo_device_observer_stroke_elapsed, dFp)
+GO(cairo_device_reference, pFp)
+GO(cairo_device_release, vFp)
+//GOM(cairo_device_set_user_data, uFEpppp)
+GO(cairo_device_status, uFp)
+GO(cairo_device_to_user, vFppp)
+GO(cairo_device_to_user_distance, vFppp)
+GO(cairo_fill, vFp)
+GO(cairo_fill_extents, vFppppp)
+GO(cairo_fill_preserve, vFp)
+GO(cairo_font_extents, vFpp)
+GO(cairo_font_face_destroy, vFp)
+GO(cairo_font_face_get_reference_count, uFp)
+GO(cairo_font_face_get_type, uFp)
+GO(cairo_font_face_get_user_data, pFpp)
+GO(cairo_font_face_reference, pFp)
+//GOM(cairo_font_face_set_user_data, uFEpppp)
+GO(cairo_font_face_status, uFp)
+GO(cairo_font_options_copy, pFp)
+GO(cairo_font_options_create, pFv)
+GO(cairo_font_options_destroy, vFp)
+GO(cairo_font_options_equal, iFpp)
+GO(cairo_font_options_get_antialias, uFp)
+GO(cairo_font_options_get_hint_metrics, uFp)
+GO(cairo_font_options_get_hint_style, uFp)
+GO(cairo_font_options_get_subpixel_order, uFp)
+GO(cairo_font_options_hash, LFp)
+GO(cairo_font_options_merge, vFpp)
+GO(cairo_font_options_set_antialias, vFpu)
+GO(cairo_font_options_set_hint_metrics, vFpu)
+GO(cairo_font_options_set_hint_style, vFpu)
+GO(cairo_font_options_set_subpixel_order, vFpu)
+GO(cairo_font_options_status, uFp)
+GO(cairo_format_stride_for_width, iFii)
+//GO(cairo_ft_font_face_create_for_ft_face, pFpi)
+GO(cairo_ft_font_face_create_for_pattern, pFp)  // have an FcPattern in arg
+//GO(cairo_ft_font_face_get_synthesize, uFp)
+//GO(cairo_ft_font_face_set_synthesize, vFpu)
+//GO(cairo_ft_font_face_unset_synthesize, vFpu)
+GO(cairo_ft_font_options_substitute, vFpp)  //have an FcPattern in 2nd arg
+GOM(cairo_ft_scaled_font_lock_face, pFEp)
+GO(cairo_ft_scaled_font_unlock_face, vFp)
+GO(cairo_get_antialias, uFp)
+GO(cairo_get_current_point, vFppp)
+GO(cairo_get_dash, vFppp)
+GO(cairo_get_dash_count, iFp)
+GO(cairo_get_fill_rule, uFp)
+GO(cairo_get_font_face, pFp)
+GO(cairo_get_font_matrix, vFpp)
+GO(cairo_get_font_options, vFpp)
+GO(cairo_get_group_target, pFp)
+GO(cairo_get_line_cap, uFp)
+GO(cairo_get_line_join, uFp)
+GO(cairo_get_line_width, dFp)
+GO(cairo_get_matrix, vFpp)
+GO(cairo_get_miter_limit, dFp)
+GO(cairo_get_operator, uFp)
+GO(cairo_get_reference_count, uFp)
+GO(cairo_get_scaled_font, pFp)
+GO(cairo_get_source, pFp)
+GO(cairo_get_target, pFp)
+GO(cairo_get_tolerance, dFp)
+GO(cairo_get_user_data, pFpp)
+//GOM(cairo_glyph_allocate, pFEi)
+GO(cairo_glyph_extents, vFpbLdd_ip)
+GO(cairo_glyph_free, vFbLdd_)
+GO(cairo_glyph_path, vFpbLdd_i)
+GO(cairo_has_current_point, iFp)
+GO(cairo_identity_matrix, vFp)
+GO(cairo_image_surface_create, pFiii)
+GO(cairo_image_surface_create_for_data, pFpiiii)
+GO(cairo_image_surface_create_from_png, pFp)
+//GOM(cairo_image_surface_create_from_png_stream, pFEpp)
+GO(cairo_image_surface_get_data, pFp)
+GO(cairo_image_surface_get_format, iFp)
+GO(cairo_image_surface_get_height, iFp)
+GO(cairo_image_surface_get_stride, iFp)
+GO(cairo_image_surface_get_width, iFp)
+GO(cairo_in_clip, iFpdd)
+GO(cairo_in_fill, iFpdd)
+GO(cairo_in_stroke, iFpdd)
+GO(cairo_line_to, vFpdd)
+GO(cairo_mask, vFpp)
+GO(cairo_mask_surface, vFppdd)
+GO(cairo_matrix_init, vFpdddddd)
+GO(cairo_matrix_init_identity, vFp)
+GO(cairo_matrix_init_rotate, vFpd)
+GO(cairo_matrix_init_scale, vFpdd)
+GO(cairo_matrix_init_translate, vFpdd)
+GO(cairo_matrix_invert, uFp)
+GO(cairo_matrix_multiply, vFppp)
+GO(cairo_matrix_rotate, vFpd)
+GO(cairo_matrix_scale, vFpdd)
+GO(cairo_matrix_transform_distance, vFppp)
+GO(cairo_matrix_transform_point, vFppp)
+GO(cairo_matrix_translate, vFpdd)
+GO(cairo_mesh_pattern_begin_patch, vFp)
+GO(cairo_mesh_pattern_curve_to, vFpdddddd)
+GO(cairo_mesh_pattern_end_patch, vFp)
+GO(cairo_mesh_pattern_get_control_point, uFpuupp)
+GO(cairo_mesh_pattern_get_corner_color_rgba, uFpuupppp)
+GO(cairo_mesh_pattern_get_patch_count, uFpp)
+//GOM(cairo_mesh_pattern_get_path, pFEpu)
+GO(cairo_mesh_pattern_line_to, vFpdd)
+GO(cairo_mesh_pattern_move_to, vFpdd)
+GO(cairo_mesh_pattern_set_control_point, vFpudd)
+GO(cairo_mesh_pattern_set_corner_color_rgb, vFpuddd)
+GO(cairo_mesh_pattern_set_corner_color_rgba, vFpudddd)
+GO(cairo_move_to, vFpdd)
+GO(cairo_new_path, vFp)
+GO(cairo_new_sub_path, vFp)
+GO(cairo_paint, vFp)
+GO(cairo_paint_with_alpha, vFpd)
+GO(cairo_path_destroy, vFbupi_)
+GO(cairo_path_extents, vFppppp)
+GO(cairo_pattern_add_color_stop_rgb, vFpdddd)
+GO(cairo_pattern_add_color_stop_rgba, vFpddddd)
+GO(cairo_pattern_create_for_surface, pFp)
+GO(cairo_pattern_create_linear, pFdddd)
+GO(cairo_pattern_create_mesh, pFv)
+GO(cairo_pattern_create_radial, pFdddddd)
+GO(cairo_pattern_create_raster_source, pFpuii)
+GO(cairo_pattern_create_rgb, pFddd)
+GO(cairo_pattern_create_rgba, pFdddd)
+GO(cairo_pattern_destroy, vFp)
+GO(cairo_pattern_get_color_stop_count, uFpp)
+GO(cairo_pattern_get_color_stop_rgba, uFpippppp)
+GO(cairo_pattern_get_extend, uFp)
+GO(cairo_pattern_get_filter, uFp)
+GO(cairo_pattern_get_linear_points, uFppppp)
+GO(cairo_pattern_get_matrix, vFpp)
+GO(cairo_pattern_get_radial_circles, uFppppppp)
+GO(cairo_pattern_get_reference_count, uFp)
+GO(cairo_pattern_get_rgba, uFppppp)
+GO(cairo_pattern_get_surface, uFpbp_)
+GO(cairo_pattern_get_type, uFp)
+GO(cairo_pattern_get_user_data, pFpp)
+GO(cairo_pattern_reference, pFp)
+GO(cairo_pattern_set_extend, vFpu)
+GO(cairo_pattern_set_filter, vFpu)
+GO(cairo_pattern_set_matrix, vFpp)
+//GOM(cairo_pattern_set_user_data, uFEpppp)
+GO(cairo_pattern_status, uFp)
+//GO(cairo_pdf_get_versions, vFpp)
+GO(cairo_pdf_surface_create, pFpdd)
+GOM(cairo_pdf_surface_create_for_stream, pFEppdd)
+//GO(cairo_pdf_surface_restrict_to_version, vFpu)
+GO(cairo_pdf_surface_set_size, vFpdd)
+//GO(cairo_pdf_version_to_string, pFu)
+GO(cairo_pop_group, pFp)
+GO(cairo_pop_group_to_source, vFp)
+//GO(cairo_ps_get_levels, vFpp)
+//GO(cairo_ps_level_to_string, pFu)
+//GO(cairo_ps_surface_create, pFpdd)
+//GO(cairo_ps_surface_create_for_stream, 
+GO(cairo_ps_surface_dsc_begin_page_setup, vFp)
+//GO(cairo_ps_surface_dsc_begin_setup, 
+GO(cairo_ps_surface_dsc_comment, vFpp)
+//GO(cairo_ps_surface_get_eps, iFp)
+//GO(cairo_ps_surface_restrict_to_level, vFpu)
+//GO(cairo_ps_surface_set_eps, vFpi)
+GO(cairo_ps_surface_set_size, vFpdd)
+GO(cairo_push_group, vFp)
+GO(cairo_push_group_with_content, vFpu)
+//GOM(cairo_raster_source_pattern_get_acquire, vFEpbp_bp_)
+GO(cairo_raster_source_pattern_get_callback_data, pFp)
+//GOM(cairo_raster_source_pattern_get_copy, pFEp)
+//GOM(cairo_raster_source_pattern_get_finish, pFEp)
+//GOM(cairo_raster_source_pattern_get_snapshot, pFEp)
+//GOM(cairo_raster_source_pattern_set_acquire, vFEppp)
+GO(cairo_raster_source_pattern_set_callback_data, vFpp)
+//GOM(cairo_raster_source_pattern_set_copy, vFEpp)
+//GOM(cairo_raster_source_pattern_set_finish, vFEpp)
+//GOM(cairo_raster_source_pattern_set_snapshot, vFEpp)
+GO(cairo_recording_surface_create, pFup)
+GO(cairo_recording_surface_get_extents, iFpp)
+GO(cairo_recording_surface_ink_extents, vFppppp)
+GO(cairo_rectangle, vFpdddd)
+GO(cairo_rectangle_list_destroy, vFbupi_)
+GO(cairo_reference, pFp)
+GO(cairo_region_contains_point, iFpii)
+GO(cairo_region_contains_rectangle, uFpp)
+GO(cairo_region_copy, pFp)
+GO(cairo_region_create, pFv)
+GO(cairo_region_create_rectangle, pFp)
+GO(cairo_region_create_rectangles, pFpi)
+GO(cairo_region_destroy, vFp)
+GO(cairo_region_equal, iFpp)
+GO(cairo_region_get_extents, vFpp)
+GO(cairo_region_get_rectangle, vFpip)
+GO(cairo_region_intersect, uFpp)
+GO(cairo_region_intersect_rectangle, uFpp)
+GO(cairo_region_is_empty, iFp)
+GO(cairo_region_num_rectangles, iFp)
+GO(cairo_region_reference, pFp)
+GO(cairo_region_status, uFp)
+GO(cairo_region_subtract, uFpp)
+GO(cairo_region_subtract_rectangle, uFpp)
+GO(cairo_region_translate, vFpii)
+GO(cairo_region_union, uFpp)
+GO(cairo_region_union_rectangle, uFpp)
+GO(cairo_region_xor, uFpp)
+GO(cairo_region_xor_rectangle, uFpp)
+GO(cairo_rel_curve_to, vFpdddddd)
+GO(cairo_rel_line_to, vFpdd)
+GO(cairo_rel_move_to, vFpdd)
+GO(cairo_reset_clip, vFp)
+GO(cairo_restore, vFp)
+GO(cairo_rotate, vFpd)
+GO(cairo_save, vFp)
+GO(cairo_scale, vFpdd)
+GO(cairo_scaled_font_create, pFpppp)
+GO(cairo_scaled_font_destroy, vFp)
+GO(cairo_scaled_font_extents, vFpp)
+GO(cairo_scaled_font_get_ctm, vFpp)
+GO(cairo_scaled_font_get_font_face, pFp)
+GO(cairo_scaled_font_get_font_matrix, vFpp)
+GO(cairo_scaled_font_get_font_options, vFpp)
+GO(cairo_scaled_font_get_reference_count, uFp)
+GO(cairo_scaled_font_get_scale_matrix, vFpp)
+GO(cairo_scaled_font_get_type, uFp)
+GO(cairo_scaled_font_get_user_data, pFpp)
+GO(cairo_scaled_font_glyph_extents, vFpbLdd_ip)
+GO(cairo_scaled_font_reference, pFp)
+//GOM(cairo_scaled_font_set_user_data, uFEpppp)
+GO(cairo_scaled_font_status, uFp)
+GO(cairo_scaled_font_text_extents, vFppp)
+//GOM(cairo_scaled_font_text_to_glyphs, uFEpddpibp_pbp_pp)
+//GO(cairo_script_create, pFp)
+//GO(cairo_script_create_for_stream, 
+//GO(cairo_script_from_recording_surface, uFpp)
+//GO(cairo_script_get_mode, uFp)
+//GO(cairo_script_set_mode, vFpu)
+//GO(cairo_script_surface_create, pFpudd)
+//GO(cairo_script_surface_create_for_target, pFpp)
+//GO(cairo_script_write_comment, vFppi)
+GO(cairo_select_font_face, vFppuu)
+GO(cairo_set_antialias, vFpu)
+GO(cairo_set_dash, vFppid)
+GO(cairo_set_fill_rule, vFpu)
+GO(cairo_set_font_face, vFpp)
+GO(cairo_set_font_matrix, vFpp)
+GO(cairo_set_font_options, vFpp)
+GO(cairo_set_font_size, vFpd)
+GO(cairo_set_line_cap, vFpu)
+GO(cairo_set_line_join, vFpu)
+GO(cairo_set_line_width, vFpd)
+GO(cairo_set_matrix, vFpp)
+GO(cairo_set_miter_limit, vFpd)
+GO(cairo_set_operator, vFpu)
+GO(cairo_set_scaled_font, vFpp)
+GO(cairo_set_source, vFpp)
+GO(cairo_set_source_rgb, vFpddd)
+GO(cairo_set_source_rgba, vFpdddd)
+GO(cairo_set_source_surface, vFppdd)
+GO(cairo_set_tolerance, vFpd)
+GOM(cairo_set_user_data, uFEpppp)
+GO(cairo_show_glyphs, vFpbLdd_i)
+GO(cairo_show_page, vFp)
+GO(cairo_show_text, vFpp)
+GO(cairo_show_text_glyphs, vFppibLdd_ipiu)
+GO(cairo_status, uFp)
+GO(cairo_status_to_string, pFu)
+GO(cairo_stroke, vFp)
+GO(cairo_stroke_extents, vFppppp)
+GO(cairo_stroke_preserve, vFp)
+GO(cairo_surface_copy_page, vFp)
+GO(cairo_surface_create_for_rectangle, pFpdddd)
+GO(cairo_surface_create_observer, pFpu)
+GO(cairo_surface_create_similar, pFpuii)
+GO(cairo_surface_create_similar_image, pFpiii)
+GO(cairo_surface_destroy, vFp)
+GO(cairo_surface_finish, vFp)
+GO(cairo_surface_flush, vFp)
+GO(cairo_surface_get_content, uFp)
+GO(cairo_surface_get_device, pFp)
+GO(cairo_surface_get_device_offset, vFppp)
+GO(cairo_surface_get_device_scale, vFppp)
+GO(cairo_surface_get_fallback_resolution, vFppp)
+GO(cairo_surface_get_font_options, vFpp)
+GO(cairo_surface_get_mime_data, vFppbp_bL_)
+GO(cairo_surface_get_reference_count, uFp)
+GO(cairo_surface_get_type, uFp)
+GO(cairo_surface_get_user_data, pFpp)
+GO(cairo_surface_has_show_text_glyphs, iFp)
+GO(cairo_surface_map_to_image, pFpp)
+GO(cairo_surface_mark_dirty, vFp)
+GO(cairo_surface_mark_dirty_rectangle, vFpiiii)
+//GOM(cairo_surface_observer_add_fill_callback, uFEppp)
+//GOM(cairo_surface_observer_add_finish_callback, uFEppp)
+//GOM(cairo_surface_observer_add_flush_callback, uFEppp)
+//GOM(cairo_surface_observer_add_glyphs_callback, uFEppp)
+//GOM(cairo_surface_observer_add_mask_callback, uFEppp)
+//GOM(cairo_surface_observer_add_paint_callback, uFEppp)
+//GOM(cairo_surface_observer_add_stroke_callback, uFEppp)
+GO(cairo_surface_observer_elapsed, dFp)
+//GOM(cairo_surface_observer_print, uFEppp)
+GO(cairo_surface_reference, pFp)
+GO(cairo_surface_set_device_offset, vFpdd)
+GO(cairo_surface_set_device_scale, vFpdd)
+GO(cairo_surface_set_fallback_resolution, vFpdd)
+//GOM(cairo_surface_set_mime_data, uFEpppLpp)
+GOM(cairo_surface_set_user_data, uFEpppp)
+GO(cairo_surface_show_page, vFp)
+GO(cairo_surface_status, uFp)
+GO(cairo_surface_supports_mime_type, iFpp)
+GO(cairo_surface_unmap_image, vFpp)
+GO(cairo_surface_write_to_png, uFpp)
+//GOM(cairo_surface_write_to_png_stream, uFEppp)
+//GO(cairo_svg_get_versions, vFpp)
+//GO(cairo_svg_surface_create, pFpdd)
+//GO(cairo_svg_surface_create_for_stream, 
+//GO(cairo_svg_surface_restrict_to_version, vFpu)
+//GO(cairo_svg_version_to_string, pFu)
+GO(cairo_text_cluster_allocate, pFi)
+GO(cairo_text_cluster_free, vFp)
+GO(cairo_text_extents, vFppp)
+GO(cairo_text_path, vFpp)
+GO(cairo_toy_font_face_create, pFpuu)
+GO(cairo_toy_font_face_get_family, pFp)
+GO(cairo_toy_font_face_get_slant, uFp)
+GO(cairo_toy_font_face_get_weight, uFp)
+GO(cairo_transform, vFpp)
+GO(cairo_translate, vFpdd)
+GO(cairo_user_font_face_create, pFv)
+//GOM(cairo_user_font_face_get_init_func, pFEp)
+//GOM(cairo_user_font_face_get_render_glyph_func, pFEp)
+//GOM(cairo_user_font_face_get_text_to_glyphs_func, pFEp)
+//GOM(cairo_user_font_face_get_unicode_to_glyph_func, pFEp)
+//GOM(cairo_user_font_face_set_init_func, vFEpp)
+//GOM(cairo_user_font_face_set_render_glyph_func, vFEpp)
+//GOM(cairo_user_font_face_set_text_to_glyphs_func, vFEpp)
+//GOM(cairo_user_font_face_set_unicode_to_glyph_func, vFEpp)
+GO(cairo_user_to_device, vFppp)
+GO(cairo_user_to_device_distance, vFppp)
+GO(cairo_version, iFv)
+GO(cairo_version_string, pFv)
+//GO(cairo_xcb_device_debug_cap_xrender_version, vFpii)
+//GO(cairo_xcb_device_debug_cap_xshm_version, 
+//GO(cairo_xcb_device_debug_get_precision, iFp)
+//GO(cairo_xcb_device_debug_set_precision, vFpi)
+GOM(cairo_xcb_device_get_connection, pFEp)
+//GO(cairo_xcb_surface_create, pFbupii)
+//GO(cairo_xcb_surface_create_for_bitmap, pFbpuii)
+//GO(cairo_xcb_surface_create_with_xrender_format, pFbpupii)
+//GO(cairo_xcb_surface_set_drawable, vFpuii)
+//GO(cairo_xcb_surface_set_size, vFpii)
+//GO(cairo_xlib_device_debug_cap_xrender_version, vFpii)
+//GO(cairo_xlib_device_debug_get_precision, iFp)
+//GO(cairo_xlib_device_debug_set_precision, vFpi)
+//GO(cairo_xlib_surface_create, pFpppii)
+//GO(cairo_xlib_surface_create_for_bitmap, pFpLpii)
+//GO(cairo_xlib_surface_create_with_xrender_format, pFpLppii)
+//GO(cairo_xlib_surface_get_depth, 
+//GO(cairo_xlib_surface_get_display, pFp)
+//GO(cairo_xlib_surface_get_drawable, LFp)
+//GO(cairo_xlib_surface_get_height, iFp)
+//GO(cairo_xlib_surface_get_screen, pFp)
+//GO(cairo_xlib_surface_get_visual, 
+//GO(cairo_xlib_surface_get_width, 
+//GO(cairo_xlib_surface_get_xrender_format, pFp)
+//GO(cairo_xlib_surface_set_drawable, vFpLii)
+//GO(cairo_xlib_surface_set_size, vFpii)
+//GO(cairo_xml_create, 
+//GO(cairo_xml_create_for_stream, 
+//GO(cairo_xml_for_recording_surface, 
+//GO(cairo_xml_surface_create, 
diff --git a/src/wrapped32/wrappedfontconfig.c b/src/wrapped32/wrappedfontconfig.c
index 36c5b6fe..a9c28010 100644
--- a/src/wrapped32/wrappedfontconfig.c
+++ b/src/wrapped32/wrappedfontconfig.c
@@ -233,22 +233,11 @@ EXPORT uint32_t my32_FcFreeTypeCharIndex(x64emu_t* emu, void* face, uint32_t u)
     return ret;
 }
 
-typedef struct my_FcFontSet_s {
-    int         nfont;
-    int         sfont;
-    void**      fonts;  //FcPattern
-} my_FcFontSet_t;
-typedef struct my_FcFontSet_32_s {
-    int         nfont;
-    int         sfont;
-    ptr_t       fonts;  //FcPattern**
-} my_FcFontSet_32_t;
-
 void* inplace_FcFontSet_shrink(void* set)
 {
     if(!set) return set;
-    my_FcFontSet_t* src = set;
-    my_FcFontSet_32_t* dst = set;
+    FcFontSet_t* src = set;
+    FcFontSet_32_t* dst = set;
 
     for(int i=0; i<src->nfont; ++i) {
         ((ptr_t*)src->fonts)[i] = to_ptrv(src->fonts[i]);
@@ -261,8 +250,8 @@ void* inplace_FcFontSet_shrink(void* set)
 }
 void* inplace_FcFontSet_enlarge(void* set)
 {
-    my_FcFontSet_32_t* src = set;
-    my_FcFontSet_t* dst = set;
+    FcFontSet_32_t* src = set;
+    FcFontSet_t* dst = set;
 
     dst->fonts = from_ptrv(src->fonts);
     dst->sfont = src->sfont;