about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-03-25 20:56:45 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-03-25 20:56:45 +0100
commit235784b46f47411b73d383c4fb462c3ffac323a4 (patch)
treed24269356747e3799f80b59038bebe7c6c1b2c13 /src
parent66af0f810cef61adc8cf4eff2a24132259aae0da (diff)
downloadbox64-235784b46f47411b73d383c4fb462c3ffac323a4.tar.gz
box64-235784b46f47411b73d383c4fb462c3ffac323a4.zip
Added wrapped libfontconfig and libfreetype, plus some elfloader/tls bugfix
Diffstat (limited to 'src')
-rwxr-xr-xsrc/elfs/elfloader.c3
-rwxr-xr-xsrc/include/elfloader.h2
-rwxr-xr-xsrc/library_list.h4
-rw-r--r--src/wrapped/generated/functions_list.txt25
-rw-r--r--src/wrapped/generated/wrapper.c50
-rw-r--r--src/wrapped/generated/wrapper.h25
-rwxr-xr-xsrc/wrapped/wrappedfontconfig.c56
-rwxr-xr-xsrc/wrapped/wrappedfontconfig_private.h199
-rwxr-xr-xsrc/wrapped/wrappedfreetype.c171
-rwxr-xr-xsrc/wrapped/wrappedfreetype_private.h217
-rwxr-xr-xsrc/wrapped/wrappedldlinux.c11
-rwxr-xr-xsrc/wrapped/wrappedldlinux_private.h15
12 files changed, 757 insertions, 21 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c
index abe2b8d3..dd8d58e2 100755
--- a/src/elfs/elfloader.c
+++ b/src/elfs/elfloader.c
@@ -1017,6 +1017,7 @@ void RunElfInit(elfheader_t* h, x64emu_t *emu)
     // and check init array now
     Elf64_Addr *addr = (Elf64_Addr*)(h->initarray + h->delta);
     for (int i=0; i<h->initarray_sz; ++i) {
+if(strstr(h->name, "libcef.so") && i==3) trace_end = 0;
         if(addr[i]) {
             printf_log(LOG_DEBUG, "Calling Init[%d] for %s @%p\n", i, ElfName(h), (void*)addr[i]);
             RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 3, context->argc, context->argv, context->envv);
@@ -1158,7 +1159,7 @@ const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uin
     return ret;
 }
 
-void* GetDTatOffset(box64context_t* context, int index, int offset)
+void* GetDTatOffset(box64context_t* context, unsigned long int index, unsigned long int offset)
 {
     return (void*)((char*)GetTLSPointer(context, context->elfs[index])+offset);
 }
diff --git a/src/include/elfloader.h b/src/include/elfloader.h
index a4d2cb6b..241c25e7 100755
--- a/src/include/elfloader.h
+++ b/src/include/elfloader.h
@@ -45,7 +45,7 @@ const char* FindNearestSymbolName(elfheader_t* h, void* p, uintptr_t* start, uin
 int32_t GetTLSBase(elfheader_t* h);
 uint32_t GetTLSSize(elfheader_t* h);
 void* GetTLSPointer(box64context_t* context, elfheader_t* h);
-void* GetDTatOffset(box64context_t* context, int index, int offset);
+void* GetDTatOffset(box64context_t* context, unsigned long int index, unsigned long int offset);
 #ifdef DYNAREC
 dynablocklist_t* GetDynablocksFromAddress(box64context_t *context, uintptr_t addr);
 dynablocklist_t* GetDynablocksFromElf(elfheader_t* h);
diff --git a/src/library_list.h b/src/library_list.h
index 7fe5e905..09d4db84 100755
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -111,8 +111,8 @@ GO("libpulse.so.0", pulse)
 //GO("libnm.so.0", libnm)
 //GO("libnm-glib.so.4", libnm)
 //GO("libnm-util.so.2", libnm)
-//GO("libfontconfig.so.1", fontconfig)
-//GO("libfreetype.so.6", freetype)
+GO("libfontconfig.so.1", fontconfig)
+GO("libfreetype.so.6", freetype)
 //GO("libbz2.so.1", bz2)
 GO("libSM.so.6", libsm)
 GO("libICE.so.6", libice)
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 7db4e8cd..397bf23f 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -43,6 +43,7 @@
 #() dFp
 #() lFE
 #() lFi
+#() lFl
 #() lFp
 #() LFE
 #() LFv
@@ -123,6 +124,7 @@
 #() uFpi
 #() uFpu
 #() uFpU
+#() uFpL
 #() uFpp
 #() UFEp
 #() UFUp
@@ -139,6 +141,7 @@
 #() dFLL
 #() dFpi
 #() dFpp
+#() lFll
 #() lFpi
 #() lFpp
 #() LFpi
@@ -203,6 +206,7 @@
 #() vFpuI
 #() vFpuu
 #() vFpup
+#() vFpll
 #() vFpLi
 #() vFpLL
 #() vFppi
@@ -247,12 +251,14 @@
 #() iFpfu
 #() iFpff
 #() iFpli
+#() iFpll
 #() iFplp
 #() iFpLi
 #() iFpLL
 #() iFpLp
 #() iFppi
 #() iFppI
+#() iFppC
 #() iFppu
 #() iFppd
 #() iFppL
@@ -288,6 +294,7 @@
 #() dFppp
 #() lFipi
 #() lFipL
+#() lFlll
 #() lFlpi
 #() lFppi
 #() lFSpl
@@ -426,6 +433,7 @@
 #() iFpiip
 #() iFpiup
 #() iFpipi
+#() iFpipC
 #() iFpipp
 #() iFpCCC
 #() iFpWWu
@@ -436,17 +444,21 @@
 #() iFpuup
 #() iFpuLL
 #() iFpuLp
+#() iFpupu
 #() iFpupV
+#() iFplip
 #() iFpLpi
 #() iFpLpL
 #() iFppii
 #() iFppiu
 #() iFppiL
 #() iFppip
+#() iFppCC
 #() iFppuw
 #() iFppui
 #() iFppuu
 #() iFppup
+#() iFppll
 #() iFpplp
 #() iFppLp
 #() iFpppi
@@ -461,6 +473,7 @@
 #() uFpCCC
 #() uFpuip
 #() uFpuuu
+#() uFppiu
 #() uFpppi
 #() UFpipp
 #() dFppiL
@@ -572,6 +585,7 @@
 #() vFpipii
 #() vFpuipp
 #() vFpddii
+#() vFpliil
 #() vFppiii
 #() vFppiip
 #() vFppWui
@@ -586,6 +600,7 @@
 #() iFEpLpV
 #() iFEppip
 #() iFEppiV
+#() iFEpplp
 #() iFEpppp
 #() iFEpppV
 #() iFiiipu
@@ -606,14 +621,21 @@
 #() iFpippi
 #() iFpippp
 #() iFpCCCC
+#() iFpuuip
 #() iFpuuui
+#() iFpuuup
 #() iFpuuLL
 #() iFpuupp
+#() iFplluu
+#() iFpLlpp
 #() iFppiip
 #() iFppiup
+#() iFppiLi
 #() iFppipi
 #() iFppipp
 #() iFppupi
+#() iFppupp
+#() iFppllp
 #() iFppLpi
 #() iFppLpp
 #() iFpppii
@@ -727,6 +749,7 @@
 #() iFEpilpV
 #() iFEpippi
 #() iFEpuppp
+#() iFEppiLi
 #() iFEppppp
 #() iFiiiiii
 #() iFiiiiip
@@ -747,6 +770,7 @@
 #() iFppuIII
 #() iFppuupp
 #() iFppupip
+#() iFppLupp
 #() iFpppiuu
 #() iFpppipi
 #() iFpppipp
@@ -886,6 +910,7 @@
 #() vFppiiipii
 #() vFppppiipi
 #() iFEpippppp
+#() iFEpuuLppp
 #() iFiiiiiiip
 #() iFiiupiupi
 #() iFuiifpppp
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index aea3f778..e6d1499e 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -76,6 +76,7 @@ typedef double (*dFd_t)(double);
 typedef double (*dFp_t)(void*);
 typedef intptr_t (*lFE_t)(x64emu_t*);
 typedef intptr_t (*lFi_t)(int32_t);
+typedef intptr_t (*lFl_t)(intptr_t);
 typedef intptr_t (*lFp_t)(void*);
 typedef uintptr_t (*LFE_t)(x64emu_t*);
 typedef uintptr_t (*LFv_t)(void);
@@ -156,6 +157,7 @@ typedef uint32_t (*uFUp_t)(uint64_t, void*);
 typedef uint32_t (*uFpi_t)(void*, int32_t);
 typedef uint32_t (*uFpu_t)(void*, uint32_t);
 typedef uint32_t (*uFpU_t)(void*, uint64_t);
+typedef uint32_t (*uFpL_t)(void*, uintptr_t);
 typedef uint32_t (*uFpp_t)(void*, void*);
 typedef uint64_t (*UFEp_t)(x64emu_t*, void*);
 typedef uint64_t (*UFUp_t)(uint64_t, void*);
@@ -172,6 +174,7 @@ typedef double (*dFdp_t)(double, void*);
 typedef double (*dFLL_t)(uintptr_t, uintptr_t);
 typedef double (*dFpi_t)(void*, int32_t);
 typedef double (*dFpp_t)(void*, void*);
+typedef intptr_t (*lFll_t)(intptr_t, intptr_t);
 typedef intptr_t (*lFpi_t)(void*, int32_t);
 typedef intptr_t (*lFpp_t)(void*, void*);
 typedef uintptr_t (*LFpi_t)(void*, int32_t);
@@ -236,6 +239,7 @@ typedef void (*vFpui_t)(void*, uint32_t, int32_t);
 typedef void (*vFpuI_t)(void*, uint32_t, int64_t);
 typedef void (*vFpuu_t)(void*, uint32_t, uint32_t);
 typedef void (*vFpup_t)(void*, uint32_t, void*);
+typedef void (*vFpll_t)(void*, intptr_t, intptr_t);
 typedef void (*vFpLi_t)(void*, uintptr_t, int32_t);
 typedef void (*vFpLL_t)(void*, uintptr_t, uintptr_t);
 typedef void (*vFppi_t)(void*, void*, int32_t);
@@ -280,12 +284,14 @@ typedef int32_t (*iFpup_t)(void*, uint32_t, void*);
 typedef int32_t (*iFpfu_t)(void*, float, uint32_t);
 typedef int32_t (*iFpff_t)(void*, float, float);
 typedef int32_t (*iFpli_t)(void*, intptr_t, int32_t);
+typedef int32_t (*iFpll_t)(void*, intptr_t, intptr_t);
 typedef int32_t (*iFplp_t)(void*, intptr_t, void*);
 typedef int32_t (*iFpLi_t)(void*, uintptr_t, int32_t);
 typedef int32_t (*iFpLL_t)(void*, uintptr_t, uintptr_t);
 typedef int32_t (*iFpLp_t)(void*, uintptr_t, void*);
 typedef int32_t (*iFppi_t)(void*, void*, int32_t);
 typedef int32_t (*iFppI_t)(void*, void*, int64_t);
+typedef int32_t (*iFppC_t)(void*, void*, uint8_t);
 typedef int32_t (*iFppu_t)(void*, void*, uint32_t);
 typedef int32_t (*iFppd_t)(void*, void*, double);
 typedef int32_t (*iFppL_t)(void*, void*, uintptr_t);
@@ -321,6 +327,7 @@ typedef double (*dFppi_t)(void*, void*, int32_t);
 typedef double (*dFppp_t)(void*, void*, void*);
 typedef intptr_t (*lFipi_t)(int32_t, void*, int32_t);
 typedef intptr_t (*lFipL_t)(int32_t, void*, uintptr_t);
+typedef intptr_t (*lFlll_t)(intptr_t, intptr_t, intptr_t);
 typedef intptr_t (*lFlpi_t)(intptr_t, void*, int32_t);
 typedef intptr_t (*lFppi_t)(void*, void*, int32_t);
 typedef intptr_t (*lFSpl_t)(void*, void*, intptr_t);
@@ -459,6 +466,7 @@ typedef int32_t (*iFpiiL_t)(void*, int32_t, int32_t, uintptr_t);
 typedef int32_t (*iFpiip_t)(void*, int32_t, int32_t, void*);
 typedef int32_t (*iFpiup_t)(void*, int32_t, uint32_t, void*);
 typedef int32_t (*iFpipi_t)(void*, int32_t, void*, int32_t);
+typedef int32_t (*iFpipC_t)(void*, int32_t, void*, uint8_t);
 typedef int32_t (*iFpipp_t)(void*, int32_t, void*, void*);
 typedef int32_t (*iFpCCC_t)(void*, uint8_t, uint8_t, uint8_t);
 typedef int32_t (*iFpWWu_t)(void*, uint16_t, uint16_t, uint32_t);
@@ -469,17 +477,21 @@ typedef int32_t (*iFpuuu_t)(void*, uint32_t, uint32_t, uint32_t);
 typedef int32_t (*iFpuup_t)(void*, uint32_t, uint32_t, void*);
 typedef int32_t (*iFpuLL_t)(void*, uint32_t, uintptr_t, uintptr_t);
 typedef int32_t (*iFpuLp_t)(void*, uint32_t, uintptr_t, void*);
+typedef int32_t (*iFpupu_t)(void*, uint32_t, void*, uint32_t);
 typedef int32_t (*iFpupV_t)(void*, uint32_t, void*, void*);
+typedef int32_t (*iFplip_t)(void*, intptr_t, int32_t, void*);
 typedef int32_t (*iFpLpi_t)(void*, uintptr_t, void*, int32_t);
 typedef int32_t (*iFpLpL_t)(void*, uintptr_t, void*, uintptr_t);
 typedef int32_t (*iFppii_t)(void*, void*, int32_t, int32_t);
 typedef int32_t (*iFppiu_t)(void*, void*, int32_t, uint32_t);
 typedef int32_t (*iFppiL_t)(void*, void*, int32_t, uintptr_t);
 typedef int32_t (*iFppip_t)(void*, void*, int32_t, void*);
+typedef int32_t (*iFppCC_t)(void*, void*, uint8_t, uint8_t);
 typedef int32_t (*iFppuw_t)(void*, void*, uint32_t, int16_t);
 typedef int32_t (*iFppui_t)(void*, void*, uint32_t, int32_t);
 typedef int32_t (*iFppuu_t)(void*, void*, uint32_t, uint32_t);
 typedef int32_t (*iFppup_t)(void*, void*, uint32_t, void*);
+typedef int32_t (*iFppll_t)(void*, void*, intptr_t, intptr_t);
 typedef int32_t (*iFpplp_t)(void*, void*, intptr_t, void*);
 typedef int32_t (*iFppLp_t)(void*, void*, uintptr_t, void*);
 typedef int32_t (*iFpppi_t)(void*, void*, void*, int32_t);
@@ -494,6 +506,7 @@ typedef uint32_t (*uFpipp_t)(void*, int32_t, void*, void*);
 typedef uint32_t (*uFpCCC_t)(void*, uint8_t, uint8_t, uint8_t);
 typedef uint32_t (*uFpuip_t)(void*, uint32_t, int32_t, void*);
 typedef uint32_t (*uFpuuu_t)(void*, uint32_t, uint32_t, uint32_t);
+typedef uint32_t (*uFppiu_t)(void*, void*, int32_t, uint32_t);
 typedef uint32_t (*uFpppi_t)(void*, void*, void*, int32_t);
 typedef uint64_t (*UFpipp_t)(void*, int32_t, void*, void*);
 typedef double (*dFppiL_t)(void*, void*, int32_t, uintptr_t);
@@ -605,6 +618,7 @@ typedef void (*vFpiiii_t)(void*, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFpipii_t)(void*, int32_t, void*, int32_t, int32_t);
 typedef void (*vFpuipp_t)(void*, uint32_t, int32_t, void*, void*);
 typedef void (*vFpddii_t)(void*, double, double, int32_t, int32_t);
+typedef void (*vFpliil_t)(void*, intptr_t, int32_t, int32_t, intptr_t);
 typedef void (*vFppiii_t)(void*, void*, int32_t, int32_t, int32_t);
 typedef void (*vFppiip_t)(void*, void*, int32_t, int32_t, void*);
 typedef void (*vFppWui_t)(void*, void*, uint16_t, uint32_t, int32_t);
@@ -619,6 +633,7 @@ typedef int32_t (*iFEpLpp_t)(x64emu_t*, void*, uintptr_t, void*, void*);
 typedef int32_t (*iFEpLpV_t)(x64emu_t*, void*, uintptr_t, void*, void*);
 typedef int32_t (*iFEppip_t)(x64emu_t*, void*, void*, int32_t, void*);
 typedef int32_t (*iFEppiV_t)(x64emu_t*, void*, void*, int32_t, void*);
+typedef int32_t (*iFEpplp_t)(x64emu_t*, void*, void*, intptr_t, void*);
 typedef int32_t (*iFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
 typedef int32_t (*iFEpppV_t)(x64emu_t*, void*, void*, void*, void*);
 typedef int32_t (*iFiiipu_t)(int32_t, int32_t, int32_t, void*, uint32_t);
@@ -639,14 +654,21 @@ typedef int32_t (*iFpipii_t)(void*, int32_t, void*, int32_t, int32_t);
 typedef int32_t (*iFpippi_t)(void*, int32_t, void*, void*, int32_t);
 typedef int32_t (*iFpippp_t)(void*, int32_t, void*, void*, void*);
 typedef int32_t (*iFpCCCC_t)(void*, uint8_t, uint8_t, uint8_t, uint8_t);
+typedef int32_t (*iFpuuip_t)(void*, uint32_t, uint32_t, int32_t, void*);
 typedef int32_t (*iFpuuui_t)(void*, uint32_t, uint32_t, uint32_t, int32_t);
+typedef int32_t (*iFpuuup_t)(void*, uint32_t, uint32_t, uint32_t, void*);
 typedef int32_t (*iFpuuLL_t)(void*, uint32_t, uint32_t, uintptr_t, uintptr_t);
 typedef int32_t (*iFpuupp_t)(void*, uint32_t, uint32_t, void*, void*);
+typedef int32_t (*iFplluu_t)(void*, intptr_t, intptr_t, uint32_t, uint32_t);
+typedef int32_t (*iFpLlpp_t)(void*, uintptr_t, intptr_t, void*, void*);
 typedef int32_t (*iFppiip_t)(void*, void*, int32_t, int32_t, void*);
 typedef int32_t (*iFppiup_t)(void*, void*, int32_t, uint32_t, void*);
+typedef int32_t (*iFppiLi_t)(void*, void*, int32_t, uintptr_t, int32_t);
 typedef int32_t (*iFppipi_t)(void*, void*, int32_t, void*, int32_t);
 typedef int32_t (*iFppipp_t)(void*, void*, int32_t, void*, void*);
 typedef int32_t (*iFppupi_t)(void*, void*, uint32_t, void*, int32_t);
+typedef int32_t (*iFppupp_t)(void*, void*, uint32_t, void*, void*);
+typedef int32_t (*iFppllp_t)(void*, void*, intptr_t, intptr_t, void*);
 typedef int32_t (*iFppLpi_t)(void*, void*, uintptr_t, void*, int32_t);
 typedef int32_t (*iFppLpp_t)(void*, void*, uintptr_t, void*, void*);
 typedef int32_t (*iFpppii_t)(void*, void*, void*, int32_t, int32_t);
@@ -760,6 +782,7 @@ typedef int32_t (*iFEiippi_t)(x64emu_t*, int32_t, int32_t, void*, void*, int32_t
 typedef int32_t (*iFEpilpV_t)(x64emu_t*, void*, int32_t, intptr_t, void*, void*);
 typedef int32_t (*iFEpippi_t)(x64emu_t*, void*, int32_t, void*, void*, int32_t);
 typedef int32_t (*iFEpuppp_t)(x64emu_t*, void*, uint32_t, void*, void*, void*);
+typedef int32_t (*iFEppiLi_t)(x64emu_t*, void*, void*, int32_t, uintptr_t, int32_t);
 typedef int32_t (*iFEppppp_t)(x64emu_t*, void*, void*, void*, void*, void*);
 typedef int32_t (*iFiiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef int32_t (*iFiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, void*);
@@ -780,6 +803,7 @@ typedef int32_t (*iFppuiiL_t)(void*, void*, uint32_t, int32_t, int32_t, uintptr_
 typedef int32_t (*iFppuIII_t)(void*, void*, uint32_t, int64_t, int64_t, int64_t);
 typedef int32_t (*iFppuupp_t)(void*, void*, uint32_t, uint32_t, void*, void*);
 typedef int32_t (*iFppupip_t)(void*, void*, uint32_t, void*, int32_t, void*);
+typedef int32_t (*iFppLupp_t)(void*, void*, uintptr_t, uint32_t, void*, void*);
 typedef int32_t (*iFpppiuu_t)(void*, void*, void*, int32_t, uint32_t, uint32_t);
 typedef int32_t (*iFpppipi_t)(void*, void*, void*, int32_t, void*, int32_t);
 typedef int32_t (*iFpppipp_t)(void*, void*, void*, int32_t, void*, void*);
@@ -919,6 +943,7 @@ typedef void (*vFpippiipi_t)(void*, int32_t, void*, void*, int32_t, int32_t, voi
 typedef void (*vFppiiipii_t)(void*, void*, int32_t, int32_t, int32_t, void*, int32_t, int32_t);
 typedef void (*vFppppiipi_t)(void*, void*, void*, void*, int32_t, int32_t, void*, int32_t);
 typedef int32_t (*iFEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, void*, void*, void*);
+typedef int32_t (*iFEpuuLppp_t)(x64emu_t*, void*, uint32_t, uint32_t, uintptr_t, void*, void*, void*);
 typedef int32_t (*iFiiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
 typedef int32_t (*iFiiupiupi_t)(int32_t, int32_t, uint32_t, void*, int32_t, uint32_t, void*, int32_t);
 typedef int32_t (*iFuiifpppp_t)(uint32_t, int32_t, int32_t, float, void*, void*, void*, void*);
@@ -1107,6 +1132,7 @@ void dFd(x64emu_t *emu, uintptr_t fcn) { dFd_t fn = (dFd_t)fcn; emu->xmm[0].d[0]
 void dFp(x64emu_t *emu, uintptr_t fcn) { dFp_t fn = (dFp_t)fcn; emu->xmm[0].d[0]=fn((void*)R_RDI); }
 void lFE(x64emu_t *emu, uintptr_t fcn) { lFE_t fn = (lFE_t)fcn; R_RAX=(intptr_t)fn(emu); }
 void lFi(x64emu_t *emu, uintptr_t fcn) { lFi_t fn = (lFi_t)fcn; R_RAX=(intptr_t)fn((int32_t)R_RDI); }
+void lFl(x64emu_t *emu, uintptr_t fcn) { lFl_t fn = (lFl_t)fcn; R_RAX=(intptr_t)fn((intptr_t)R_RDI); }
 void lFp(x64emu_t *emu, uintptr_t fcn) { lFp_t fn = (lFp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI); }
 void LFE(x64emu_t *emu, uintptr_t fcn) { LFE_t fn = (LFE_t)fcn; R_RAX=(uintptr_t)fn(emu); }
 void LFv(x64emu_t *emu, uintptr_t fcn) { LFv_t fn = (LFv_t)fcn; R_RAX=(uintptr_t)fn(); }
@@ -1187,6 +1213,7 @@ void uFUp(x64emu_t *emu, uintptr_t fcn) { uFUp_t fn = (uFUp_t)fcn; R_RAX=(uint32
 void uFpi(x64emu_t *emu, uintptr_t fcn) { uFpi_t fn = (uFpi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI); }
 void uFpu(x64emu_t *emu, uintptr_t fcn) { uFpu_t fn = (uFpu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint32_t)R_RSI); }
 void uFpU(x64emu_t *emu, uintptr_t fcn) { uFpU_t fn = (uFpU_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint64_t)R_RSI); }
+void uFpL(x64emu_t *emu, uintptr_t fcn) { uFpL_t fn = (uFpL_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uintptr_t)R_RSI); }
 void uFpp(x64emu_t *emu, uintptr_t fcn) { uFpp_t fn = (uFpp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI); }
 void UFEp(x64emu_t *emu, uintptr_t fcn) { UFEp_t fn = (UFEp_t)fcn; R_RAX=fn(emu, (void*)R_RDI); }
 void UFUp(x64emu_t *emu, uintptr_t fcn) { UFUp_t fn = (UFUp_t)fcn; R_RAX=fn((uint64_t)R_RDI, (void*)R_RSI); }
@@ -1203,6 +1230,7 @@ void dFdp(x64emu_t *emu, uintptr_t fcn) { dFdp_t fn = (dFdp_t)fcn; emu->xmm[0].d
 void dFLL(x64emu_t *emu, uintptr_t fcn) { dFLL_t fn = (dFLL_t)fcn; emu->xmm[0].d[0]=fn((uintptr_t)R_RDI, (uintptr_t)R_RSI); }
 void dFpi(x64emu_t *emu, uintptr_t fcn) { dFpi_t fn = (dFpi_t)fcn; emu->xmm[0].d[0]=fn((void*)R_RDI, (int32_t)R_RSI); }
 void dFpp(x64emu_t *emu, uintptr_t fcn) { dFpp_t fn = (dFpp_t)fcn; emu->xmm[0].d[0]=fn((void*)R_RDI, (void*)R_RSI); }
+void lFll(x64emu_t *emu, uintptr_t fcn) { lFll_t fn = (lFll_t)fcn; R_RAX=(intptr_t)fn((intptr_t)R_RDI, (intptr_t)R_RSI); }
 void lFpi(x64emu_t *emu, uintptr_t fcn) { lFpi_t fn = (lFpi_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (int32_t)R_RSI); }
 void lFpp(x64emu_t *emu, uintptr_t fcn) { lFpp_t fn = (lFpp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI); }
 void LFpi(x64emu_t *emu, uintptr_t fcn) { LFpi_t fn = (LFpi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI); }
@@ -1267,6 +1295,7 @@ void vFpui(x64emu_t *emu, uintptr_t fcn) { vFpui_t fn = (vFpui_t)fcn; fn((void*)
 void vFpuI(x64emu_t *emu, uintptr_t fcn) { vFpuI_t fn = (vFpuI_t)fcn; fn((void*)R_RDI, (uint32_t)R_RSI, (int64_t)R_RDX); }
 void vFpuu(x64emu_t *emu, uintptr_t fcn) { vFpuu_t fn = (vFpuu_t)fcn; fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
 void vFpup(x64emu_t *emu, uintptr_t fcn) { vFpup_t fn = (vFpup_t)fcn; fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+void vFpll(x64emu_t *emu, uintptr_t fcn) { vFpll_t fn = (vFpll_t)fcn; fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX); }
 void vFpLi(x64emu_t *emu, uintptr_t fcn) { vFpLi_t fn = (vFpLi_t)fcn; fn((void*)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX); }
 void vFpLL(x64emu_t *emu, uintptr_t fcn) { vFpLL_t fn = (vFpLL_t)fcn; fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX); }
 void vFppi(x64emu_t *emu, uintptr_t fcn) { vFppi_t fn = (vFppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
@@ -1311,12 +1340,14 @@ void iFpup(x64emu_t *emu, uintptr_t fcn) { iFpup_t fn = (iFpup_t)fcn; R_RAX=fn((
 void iFpfu(x64emu_t *emu, uintptr_t fcn) { iFpfu_t fn = (iFpfu_t)fcn; R_RAX=fn((void*)R_RDI, emu->xmm[0].f[0], (uint32_t)R_RSI); }
 void iFpff(x64emu_t *emu, uintptr_t fcn) { iFpff_t fn = (iFpff_t)fcn; R_RAX=fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
 void iFpli(x64emu_t *emu, uintptr_t fcn) { iFpli_t fn = (iFpli_t)fcn; R_RAX=fn((void*)R_RDI, (intptr_t)R_RSI, (int32_t)R_RDX); }
+void iFpll(x64emu_t *emu, uintptr_t fcn) { iFpll_t fn = (iFpll_t)fcn; R_RAX=fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX); }
 void iFplp(x64emu_t *emu, uintptr_t fcn) { iFplp_t fn = (iFplp_t)fcn; R_RAX=fn((void*)R_RDI, (intptr_t)R_RSI, (void*)R_RDX); }
 void iFpLi(x64emu_t *emu, uintptr_t fcn) { iFpLi_t fn = (iFpLi_t)fcn; R_RAX=fn((void*)R_RDI, (uintptr_t)R_RSI, (int32_t)R_RDX); }
 void iFpLL(x64emu_t *emu, uintptr_t fcn) { iFpLL_t fn = (iFpLL_t)fcn; R_RAX=fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX); }
 void iFpLp(x64emu_t *emu, uintptr_t fcn) { iFpLp_t fn = (iFpLp_t)fcn; R_RAX=fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); }
 void iFppi(x64emu_t *emu, uintptr_t fcn) { iFppi_t fn = (iFppi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void iFppI(x64emu_t *emu, uintptr_t fcn) { iFppI_t fn = (iFppI_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX); }
+void iFppC(x64emu_t *emu, uintptr_t fcn) { iFppC_t fn = (iFppC_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint8_t)R_RDX); }
 void iFppu(x64emu_t *emu, uintptr_t fcn) { iFppu_t fn = (iFppu_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
 void iFppd(x64emu_t *emu, uintptr_t fcn) { iFppd_t fn = (iFppd_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0]); }
 void iFppL(x64emu_t *emu, uintptr_t fcn) { iFppL_t fn = (iFppL_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
@@ -1352,6 +1383,7 @@ void dFppi(x64emu_t *emu, uintptr_t fcn) { dFppi_t fn = (dFppi_t)fcn; emu->xmm[0
 void dFppp(x64emu_t *emu, uintptr_t fcn) { dFppp_t fn = (dFppp_t)fcn; emu->xmm[0].d[0]=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void lFipi(x64emu_t *emu, uintptr_t fcn) { lFipi_t fn = (lFipi_t)fcn; R_RAX=(intptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void lFipL(x64emu_t *emu, uintptr_t fcn) { lFipL_t fn = (lFipL_t)fcn; R_RAX=(intptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
+void lFlll(x64emu_t *emu, uintptr_t fcn) { lFlll_t fn = (lFlll_t)fcn; R_RAX=(intptr_t)fn((intptr_t)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX); }
 void lFlpi(x64emu_t *emu, uintptr_t fcn) { lFlpi_t fn = (lFlpi_t)fcn; R_RAX=(intptr_t)fn((intptr_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void lFppi(x64emu_t *emu, uintptr_t fcn) { lFppi_t fn = (lFppi_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void lFSpl(x64emu_t *emu, uintptr_t fcn) { lFSpl_t fn = (lFSpl_t)fcn; R_RAX=(intptr_t)fn(io_convert((void*)R_RDI), (void*)R_RSI, (intptr_t)R_RDX); }
@@ -1490,6 +1522,7 @@ void iFpiiL(x64emu_t *emu, uintptr_t fcn) { iFpiiL_t fn = (iFpiiL_t)fcn; R_RAX=f
 void iFpiip(x64emu_t *emu, uintptr_t fcn) { iFpiip_t fn = (iFpiip_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void iFpiup(x64emu_t *emu, uintptr_t fcn) { iFpiup_t fn = (iFpiup_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
 void iFpipi(x64emu_t *emu, uintptr_t fcn) { iFpipi_t fn = (iFpipi_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
+void iFpipC(x64emu_t *emu, uintptr_t fcn) { iFpipC_t fn = (iFpipC_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uint8_t)R_RCX); }
 void iFpipp(x64emu_t *emu, uintptr_t fcn) { iFpipp_t fn = (iFpipp_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFpCCC(x64emu_t *emu, uintptr_t fcn) { iFpCCC_t fn = (iFpCCC_t)fcn; R_RAX=fn((void*)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX); }
 void iFpWWu(x64emu_t *emu, uintptr_t fcn) { iFpWWu_t fn = (iFpWWu_t)fcn; R_RAX=fn((void*)R_RDI, (uint16_t)R_RSI, (uint16_t)R_RDX, (uint32_t)R_RCX); }
@@ -1500,17 +1533,21 @@ void iFpuuu(x64emu_t *emu, uintptr_t fcn) { iFpuuu_t fn = (iFpuuu_t)fcn; R_RAX=f
 void iFpuup(x64emu_t *emu, uintptr_t fcn) { iFpuup_t fn = (iFpuup_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
 void iFpuLL(x64emu_t *emu, uintptr_t fcn) { iFpuLL_t fn = (iFpuLL_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX); }
 void iFpuLp(x64emu_t *emu, uintptr_t fcn) { iFpuLp_t fn = (iFpuLp_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); }
+void iFpupu(x64emu_t *emu, uintptr_t fcn) { iFpupu_t fn = (iFpupu_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
 void iFpupV(x64emu_t *emu, uintptr_t fcn) { iFpupV_t fn = (iFpupV_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
+void iFplip(x64emu_t *emu, uintptr_t fcn) { iFplip_t fn = (iFplip_t)fcn; R_RAX=fn((void*)R_RDI, (intptr_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void iFpLpi(x64emu_t *emu, uintptr_t fcn) { iFpLpi_t fn = (iFpLpi_t)fcn; R_RAX=fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void iFpLpL(x64emu_t *emu, uintptr_t fcn) { iFpLpL_t fn = (iFpLpL_t)fcn; R_RAX=fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
 void iFppii(x64emu_t *emu, uintptr_t fcn) { iFppii_t fn = (iFppii_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFppiu(x64emu_t *emu, uintptr_t fcn) { iFppiu_t fn = (iFppiu_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
 void iFppiL(x64emu_t *emu, uintptr_t fcn) { iFppiL_t fn = (iFppiL_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uintptr_t)R_RCX); }
 void iFppip(x64emu_t *emu, uintptr_t fcn) { iFppip_t fn = (iFppip_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void iFppCC(x64emu_t *emu, uintptr_t fcn) { iFppCC_t fn = (iFppCC_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX); }
 void iFppuw(x64emu_t *emu, uintptr_t fcn) { iFppuw_t fn = (iFppuw_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int16_t)R_RCX); }
 void iFppui(x64emu_t *emu, uintptr_t fcn) { iFppui_t fn = (iFppui_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
 void iFppuu(x64emu_t *emu, uintptr_t fcn) { iFppuu_t fn = (iFppuu_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
 void iFppup(x64emu_t *emu, uintptr_t fcn) { iFppup_t fn = (iFppup_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void iFppll(x64emu_t *emu, uintptr_t fcn) { iFppll_t fn = (iFppll_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX); }
 void iFpplp(x64emu_t *emu, uintptr_t fcn) { iFpplp_t fn = (iFpplp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (void*)R_RCX); }
 void iFppLp(x64emu_t *emu, uintptr_t fcn) { iFppLp_t fn = (iFppLp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); }
 void iFpppi(x64emu_t *emu, uintptr_t fcn) { iFpppi_t fn = (iFpppi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
@@ -1525,6 +1562,7 @@ void uFpipp(x64emu_t *emu, uintptr_t fcn) { uFpipp_t fn = (uFpipp_t)fcn; R_RAX=(
 void uFpCCC(x64emu_t *emu, uintptr_t fcn) { uFpCCC_t fn = (uFpCCC_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX); }
 void uFpuip(x64emu_t *emu, uintptr_t fcn) { uFpuip_t fn = (uFpuip_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void uFpuuu(x64emu_t *emu, uintptr_t fcn) { uFpuuu_t fn = (uFpuuu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
+void uFppiu(x64emu_t *emu, uintptr_t fcn) { uFppiu_t fn = (uFppiu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
 void uFpppi(x64emu_t *emu, uintptr_t fcn) { uFpppi_t fn = (uFpppi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
 void UFpipp(x64emu_t *emu, uintptr_t fcn) { UFpipp_t fn = (UFpipp_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void dFppiL(x64emu_t *emu, uintptr_t fcn) { dFppiL_t fn = (dFppiL_t)fcn; emu->xmm[0].d[0]=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uintptr_t)R_RCX); }
@@ -1636,6 +1674,7 @@ void vFpiiii(x64emu_t *emu, uintptr_t fcn) { vFpiiii_t fn = (vFpiiii_t)fcn; fn((
 void vFpipii(x64emu_t *emu, uintptr_t fcn) { vFpipii_t fn = (vFpipii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void vFpuipp(x64emu_t *emu, uintptr_t fcn) { vFpuipp_t fn = (vFpuipp_t)fcn; fn((void*)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void vFpddii(x64emu_t *emu, uintptr_t fcn) { vFpddii_t fn = (vFpddii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI, (int32_t)R_RDX); }
+void vFpliil(x64emu_t *emu, uintptr_t fcn) { vFpliil_t fn = (vFpliil_t)fcn; fn((void*)R_RDI, (intptr_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (intptr_t)R_R8); }
 void vFppiii(x64emu_t *emu, uintptr_t fcn) { vFppiii_t fn = (vFppiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
 void vFppiip(x64emu_t *emu, uintptr_t fcn) { vFppiip_t fn = (vFppiip_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
 void vFppWui(x64emu_t *emu, uintptr_t fcn) { vFppWui_t fn = (vFppWui_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint16_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8); }
@@ -1650,6 +1689,7 @@ void iFEpLpp(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_RA
 void iFEpLpV(x64emu_t *emu, uintptr_t fcn) { iFEpLpV_t fn = (iFEpLpV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
 void iFEppip(x64emu_t *emu, uintptr_t fcn) { iFEppip_t fn = (iFEppip_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void iFEppiV(x64emu_t *emu, uintptr_t fcn) { iFEppiV_t fn = (iFEppiV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)(R_RSP + 8)); }
+void iFEpplp(x64emu_t *emu, uintptr_t fcn) { iFEpplp_t fn = (iFEpplp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (void*)R_RCX); }
 void iFEpppp(x64emu_t *emu, uintptr_t fcn) { iFEpppp_t fn = (iFEpppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFEpppV(x64emu_t *emu, uintptr_t fcn) { iFEpppV_t fn = (iFEpppV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
 void iFiiipu(x64emu_t *emu, uintptr_t fcn) { iFiiipu_t fn = (iFiiipu_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8); }
@@ -1670,14 +1710,21 @@ void iFpipii(x64emu_t *emu, uintptr_t fcn) { iFpipii_t fn = (iFpipii_t)fcn; R_RA
 void iFpippi(x64emu_t *emu, uintptr_t fcn) { iFpippi_t fn = (iFpippi_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFpippp(x64emu_t *emu, uintptr_t fcn) { iFpippp_t fn = (iFpippp_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFpCCCC(x64emu_t *emu, uintptr_t fcn) { iFpCCCC_t fn = (iFpCCCC_t)fcn; R_RAX=fn((void*)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX, (uint8_t)R_R8); }
+void iFpuuip(x64emu_t *emu, uintptr_t fcn) { iFpuuip_t fn = (iFpuuip_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
 void iFpuuui(x64emu_t *emu, uintptr_t fcn) { iFpuuui_t fn = (iFpuuui_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8); }
+void iFpuuup(x64emu_t *emu, uintptr_t fcn) { iFpuuup_t fn = (iFpuuup_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
 void iFpuuLL(x64emu_t *emu, uintptr_t fcn) { iFpuuLL_t fn = (iFpuuLL_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8); }
 void iFpuupp(x64emu_t *emu, uintptr_t fcn) { iFpuupp_t fn = (iFpuupp_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void iFplluu(x64emu_t *emu, uintptr_t fcn) { iFplluu_t fn = (iFplluu_t)fcn; R_RAX=fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void iFpLlpp(x64emu_t *emu, uintptr_t fcn) { iFpLlpp_t fn = (iFpLlpp_t)fcn; R_RAX=fn((void*)R_RDI, (uintptr_t)R_RSI, (intptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFppiip(x64emu_t *emu, uintptr_t fcn) { iFppiip_t fn = (iFppiip_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
 void iFppiup(x64emu_t *emu, uintptr_t fcn) { iFppiup_t fn = (iFppiup_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void iFppiLi(x64emu_t *emu, uintptr_t fcn) { iFppiLi_t fn = (iFppiLi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uintptr_t)R_RCX, (int32_t)R_R8); }
 void iFppipi(x64emu_t *emu, uintptr_t fcn) { iFppipi_t fn = (iFppipi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFppipp(x64emu_t *emu, uintptr_t fcn) { iFppipp_t fn = (iFppipp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFppupi(x64emu_t *emu, uintptr_t fcn) { iFppupi_t fn = (iFppupi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void iFppupp(x64emu_t *emu, uintptr_t fcn) { iFppupp_t fn = (iFppupp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void iFppllp(x64emu_t *emu, uintptr_t fcn) { iFppllp_t fn = (iFppllp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (void*)R_R8); }
 void iFppLpi(x64emu_t *emu, uintptr_t fcn) { iFppLpi_t fn = (iFppLpi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFppLpp(x64emu_t *emu, uintptr_t fcn) { iFppLpp_t fn = (iFppLpp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFpppii(x64emu_t *emu, uintptr_t fcn) { iFpppii_t fn = (iFpppii_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
@@ -1791,6 +1838,7 @@ void iFEiippi(x64emu_t *emu, uintptr_t fcn) { iFEiippi_t fn = (iFEiippi_t)fcn; R
 void iFEpilpV(x64emu_t *emu, uintptr_t fcn) { iFEpilpV_t fn = (iFEpilpV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (intptr_t)R_RDX, (void*)R_RCX, (void*)(R_RSP + 8)); }
 void iFEpippi(x64emu_t *emu, uintptr_t fcn) { iFEpippi_t fn = (iFEpippi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
 void iFEpuppp(x64emu_t *emu, uintptr_t fcn) { iFEpuppp_t fn = (iFEpuppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void iFEppiLi(x64emu_t *emu, uintptr_t fcn) { iFEppiLi_t fn = (iFEppiLi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uintptr_t)R_RCX, (int32_t)R_R8); }
 void iFEppppp(x64emu_t *emu, uintptr_t fcn) { iFEppppp_t fn = (iFEppppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFiiiiii(x64emu_t *emu, uintptr_t fcn) { iFiiiiii_t fn = (iFiiiiii_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
 void iFiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiip_t fn = (iFiiiiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
@@ -1811,6 +1859,7 @@ void iFppuiiL(x64emu_t *emu, uintptr_t fcn) { iFppuiiL_t fn = (iFppuiiL_t)fcn; R
 void iFppuIII(x64emu_t *emu, uintptr_t fcn) { iFppuIII_t fn = (iFppuIII_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); }
 void iFppuupp(x64emu_t *emu, uintptr_t fcn) { iFppuupp_t fn = (iFppuupp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void iFppupip(x64emu_t *emu, uintptr_t fcn) { iFppupip_t fn = (iFppupip_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void iFppLupp(x64emu_t *emu, uintptr_t fcn) { iFppLupp_t fn = (iFppLupp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
 void iFpppiuu(x64emu_t *emu, uintptr_t fcn) { iFpppiuu_t fn = (iFpppiuu_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
 void iFpppipi(x64emu_t *emu, uintptr_t fcn) { iFpppipi_t fn = (iFpppipi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9); }
 void iFpppipp(x64emu_t *emu, uintptr_t fcn) { iFpppipp_t fn = (iFpppipp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
@@ -1950,6 +1999,7 @@ void vFpippiipi(x64emu_t *emu, uintptr_t fcn) { vFpippiipi_t fn = (vFpippiipi_t)
 void vFppiiipii(x64emu_t *emu, uintptr_t fcn) { vFppiiipii_t fn = (vFppiiipii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void vFppppiipi(x64emu_t *emu, uintptr_t fcn) { vFppppiipi_t fn = (vFppppiipi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void iFEpippppp(x64emu_t *emu, uintptr_t fcn) { iFEpippppp_t fn = (iFEpippppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void iFEpuuLppp(x64emu_t *emu, uintptr_t fcn) { iFEpuuLppp_t fn = (iFEpuuLppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void iFiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiip_t fn = (iFiiiiiiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
 void iFiiupiupi(x64emu_t *emu, uintptr_t fcn) { iFiiupiupi_t fn = (iFiiupiupi_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
 void iFuiifpppp(x64emu_t *emu, uintptr_t fcn) { iFuiifpppp_t fn = (iFuiifpppp_t)fcn; R_RAX=fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[0].f[0], (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 6b9d4035..36ed39f1 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -73,6 +73,7 @@ void dFd(x64emu_t *emu, uintptr_t fnc);
 void dFp(x64emu_t *emu, uintptr_t fnc);
 void lFE(x64emu_t *emu, uintptr_t fnc);
 void lFi(x64emu_t *emu, uintptr_t fnc);
+void lFl(x64emu_t *emu, uintptr_t fnc);
 void lFp(x64emu_t *emu, uintptr_t fnc);
 void LFE(x64emu_t *emu, uintptr_t fnc);
 void LFv(x64emu_t *emu, uintptr_t fnc);
@@ -153,6 +154,7 @@ void uFUp(x64emu_t *emu, uintptr_t fnc);
 void uFpi(x64emu_t *emu, uintptr_t fnc);
 void uFpu(x64emu_t *emu, uintptr_t fnc);
 void uFpU(x64emu_t *emu, uintptr_t fnc);
+void uFpL(x64emu_t *emu, uintptr_t fnc);
 void uFpp(x64emu_t *emu, uintptr_t fnc);
 void UFEp(x64emu_t *emu, uintptr_t fnc);
 void UFUp(x64emu_t *emu, uintptr_t fnc);
@@ -169,6 +171,7 @@ void dFdp(x64emu_t *emu, uintptr_t fnc);
 void dFLL(x64emu_t *emu, uintptr_t fnc);
 void dFpi(x64emu_t *emu, uintptr_t fnc);
 void dFpp(x64emu_t *emu, uintptr_t fnc);
+void lFll(x64emu_t *emu, uintptr_t fnc);
 void lFpi(x64emu_t *emu, uintptr_t fnc);
 void lFpp(x64emu_t *emu, uintptr_t fnc);
 void LFpi(x64emu_t *emu, uintptr_t fnc);
@@ -233,6 +236,7 @@ void vFpui(x64emu_t *emu, uintptr_t fnc);
 void vFpuI(x64emu_t *emu, uintptr_t fnc);
 void vFpuu(x64emu_t *emu, uintptr_t fnc);
 void vFpup(x64emu_t *emu, uintptr_t fnc);
+void vFpll(x64emu_t *emu, uintptr_t fnc);
 void vFpLi(x64emu_t *emu, uintptr_t fnc);
 void vFpLL(x64emu_t *emu, uintptr_t fnc);
 void vFppi(x64emu_t *emu, uintptr_t fnc);
@@ -277,12 +281,14 @@ void iFpup(x64emu_t *emu, uintptr_t fnc);
 void iFpfu(x64emu_t *emu, uintptr_t fnc);
 void iFpff(x64emu_t *emu, uintptr_t fnc);
 void iFpli(x64emu_t *emu, uintptr_t fnc);
+void iFpll(x64emu_t *emu, uintptr_t fnc);
 void iFplp(x64emu_t *emu, uintptr_t fnc);
 void iFpLi(x64emu_t *emu, uintptr_t fnc);
 void iFpLL(x64emu_t *emu, uintptr_t fnc);
 void iFpLp(x64emu_t *emu, uintptr_t fnc);
 void iFppi(x64emu_t *emu, uintptr_t fnc);
 void iFppI(x64emu_t *emu, uintptr_t fnc);
+void iFppC(x64emu_t *emu, uintptr_t fnc);
 void iFppu(x64emu_t *emu, uintptr_t fnc);
 void iFppd(x64emu_t *emu, uintptr_t fnc);
 void iFppL(x64emu_t *emu, uintptr_t fnc);
@@ -318,6 +324,7 @@ void dFppi(x64emu_t *emu, uintptr_t fnc);
 void dFppp(x64emu_t *emu, uintptr_t fnc);
 void lFipi(x64emu_t *emu, uintptr_t fnc);
 void lFipL(x64emu_t *emu, uintptr_t fnc);
+void lFlll(x64emu_t *emu, uintptr_t fnc);
 void lFlpi(x64emu_t *emu, uintptr_t fnc);
 void lFppi(x64emu_t *emu, uintptr_t fnc);
 void lFSpl(x64emu_t *emu, uintptr_t fnc);
@@ -456,6 +463,7 @@ void iFpiiL(x64emu_t *emu, uintptr_t fnc);
 void iFpiip(x64emu_t *emu, uintptr_t fnc);
 void iFpiup(x64emu_t *emu, uintptr_t fnc);
 void iFpipi(x64emu_t *emu, uintptr_t fnc);
+void iFpipC(x64emu_t *emu, uintptr_t fnc);
 void iFpipp(x64emu_t *emu, uintptr_t fnc);
 void iFpCCC(x64emu_t *emu, uintptr_t fnc);
 void iFpWWu(x64emu_t *emu, uintptr_t fnc);
@@ -466,17 +474,21 @@ void iFpuuu(x64emu_t *emu, uintptr_t fnc);
 void iFpuup(x64emu_t *emu, uintptr_t fnc);
 void iFpuLL(x64emu_t *emu, uintptr_t fnc);
 void iFpuLp(x64emu_t *emu, uintptr_t fnc);
+void iFpupu(x64emu_t *emu, uintptr_t fnc);
 void iFpupV(x64emu_t *emu, uintptr_t fnc);
+void iFplip(x64emu_t *emu, uintptr_t fnc);
 void iFpLpi(x64emu_t *emu, uintptr_t fnc);
 void iFpLpL(x64emu_t *emu, uintptr_t fnc);
 void iFppii(x64emu_t *emu, uintptr_t fnc);
 void iFppiu(x64emu_t *emu, uintptr_t fnc);
 void iFppiL(x64emu_t *emu, uintptr_t fnc);
 void iFppip(x64emu_t *emu, uintptr_t fnc);
+void iFppCC(x64emu_t *emu, uintptr_t fnc);
 void iFppuw(x64emu_t *emu, uintptr_t fnc);
 void iFppui(x64emu_t *emu, uintptr_t fnc);
 void iFppuu(x64emu_t *emu, uintptr_t fnc);
 void iFppup(x64emu_t *emu, uintptr_t fnc);
+void iFppll(x64emu_t *emu, uintptr_t fnc);
 void iFpplp(x64emu_t *emu, uintptr_t fnc);
 void iFppLp(x64emu_t *emu, uintptr_t fnc);
 void iFpppi(x64emu_t *emu, uintptr_t fnc);
@@ -491,6 +503,7 @@ void uFpipp(x64emu_t *emu, uintptr_t fnc);
 void uFpCCC(x64emu_t *emu, uintptr_t fnc);
 void uFpuip(x64emu_t *emu, uintptr_t fnc);
 void uFpuuu(x64emu_t *emu, uintptr_t fnc);
+void uFppiu(x64emu_t *emu, uintptr_t fnc);
 void uFpppi(x64emu_t *emu, uintptr_t fnc);
 void UFpipp(x64emu_t *emu, uintptr_t fnc);
 void dFppiL(x64emu_t *emu, uintptr_t fnc);
@@ -602,6 +615,7 @@ void vFpiiii(x64emu_t *emu, uintptr_t fnc);
 void vFpipii(x64emu_t *emu, uintptr_t fnc);
 void vFpuipp(x64emu_t *emu, uintptr_t fnc);
 void vFpddii(x64emu_t *emu, uintptr_t fnc);
+void vFpliil(x64emu_t *emu, uintptr_t fnc);
 void vFppiii(x64emu_t *emu, uintptr_t fnc);
 void vFppiip(x64emu_t *emu, uintptr_t fnc);
 void vFppWui(x64emu_t *emu, uintptr_t fnc);
@@ -616,6 +630,7 @@ void iFEpLpp(x64emu_t *emu, uintptr_t fnc);
 void iFEpLpV(x64emu_t *emu, uintptr_t fnc);
 void iFEppip(x64emu_t *emu, uintptr_t fnc);
 void iFEppiV(x64emu_t *emu, uintptr_t fnc);
+void iFEpplp(x64emu_t *emu, uintptr_t fnc);
 void iFEpppp(x64emu_t *emu, uintptr_t fnc);
 void iFEpppV(x64emu_t *emu, uintptr_t fnc);
 void iFiiipu(x64emu_t *emu, uintptr_t fnc);
@@ -636,14 +651,21 @@ void iFpipii(x64emu_t *emu, uintptr_t fnc);
 void iFpippi(x64emu_t *emu, uintptr_t fnc);
 void iFpippp(x64emu_t *emu, uintptr_t fnc);
 void iFpCCCC(x64emu_t *emu, uintptr_t fnc);
+void iFpuuip(x64emu_t *emu, uintptr_t fnc);
 void iFpuuui(x64emu_t *emu, uintptr_t fnc);
+void iFpuuup(x64emu_t *emu, uintptr_t fnc);
 void iFpuuLL(x64emu_t *emu, uintptr_t fnc);
 void iFpuupp(x64emu_t *emu, uintptr_t fnc);
+void iFplluu(x64emu_t *emu, uintptr_t fnc);
+void iFpLlpp(x64emu_t *emu, uintptr_t fnc);
 void iFppiip(x64emu_t *emu, uintptr_t fnc);
 void iFppiup(x64emu_t *emu, uintptr_t fnc);
+void iFppiLi(x64emu_t *emu, uintptr_t fnc);
 void iFppipi(x64emu_t *emu, uintptr_t fnc);
 void iFppipp(x64emu_t *emu, uintptr_t fnc);
 void iFppupi(x64emu_t *emu, uintptr_t fnc);
+void iFppupp(x64emu_t *emu, uintptr_t fnc);
+void iFppllp(x64emu_t *emu, uintptr_t fnc);
 void iFppLpi(x64emu_t *emu, uintptr_t fnc);
 void iFppLpp(x64emu_t *emu, uintptr_t fnc);
 void iFpppii(x64emu_t *emu, uintptr_t fnc);
@@ -757,6 +779,7 @@ void iFEiippi(x64emu_t *emu, uintptr_t fnc);
 void iFEpilpV(x64emu_t *emu, uintptr_t fnc);
 void iFEpippi(x64emu_t *emu, uintptr_t fnc);
 void iFEpuppp(x64emu_t *emu, uintptr_t fnc);
+void iFEppiLi(x64emu_t *emu, uintptr_t fnc);
 void iFEppppp(x64emu_t *emu, uintptr_t fnc);
 void iFiiiiii(x64emu_t *emu, uintptr_t fnc);
 void iFiiiiip(x64emu_t *emu, uintptr_t fnc);
@@ -777,6 +800,7 @@ void iFppuiiL(x64emu_t *emu, uintptr_t fnc);
 void iFppuIII(x64emu_t *emu, uintptr_t fnc);
 void iFppuupp(x64emu_t *emu, uintptr_t fnc);
 void iFppupip(x64emu_t *emu, uintptr_t fnc);
+void iFppLupp(x64emu_t *emu, uintptr_t fnc);
 void iFpppiuu(x64emu_t *emu, uintptr_t fnc);
 void iFpppipi(x64emu_t *emu, uintptr_t fnc);
 void iFpppipp(x64emu_t *emu, uintptr_t fnc);
@@ -916,6 +940,7 @@ void vFpippiipi(x64emu_t *emu, uintptr_t fnc);
 void vFppiiipii(x64emu_t *emu, uintptr_t fnc);
 void vFppppiipi(x64emu_t *emu, uintptr_t fnc);
 void iFEpippppp(x64emu_t *emu, uintptr_t fnc);
+void iFEpuuLppp(x64emu_t *emu, uintptr_t fnc);
 void iFiiiiiiip(x64emu_t *emu, uintptr_t fnc);
 void iFiiupiupi(x64emu_t *emu, uintptr_t fnc);
 void iFuiifpppp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedfontconfig.c b/src/wrapped/wrappedfontconfig.c
new file mode 100755
index 00000000..007d1bd5
--- /dev/null
+++ b/src/wrapped/wrappedfontconfig.c
@@ -0,0 +1,56 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+#include "myalign.h"
+
+const char* fontconfigName = "libfontconfig.so.1";
+#define LIBNAME fontconfig
+
+#define SUPER() \
+
+typedef struct fontconfig_my_s {
+    // functions
+    #define GO(A, B)    B   A;
+    SUPER()
+    #undef GO
+} fontconfig_my_t;
+
+void* getFontconfigMy(library_t* lib)
+{
+    fontconfig_my_t* my = (fontconfig_my_t*)calloc(1, sizeof(fontconfig_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    SUPER()
+    #undef GO
+    return my;
+}
+#undef SUPER
+
+void freeFontconfigMy(void* lib)
+{
+    //fontconfig_my_t *my = (fontconfig_my_t *)lib;
+}
+
+#define CUSTOM_INIT \
+    lib->priv.w.p2 = getFontconfigMy(lib);
+
+#define CUSTOM_FINI \
+    freeFontconfigMy(lib->priv.w.p2); \
+    free(lib->priv.w.p2);
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedfontconfig_private.h b/src/wrapped/wrappedfontconfig_private.h
new file mode 100755
index 00000000..6ea2a289
--- /dev/null
+++ b/src/wrapped/wrappedfontconfig_private.h
@@ -0,0 +1,199 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+GO(FcAtomicCreate, pFp)
+GO(FcAtomicDeleteNew, vFp)
+GO(FcAtomicDestroy, vFp)
+GO(FcAtomicLock, iFp)
+//GO(FcAtomicNewFile, 
+//GO(FcAtomicOrigFile, 
+//GO(FcAtomicReplaceOrig, 
+//GO(FcAtomicUnlock, 
+//GO(FcBlanksAdd, 
+//GO(FcBlanksCreate, 
+//GO(FcBlanksDestroy, 
+//GO(FcBlanksIsMember, 
+GO(FcCacheCopySet, pFp)
+//GO(FcCacheDir, 
+//GO(FcCacheNumFont, 
+GO(FcCacheNumSubdir, iFp)
+GO(FcCacheSubdir, pFpi)
+GO(FcCharSetAddChar, iFpu)
+GO(FcCharSetCopy, pFp)
+//GO(FcCharSetCount, 
+//GO(FcCharSetCoverage, 
+GO(FcCharSetCreate, pFv)
+GO(FcCharSetDestroy, vFp)
+//GO(FcCharSetEqual, 
+GO(FcCharSetFirstPage, iFppp)   // second p is a fixed sized array
+GO(FcCharSetHasChar, iFpi)
+//GO(FcCharSetIntersect, 
+//GO(FcCharSetIntersectCount, 
+//GO(FcCharSetIsSubset, 
+//GO(FcCharSetMerge, 
+//GO(FcCharSetNew, 
+GO(FcCharSetNextPage, iFppp)    // second p is a fixed sized array
+GO(FcCharSetSubtract, pFpp)
+//GO(FcCharSetSubtractCount, 
+GO(FcCharSetUnion, pFpp)
+//GO(FcConfigAppFontAddDir, 
+GO(FcConfigAppFontAddFile, iFpp)
+//GO(FcConfigAppFontClear, 
+//GO(FcConfigBuildFonts, 
+//GO(FcConfigCreate, 
+//GO(FcConfigDestroy, 
+//GO(FcConfigEnableHome, 
+//GO(FcConfigFilename, 
+GO(FcConfigGetBlanks, pFp)
+//GO(FcConfigGetCache, 
+//GO(FcConfigGetCacheDirs, 
+//GO(FcConfigGetConfigDirs, 
+//GO(FcConfigGetConfigFiles, 
+GO(FcConfigGetCurrent, pFv)
+GO(FcConfigGetFontDirs, pFp)
+GO(FcConfigGetFonts, pFpi)
+//GO(FcConfigGetRescanInterval, 
+//GO(FcConfigGetRescanInverval, 
+//GO(FcConfigHome, 
+//GO(FcConfigParseAndLoad, 
+//GO(FcConfigReference, 
+//GO(FcConfigSetCurrent, 
+//GO(FcConfigSetRescanInterval, 
+//GO(FcConfigSetRescanInverval, 
+GO(FcConfigSubstitute, iFppi)
+//GO(FcConfigSubstituteWithPat, 
+//GO(FcConfigUptoDate, 
+GO(FcDefaultSubstitute, vFp)
+//GO(FcDirCacheLoad, 
+//GO(FcDirCacheLoadFile, 
+GO(FcDirCacheRead, pFpip)
+//GO(FcDirCacheUnlink, 
+GO(FcDirCacheUnload, vFp)
+//GO(FcDirCacheValid, 
+//GO(FcDirSave, 
+//GO(FcDirScan, 
+//GO(FcFileIsDir, 
+//GO(FcFileScan, 
+//GO(FcFini, 
+GO(FcFontList, pFppp)
+GO(FcFontMatch, pFppp)
+GO(FcFontRenderPrepare, pFppp)
+GO(FcFontSetAdd, iFpp)
+//GO(FcFontSetCreate, 
+GO(FcFontSetDestroy, vFp)
+//GO(FcFontSetList, 
+//GO(FcFontSetMatch, 
+//GO(FcFontSetPrint, 
+//GO(FcFontSetSort, 
+//GO(FcFontSetSortDestroy, 
+GO(FcFontSort, pFppipp)
+//GO(FcFreeTypeCharIndex, 
+//GO(FcFreeTypeCharSet, 
+//GO(FcFreeTypeCharSetAndSpacing, 
+GO(FcFreeTypeQuery, pFpipp)
+GO(FcFreeTypeQueryFace, pFppip)
+//GO(FcGetLangs, 
+//GO(FcGetVersion, 
+GO(FcInit, iFv)
+//GO(FcInitBringUptoDate, 
+//GO(FcInitLoadConfig, 
+//GO(FcInitLoadConfigAndFonts, 
+GO(FcInitReinitialize, iFv)
+//GO(FcLangGetCharSet, 
+GO(FcLangSetAdd, iFpp)
+//GO(FcLangSetCompare, 
+//GO(FcLangSetContains, 
+//GO(FcLangSetCopy, 
+GO(FcLangSetCreate, pFv)
+GO(FcLangSetDestroy, vFp)
+//GO(FcLangSetEqual, 
+//GO(FcLangSetGetLangs, 
+//GO(FcLangSetHash, 
+GO(FcLangSetHasLang, iFpp)
+//GO(FcMatrixCopy, 
+//GO(FcMatrixEqual, 
+//GO(FcMatrixMultiply, 
+//GO(FcMatrixRotate, 
+//GO(FcMatrixScale, 
+//GO(FcMatrixShear, 
+GO(FcNameConstant, iFpp)
+//GO(FcNameGetConstant, 
+//GO(FcNameGetObjectType, 
+//GO(FcNameParse, 
+//GO(FcNameRegisterConstants, 
+//GO(FcNameRegisterObjectTypes, 
+//GO(FcNameUnparse, 
+//GO(FcNameUnregisterConstants, 
+//GO(FcNameUnregisterObjectTypes, 
+GO(FcObjectSetAdd, iFpp)
+//GO2(FcObjectSetBuild, pFpV, FcObjectSetVaBuild)
+GO(FcObjectSetCreate, pFv)
+GO(FcObjectSetDestroy, vFp)
+GO(FcObjectSetVaBuild, pFpp)
+GO(FcPatternAdd, iFppiLi)  // FcValue is a typedef with int+union, with biggest part is a double => so 1 int and 1"L"
+GO(FcPatternAddBool, iFppi)
+GO(FcPatternAddCharSet, iFppp)
+GO(FcPatternAddDouble, iFppd)
+GO(FcPatternAddFTFace, iFppp)
+GO(FcPatternAddInteger, iFppi)
+GO(FcPatternAddLangSet, iFppp)
+GO(FcPatternAddMatrix, iFppp)
+GO(FcPatternAddString, iFppp)
+GO(FcPatternAddWeak, iFEppiLi)
+//GO2(FcPatternBuild, pFpV, FcPatternVaBuild)
+GO(FcPatternCreate, pFv)
+GO(FcPatternDel, iFpp)
+GO(FcPatternDestroy, vFp)
+GO(FcPatternDuplicate, pFp)
+GO(FcPatternEqual, iFpp)
+//GO(FcPatternEqualSubset, 
+//GO(FcPatternFilter, 
+//GO(FcPatternFormat, 
+GO(FcPatternGet, iFppip)
+GO(FcPatternGetBool, iFppip)
+GO(FcPatternGetCharSet, iFppip)
+GO(FcPatternGetDouble, iFppip)
+GO(FcPatternGetFTFace, iFppip)
+GO(FcPatternGetInteger, iFppip)
+GO(FcPatternGetLangSet, iFppip)
+GO(FcPatternGetMatrix, iFppip)
+GO(FcPatternGetString, iFppip)
+//GO(FcPatternHash, 
+//GO(FcPatternPrint, 
+//GO(FcPatternReference, 
+//GO(FcPatternRemove, 
+GO(FcPatternVaBuild, pFpp)
+GO(FcStrBasename, pFp)
+GO(FcStrCmp, iFpp)
+GO(FcStrCmpIgnoreCase, iFpp)
+GO(FcStrCopy, pFp)
+GO(FcStrCopyFilename, pFp)
+GO(FcStrDirname, pFp)
+GO(FcStrDowncase, pFp)
+GO(FcStrFree, vFp)
+GO(FcStrListCreate, pFp)
+GO(FcStrListDone, vFp)
+GO(FcStrListFirst, vFp) //2.11.0+
+GO(FcStrListNext, pFp)
+GO(FcStrPlus, pFpp)
+GO(FcStrSetAdd, iFpp)
+GO(FcStrSetAddFilename, iFpp)
+GO(FcStrSetCreate, pFv)
+GO(FcStrSetDel, iFpp)
+GO(FcStrSetDestroy, vFp)
+GO(FcStrSetEqual, iFpp)
+GO(FcStrSetMember, iFpp)
+GO(FcStrStr, pFpp)
+GO(FcStrStrIgnoreCase, pFpp)
+GO(FcUcs4ToUtf8, iFup)
+GO(FcUtf16Len, iFpipp)
+GO(FcUtf16ToUcs4, iFpipi)
+GO(FcUtf8Len, iFpipp)
+GO(FcUtf8ToUcs4, iFppi)
+//GO(FcValueDestroy, 
+//GO(FcValueEqual, 
+//GO(FcValuePrint, 
+//GO(FcValueSave, 
+//GO(_fini, 
+//GO(_init, 
diff --git a/src/wrapped/wrappedfreetype.c b/src/wrapped/wrappedfreetype.c
new file mode 100755
index 00000000..25a25e47
--- /dev/null
+++ b/src/wrapped/wrappedfreetype.c
@@ -0,0 +1,171 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box64context.h"
+#include "emu/x64emu_private.h"
+#include "myalign.h"
+
+const char* freetypeName = "libfreetype.so.6";
+#define LIBNAME freetype
+
+typedef union  FT_StreamDesc_s
+{
+    long   value;
+    void*  pointer;
+} FT_StreamDesc_t;
+
+typedef struct  FT_StreamRec_s
+{
+    unsigned char*       base;
+    unsigned long        size;
+    unsigned long        pos;
+
+    FT_StreamDesc_t      descriptor;
+    FT_StreamDesc_t      pathname;
+    void*                read;
+    void*                close;
+
+    void*                memory;
+    unsigned char*       cursor;
+    unsigned char*       limit;
+
+} FT_StreamRec_t;
+
+typedef struct  FT_Open_Args_s
+{
+uint32_t        flags;
+const uint8_t*  memory_base;
+intptr_t        memory_size;
+char*           pathname;
+FT_StreamRec_t* stream;
+void*           driver;
+int32_t         num_params;
+void*   params;
+
+} FT_Open_Args_t;
+
+typedef int (*iFpplp_t)     (void*, void*, long, void*);
+typedef int (*iFpuuLppp_t)  (void*, uint32_t, uint32_t, uintptr_t, void*, void*, void*);
+
+#define SUPER() \
+    GO(FT_Open_Face, iFpplp_t)      \
+    GO(FTC_Manager_New, iFpuuLppp_t)
+
+typedef struct freetype_my_s {
+    // functions
+    #define GO(A, B)    B   A;
+    SUPER()
+    #undef GO
+} freetype_my_t;
+
+void* getFreeTypeMy(library_t* lib)
+{
+    freetype_my_t* my = (freetype_my_t*)calloc(1, sizeof(freetype_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    SUPER()
+    #undef GO
+    return my;
+}
+#undef SUPER
+
+void freeFreeTypeMy(void* lib)
+{
+    //freetype_my_t *my = (freetype_my_t *)lib;
+}
+
+// utility functions
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// FTC_Face_Requester
+#define GO(A)   \
+static uintptr_t my_FTC_Face_Requester_fct_##A = 0;                                                     \
+static int my_FTC_Face_Requester_##A(void* face_id, void* lib, void* req, void* aface)                  \
+{                                                                                                       \
+    return (int)RunFunction(my_context, my_FTC_Face_Requester_fct_##A, 4, face_id, lib, req, aface);    \
+}
+SUPER()
+#undef GO
+static void* find_FTC_Face_Requester_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_FTC_Face_Requester_fct_##A == (uintptr_t)fct) return my_FTC_Face_Requester_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_FTC_Face_Requester_fct_##A == 0) {my_FTC_Face_Requester_fct_##A = (uintptr_t)fct; return my_FTC_Face_Requester_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libfreetype FTC_Face_Requester callback\n");
+    return NULL;
+}
+
+
+static uintptr_t my_iofunc = 0;
+static unsigned long my_FT_Stream_IoFunc(FT_StreamRec_t* stream, unsigned long offset, unsigned char* buffer, unsigned long count )
+{
+    return (unsigned long)RunFunction(my_context, my_iofunc, 4, stream, offset, buffer, count);
+}
+
+static uintptr_t my_closefunc = 0;
+static void my_FT_Stream_CloseFunc(FT_StreamRec_t* stream)
+{
+    RunFunction(my_context, my_closefunc, 1, stream);
+}
+
+EXPORT int my_FT_Open_Face(x64emu_t* emu, void* library, FT_Open_Args_t* args, long face_index, void* aface)
+{
+    library_t* lib = GetLibInternal(freetypeName);
+    freetype_my_t* my = (freetype_my_t*)lib->priv.w.p2;
+
+    int wrapstream = (args->flags&0x02)?1:0;
+    if(wrapstream) {
+        my_iofunc = (uintptr_t)args->stream->read;
+        if(my_iofunc)
+            args->stream->read = my_FT_Stream_IoFunc;
+        my_closefunc = (uintptr_t)args->stream->close;
+        if(my_closefunc)
+            args->stream->close = my_FT_Stream_CloseFunc;
+    }
+    int ret = my->FT_Open_Face(library, args, face_index, aface);
+    /*if(wrapstream) {
+        args->stream->read = (void*)my_iofunc;
+        args->stream->close = (void*)my_closefunc;
+    }*/
+    return ret;
+}
+
+EXPORT int my_FTC_Manager_New(x64emu_t* emu, void* l, uint32_t max_faces, uint32_t max_sizes, uintptr_t max_bytes, void* req, void* data, void* aman)
+{
+    library_t* lib = GetLibInternal(freetypeName);
+    freetype_my_t* my = (freetype_my_t*)lib->priv.w.p2;
+
+    return my->FTC_Manager_New(l, max_faces, max_sizes, max_bytes, find_FTC_Face_Requester_Fct(req), data, aman);
+}
+
+#define CUSTOM_INIT \
+    lib->priv.w.p2 = getFreeTypeMy(lib);
+
+#define CUSTOM_FINI \
+    freeFreeTypeMy(lib->priv.w.p2); \
+    free(lib->priv.w.p2);
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedfreetype_private.h b/src/wrapped/wrappedfreetype_private.h
new file mode 100755
index 00000000..b85c2fb9
--- /dev/null
+++ b/src/wrapped/wrappedfreetype_private.h
@@ -0,0 +1,217 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+GO(FT_Activate_Size, iFp)
+//GO(FT_Add_Default_Modules, 
+//GO(FT_Add_Module, 
+GO(FT_Angle_Diff, lFll)
+GO(FT_Atan2, lFll)
+GO(FT_Attach_File, iFpp)
+GO(FT_Attach_Stream, iFpp)
+GO(FT_Bitmap_Convert, iFpppi)
+GO(FT_Bitmap_Copy, iFppp)
+GO(FT_Bitmap_Done, iFpp)
+GO(FT_Bitmap_Embolden, iFppll)
+GO(FT_Bitmap_Init, vFp)
+GO(FT_Bitmap_New, vFp)
+//GO(FTC_CMapCache_Lookup, 
+//GO(FTC_CMapCache_New, 
+//GO(FT_CeilFix, 
+//GO(FTC_ImageCache_Lookup, 
+//GO(FTC_ImageCache_LookupScaler, 
+//GO(FTC_ImageCache_New, 
+//GO(FT_ClassicKern_Free, 
+//GO(FT_ClassicKern_Validate, 
+//GO(FTC_Manager_Done, 
+//GO(FTC_Manager_LookupFace, 
+//GO(FTC_Manager_LookupSize, 
+//GO(FTC_Manager_New, 
+//GO(FTC_Manager_RemoveFaceID, 
+//GO(FTC_Manager_Reset, 
+//GO(FTC_Node_Unref, 
+GO(FT_Cos, lFl)
+//GO(FTC_SBitCache_Lookup, 
+//GO(FTC_SBitCache_LookupScaler, 
+//GO(FTC_SBitCache_New, 
+//GO(FT_DivFix, 
+GO(FT_Done_Face, iFp)
+GO(FT_Done_FreeType, iFp)
+GO(FT_Done_Glyph, vFp)
+GO(FT_Done_Library, iFp)
+GO(FT_Done_Size, iFp)
+//GO(FT_Face_CheckTrueTypePatents, 
+//GO(FT_Face_GetCharsOfVariant, 
+//GO(FT_Face_GetCharVariantIndex, 
+//GO(FT_Face_GetCharVariantIsDefault, 
+//GO(FT_Face_GetVariantSelectors, 
+//GO(FT_Face_GetVariantsOfChar, 
+GO(FT_Face_Properties, iFpup)
+//GO(FT_Face_SetUnpatentedHinting, 
+//GO(FT_FloorFix, 
+GO(FT_Get_Advance, iFpiup)
+GO(FT_Get_Advances, iFpuuip)
+//GO(FT_Get_BDF_Charset_ID, 
+//GO(FT_Get_BDF_Property, 
+GO(FT_Get_Char_Index, uFpL)
+GO(FT_Get_Charmap_Index, iFp)
+//GO(FT_Get_CID_From_Glyph_Index, 
+//GO(FT_Get_CID_Is_Internally_CID_Keyed, 
+//GO(FT_Get_CID_Registry_Ordering_Supplement, 
+//GO(FT_Get_CMap_Format, 
+//GO(FT_Get_CMap_Language_ID, 
+GO(FT_Get_First_Char, LFpp)
+//GO(FT_Get_Font_Format, 
+GO(FT_Get_FSType_Flags, WFp)
+//GO(FT_Get_Gasp, 
+GO(FT_Get_Glyph, iFpp)
+GO(FT_Get_Glyph_Name, iFpupu)
+GO(FT_Get_Kerning, iFpuuup)
+//GO(FT_Get_MM_Blend_Coordinates, 
+//GO(FT_Get_MM_Var, 
+//GO(FT_Get_Module, 
+//GO(FT_Get_Multi_Master, 
+GO(FT_Get_Name_Index, uFpp)
+GO(FT_Get_Next_Char, LFpLp)
+//GO(FT_Get_PFR_Advance, 
+//GO(FT_Get_PFR_Kerning, 
+//GO(FT_Get_PFR_Metrics, 
+GO(FT_Get_Postscript_Name, pFp)
+GO(FT_Get_PS_Font_Info, iFpp)
+//GO(FT_Get_PS_Font_Private, 
+//GO(FT_Get_PS_Font_Value, 
+//GO(FT_Get_Renderer, 
+//GO(FT_Get_Sfnt_LangTag, 
+GO(FT_Get_Sfnt_Name, iFpip)
+GO(FT_Get_Sfnt_Name_Count, uFp)
+GO(FT_Get_Sfnt_Table, pFpi)
+GO(FT_Get_SubGlyph_Info, iFpuppppp)
+GO(FT_Get_Track_Kerning, iFplip)
+GO(FT_Get_TrueType_Engine_Type, iFp)
+//GO(FT_Get_Var_Blend_Coordinates, 
+//GO(FT_Get_Var_Design_Coordinates, 
+GO(FT_Get_WinFNT_Header, iFpp)  // does FT_WinFNT_HeaderRec_ needs alignment?
+GO(FT_Get_X11_Font_Format, pFp)
+GO(FT_Glyph_Copy, iFpp)
+GO(FT_Glyph_Get_CBox, vFpup)
+GO(FT_GlyphSlot_Embolden, vFp)
+GO(FT_GlyphSlot_Oblique, vFp)
+GO(FT_GlyphSlot_Own_Bitmap, iFp)
+//GO(FT_Glyph_Stroke, 
+GO(FT_Glyph_StrokeBorder, iFppCC)
+GO(FT_Glyph_To_Bitmap, iFpipC)
+GO(FT_Glyph_Transform, iFppp)
+//GO(FT_Gzip_Uncompress, 
+//GO(FT_Has_PS_Glyph_Names, 
+GO(FT_Init_FreeType, iFp)
+GO(FT_Library_SetLcdFilter, iFpi)
+GO(FT_Library_SetLcdFilterWeights, iFpp)
+GO(FT_Library_Version, vFpppp)
+//GO(FT_List_Add, 
+//GO(FT_List_Finalize, 
+//GO(FT_List_Find, 
+//GO(FT_List_Insert, 
+//GO(FT_List_Iterate, 
+//GO(FT_List_Remove, 
+//GO(FT_List_Up, 
+GO(FT_Load_Char, iFpLi)
+GO(FT_Load_Glyph, iFpui)
+GO(FT_Load_Sfnt_Table, iFpLlpp)
+GO(FT_Matrix_Invert, iFp)
+GO(FT_Matrix_Multiply, vFpp)
+GO(FT_MulDiv, lFlll)
+GO(FT_MulFix, lFll)
+GO(FT_New_Face, iFpplp)
+//GO(FT_New_Library, 
+GO(FT_New_Memory_Face, iFppllp)
+GO(FT_New_Size, iFpp)
+GOM(FT_Open_Face, iFEpplp)
+//GO(FT_OpenType_Free, 
+//GO(FT_OpenType_Validate, 
+GO(FT_Outline_Check, iFp)
+GO(FT_Outline_Copy, iFpp)
+GO(FT_Outline_Decompose, iFppp)
+GO(FT_Outline_Done, iFpp)
+//GO(FT_Outline_Done_Internal, 
+GO(FT_Outline_Embolden, iFpl)
+GO(FT_Outline_EmboldenXY, iFpll)
+GO(FT_Outline_Get_BBox, iFpp)
+GO(FT_Outline_Get_Bitmap, iFppp)
+GO(FT_Outline_Get_CBox, vFpp)
+//GO(FT_Outline_GetInsideBorder, 
+//GO(FT_Outline_Get_Orientation, 
+//GO(FT_Outline_GetOutsideBorder, 
+GO(FT_Outline_New, iFpuip)
+//GO(FT_Outline_New_Internal, 
+GO(FT_Outline_Render, iFppp)
+GO(FT_Outline_Reverse, vFp)
+GO(FT_Outline_Transform, vFpp)
+GO(FT_Outline_Translate, vFpll)
+//GO(FT_Property_Get, 
+GO(FT_Property_Set, iFpppp)
+GO(FT_Reference_Face, iFp)
+//GO(FT_Reference_Library, 
+//GO(FT_Remove_Module, 
+GO(FT_Render_Glyph, iFpi)
+GO(FT_Request_Size, iFpp)
+//GO(FT_RoundFix, 
+GO(FT_Select_Charmap, iFpi)
+GO(FT_Select_Size, iFpi)
+GO(FT_Set_Charmap, iFpp)
+GO(FT_Set_Char_Size, iFplluu)
+//GO(FT_Set_Debug_Hook, 
+//GO(FT_Set_Default_Properties, 
+//GO(FT_Set_MM_Blend_Coordinates, 
+//GO(FT_Set_MM_Design_Coordinates, 
+GO(FT_Set_Pixel_Sizes, iFpuu)
+//GO(FT_Set_Renderer, 
+GO(FT_Set_Transform, vFppp)
+//GO(FT_Set_Var_Blend_Coordinates, 
+//GO(FT_Set_Var_Design_Coordinates, 
+//GO(FT_Sfnt_Table_Info, 
+GO(FT_Sin, lFl)
+//GO(FT_Stream_OpenBzip2, 
+//GO(FT_Stream_OpenGzip, 
+//GO(FT_Stream_OpenLZW, 
+GO(FT_Stroker_BeginSubPath, iFppC)
+GO(FT_Stroker_ConicTo, iFppp)
+GO(FT_Stroker_CubicTo, iFpppp)
+GO(FT_Stroker_Done, vFp)
+GO(FT_Stroker_EndSubPath, iFp)
+GO(FT_Stroker_Export, vFpp)
+GO(FT_Stroker_ExportBorder, vFpip)
+GO(FT_Stroker_GetBorderCounts, iFpipp)
+GO(FT_Stroker_GetCounts, iFppp)
+GO(FT_Stroker_LineTo, iFpp)
+GO(FT_Stroker_New, iFpp)
+GO(FT_Stroker_ParseOutline, iFppC)
+GO(FT_Stroker_Rewind, vFp)
+GO(FT_Stroker_Set, vFpliil)
+GO(FT_Tan, lFl)
+//GO(FT_TrueTypeGX_Free, 
+//GO(FT_TrueTypeGX_Validate, 
+GO(FT_Vector_From_Polar, vFpll)
+GO(FT_Vector_Length, lFp)
+GO(FT_Vector_Polarize, vFppp)
+GO(FT_Vector_Rotate, vFpl)
+GO(FT_Vector_Transform, vFpp)
+GO(FT_Vector_Unit, vFpl)
+
+GO(FTC_CMapCache_Lookup, uFppiu)
+GO(FTC_CMapCache_New, iFpp)
+GO(FTC_ImageCache_Lookup, iFppupp)
+GO(FTC_ImageCache_LookupScaler, iFppLupp)
+GO(FTC_ImageCache_New, iFpp)
+GO(FTC_Manager_Done, vFp)
+GO(FTC_Manager_LookupFace, iFppp)
+GO(FTC_Manager_LookupSize, iFppp)
+GOM(FTC_Manager_New, iFEpuuLppp)
+GO(FTC_Manager_RemoveFaceID, vFpp)
+GO(FTC_Manager_Reset, vFp)
+GO(FTC_Node_Unref, vFpp)
+GO(FTC_SBitCache_Lookup, iFppupp)
+GO(FTC_SBitCache_LookupScaler, iFppLupp)
+GO(FTC_SBitCache_New, iFpp)
+
+//GO(TT_New_Context, 
+//GO(TT_RunIns, 
diff --git a/src/wrapped/wrappedldlinux.c b/src/wrapped/wrappedldlinux.c
index 002a426f..eaea93d8 100755
--- a/src/wrapped/wrappedldlinux.c
+++ b/src/wrapped/wrappedldlinux.c
@@ -16,8 +16,8 @@
 #include "box64context.h"
 
 typedef struct my_tls_s {
-    int         i;
-    uint32_t     o;
+    unsigned long int   i;
+    unsigned long int   o;
 } my_tls_t;
 
 EXPORT void* my___tls_get_addr(x64emu_t* emu, void* p)
@@ -26,13 +26,6 @@ EXPORT void* my___tls_get_addr(x64emu_t* emu, void* p)
     return GetDTatOffset(emu->context, t->i, t->o);
 }
 
-EXPORT void* my____tls_get_addr(x64emu_t* emu)
-{
-    // the GNU version (with 3 '_') use register for the parameter!
-    my_tls_t *t = (my_tls_t*)R_RAX;
-    return GetDTatOffset(emu->context, t->i, t->o);
-}
-
 // don't try to load the actual ld-linux (because name is variable), just use box64 itself, as it's linked to ld-linux
 const char* ldlinuxName = "ld-linux.so.2";
 #define LIBNAME ldlinux
diff --git a/src/wrapped/wrappedldlinux_private.h b/src/wrapped/wrappedldlinux_private.h
index 1c829369..e3bd935b 100755
--- a/src/wrapped/wrappedldlinux_private.h
+++ b/src/wrapped/wrappedldlinux_private.h
@@ -11,15 +11,14 @@
 // _dl_mcount
 // _dl_rtld_di_serinfo
 // _dl_tls_setup
-DATA(__libc_enable_secure, 4)
-DATA(__libc_stack_end, 4)
-DATA(__pointer_chk_guard, 4)
+DATA(__libc_enable_secure, sizeof(void*))
+DATA(__libc_stack_end, sizeof(void*))
+DATA(__pointer_chk_guard, sizeof(void*))
 // _r_debug //type B
-DATA(_rtld_global, 4)
-DATA(_rtld_global_ro, 4)
-DATA(__stack_chk_guard, 4)
+DATA(_rtld_global, sizeof(void*))
+DATA(_rtld_global_ro, sizeof(void*))
+DATA(__stack_chk_guard, sizeof(void*))
 // defini dans glibc/sysdeps/i386/dl-tls.h
-GOM(___tls_get_addr, pFEv)       //the parameter tls_index is in a register (EAX?)
-GOM(__tls_get_addr, pFEp)        //same, but the parameter is in the stack
+GOM(__tls_get_addr, pFEp)
 
 #endif
\ No newline at end of file