about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/box64context.c4
-rwxr-xr-xsrc/include/sdl1rwops.h21
-rwxr-xr-xsrc/include/sdl2rwops.h31
-rwxr-xr-xsrc/library_list.h17
-rwxr-xr-xsrc/libtools/sdl1rwops.c182
-rwxr-xr-xsrc/libtools/sdl2rwops.c185
-rw-r--r--src/wrapped/generated/functions_list.txt503
-rw-r--r--src/wrapped/generated/wrapper.c1044
-rw-r--r--src/wrapped/generated/wrapper.h507
-rwxr-xr-xsrc/wrapped/wrappedlibc.c4
-rwxr-xr-xsrc/wrapped/wrappedlibc_private.h100
-rwxr-xr-xsrc/wrapped/wrappedlibgl.c193
-rwxr-xr-xsrc/wrapped/wrappedlibgl_private.h3005
-rwxr-xr-xsrc/wrapped/wrappedlibglu.c174
-rwxr-xr-xsrc/wrapped/wrappedlibglu_private.h63
-rwxr-xr-xsrc/wrapped/wrappedopenal.c224
-rwxr-xr-xsrc/wrapped/wrappedopenal_private.h167
-rwxr-xr-xsrc/wrapped/wrappedsdl1.c574
-rwxr-xr-xsrc/wrapped/wrappedsdl1_private.h238
-rwxr-xr-xsrc/wrapped/wrappedsdl2.c994
-rwxr-xr-xsrc/wrapped/wrappedsdl2_private.h689
21 files changed, 8815 insertions, 104 deletions
diff --git a/src/box64context.c b/src/box64context.c
index 3a5e0c25..ed33a2fa 100755
--- a/src/box64context.c
+++ b/src/box64context.c
@@ -180,8 +180,8 @@ void FreeBox64Context(box64context_t** context)
 
     FreeBridge(&ctx->system);
 
-//    freeGLProcWrapper(ctx);
-//    freeALProcWrapper(ctx);
+    freeGLProcWrapper(ctx);
+    freeALProcWrapper(ctx);
 
 
     void* ptr;
diff --git a/src/include/sdl1rwops.h b/src/include/sdl1rwops.h
new file mode 100755
index 00000000..46b73519
--- /dev/null
+++ b/src/include/sdl1rwops.h
@@ -0,0 +1,21 @@
+#ifndef __SDL1RWOPS_H__
+#define __SDL1RWOPS_H__
+
+typedef struct SDL1_RWops_s SDL1_RWops_t;   // the actual SDL1 SDL_RWops
+typedef struct x64emu_s x64emu_t;
+
+typedef SDL1_RWops_t* (*sdl1_allocrw)();
+typedef void (*sdl1_freerw)(SDL1_RWops_t*);
+
+// each function will be added to dictionary, and each native functions will be wrapped so they run in emulated world
+SDL1_RWops_t* AddNativeRW(x64emu_t* emu, SDL1_RWops_t* ops);
+SDL1_RWops_t* RWNativeStart(x64emu_t* emu, SDL1_RWops_t* ops);   // put Native RW function, wrapping emulated (callback style) ones if needed
+void RWNativeEnd(SDL1_RWops_t* ops);     // put back emulated function back in place
+
+int32_t RWNativeSeek(SDL1_RWops_t *ops, int32_t offset, int32_t whence);
+uint32_t RWNativeRead(SDL1_RWops_t* ops, void* ptr, uint32_t size, uint32_t maxnum);
+int32_t RWNativeWrite(SDL1_RWops_t *ops, const void *ptr, int32_t size, int32_t num);
+int32_t RWNativeClose(SDL1_RWops_t* ops);
+void RWSetType(SDL1_RWops_t* r, int t);
+
+#endif
\ No newline at end of file
diff --git a/src/include/sdl2rwops.h b/src/include/sdl2rwops.h
new file mode 100755
index 00000000..968a3c58
--- /dev/null
+++ b/src/include/sdl2rwops.h
@@ -0,0 +1,31 @@
+#ifndef __SDL2RWOPS_H__
+#define __SDL2RWOPS_H__
+
+typedef struct SDL2_RWops_s SDL2_RWops_t;   // the actual SDL1 SDL_RWops
+typedef struct x64emu_s x64emu_t;
+
+typedef SDL2_RWops_t* (*sdl2_allocrw)();
+typedef void (*sdl2_freerw)(SDL2_RWops_t*);
+
+typedef struct SDL2RWSave_s {
+    int   anyEmu;
+    void* size;
+    void* seek;
+    void* read;
+    void* write;
+    void* close;
+    void* s1;
+    void* s2;
+} SDL2RWSave_t;
+
+// each function will be added to dictionary, and each native functions will be wrapped so they run in emulated world
+SDL2_RWops_t* AddNativeRW2(x64emu_t* emu, SDL2_RWops_t* ops);
+SDL2_RWops_t* RWNativeStart2(x64emu_t* emu, SDL2_RWops_t* ops);   // put Native RW function, wrapping emulated (callback style) ones if needed
+void RWNativeEnd2(SDL2_RWops_t* ops);     // put back emulated function back in place
+
+int64_t RWNativeSeek2(SDL2_RWops_t *ops, int64_t offset, int32_t whence);
+uint32_t RWNativeRead2(SDL2_RWops_t* ops, void* ptr, uint32_t size, uint32_t maxnum);
+int32_t RWNativeWrite2(SDL2_RWops_t *ops, const void *ptr, int32_t size, int32_t num);
+int32_t RWNativeClose2(SDL2_RWops_t* ops);
+
+#endif
\ No newline at end of file
diff --git a/src/library_list.h b/src/library_list.h
index 1edb1ca1..021d83ad 100755
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -5,22 +5,21 @@
 GO("libc.so.6", libc)
 GO("libpthread.so.0", libpthread)
 GO("librt.so.1", librt)
-//GO("libGL.so.1", libgl)
-//GO("libGL.so", libgl)
-//GO("libGLU.so.1", libglu)
+GO("libGL.so.1", libgl)
+GO("libGL.so", libgl)
+GO("libGLU.so.1", libglu)
 //GO("libX11.so.6", libx11)
 //GO("libasound.so.2", libasound)
 GO("libdl.so.2", libdl)
 GO("libm.so.6", libm)
-//GO("libSDL2-2.0.so.0", sdl2)
-//GO("libSDL2-2.0.so.1", sdl2)
-//GO("libSDL2.so", sdl2)
-//GO("libsdl2-2.0.so.0", sdl2)
+GO("libSDL2-2.0.so.0", sdl2)
+GO("libSDL2-2.0.so.1", sdl2)
+GO("libSDL2.so", sdl2)
+GO("libsdl2-2.0.so.0", sdl2)
 //GO("libSDL2_mixer-2.0.so.0", sdl2mixer)
 //GO("libSDL2_image-2.0.so.0", sdl2image)
 //GO("libSDL2_ttf-2.0.so.0", sdl2ttf)
-//GO("libSDL-1.2.so.0", sdl1)
-//GO("libSDL-1.1.so.0", sdl1)
+GO("libSDL-1.2.so.0", sdl1)
 //GO("libSDL_mixer-1.2.so.0", sdl1mixer)
 //GO("libSDL_image-1.2.so.0", sdl1image)
 //GO("libSDL_ttf-2.0.so.0", sdl1ttf)
diff --git a/src/libtools/sdl1rwops.c b/src/libtools/sdl1rwops.c
new file mode 100755
index 00000000..bdb26c83
--- /dev/null
+++ b/src/libtools/sdl1rwops.c
@@ -0,0 +1,182 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "sdl1rwops.h"
+#include "debug.h"
+#include "wrapper.h"
+#include "box64context.h"
+#include "x64run.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "librarian/library_private.h"
+#include "bridge.h"
+#include "callback.h"
+
+typedef struct SDL1_RWops_s SDL1_RWops_t;
+
+typedef int32_t (*sdl1_seek)(SDL1_RWops_t *context, int32_t offset, int32_t whence);
+typedef int32_t (*sdl1_read)(SDL1_RWops_t *context, void *ptr, int32_t size, int32_t maxnum);
+typedef int32_t (*sdl1_write)(SDL1_RWops_t *context, const void *ptr, int32_t size, int32_t num);
+typedef int32_t (*sdl1_close)(SDL1_RWops_t *context);
+
+#define BOX64RW 0xBECF4572 // random signature value
+
+typedef struct SDL1_RWops_s {
+    sdl1_seek  seek;
+    sdl1_read  read;
+    sdl1_write write;
+
+    sdl1_close close;
+
+    uint32_t type;
+    union {
+        struct {
+            int autoclose;
+            FILE *fp;
+        } stdio;
+        struct {
+            uint8_t *base;
+            uint8_t *here;
+            uint8_t *stop;
+        } mem;
+        struct {
+            void *data1;
+        } unknown;
+        struct {
+            SDL1_RWops_t *orig;
+            sdl1_freerw custom_free;
+        } my;
+    } hidden;
+} SDL1_RWops_t;
+
+
+EXPORT int32_t my_native_seek(SDL1_RWops_t *context, int32_t offset, int32_t whence)
+{
+    return context->hidden.my.orig->seek(context->hidden.my.orig, offset, whence);
+}
+EXPORT int32_t my_native_read(SDL1_RWops_t *context, void *ptr, int32_t size, int32_t maxnum)
+{
+    return context->hidden.my.orig->read(context->hidden.my.orig, ptr, size, maxnum);
+}
+EXPORT int32_t my_native_write(SDL1_RWops_t *context, const void *ptr, int32_t size, int32_t num)
+{
+    return context->hidden.my.orig->write(context->hidden.my.orig, ptr, size, num);
+}
+EXPORT int32_t my_native_close(SDL1_RWops_t *context)
+{
+    int32_t ret = context->hidden.my.orig->close(context->hidden.my.orig);
+    context->hidden.my.custom_free(context);
+    return ret;
+}
+EXPORT int32_t my_emulated_seek(SDL1_RWops_t *context, int32_t offset, int32_t whence)
+{
+    return (int32_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->seek, 3, context->hidden.my.orig, offset, whence);
+}
+EXPORT int32_t my_emulated_read(SDL1_RWops_t *context, void *ptr, int32_t size, int32_t maxnum)
+{
+    return (int32_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->read, 4, context->hidden.my.orig, ptr, size, maxnum);
+}
+
+EXPORT int32_t my_emulated_write(SDL1_RWops_t *context, const void *ptr, int32_t size, int32_t num)
+{
+    return (int32_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->write, 4, context->hidden.my.orig, ptr, size, num);
+}
+EXPORT int32_t my_emulated_close(SDL1_RWops_t *context)
+{
+    return (int32_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->close, 1, context->hidden.my.orig);
+}
+
+SDL1_RWops_t* AddNativeRW(x64emu_t* emu, SDL1_RWops_t* ops)
+{
+    if(!ops)
+        return NULL;
+
+    uintptr_t fnc;
+    bridge_t* system = emu->context->system;
+
+    sdl1_allocrw Alloc = (sdl1_allocrw)emu->context->sdl1allocrw;
+    sdl1_freerw Free = (sdl1_freerw)emu->context->sdl1freerw;
+
+    SDL1_RWops_t* newrw = Alloc();
+    newrw->type = BOX64RW;
+    newrw->hidden.my.orig = ops;
+    newrw->hidden.my.custom_free = Free;
+
+    // get or create wrapper, add it to map and change to the emulated one if rw
+    #define GO(A, W) \
+    fnc = AddCheckBridge(system, W, my_native_##A, 0); \
+    newrw->A = (sdl1_##A)fnc;
+
+    GO(seek, iFpii)
+    GO(read, iFppii)
+    GO(write, iFppii)
+    GO(close, iFp)
+
+    #undef GO
+
+    return newrw;
+}
+
+// put Native RW function, wrapping emulated (callback style) ones if needed
+SDL1_RWops_t* RWNativeStart(x64emu_t* emu, SDL1_RWops_t* ops)
+{
+    if(!ops)
+        return NULL;
+    if(ops->type == BOX64RW)
+        return ops->hidden.my.orig;
+
+    sdl1_allocrw Alloc = (sdl1_allocrw)emu->context->sdl1allocrw;
+
+    SDL1_RWops_t* newrw = Alloc();
+    newrw->type = BOX64RW;
+    newrw->hidden.my.orig = ops;
+    // create wrapper
+    #define GO(A, W) \
+    newrw->A = my_emulated_##A;
+
+    GO(seek, iFpii)
+    GO(read, iFppii)
+    GO(write, iFppii)
+    GO(close, iFp)
+
+    #undef GO
+
+    return newrw;
+}
+
+// put back emulated function back in place
+void RWNativeEnd(SDL1_RWops_t* ops)
+{
+    if(!ops)
+        return;
+
+    if(ops->type != BOX64RW)
+        return; // do nothing
+
+    ops->hidden.my.custom_free(ops);
+}
+
+int32_t RWNativeSeek(SDL1_RWops_t *ops, int32_t offset, int32_t whence)
+{
+    return ops->seek(ops, offset, whence);
+}
+uint32_t RWNativeRead(SDL1_RWops_t* ops, void* ptr, uint32_t size, uint32_t maxnum)
+{
+    return ops->read(ops, ptr, size, maxnum);
+}
+int32_t RWNativeWrite(SDL1_RWops_t *ops, const void *ptr, int32_t size, int32_t num)
+{
+    return ops->write(ops, ptr, size, num);
+}
+int32_t RWNativeClose(SDL1_RWops_t* ops)
+{
+    return ops->close(ops);
+}
+
+void RWSetType(SDL1_RWops_t* r, int awesome)
+{
+    if(r)
+        r->type = awesome;  // I like shoot'em up :D
+}
\ No newline at end of file
diff --git a/src/libtools/sdl2rwops.c b/src/libtools/sdl2rwops.c
new file mode 100755
index 00000000..3874ce60
--- /dev/null
+++ b/src/libtools/sdl2rwops.c
@@ -0,0 +1,185 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "sdl2rwops.h"
+#include "debug.h"
+#include "wrapper.h"
+#include "box64context.h"
+#include "x64run.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "librarian/library_private.h"
+#include "bridge.h"
+#include "callback.h"
+
+typedef struct SDL2_RWops_s SDL2_RWops_t;
+
+typedef int64_t (*sdl2_size)(SDL2_RWops_t *context);
+typedef int64_t (*sdl2_seek)(SDL2_RWops_t *context, int64_t offset, int32_t whence);
+typedef int32_t (*sdl2_read)(SDL2_RWops_t *context, void *ptr, int32_t size, int32_t maxnum);
+typedef int32_t (*sdl2_write)(SDL2_RWops_t *context, const void *ptr, int32_t size, int32_t num);
+typedef int32_t (*sdl2_close)(SDL2_RWops_t *context);
+
+#define BOX64RW 0x79 // random signature value
+
+typedef struct SDL2_RWops_s {
+    sdl2_size  size;
+    sdl2_seek  seek;
+    sdl2_read  read;
+    sdl2_write write;
+
+    sdl2_close close;
+
+    uint32_t type;
+    union {
+        struct {
+            int autoclose;
+            FILE *fp;
+        } stdio;
+        struct {
+            uint8_t *base;
+            uint8_t *here;
+            uint8_t *stop;
+        } mem;
+        struct {
+            void *data1;
+        } unknown;
+        struct {
+            SDL2_RWops_t *orig;
+            sdl2_freerw custom_free;
+        } my;
+    } hidden;
+} SDL2_RWops_t;
+
+EXPORT int64_t my2_native_size(SDL2_RWops_t *context)
+{
+    return context->hidden.my.orig->size(context->hidden.my.orig);
+}
+EXPORT int64_t my2_native_seek(SDL2_RWops_t *context, int64_t offset, int32_t whence)
+{
+    return context->hidden.my.orig->seek(context->hidden.my.orig, offset, whence);
+}
+EXPORT int32_t my2_native_read(SDL2_RWops_t *context, void *ptr, int32_t size, int32_t maxnum)
+{
+    return context->hidden.my.orig->read(context->hidden.my.orig, ptr, size, maxnum);
+}
+EXPORT int32_t my2_native_write(SDL2_RWops_t *context, const void *ptr, int32_t size, int32_t num)
+{
+    return context->hidden.my.orig->write(context->hidden.my.orig, ptr, size, num);
+}
+EXPORT int32_t my2_native_close(SDL2_RWops_t *context)
+{
+    int32_t ret = context->hidden.my.orig->close(context->hidden.my.orig);
+    context->hidden.my.custom_free(context);
+    return ret;
+}
+EXPORT int64_t my2_emulated_size(SDL2_RWops_t *context)
+{
+    return (int64_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->size, 1, context->hidden.my.orig);
+}
+EXPORT int64_t my2_emulated_seek(SDL2_RWops_t *context, int64_t offset, int32_t whence)
+{
+    return (int64_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->seek, 3, context->hidden.my.orig, offset, whence);
+}
+EXPORT int32_t my2_emulated_read(SDL2_RWops_t *context, void *ptr, int32_t size, int32_t maxnum)
+{
+    return (int32_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->read, 4, context->hidden.my.orig, ptr, size, maxnum);
+}
+EXPORT int32_t my2_emulated_write(SDL2_RWops_t *context, const void *ptr, int32_t size, int32_t num)
+{
+    return (int32_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->write, 4, context->hidden.my.orig, ptr, size, num);
+}
+EXPORT int32_t my2_emulated_close(SDL2_RWops_t *context)
+{
+    return (int32_t)RunFunction(my_context, (uintptr_t)context->hidden.my.orig->close, 1, context->hidden.my.orig);
+}
+
+SDL2_RWops_t* AddNativeRW2(x64emu_t* emu, SDL2_RWops_t* ops)
+{
+    if(!ops)
+        return NULL;
+    uintptr_t fnc;
+    bridge_t* system = emu->context->system;
+
+    sdl2_allocrw Alloc = (sdl2_allocrw)emu->context->sdl2allocrw;
+    sdl2_freerw Free = (sdl2_freerw)emu->context->sdl2freerw;
+
+    SDL2_RWops_t* newrw = Alloc();
+    newrw->type = BOX64RW;
+    newrw->hidden.my.orig = ops;
+    newrw->hidden.my.custom_free = Free;
+
+    // get or create wrapper, add it to map and change to the emulated one if rw
+    #define GO(A, W) \
+    fnc = AddCheckBridge(system, W, my2_native_##A, 0); \
+    newrw->A = (sdl2_##A)fnc;
+
+    GO(size, IFp)
+    GO(seek, IFpIi)
+    GO(read, iFppii)
+    GO(write, iFppii)
+    GO(close, iFp)
+
+    #undef GO
+
+    return newrw;
+}
+
+// put Native RW function, wrapping emulated (callback style) ones if needed
+SDL2_RWops_t* RWNativeStart2(x64emu_t* emu, SDL2_RWops_t* ops)
+{
+    if(!ops)
+        return NULL;
+
+    if(ops->type == BOX64RW)
+        return ops->hidden.my.orig;
+
+    sdl2_allocrw Alloc = (sdl2_allocrw)emu->context->sdl2allocrw;
+
+    SDL2_RWops_t* newrw = Alloc();
+    newrw->type = BOX64RW;
+    newrw->hidden.my.orig = ops;
+    newrw->hidden.my.custom_free = (sdl2_freerw)emu->context->sdl2freerw;
+   
+    // create wrapper
+    #define GO(A, W) \
+    newrw->A = my2_emulated_##A;
+
+    GO(size, IFp)
+    GO(seek, IFpIi)
+    GO(read, iFppii)
+    GO(write, iFppii)
+    GO(close, iFp)
+
+    #undef GO
+
+    return newrw;
+}
+
+void RWNativeEnd2(SDL2_RWops_t* ops)
+{
+
+    if(!ops || ops->type != BOX64RW)
+        return; // do nothing
+
+    ops->hidden.my.custom_free(ops);
+}
+
+int64_t RWNativeSeek2(SDL2_RWops_t *ops, int64_t offset, int32_t whence)
+{
+    return ops->seek(ops, offset, whence);
+}
+uint32_t RWNativeRead2(SDL2_RWops_t* ops, void* ptr, uint32_t size, uint32_t maxnum)
+{
+    return ops->read(ops, ptr, size, maxnum);
+}
+int32_t RWNativeWrite2(SDL2_RWops_t *ops, const void *ptr, int32_t size, int32_t num)
+{
+    return ops->write(ops, ptr, size, num);
+}
+int32_t RWNativeClose2(SDL2_RWops_t* ops)
+{
+    return ops->close(ops);
+}
\ No newline at end of file
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index dc8edcc7..7a5d1563 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1,7 +1,13 @@
 #() vFE
 #() vFv
 #() vFi
+#() vFu
+#() vFf
+#() vFd
 #() vFp
+#() cFi
+#() cFu
+#() cFp
 #() iFE
 #() iFv
 #() iFi
@@ -13,29 +19,75 @@
 #() IFf
 #() IFd
 #() IFp
+#() WFi
+#() WFp
+#() uFv
+#() uFi
 #() uFu
 #() uFp
+#() UFv
 #() UFV
+#() fFi
 #() fFf
+#() fFp
+#() dFi
 #() dFd
 #() dFp
 #() lFp
 #() LFv
 #() LFp
 #() pFE
+#() pFv
+#() pFi
 #() pFu
 #() pFL
 #() pFp
+#() HFi
+#() HFp
 #() vFEp
+#() vFii
+#() vFiu
+#() vFif
+#() vFid
+#() vFip
+#() vFWW
+#() vFui
+#() vFuu
+#() vFuf
+#() vFud
+#() vFup
+#() vFfi
+#() vFff
+#() vFfp
+#() vFdd
+#() vFpi
 #() vFpp
+#() cFpp
 #() iFEp
+#() iFii
 #() iFip
+#() iFIi
+#() iFui
+#() iFuu
 #() iFup
+#() iFUU
 #() iFLL
 #() iFLp
 #() iFpi
+#() iFpC
+#() iFpu
+#() iFpf
 #() iFpp
+#() IFEp
+#() CFui
+#() CFpi
+#() uFEp
+#() uFui
+#() uFuu
+#() uFup
+#() uFpi
 #() uFpp
+#() UFEp
 #() fFif
 #() fFfi
 #() fFff
@@ -44,19 +96,101 @@
 #() dFdi
 #() dFdd
 #() dFdp
+#() dFpp
+#() LFpL
 #() pFEp
+#() pFii
+#() pFui
+#() pFuu
 #() pFup
+#() pFlp
 #() pFLL
+#() pFpi
+#() pFpu
+#() pFpL
+#() pFpp
 #() pFpV
+#() HFpi
 #() vFEpu
+#() vFEpp
+#() vFEpV
+#() vFiii
+#() vFiip
+#() vFiui
+#() vFiuu
+#() vFiup
+#() vFiff
+#() vFidd
+#() vFipi
+#() vFipu
+#() vFipp
+#() vFuii
+#() vFuiI
+#() vFuiu
+#() vFuif
+#() vFuid
+#() vFuip
+#() vFuui
+#() vFuuu
+#() vFuuf
+#() vFuud
+#() vFuup
+#() vFuff
+#() vFudd
+#() vFupi
+#() vFfff
 #() vFfpp
+#() vFddd
 #() vFdpp
+#() vFpii
+#() vFpiu
+#() vFpif
+#() vFpid
+#() vFpip
+#() vFppi
+#() vFppu
+#() vFppp
+#() iFEip
+#() iFEWW
+#() iFEup
 #() iFEpi
 #() iFEpp
 #() iFEpV
+#() iFiip
+#() iFipu
+#() iFipp
+#() iFuup
+#() iFuff
+#() iFfff
+#() iFpii
 #() iFpiu
+#() iFpip
+#() iFpuu
 #() iFpuL
+#() iFpup
+#() iFpfu
+#() iFpff
+#() iFppi
+#() iFppu
 #() iFppL
+#() iFppp
+#() iFppV
+#() IFpIi
+#() IFppi
+#() uFEpW
+#() uFEpu
+#() uFEpU
+#() uFipu
+#() uFuip
+#() uFuuu
+#() uFuup
+#() uFupu
+#() uFupp
+#() uFpiu
+#() uFppi
+#() uFppu
+#() UFppi
+#() fFuii
 #() fFfff
 #() fFffp
 #() dFddd
@@ -64,23 +198,392 @@
 #() pFEip
 #() pFEpi
 #() pFEpp
+#() pFipi
 #() pFipp
+#() pFIpi
+#() pFuii
+#() pFupi
+#() pFUpi
+#() pFpii
+#() pFpiu
 #() pFpiL
+#() pFpip
+#() pFpuu
+#() pFppi
+#() pFppu
 #() pFppL
+#() pFppp
+#() vFEipV
+#() vFEpip
 #() vFEpup
+#() vFiiii
+#() vFiiip
+#() vFiuip
+#() vFiuuu
+#() vFiupu
+#() vFiupV
+#() vFifff
+#() vFiddd
+#() vFipup
+#() vFippp
+#() vFuiii
+#() vFuiip
+#() vFuiui
+#() vFuiuu
+#() vFuiup
+#() vFuifi
+#() vFuiff
+#() vFuidd
+#() vFuipi
+#() vFuipu
+#() vFuipp
+#() vFuuii
+#() vFuuiu
+#() vFuuip
+#() vFuuui
+#() vFuuuu
+#() vFuuuf
+#() vFuuud
+#() vFuuup
+#() vFuupi
+#() vFuupp
+#() vFufff
+#() vFuddd
+#() vFupii
+#() vFuppi
+#() vFffff
+#() vFdddd
+#() vFpiii
+#() vFpiip
+#() vFpipp
+#() vFpdii
+#() vFpddd
+#() vFppip
+#() vFppui
+#() vFpppp
+#() cFpiii
 #() iFEupp
 #() iFEpip
+#() iFEppi
 #() iFEppp
+#() iFiiiu
+#() iFippp
 #() iFuipp
+#() iFuuff
+#() iFuppp
+#() iFpiiu
+#() iFpiip
+#() iFpipp
+#() iFpCCC
+#() iFpWWu
+#() iFpuup
+#() iFpupV
+#() iFppii
+#() iFppiu
+#() iFppip
+#() iFpppi
+#() iFpppp
+#() IFEpIi
+#() uFuuuu
+#() uFpCCC
+#() uFpuip
+#() uFpuuu
+#() uFpppi
 #() LFpLLp
+#() pFEupp
 #() pFEppi
 #() pFEppp
+#() pFiiiu
+#() pFiiup
+#() pFuiii
+#() pFpiii
+#() pFpipp
+#() pFpuii
 #() pFppiL
 #() pFppuL
+#() pFppLL
+#() pFpppi
+#() pFpppu
+#() pFpppL
+#() pFpppp
+#() vFEpuup
+#() vFiiiii
+#() vFiiiiu
+#() vFiiuup
+#() vFiipii
+#() vFiuiip
+#() vFiuipi
+#() vFiuuuu
+#() vFiffff
+#() vFidddd
+#() vFilill
+#() vFipipu
+#() vFipipp
+#() vFipupi
+#() vFuiiii
+#() vFuiiiu
+#() vFuiiip
+#() vFuiiup
+#() vFuiIII
+#() vFuiuii
+#() vFuiuiu
+#() vFuiuip
+#() vFuiuuu
+#() vFuiuup
+#() vFuiupi
+#() vFuiupu
+#() vFuifff
+#() vFuiddd
+#() vFuipii
+#() vFuipip
+#() vFuipup
+#() vFuippp
+#() vFuuiii
+#() vFuuiui
+#() vFuuiuu
+#() vFuuiup
+#() vFuuipi
+#() vFuuipu
+#() vFuuipp
+#() vFuuuii
+#() vFuuuiu
+#() vFuuuip
+#() vFuuuui
+#() vFuuuuu
+#() vFuuuup
+#() vFuupii
+#() vFuffff
+#() vFudddd
+#() vFupupi
+#() vFuppip
+#() vFupppp
+#() vFfffff
+#() vFddddp
+#() vFpiiii
+#() vFpipii
+#() vFpuipp
+#() vFpddii
+#() vFppWui
+#() vFpppii
+#() vFppppp
 #() iFEppiV
 #() iFEpppp
+#() iFiiupp
 #() iFipppi
+#() iFpiiii
+#() iFpiiip
+#() iFpiiuu
+#() iFpipii
+#() iFpippp
+#() iFpCCCC
+#() iFppipi
+#() iFppupi
+#() iFppppp
+#() IFppIII
+#() uFEppuu
+#() uFiuuuu
+#() uFuiiiu
+#() uFpCCCC
+#() uFpuuuu
+#() uFppppp
+#() LFppppp
+#() pFuiiiu
+#() pFuiipp
+#() pFpuiii
+#() pFppipi
+#() pFppuup
+#() pFpppip
+#() vFEiiipp
+#() vFiiiiii
+#() vFiiiuil
+#() vFiuippp
+#() vFiffiff
+#() vFiddidd
+#() vFuiiiii
+#() vFuiiiip
+#() vFuiiuii
+#() vFuiiuup
+#() vFuiuiii
+#() vFuiuiip
+#() vFuiuiuu
+#() vFuiuuip
+#() vFuiuuuu
+#() vFuiupii
+#() vFuiupiu
+#() vFuiffff
+#() vFuidddd
+#() vFuipiup
+#() vFuuiiii
+#() vFuuiuii
+#() vFuuiuiu
+#() vFuuiuup
+#() vFuuippp
+#() vFuuuiup
+#() vFuuuipi
+#() vFuuuipp
+#() vFuuuuii
+#() vFuuuuip
+#() vFuuuuuu
+#() vFuuuuff
+#() vFuuuppi
+#() vFuuuppp
+#() vFuuffff
+#() vFuudddd
+#() vFuffiip
+#() vFufffff
+#() vFuddiip
+#() vFupupip
+#() vFuppppp
+#() vFffffff
+#() vFdddddd
+#() vFpdddii
+#() vFppiiii
+#() vFppupii
+#() vFpppppp
+#() iFEpippi
+#() iFEpupVV
+#() iFiiiiii
+#() iFiiiiip
+#() iFuppppp
+#() iFpiiipp
+#() iFppIppp
+#() pFEpippp
+#() pFiCiiCi
+#() pFpiiiiu
+#() pFpippip
+#() pFpuuuuu
+#() pFppiiii
+#() vFiiiiiip
+#() vFiiiiuup
+#() vFiiupuip
+#() vFiiffffp
+#() vFiupuuup
+#() vFuiiiiii
+#() vFuiiiuip
+#() vFuiiiuup
+#() vFuiuiiii
+#() vFuiuiiip
+#() vFuiuiiuu
+#() vFuiupiiu
+#() vFuipiiii
+#() vFuipffff
+#() vFuipdddd
+#() vFuuiiiii
+#() vFuuiiiip
+#() vFuuiiiui
+#() vFuuiiiuu
+#() vFuuiiuup
+#() vFuuiuiii
+#() vFuuipppp
+#() vFuuuiiii
+#() vFuuuiiip
+#() vFuuuiuii
+#() vFuuuiupi
+#() vFuuuuiip
+#() vFuuuuuuu
+#() vFuuuufff
+#() vFuuuffff
+#() vFuuudddd
+#() vFuuffiip
+#() vFuuddiip
+#() vFuffffff
+#() vFudddddd
+#() vFpipipii
+#() vFpddiidd
+#() iFiiiiiip
+#() iFpuuiuui
+#() iFppppdpi
+#() iFppppppp
+#() uFuippppp
+#() vFiiiiuuip
+#() vFiupuiuup
+#() vFiupuuuup
+#() vFuiiiiiii
+#() vFuiiiiuup
+#() vFuiiipiup
+#() vFuiuiiiii
+#() vFuiuiiiip
+#() vFuuiiiiii
+#() vFuuiiiuip
+#() vFuuiiiuup
+#() vFuuiiuupp
+#() vFuuiuiiii
+#() vFuuiuiiip
+#() vFuuuiiiii
+#() vFuuuiuiii
+#() vFuuuipipp
+#() vFuuuuuuuu
+#() vFuuuuufff
+#() vFffffffff
 #() iFEpippppp
+#() iFiiiiiiip
+#() iFiiupiupi
+#() iFuiifpppp
+#() iFpupppppp
+#() iFppIIIppp
+#() iFpppipipi
+#() uFuipppppp
+#() pFuiiiuuuu
+#() vFuiiiiiiii
+#() vFuiiiiiuip
+#() vFuiiiiiuup
+#() vFuiuiiiiip
+#() vFuiupuffup
+#() vFuuiiiiiii
+#() vFuuiuiiiii
+#() vFuuiuiiiip
+#() vFuuiuiiuup
+#() vFuuuiiiiip
+#() vFuuuuuuuuu
+#() vFuupiuiuuf
+#() vFuffffffff
+#() vFffuuuufff
+#() vFddddddddd
+#() iFiiiiiiiip
+#() iFiiiipiiip
+#() iFdddpppppp
+#() pFpiiiiuuuu
+#() vFiiiiiiiiiu
+#() vFuiiiiiiiii
+#() vFuiiiiiiuup
+#() vFuiuiiiiuup
+#() vFuuiiiiiiii
+#() vFuuiiiiiuip
+#() vFuuiiiiiuup
+#() vFuuiuiiiiip
+#() vFuuiuiiiuup
+#() vFuuuuuuuiii
+#() vFuuuuuuuuuu
+#() vFuupiiupuuf
+#() vFuffiiffiip
+#() vFuddiiddiip
+#() vFffffffffff
+#() iFiiiiiiiiip
+#() vFuiiiiiiiiip
+#() vFuiiiiiiiuip
+#() vFuiiiiiiiuup
+#() vFuiuiiiiiuup
+#() vFuuiuiiiiuup
+#() vFuuuuuuuuuuu
+#() vFuuffiiffiip
+#() vFuufffffffff
+#() vFuuddiiddiip
+#() vFuffffffffff
+#() vFpipipiipiii
+#() iFiiiiiiiiiip
+#() vFuuiiiiiiiuip
+#() vFuuiiiiiiiuup
+#() vFuuuuuuuuuuuu
+#() vFffffffffffff
+#() vFuiiiiiiiiiuup
+#() vFuuuuuuuuuuuuu
+#() vFuffffffffffff
+#() iFddddpppddpppp
+#() vFuffiiffiiffiip
+#() vFuddiiddiiddiip
+#() vFuuiiiiuuiiiiiii
+#() vFfffffffffffffff
+#() vFppuiiiiipuiiiiiiii
 #defined(HAVE_LD80BITS) DFD
 #defined(HAVE_LD80BITS) DFDD
 #defined(HAVE_LD80BITS) DFDp
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 7cd7cd1a..3b3711ee 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -11,17 +11,6 @@
 #include "regs.h"
 #include "x64emu.h"
 
-typedef union ui64_s {
-    int64_t     i;
-    uint64_t    u;
-    uint32_t    d[2];
-} ui64_t;
-
-typedef struct _2uint_struct_s {
-	uint32_t	a;
-	uint32_t	b;
-} _2uint_struct_t;
-
 extern void* my__IO_2_1_stderr_;
 extern void* my__IO_2_1_stdin_ ;
 extern void* my__IO_2_1_stdout_;
@@ -39,40 +28,19 @@ static void* io_convert(void* v)
 	return v;
 }
 
-typedef struct my_GValue_s
-{
-  int         g_type;
-  union {
-    int        v_int;
-    int64_t    v_int64;
-    uint64_t   v_uint64;
-    float      v_float;
-    double     v_double;
-    void*      v_pointer;
-  } data[2];
-} my_GValue_t;
-
-static void alignGValue(my_GValue_t* v, void* value)
-{
-    v->g_type = *(int*)value;
-    memcpy(v->data, value+4, 2*sizeof(double));
-}
-static void unalignGValue(void* value, my_GValue_t* v)
-{
-    *(int*)value = v->g_type;
-    memcpy(value+4, v->data, 2*sizeof(double));
-}
-
-void* VulkanFromx86(void* src, void** save);
-void VulkanTox86(void* src, void* save);
-
 #define ST0val ST0.d
 
 int of_convert(int);
 typedef void (*vFE_t)(x64emu_t*);
 typedef void (*vFv_t)(void);
 typedef void (*vFi_t)(int32_t);
+typedef void (*vFu_t)(uint32_t);
+typedef void (*vFf_t)(float);
+typedef void (*vFd_t)(double);
 typedef void (*vFp_t)(void*);
+typedef int8_t (*cFi_t)(int32_t);
+typedef int8_t (*cFu_t)(uint32_t);
+typedef int8_t (*cFp_t)(void*);
 typedef int32_t (*iFE_t)(x64emu_t*);
 typedef int32_t (*iFv_t)(void);
 typedef int32_t (*iFi_t)(int32_t);
@@ -84,29 +52,75 @@ typedef int32_t (*iFp_t)(void*);
 typedef int64_t (*IFf_t)(float);
 typedef int64_t (*IFd_t)(double);
 typedef int64_t (*IFp_t)(void*);
+typedef uint16_t (*WFi_t)(int32_t);
+typedef uint16_t (*WFp_t)(void*);
+typedef uint32_t (*uFv_t)(void);
+typedef uint32_t (*uFi_t)(int32_t);
 typedef uint32_t (*uFu_t)(uint32_t);
 typedef uint32_t (*uFp_t)(void*);
+typedef uint64_t (*UFv_t)(void);
 typedef uint64_t (*UFV_t)(void*);
+typedef float (*fFi_t)(int32_t);
 typedef float (*fFf_t)(float);
+typedef float (*fFp_t)(void*);
+typedef double (*dFi_t)(int32_t);
 typedef double (*dFd_t)(double);
 typedef double (*dFp_t)(void*);
 typedef intptr_t (*lFp_t)(void*);
 typedef uintptr_t (*LFv_t)(void);
 typedef uintptr_t (*LFp_t)(void*);
 typedef void* (*pFE_t)(x64emu_t*);
+typedef void* (*pFv_t)(void);
+typedef void* (*pFi_t)(int32_t);
 typedef void* (*pFu_t)(uint32_t);
 typedef void* (*pFL_t)(uintptr_t);
 typedef void* (*pFp_t)(void*);
+typedef unsigned __int128 (*HFi_t)(int32_t);
+typedef unsigned __int128 (*HFp_t)(void*);
 typedef void (*vFEp_t)(x64emu_t*, void*);
+typedef void (*vFii_t)(int32_t, int32_t);
+typedef void (*vFiu_t)(int32_t, uint32_t);
+typedef void (*vFif_t)(int32_t, float);
+typedef void (*vFid_t)(int32_t, double);
+typedef void (*vFip_t)(int32_t, void*);
+typedef void (*vFWW_t)(uint16_t, uint16_t);
+typedef void (*vFui_t)(uint32_t, int32_t);
+typedef void (*vFuu_t)(uint32_t, uint32_t);
+typedef void (*vFuf_t)(uint32_t, float);
+typedef void (*vFud_t)(uint32_t, double);
+typedef void (*vFup_t)(uint32_t, void*);
+typedef void (*vFfi_t)(float, int32_t);
+typedef void (*vFff_t)(float, float);
+typedef void (*vFfp_t)(float, void*);
+typedef void (*vFdd_t)(double, double);
+typedef void (*vFpi_t)(void*, int32_t);
 typedef void (*vFpp_t)(void*, void*);
+typedef int8_t (*cFpp_t)(void*, void*);
 typedef int32_t (*iFEp_t)(x64emu_t*, void*);
+typedef int32_t (*iFii_t)(int32_t, int32_t);
 typedef int32_t (*iFip_t)(int32_t, void*);
+typedef int32_t (*iFIi_t)(int64_t, int32_t);
+typedef int32_t (*iFui_t)(uint32_t, int32_t);
+typedef int32_t (*iFuu_t)(uint32_t, uint32_t);
 typedef int32_t (*iFup_t)(uint32_t, void*);
+typedef int32_t (*iFUU_t)(uint64_t, uint64_t);
 typedef int32_t (*iFLL_t)(uintptr_t, uintptr_t);
 typedef int32_t (*iFLp_t)(uintptr_t, void*);
 typedef int32_t (*iFpi_t)(void*, int32_t);
+typedef int32_t (*iFpC_t)(void*, uint8_t);
+typedef int32_t (*iFpu_t)(void*, uint32_t);
+typedef int32_t (*iFpf_t)(void*, float);
 typedef int32_t (*iFpp_t)(void*, void*);
+typedef int64_t (*IFEp_t)(x64emu_t*, void*);
+typedef uint8_t (*CFui_t)(uint32_t, int32_t);
+typedef uint8_t (*CFpi_t)(void*, int32_t);
+typedef uint32_t (*uFEp_t)(x64emu_t*, void*);
+typedef uint32_t (*uFui_t)(uint32_t, int32_t);
+typedef uint32_t (*uFuu_t)(uint32_t, uint32_t);
+typedef uint32_t (*uFup_t)(uint32_t, void*);
+typedef uint32_t (*uFpi_t)(void*, int32_t);
 typedef uint32_t (*uFpp_t)(void*, void*);
+typedef uint64_t (*UFEp_t)(x64emu_t*, void*);
 typedef float (*fFif_t)(int32_t, float);
 typedef float (*fFfi_t)(float, int32_t);
 typedef float (*fFff_t)(float, float);
@@ -115,19 +129,101 @@ typedef double (*dFid_t)(int32_t, double);
 typedef double (*dFdi_t)(double, int32_t);
 typedef double (*dFdd_t)(double, double);
 typedef double (*dFdp_t)(double, void*);
+typedef double (*dFpp_t)(void*, void*);
+typedef uintptr_t (*LFpL_t)(void*, uintptr_t);
 typedef void* (*pFEp_t)(x64emu_t*, void*);
+typedef void* (*pFii_t)(int32_t, int32_t);
+typedef void* (*pFui_t)(uint32_t, int32_t);
+typedef void* (*pFuu_t)(uint32_t, uint32_t);
 typedef void* (*pFup_t)(uint32_t, void*);
+typedef void* (*pFlp_t)(intptr_t, void*);
 typedef void* (*pFLL_t)(uintptr_t, uintptr_t);
+typedef void* (*pFpi_t)(void*, int32_t);
+typedef void* (*pFpu_t)(void*, uint32_t);
+typedef void* (*pFpL_t)(void*, uintptr_t);
+typedef void* (*pFpp_t)(void*, void*);
 typedef void* (*pFpV_t)(void*, void*);
+typedef unsigned __int128 (*HFpi_t)(void*, int32_t);
 typedef void (*vFEpu_t)(x64emu_t*, void*, uint32_t);
+typedef void (*vFEpp_t)(x64emu_t*, void*, void*);
+typedef void (*vFEpV_t)(x64emu_t*, void*, void*);
+typedef void (*vFiii_t)(int32_t, int32_t, int32_t);
+typedef void (*vFiip_t)(int32_t, int32_t, void*);
+typedef void (*vFiui_t)(int32_t, uint32_t, int32_t);
+typedef void (*vFiuu_t)(int32_t, uint32_t, uint32_t);
+typedef void (*vFiup_t)(int32_t, uint32_t, void*);
+typedef void (*vFiff_t)(int32_t, float, float);
+typedef void (*vFidd_t)(int32_t, double, double);
+typedef void (*vFipi_t)(int32_t, void*, int32_t);
+typedef void (*vFipu_t)(int32_t, void*, uint32_t);
+typedef void (*vFipp_t)(int32_t, void*, void*);
+typedef void (*vFuii_t)(uint32_t, int32_t, int32_t);
+typedef void (*vFuiI_t)(uint32_t, int32_t, int64_t);
+typedef void (*vFuiu_t)(uint32_t, int32_t, uint32_t);
+typedef void (*vFuif_t)(uint32_t, int32_t, float);
+typedef void (*vFuid_t)(uint32_t, int32_t, double);
+typedef void (*vFuip_t)(uint32_t, int32_t, void*);
+typedef void (*vFuui_t)(uint32_t, uint32_t, int32_t);
+typedef void (*vFuuu_t)(uint32_t, uint32_t, uint32_t);
+typedef void (*vFuuf_t)(uint32_t, uint32_t, float);
+typedef void (*vFuud_t)(uint32_t, uint32_t, double);
+typedef void (*vFuup_t)(uint32_t, uint32_t, void*);
+typedef void (*vFuff_t)(uint32_t, float, float);
+typedef void (*vFudd_t)(uint32_t, double, double);
+typedef void (*vFupi_t)(uint32_t, void*, int32_t);
+typedef void (*vFfff_t)(float, float, float);
 typedef void (*vFfpp_t)(float, void*, void*);
+typedef void (*vFddd_t)(double, double, double);
 typedef void (*vFdpp_t)(double, void*, void*);
+typedef void (*vFpii_t)(void*, int32_t, int32_t);
+typedef void (*vFpiu_t)(void*, int32_t, uint32_t);
+typedef void (*vFpif_t)(void*, int32_t, float);
+typedef void (*vFpid_t)(void*, int32_t, double);
+typedef void (*vFpip_t)(void*, int32_t, void*);
+typedef void (*vFppi_t)(void*, void*, int32_t);
+typedef void (*vFppu_t)(void*, void*, uint32_t);
+typedef void (*vFppp_t)(void*, void*, void*);
+typedef int32_t (*iFEip_t)(x64emu_t*, int32_t, void*);
+typedef int32_t (*iFEWW_t)(x64emu_t*, uint16_t, uint16_t);
+typedef int32_t (*iFEup_t)(x64emu_t*, uint32_t, void*);
 typedef int32_t (*iFEpi_t)(x64emu_t*, void*, int32_t);
 typedef int32_t (*iFEpp_t)(x64emu_t*, void*, void*);
 typedef int32_t (*iFEpV_t)(x64emu_t*, void*, void*);
+typedef int32_t (*iFiip_t)(int32_t, int32_t, void*);
+typedef int32_t (*iFipu_t)(int32_t, void*, uint32_t);
+typedef int32_t (*iFipp_t)(int32_t, void*, void*);
+typedef int32_t (*iFuup_t)(uint32_t, uint32_t, void*);
+typedef int32_t (*iFuff_t)(uint32_t, float, float);
+typedef int32_t (*iFfff_t)(float, float, float);
+typedef int32_t (*iFpii_t)(void*, int32_t, int32_t);
 typedef int32_t (*iFpiu_t)(void*, int32_t, uint32_t);
+typedef int32_t (*iFpip_t)(void*, int32_t, void*);
+typedef int32_t (*iFpuu_t)(void*, uint32_t, uint32_t);
 typedef int32_t (*iFpuL_t)(void*, uint32_t, uintptr_t);
+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 (*iFppi_t)(void*, void*, int32_t);
+typedef int32_t (*iFppu_t)(void*, void*, uint32_t);
 typedef int32_t (*iFppL_t)(void*, void*, uintptr_t);
+typedef int32_t (*iFppp_t)(void*, void*, void*);
+typedef int32_t (*iFppV_t)(void*, void*, void*);
+typedef int64_t (*IFpIi_t)(void*, int64_t, int32_t);
+typedef int64_t (*IFppi_t)(void*, void*, int32_t);
+typedef uint32_t (*uFEpW_t)(x64emu_t*, void*, uint16_t);
+typedef uint32_t (*uFEpu_t)(x64emu_t*, void*, uint32_t);
+typedef uint32_t (*uFEpU_t)(x64emu_t*, void*, uint64_t);
+typedef uint32_t (*uFipu_t)(int32_t, void*, uint32_t);
+typedef uint32_t (*uFuip_t)(uint32_t, int32_t, void*);
+typedef uint32_t (*uFuuu_t)(uint32_t, uint32_t, uint32_t);
+typedef uint32_t (*uFuup_t)(uint32_t, uint32_t, void*);
+typedef uint32_t (*uFupu_t)(uint32_t, void*, uint32_t);
+typedef uint32_t (*uFupp_t)(uint32_t, void*, void*);
+typedef uint32_t (*uFpiu_t)(void*, int32_t, uint32_t);
+typedef uint32_t (*uFppi_t)(void*, void*, int32_t);
+typedef uint32_t (*uFppu_t)(void*, void*, uint32_t);
+typedef uint64_t (*UFppi_t)(void*, void*, int32_t);
+typedef float (*fFuii_t)(uint32_t, int32_t, int32_t);
 typedef float (*fFfff_t)(float, float, float);
 typedef float (*fFffp_t)(float, float, void*);
 typedef double (*dFddd_t)(double, double, double);
@@ -135,23 +231,392 @@ typedef double (*dFddp_t)(double, double, void*);
 typedef void* (*pFEip_t)(x64emu_t*, int32_t, void*);
 typedef void* (*pFEpi_t)(x64emu_t*, void*, int32_t);
 typedef void* (*pFEpp_t)(x64emu_t*, void*, void*);
+typedef void* (*pFipi_t)(int32_t, void*, int32_t);
 typedef void* (*pFipp_t)(int32_t, void*, void*);
+typedef void* (*pFIpi_t)(int64_t, void*, int32_t);
+typedef void* (*pFuii_t)(uint32_t, int32_t, int32_t);
+typedef void* (*pFupi_t)(uint32_t, void*, int32_t);
+typedef void* (*pFUpi_t)(uint64_t, void*, int32_t);
+typedef void* (*pFpii_t)(void*, int32_t, int32_t);
+typedef void* (*pFpiu_t)(void*, int32_t, uint32_t);
 typedef void* (*pFpiL_t)(void*, int32_t, uintptr_t);
+typedef void* (*pFpip_t)(void*, int32_t, void*);
+typedef void* (*pFpuu_t)(void*, uint32_t, uint32_t);
+typedef void* (*pFppi_t)(void*, void*, int32_t);
+typedef void* (*pFppu_t)(void*, void*, uint32_t);
 typedef void* (*pFppL_t)(void*, void*, uintptr_t);
+typedef void* (*pFppp_t)(void*, void*, void*);
+typedef void (*vFEipV_t)(x64emu_t*, int32_t, void*, void*);
+typedef void (*vFEpip_t)(x64emu_t*, void*, int32_t, void*);
 typedef void (*vFEpup_t)(x64emu_t*, void*, uint32_t, void*);
+typedef void (*vFiiii_t)(int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFiiip_t)(int32_t, int32_t, int32_t, void*);
+typedef void (*vFiuip_t)(int32_t, uint32_t, int32_t, void*);
+typedef void (*vFiuuu_t)(int32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFiupu_t)(int32_t, uint32_t, void*, uint32_t);
+typedef void (*vFiupV_t)(int32_t, uint32_t, void*, void*);
+typedef void (*vFifff_t)(int32_t, float, float, float);
+typedef void (*vFiddd_t)(int32_t, double, double, double);
+typedef void (*vFipup_t)(int32_t, void*, uint32_t, void*);
+typedef void (*vFippp_t)(int32_t, void*, void*, void*);
+typedef void (*vFuiii_t)(uint32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiip_t)(uint32_t, int32_t, int32_t, void*);
+typedef void (*vFuiui_t)(uint32_t, int32_t, uint32_t, int32_t);
+typedef void (*vFuiuu_t)(uint32_t, int32_t, uint32_t, uint32_t);
+typedef void (*vFuiup_t)(uint32_t, int32_t, uint32_t, void*);
+typedef void (*vFuifi_t)(uint32_t, int32_t, float, int32_t);
+typedef void (*vFuiff_t)(uint32_t, int32_t, float, float);
+typedef void (*vFuidd_t)(uint32_t, int32_t, double, double);
+typedef void (*vFuipi_t)(uint32_t, int32_t, void*, int32_t);
+typedef void (*vFuipu_t)(uint32_t, int32_t, void*, uint32_t);
+typedef void (*vFuipp_t)(uint32_t, int32_t, void*, void*);
+typedef void (*vFuuii_t)(uint32_t, uint32_t, int32_t, int32_t);
+typedef void (*vFuuiu_t)(uint32_t, uint32_t, int32_t, uint32_t);
+typedef void (*vFuuip_t)(uint32_t, uint32_t, int32_t, void*);
+typedef void (*vFuuui_t)(uint32_t, uint32_t, uint32_t, int32_t);
+typedef void (*vFuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuuuf_t)(uint32_t, uint32_t, uint32_t, float);
+typedef void (*vFuuud_t)(uint32_t, uint32_t, uint32_t, double);
+typedef void (*vFuuup_t)(uint32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuupi_t)(uint32_t, uint32_t, void*, int32_t);
+typedef void (*vFuupp_t)(uint32_t, uint32_t, void*, void*);
+typedef void (*vFufff_t)(uint32_t, float, float, float);
+typedef void (*vFuddd_t)(uint32_t, double, double, double);
+typedef void (*vFupii_t)(uint32_t, void*, int32_t, int32_t);
+typedef void (*vFuppi_t)(uint32_t, void*, void*, int32_t);
+typedef void (*vFffff_t)(float, float, float, float);
+typedef void (*vFdddd_t)(double, double, double, double);
+typedef void (*vFpiii_t)(void*, int32_t, int32_t, int32_t);
+typedef void (*vFpiip_t)(void*, int32_t, int32_t, void*);
+typedef void (*vFpipp_t)(void*, int32_t, void*, void*);
+typedef void (*vFpdii_t)(void*, double, int32_t, int32_t);
+typedef void (*vFpddd_t)(void*, double, double, double);
+typedef void (*vFppip_t)(void*, void*, int32_t, void*);
+typedef void (*vFppui_t)(void*, void*, uint32_t, int32_t);
+typedef void (*vFpppp_t)(void*, void*, void*, void*);
+typedef int8_t (*cFpiii_t)(void*, int32_t, int32_t, int32_t);
 typedef int32_t (*iFEupp_t)(x64emu_t*, uint32_t, void*, void*);
 typedef int32_t (*iFEpip_t)(x64emu_t*, void*, int32_t, void*);
+typedef int32_t (*iFEppi_t)(x64emu_t*, void*, void*, int32_t);
 typedef int32_t (*iFEppp_t)(x64emu_t*, void*, void*, void*);
+typedef int32_t (*iFiiiu_t)(int32_t, int32_t, int32_t, uint32_t);
+typedef int32_t (*iFippp_t)(int32_t, void*, void*, void*);
 typedef int32_t (*iFuipp_t)(uint32_t, int32_t, void*, void*);
+typedef int32_t (*iFuuff_t)(uint32_t, uint32_t, float, float);
+typedef int32_t (*iFuppp_t)(uint32_t, void*, void*, void*);
+typedef int32_t (*iFpiiu_t)(void*, int32_t, int32_t, uint32_t);
+typedef int32_t (*iFpiip_t)(void*, int32_t, int32_t, void*);
+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);
+typedef int32_t (*iFpuup_t)(void*, uint32_t, uint32_t, void*);
+typedef int32_t (*iFpupV_t)(void*, uint32_t, void*, void*);
+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 (*iFppip_t)(void*, void*, int32_t, void*);
+typedef int32_t (*iFpppi_t)(void*, void*, void*, int32_t);
+typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
+typedef int64_t (*IFEpIi_t)(x64emu_t*, void*, int64_t, int32_t);
+typedef uint32_t (*uFuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t);
+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 (*uFpppi_t)(void*, void*, void*, int32_t);
 typedef uintptr_t (*LFpLLp_t)(void*, uintptr_t, uintptr_t, void*);
+typedef void* (*pFEupp_t)(x64emu_t*, uint32_t, void*, void*);
 typedef void* (*pFEppi_t)(x64emu_t*, void*, void*, int32_t);
 typedef void* (*pFEppp_t)(x64emu_t*, void*, void*, void*);
+typedef void* (*pFiiiu_t)(int32_t, int32_t, int32_t, uint32_t);
+typedef void* (*pFiiup_t)(int32_t, int32_t, uint32_t, void*);
+typedef void* (*pFuiii_t)(uint32_t, int32_t, int32_t, int32_t);
+typedef void* (*pFpiii_t)(void*, int32_t, int32_t, int32_t);
+typedef void* (*pFpipp_t)(void*, int32_t, void*, void*);
+typedef void* (*pFpuii_t)(void*, uint32_t, int32_t, int32_t);
 typedef void* (*pFppiL_t)(void*, void*, int32_t, uintptr_t);
 typedef void* (*pFppuL_t)(void*, void*, uint32_t, uintptr_t);
+typedef void* (*pFppLL_t)(void*, void*, uintptr_t, uintptr_t);
+typedef void* (*pFpppi_t)(void*, void*, void*, int32_t);
+typedef void* (*pFpppu_t)(void*, void*, void*, uint32_t);
+typedef void* (*pFpppL_t)(void*, void*, void*, uintptr_t);
+typedef void* (*pFpppp_t)(void*, void*, void*, void*);
+typedef void (*vFEpuup_t)(x64emu_t*, void*, uint32_t, uint32_t, void*);
+typedef void (*vFiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFiiiiu_t)(int32_t, int32_t, int32_t, int32_t, uint32_t);
+typedef void (*vFiiuup_t)(int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFiipii_t)(int32_t, int32_t, void*, int32_t, int32_t);
+typedef void (*vFiuiip_t)(int32_t, uint32_t, int32_t, int32_t, void*);
+typedef void (*vFiuipi_t)(int32_t, uint32_t, int32_t, void*, int32_t);
+typedef void (*vFiuuuu_t)(int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFiffff_t)(int32_t, float, float, float, float);
+typedef void (*vFidddd_t)(int32_t, double, double, double, double);
+typedef void (*vFilill_t)(int32_t, intptr_t, int32_t, intptr_t, intptr_t);
+typedef void (*vFipipu_t)(int32_t, void*, int32_t, void*, uint32_t);
+typedef void (*vFipipp_t)(int32_t, void*, int32_t, void*, void*);
+typedef void (*vFipupi_t)(int32_t, void*, uint32_t, void*, int32_t);
+typedef void (*vFuiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiiiu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t);
+typedef void (*vFuiiip_t)(uint32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuiiup_t)(uint32_t, int32_t, int32_t, uint32_t, void*);
+typedef void (*vFuiIII_t)(uint32_t, int32_t, int64_t, int64_t, int64_t);
+typedef void (*vFuiuii_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t);
+typedef void (*vFuiuiu_t)(uint32_t, int32_t, uint32_t, int32_t, uint32_t);
+typedef void (*vFuiuip_t)(uint32_t, int32_t, uint32_t, int32_t, void*);
+typedef void (*vFuiuuu_t)(uint32_t, int32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuiuup_t)(uint32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiupi_t)(uint32_t, int32_t, uint32_t, void*, int32_t);
+typedef void (*vFuiupu_t)(uint32_t, int32_t, uint32_t, void*, uint32_t);
+typedef void (*vFuifff_t)(uint32_t, int32_t, float, float, float);
+typedef void (*vFuiddd_t)(uint32_t, int32_t, double, double, double);
+typedef void (*vFuipii_t)(uint32_t, int32_t, void*, int32_t, int32_t);
+typedef void (*vFuipip_t)(uint32_t, int32_t, void*, int32_t, void*);
+typedef void (*vFuipup_t)(uint32_t, int32_t, void*, uint32_t, void*);
+typedef void (*vFuippp_t)(uint32_t, int32_t, void*, void*, void*);
+typedef void (*vFuuiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiui_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t);
+typedef void (*vFuuiuu_t)(uint32_t, uint32_t, int32_t, uint32_t, uint32_t);
+typedef void (*vFuuiup_t)(uint32_t, uint32_t, int32_t, uint32_t, void*);
+typedef void (*vFuuipi_t)(uint32_t, uint32_t, int32_t, void*, int32_t);
+typedef void (*vFuuipu_t)(uint32_t, uint32_t, int32_t, void*, uint32_t);
+typedef void (*vFuuipp_t)(uint32_t, uint32_t, int32_t, void*, void*);
+typedef void (*vFuuuii_t)(uint32_t, uint32_t, uint32_t, int32_t, int32_t);
+typedef void (*vFuuuiu_t)(uint32_t, uint32_t, uint32_t, int32_t, uint32_t);
+typedef void (*vFuuuip_t)(uint32_t, uint32_t, uint32_t, int32_t, void*);
+typedef void (*vFuuuui_t)(uint32_t, uint32_t, uint32_t, uint32_t, int32_t);
+typedef void (*vFuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuuuup_t)(uint32_t, uint32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuupii_t)(uint32_t, uint32_t, void*, int32_t, int32_t);
+typedef void (*vFuffff_t)(uint32_t, float, float, float, float);
+typedef void (*vFudddd_t)(uint32_t, double, double, double, double);
+typedef void (*vFupupi_t)(uint32_t, void*, uint32_t, void*, int32_t);
+typedef void (*vFuppip_t)(uint32_t, void*, void*, int32_t, void*);
+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 (*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 (*vFppWui_t)(void*, void*, uint16_t, uint32_t, int32_t);
+typedef void (*vFpppii_t)(void*, void*, void*, int32_t, int32_t);
+typedef void (*vFppppp_t)(void*, void*, void*, void*, void*);
 typedef int32_t (*iFEppiV_t)(x64emu_t*, void*, void*, int32_t, void*);
 typedef int32_t (*iFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
+typedef int32_t (*iFiiupp_t)(int32_t, int32_t, uint32_t, void*, void*);
 typedef int32_t (*iFipppi_t)(int32_t, void*, void*, void*, int32_t);
+typedef int32_t (*iFpiiii_t)(void*, int32_t, int32_t, int32_t, int32_t);
+typedef int32_t (*iFpiiip_t)(void*, int32_t, int32_t, int32_t, void*);
+typedef int32_t (*iFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t);
+typedef int32_t (*iFpipii_t)(void*, int32_t, void*, int32_t, 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 (*iFppipi_t)(void*, void*, int32_t, void*, int32_t);
+typedef int32_t (*iFppupi_t)(void*, void*, uint32_t, void*, int32_t);
+typedef int32_t (*iFppppp_t)(void*, void*, void*, void*, void*);
+typedef int64_t (*IFppIII_t)(void*, void*, int64_t, int64_t, int64_t);
+typedef uint32_t (*uFEppuu_t)(x64emu_t*, void*, void*, uint32_t, uint32_t);
+typedef uint32_t (*uFiuuuu_t)(int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef uint32_t (*uFuiiiu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t);
+typedef uint32_t (*uFpCCCC_t)(void*, uint8_t, uint8_t, uint8_t, uint8_t);
+typedef uint32_t (*uFpuuuu_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef uint32_t (*uFppppp_t)(void*, void*, void*, void*, void*);
+typedef uintptr_t (*LFppppp_t)(void*, void*, void*, void*, void*);
+typedef void* (*pFuiiiu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t);
+typedef void* (*pFuiipp_t)(uint32_t, int32_t, int32_t, void*, void*);
+typedef void* (*pFpuiii_t)(void*, uint32_t, int32_t, int32_t, int32_t);
+typedef void* (*pFppipi_t)(void*, void*, int32_t, void*, int32_t);
+typedef void* (*pFppuup_t)(void*, void*, uint32_t, uint32_t, void*);
+typedef void* (*pFpppip_t)(void*, void*, void*, int32_t, void*);
+typedef void (*vFEiiipp_t)(x64emu_t*, int32_t, int32_t, int32_t, void*, void*);
+typedef void (*vFiiiiii_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFiiiuil_t)(int32_t, int32_t, int32_t, uint32_t, int32_t, intptr_t);
+typedef void (*vFiuippp_t)(int32_t, uint32_t, int32_t, void*, void*, void*);
+typedef void (*vFiffiff_t)(int32_t, float, float, int32_t, float, float);
+typedef void (*vFiddidd_t)(int32_t, double, double, int32_t, double, double);
+typedef void (*vFuiiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiiiip_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuiiuii_t)(uint32_t, int32_t, int32_t, uint32_t, int32_t, int32_t);
+typedef void (*vFuiiuup_t)(uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiuiii_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiuiip_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, void*);
+typedef void (*vFuiuiuu_t)(uint32_t, int32_t, uint32_t, int32_t, uint32_t, uint32_t);
+typedef void (*vFuiuuip_t)(uint32_t, int32_t, uint32_t, uint32_t, int32_t, void*);
+typedef void (*vFuiuuuu_t)(uint32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuiupii_t)(uint32_t, int32_t, uint32_t, void*, int32_t, int32_t);
+typedef void (*vFuiupiu_t)(uint32_t, int32_t, uint32_t, void*, int32_t, uint32_t);
+typedef void (*vFuiffff_t)(uint32_t, int32_t, float, float, float, float);
+typedef void (*vFuidddd_t)(uint32_t, int32_t, double, double, double, double);
+typedef void (*vFuipiup_t)(uint32_t, int32_t, void*, int32_t, uint32_t, void*);
+typedef void (*vFuuiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiuii_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t);
+typedef void (*vFuuiuiu_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, uint32_t);
+typedef void (*vFuuiuup_t)(uint32_t, uint32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuippp_t)(uint32_t, uint32_t, int32_t, void*, void*, void*);
+typedef void (*vFuuuiup_t)(uint32_t, uint32_t, uint32_t, int32_t, uint32_t, void*);
+typedef void (*vFuuuipi_t)(uint32_t, uint32_t, uint32_t, int32_t, void*, int32_t);
+typedef void (*vFuuuipp_t)(uint32_t, uint32_t, uint32_t, int32_t, void*, void*);
+typedef void (*vFuuuuii_t)(uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t);
+typedef void (*vFuuuuip_t)(uint32_t, uint32_t, uint32_t, uint32_t, int32_t, void*);
+typedef void (*vFuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuuuuff_t)(uint32_t, uint32_t, uint32_t, uint32_t, float, float);
+typedef void (*vFuuuppi_t)(uint32_t, uint32_t, uint32_t, void*, void*, int32_t);
+typedef void (*vFuuuppp_t)(uint32_t, uint32_t, uint32_t, void*, void*, void*);
+typedef void (*vFuuffff_t)(uint32_t, uint32_t, float, float, float, float);
+typedef void (*vFuudddd_t)(uint32_t, uint32_t, double, double, double, double);
+typedef void (*vFuffiip_t)(uint32_t, float, float, int32_t, int32_t, void*);
+typedef void (*vFufffff_t)(uint32_t, float, float, float, float, float);
+typedef void (*vFuddiip_t)(uint32_t, double, double, int32_t, int32_t, void*);
+typedef void (*vFupupip_t)(uint32_t, void*, uint32_t, void*, int32_t, void*);
+typedef void (*vFuppppp_t)(uint32_t, void*, void*, void*, void*, void*);
+typedef void (*vFffffff_t)(float, float, float, float, float, float);
+typedef void (*vFdddddd_t)(double, double, double, double, double, double);
+typedef void (*vFpdddii_t)(void*, double, double, double, int32_t, int32_t);
+typedef void (*vFppiiii_t)(void*, void*, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFppupii_t)(void*, void*, uint32_t, void*, int32_t, int32_t);
+typedef void (*vFpppppp_t)(void*, void*, void*, void*, void*, void*);
+typedef int32_t (*iFEpippi_t)(x64emu_t*, void*, int32_t, void*, void*, int32_t);
+typedef int32_t (*iFEpupVV_t)(x64emu_t*, void*, uint32_t, 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*);
+typedef int32_t (*iFuppppp_t)(uint32_t, void*, void*, void*, void*, void*);
+typedef int32_t (*iFpiiipp_t)(void*, int32_t, int32_t, int32_t, void*, void*);
+typedef int32_t (*iFppIppp_t)(void*, void*, int64_t, void*, void*, void*);
+typedef void* (*pFEpippp_t)(x64emu_t*, void*, int32_t, void*, void*, void*);
+typedef void* (*pFiCiiCi_t)(int32_t, uint8_t, int32_t, int32_t, uint8_t, int32_t);
+typedef void* (*pFpiiiiu_t)(void*, int32_t, int32_t, int32_t, int32_t, uint32_t);
+typedef void* (*pFpippip_t)(void*, int32_t, void*, void*, int32_t, void*);
+typedef void* (*pFpuuuuu_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void* (*pFppiiii_t)(void*, void*, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFiiiiuup_t)(int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFiiupuip_t)(int32_t, int32_t, uint32_t, void*, uint32_t, int32_t, void*);
+typedef void (*vFiiffffp_t)(int32_t, int32_t, float, float, float, float, void*);
+typedef void (*vFiupuuup_t)(int32_t, uint32_t, void*, uint32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiiiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiiiuip_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, void*);
+typedef void (*vFuiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiuiiii_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiuiiip_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuiuiiuu_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t);
+typedef void (*vFuiupiiu_t)(uint32_t, int32_t, uint32_t, void*, int32_t, int32_t, uint32_t);
+typedef void (*vFuipiiii_t)(uint32_t, int32_t, void*, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuipffff_t)(uint32_t, int32_t, void*, float, float, float, float);
+typedef void (*vFuipdddd_t)(uint32_t, int32_t, void*, double, double, double, double);
+typedef void (*vFuuiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiiiip_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuiiiui_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, uint32_t, int32_t);
+typedef void (*vFuuiiiuu_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t);
+typedef void (*vFuuiiuup_t)(uint32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuiuiii_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuipppp_t)(uint32_t, uint32_t, int32_t, void*, void*, void*, void*);
+typedef void (*vFuuuiiii_t)(uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuuiiip_t)(uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuuiuii_t)(uint32_t, uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t);
+typedef void (*vFuuuiupi_t)(uint32_t, uint32_t, uint32_t, int32_t, uint32_t, void*, int32_t);
+typedef void (*vFuuuuiip_t)(uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, void*);
+typedef void (*vFuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuuuufff_t)(uint32_t, uint32_t, uint32_t, uint32_t, float, float, float);
+typedef void (*vFuuuffff_t)(uint32_t, uint32_t, uint32_t, float, float, float, float);
+typedef void (*vFuuudddd_t)(uint32_t, uint32_t, uint32_t, double, double, double, double);
+typedef void (*vFuuffiip_t)(uint32_t, uint32_t, float, float, int32_t, int32_t, void*);
+typedef void (*vFuuddiip_t)(uint32_t, uint32_t, double, double, int32_t, int32_t, void*);
+typedef void (*vFuffffff_t)(uint32_t, float, float, float, float, float, float);
+typedef void (*vFudddddd_t)(uint32_t, double, double, double, double, double, double);
+typedef void (*vFpipipii_t)(void*, int32_t, void*, int32_t, void*, int32_t, int32_t);
+typedef void (*vFpddiidd_t)(void*, double, double, int32_t, int32_t, double, double);
+typedef int32_t (*iFiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef int32_t (*iFpuuiuui_t)(void*, uint32_t, uint32_t, int32_t, uint32_t, uint32_t, int32_t);
+typedef int32_t (*iFppppdpi_t)(void*, void*, void*, void*, double, void*, int32_t);
+typedef int32_t (*iFppppppp_t)(void*, void*, void*, void*, void*, void*, void*);
+typedef uint32_t (*uFuippppp_t)(uint32_t, int32_t, void*, void*, void*, void*, void*);
+typedef void (*vFiiiiuuip_t)(int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, void*);
+typedef void (*vFiupuiuup_t)(int32_t, uint32_t, void*, uint32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFiupuuuup_t)(int32_t, uint32_t, void*, uint32_t, uint32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiiiiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiiipiup_t)(uint32_t, int32_t, int32_t, int32_t, void*, int32_t, uint32_t, void*);
+typedef void (*vFuiuiiiii_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiuiiiip_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuiiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiiiuip_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, void*);
+typedef void (*vFuuiiiuup_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuiiuupp_t)(uint32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*, void*);
+typedef void (*vFuuiuiiii_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiuiiip_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuuiiiii_t)(uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuuiuiii_t)(uint32_t, uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuuipipp_t)(uint32_t, uint32_t, uint32_t, int32_t, void*, int32_t, void*, void*);
+typedef void (*vFuuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuuuuufff_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, float, float, float);
+typedef void (*vFffffffff_t)(float, float, float, float, float, float, float, float);
 typedef int32_t (*iFEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, 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*);
+typedef int32_t (*iFpupppppp_t)(void*, uint32_t, void*, void*, void*, void*, void*, void*);
+typedef int32_t (*iFppIIIppp_t)(void*, void*, int64_t, int64_t, int64_t, void*, void*, void*);
+typedef int32_t (*iFpppipipi_t)(void*, void*, void*, int32_t, void*, int32_t, void*, int32_t);
+typedef uint32_t (*uFuipppppp_t)(uint32_t, int32_t, void*, void*, void*, void*, void*, void*);
+typedef void* (*pFuiiiuuuu_t)(uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuiiiiiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiiiiiuip_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, void*);
+typedef void (*vFuiiiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiuiiiiip_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuiupuffup_t)(uint32_t, int32_t, uint32_t, void*, uint32_t, float, float, uint32_t, void*);
+typedef void (*vFuuiiiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiuiiiii_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiuiiiip_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuiuiiuup_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuuiiiiip_t)(uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuupiuiuuf_t)(uint32_t, uint32_t, void*, int32_t, uint32_t, int32_t, uint32_t, uint32_t, float);
+typedef void (*vFuffffffff_t)(uint32_t, float, float, float, float, float, float, float, float);
+typedef void (*vFffuuuufff_t)(float, float, uint32_t, uint32_t, uint32_t, uint32_t, float, float, float);
+typedef void (*vFddddddddd_t)(double, double, double, double, double, double, double, double, double);
+typedef int32_t (*iFiiiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef int32_t (*iFiiiipiiip_t)(int32_t, int32_t, int32_t, int32_t, void*, int32_t, int32_t, int32_t, void*);
+typedef int32_t (*iFdddpppppp_t)(double, double, double, void*, void*, void*, void*, void*, void*);
+typedef void* (*pFpiiiiuuuu_t)(void*, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFiiiiiiiiiu_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t);
+typedef void (*vFuiiiiiiiii_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuiiiiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiuiiiiuup_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuiiiiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuiiiiiuip_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, void*);
+typedef void (*vFuuiiiiiuup_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuiuiiiiip_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuiuiiiuup_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuuuuuuiii_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t);
+typedef void (*vFuuuuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuupiiupuuf_t)(uint32_t, uint32_t, void*, int32_t, int32_t, uint32_t, void*, uint32_t, uint32_t, float);
+typedef void (*vFuffiiffiip_t)(uint32_t, float, float, int32_t, int32_t, float, float, int32_t, int32_t, void*);
+typedef void (*vFuddiiddiip_t)(uint32_t, double, double, int32_t, int32_t, double, double, int32_t, int32_t, void*);
+typedef void (*vFffffffffff_t)(float, float, float, float, float, float, float, float, float, float);
+typedef int32_t (*iFiiiiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuiiiiiiiiip_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuiiiiiiiuip_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, void*);
+typedef void (*vFuiiiiiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuiuiiiiiuup_t)(uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuiuiiiiuup_t)(uint32_t, uint32_t, int32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuuuuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuuffiiffiip_t)(uint32_t, uint32_t, float, float, int32_t, int32_t, float, float, int32_t, int32_t, void*);
+typedef void (*vFuufffffffff_t)(uint32_t, uint32_t, float, float, float, float, float, float, float, float, float);
+typedef void (*vFuuddiiddiip_t)(uint32_t, uint32_t, double, double, int32_t, int32_t, double, double, int32_t, int32_t, void*);
+typedef void (*vFuffffffffff_t)(uint32_t, float, float, float, float, float, float, float, float, float, float);
+typedef void (*vFpipipiipiii_t)(void*, int32_t, void*, int32_t, void*, int32_t, int32_t, void*, int32_t, int32_t, int32_t);
+typedef int32_t (*iFiiiiiiiiiip_t)(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*);
+typedef void (*vFuuiiiiiiiuip_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, int32_t, void*);
+typedef void (*vFuuiiiiiiiuup_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuuuuuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFffffffffffff_t)(float, float, float, float, float, float, float, float, float, float, float, float);
+typedef void (*vFuiiiiiiiiiuup_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
+typedef void (*vFuuuuuuuuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t);
+typedef void (*vFuffffffffffff_t)(uint32_t, float, float, float, float, float, float, float, float, float, float, float, float);
+typedef int32_t (*iFddddpppddpppp_t)(double, double, double, double, void*, void*, void*, double, double, void*, void*, void*, void*);
+typedef void (*vFuffiiffiiffiip_t)(uint32_t, float, float, int32_t, int32_t, float, float, int32_t, int32_t, float, float, int32_t, int32_t, void*);
+typedef void (*vFuddiiddiiddiip_t)(uint32_t, double, double, int32_t, int32_t, double, double, int32_t, int32_t, double, double, int32_t, int32_t, void*);
+typedef void (*vFuuiiiiuuiiiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
+typedef void (*vFfffffffffffffff_t)(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float);
+typedef void (*vFppuiiiiipuiiiiiiii_t)(void*, void*, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 
 #if defined(HAVE_LD80BITS)
 typedef long double (*DFD_t)(long double);
@@ -168,7 +633,13 @@ typedef double (*KFKp_t)(double, void*);
 void vFE(x64emu_t *emu, uintptr_t fcn) { vFE_t fn = (vFE_t)fcn; fn(emu); }
 void vFv(x64emu_t *emu, uintptr_t fcn) { vFv_t fn = (vFv_t)fcn; fn(); }
 void vFi(x64emu_t *emu, uintptr_t fcn) { vFi_t fn = (vFi_t)fcn; fn((int32_t)R_RDI); }
+void vFu(x64emu_t *emu, uintptr_t fcn) { vFu_t fn = (vFu_t)fcn; fn((uint32_t)R_RDI); }
+void vFf(x64emu_t *emu, uintptr_t fcn) { vFf_t fn = (vFf_t)fcn; fn(emu->xmm[0].f[0]); }
+void vFd(x64emu_t *emu, uintptr_t fcn) { vFd_t fn = (vFd_t)fcn; fn(emu->xmm[0].d[0]); }
 void vFp(x64emu_t *emu, uintptr_t fcn) { vFp_t fn = (vFp_t)fcn; fn((void*)R_RDI); }
+void cFi(x64emu_t *emu, uintptr_t fcn) { cFi_t fn = (cFi_t)fcn; R_RAX=fn((int32_t)R_RDI); }
+void cFu(x64emu_t *emu, uintptr_t fcn) { cFu_t fn = (cFu_t)fcn; R_RAX=fn((uint32_t)R_RDI); }
+void cFp(x64emu_t *emu, uintptr_t fcn) { cFp_t fn = (cFp_t)fcn; R_RAX=fn((void*)R_RDI); }
 void iFE(x64emu_t *emu, uintptr_t fcn) { iFE_t fn = (iFE_t)fcn; R_RAX=fn(emu); }
 void iFv(x64emu_t *emu, uintptr_t fcn) { iFv_t fn = (iFv_t)fcn; R_RAX=fn(); }
 void iFi(x64emu_t *emu, uintptr_t fcn) { iFi_t fn = (iFi_t)fcn; R_RAX=fn((int32_t)R_RDI); }
@@ -180,29 +651,75 @@ void iFp(x64emu_t *emu, uintptr_t fcn) { iFp_t fn = (iFp_t)fcn; R_RAX=fn((void*)
 void IFf(x64emu_t *emu, uintptr_t fcn) { IFf_t fn = (IFf_t)fcn; R_RAX=(uint64_t)fn(emu->xmm[0].f[0]); }
 void IFd(x64emu_t *emu, uintptr_t fcn) { IFd_t fn = (IFd_t)fcn; R_RAX=(uint64_t)fn(emu->xmm[0].d[0]); }
 void IFp(x64emu_t *emu, uintptr_t fcn) { IFp_t fn = (IFp_t)fcn; R_RAX=(uint64_t)fn((void*)R_RDI); }
+void WFi(x64emu_t *emu, uintptr_t fcn) { WFi_t fn = (WFi_t)fcn; R_RAX=(unsigned short)fn((int32_t)R_RDI); }
+void WFp(x64emu_t *emu, uintptr_t fcn) { WFp_t fn = (WFp_t)fcn; R_RAX=(unsigned short)fn((void*)R_RDI); }
+void uFv(x64emu_t *emu, uintptr_t fcn) { uFv_t fn = (uFv_t)fcn; R_RAX=(uint32_t)fn(); }
+void uFi(x64emu_t *emu, uintptr_t fcn) { uFi_t fn = (uFi_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI); }
 void uFu(x64emu_t *emu, uintptr_t fcn) { uFu_t fn = (uFu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI); }
 void uFp(x64emu_t *emu, uintptr_t fcn) { uFp_t fn = (uFp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI); }
+void UFv(x64emu_t *emu, uintptr_t fcn) { UFv_t fn = (UFv_t)fcn; R_RAX=fn(); }
 void UFV(x64emu_t *emu, uintptr_t fcn) { UFV_t fn = (UFV_t)fcn; R_RAX=fn((void*)(R_RSP + 8)); }
+void fFi(x64emu_t *emu, uintptr_t fcn) { fFi_t fn = (fFi_t)fcn; emu->xmm[0].f[0]=fn((int32_t)R_RDI); }
 void fFf(x64emu_t *emu, uintptr_t fcn) { fFf_t fn = (fFf_t)fcn; emu->xmm[0].f[0]=fn(emu->xmm[0].f[0]); }
+void fFp(x64emu_t *emu, uintptr_t fcn) { fFp_t fn = (fFp_t)fcn; emu->xmm[0].f[0]=fn((void*)R_RDI); }
+void dFi(x64emu_t *emu, uintptr_t fcn) { dFi_t fn = (dFi_t)fcn; emu->xmm[0].d[0]=fn((int32_t)R_RDI); }
 void dFd(x64emu_t *emu, uintptr_t fcn) { dFd_t fn = (dFd_t)fcn; emu->xmm[0].d[0]=fn(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 lFp(x64emu_t *emu, uintptr_t fcn) { lFp_t fn = (lFp_t)fcn; R_RAX=(intptr_t)fn((void*)R_RDI); }
 void LFv(x64emu_t *emu, uintptr_t fcn) { LFv_t fn = (LFv_t)fcn; R_RAX=(uintptr_t)fn(); }
 void LFp(x64emu_t *emu, uintptr_t fcn) { LFp_t fn = (LFp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); }
 void pFE(x64emu_t *emu, uintptr_t fcn) { pFE_t fn = (pFE_t)fcn; R_RAX=(uintptr_t)fn(emu); }
+void pFv(x64emu_t *emu, uintptr_t fcn) { pFv_t fn = (pFv_t)fcn; R_RAX=(uintptr_t)fn(); }
+void pFi(x64emu_t *emu, uintptr_t fcn) { pFi_t fn = (pFi_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI); }
 void pFu(x64emu_t *emu, uintptr_t fcn) { pFu_t fn = (pFu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI); }
 void pFL(x64emu_t *emu, uintptr_t fcn) { pFL_t fn = (pFL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI); }
 void pFp(x64emu_t *emu, uintptr_t fcn) { pFp_t fn = (pFp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI); }
+void HFi(x64emu_t *emu, uintptr_t fcn) { HFi_t fn = (HFi_t)fcn; unsigned __int128 u128 = fn((int32_t)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
+void HFp(x64emu_t *emu, uintptr_t fcn) { HFp_t fn = (HFp_t)fcn; unsigned __int128 u128 = fn((void*)R_RDI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
 void vFEp(x64emu_t *emu, uintptr_t fcn) { vFEp_t fn = (vFEp_t)fcn; fn(emu, (void*)R_RDI); }
+void vFii(x64emu_t *emu, uintptr_t fcn) { vFii_t fn = (vFii_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI); }
+void vFiu(x64emu_t *emu, uintptr_t fcn) { vFiu_t fn = (vFiu_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI); }
+void vFif(x64emu_t *emu, uintptr_t fcn) { vFif_t fn = (vFif_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].f[0]); }
+void vFid(x64emu_t *emu, uintptr_t fcn) { vFid_t fn = (vFid_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].d[0]); }
+void vFip(x64emu_t *emu, uintptr_t fcn) { vFip_t fn = (vFip_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI); }
+void vFWW(x64emu_t *emu, uintptr_t fcn) { vFWW_t fn = (vFWW_t)fcn; fn((uint16_t)R_RDI, (uint16_t)R_RSI); }
+void vFui(x64emu_t *emu, uintptr_t fcn) { vFui_t fn = (vFui_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI); }
+void vFuu(x64emu_t *emu, uintptr_t fcn) { vFuu_t fn = (vFuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI); }
+void vFuf(x64emu_t *emu, uintptr_t fcn) { vFuf_t fn = (vFuf_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0]); }
+void vFud(x64emu_t *emu, uintptr_t fcn) { vFud_t fn = (vFud_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0]); }
+void vFup(x64emu_t *emu, uintptr_t fcn) { vFup_t fn = (vFup_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI); }
+void vFfi(x64emu_t *emu, uintptr_t fcn) { vFfi_t fn = (vFfi_t)fcn; fn(emu->xmm[0].f[0], (int32_t)R_RDI); }
+void vFff(x64emu_t *emu, uintptr_t fcn) { vFff_t fn = (vFff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0]); }
+void vFfp(x64emu_t *emu, uintptr_t fcn) { vFfp_t fn = (vFfp_t)fcn; fn(emu->xmm[0].f[0], (void*)R_RDI); }
+void vFdd(x64emu_t *emu, uintptr_t fcn) { vFdd_t fn = (vFdd_t)fcn; fn(emu->xmm[0].d[0], emu->xmm[1].d[0]); }
+void vFpi(x64emu_t *emu, uintptr_t fcn) { vFpi_t fn = (vFpi_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI); }
 void vFpp(x64emu_t *emu, uintptr_t fcn) { vFpp_t fn = (vFpp_t)fcn; fn((void*)R_RDI, (void*)R_RSI); }
+void cFpp(x64emu_t *emu, uintptr_t fcn) { cFpp_t fn = (cFpp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI); }
 void iFEp(x64emu_t *emu, uintptr_t fcn) { iFEp_t fn = (iFEp_t)fcn; R_RAX=fn(emu, (void*)R_RDI); }
+void iFii(x64emu_t *emu, uintptr_t fcn) { iFii_t fn = (iFii_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI); }
 void iFip(x64emu_t *emu, uintptr_t fcn) { iFip_t fn = (iFip_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI); }
+void iFIi(x64emu_t *emu, uintptr_t fcn) { iFIi_t fn = (iFIi_t)fcn; R_RAX=fn((int64_t)R_RDI, (int32_t)R_RSI); }
+void iFui(x64emu_t *emu, uintptr_t fcn) { iFui_t fn = (iFui_t)fcn; R_RAX=fn((uint32_t)R_RDI, (int32_t)R_RSI); }
+void iFuu(x64emu_t *emu, uintptr_t fcn) { iFuu_t fn = (iFuu_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uint32_t)R_RSI); }
 void iFup(x64emu_t *emu, uintptr_t fcn) { iFup_t fn = (iFup_t)fcn; R_RAX=fn((uint32_t)R_RDI, (void*)R_RSI); }
+void iFUU(x64emu_t *emu, uintptr_t fcn) { iFUU_t fn = (iFUU_t)fcn; R_RAX=fn((uint64_t)R_RDI, (uint64_t)R_RSI); }
 void iFLL(x64emu_t *emu, uintptr_t fcn) { iFLL_t fn = (iFLL_t)fcn; R_RAX=fn((uintptr_t)R_RDI, (uintptr_t)R_RSI); }
 void iFLp(x64emu_t *emu, uintptr_t fcn) { iFLp_t fn = (iFLp_t)fcn; R_RAX=fn((uintptr_t)R_RDI, (void*)R_RSI); }
 void iFpi(x64emu_t *emu, uintptr_t fcn) { iFpi_t fn = (iFpi_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI); }
+void iFpC(x64emu_t *emu, uintptr_t fcn) { iFpC_t fn = (iFpC_t)fcn; R_RAX=fn((void*)R_RDI, (uint8_t)R_RSI); }
+void iFpu(x64emu_t *emu, uintptr_t fcn) { iFpu_t fn = (iFpu_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI); }
+void iFpf(x64emu_t *emu, uintptr_t fcn) { iFpf_t fn = (iFpf_t)fcn; R_RAX=fn((void*)R_RDI, emu->xmm[0].f[0]); }
 void iFpp(x64emu_t *emu, uintptr_t fcn) { iFpp_t fn = (iFpp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI); }
+void IFEp(x64emu_t *emu, uintptr_t fcn) { IFEp_t fn = (IFEp_t)fcn; R_RAX=(uint64_t)fn(emu, (void*)R_RDI); }
+void CFui(x64emu_t *emu, uintptr_t fcn) { CFui_t fn = (CFui_t)fcn; R_RAX=(unsigned char)fn((uint32_t)R_RDI, (int32_t)R_RSI); }
+void CFpi(x64emu_t *emu, uintptr_t fcn) { CFpi_t fn = (CFpi_t)fcn; R_RAX=(unsigned char)fn((void*)R_RDI, (int32_t)R_RSI); }
+void uFEp(x64emu_t *emu, uintptr_t fcn) { uFEp_t fn = (uFEp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI); }
+void uFui(x64emu_t *emu, uintptr_t fcn) { uFui_t fn = (uFui_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI); }
+void uFuu(x64emu_t *emu, uintptr_t fcn) { uFuu_t fn = (uFuu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI); }
+void uFup(x64emu_t *emu, uintptr_t fcn) { uFup_t fn = (uFup_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (void*)R_RSI); }
+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 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 fFif(x64emu_t *emu, uintptr_t fcn) { fFif_t fn = (fFif_t)fcn; emu->xmm[0].f[0]=fn((int32_t)R_RDI, emu->xmm[0].f[0]); }
 void fFfi(x64emu_t *emu, uintptr_t fcn) { fFfi_t fn = (fFfi_t)fcn; emu->xmm[0].f[0]=fn(emu->xmm[0].f[0], (int32_t)R_RDI); }
 void fFff(x64emu_t *emu, uintptr_t fcn) { fFff_t fn = (fFff_t)fcn; emu->xmm[0].f[0]=fn(emu->xmm[0].f[0], emu->xmm[1].f[0]); }
@@ -211,19 +728,101 @@ void dFid(x64emu_t *emu, uintptr_t fcn) { dFid_t fn = (dFid_t)fcn; emu->xmm[0].d
 void dFdi(x64emu_t *emu, uintptr_t fcn) { dFdi_t fn = (dFdi_t)fcn; emu->xmm[0].d[0]=fn(emu->xmm[0].d[0], (int32_t)R_RDI); }
 void dFdd(x64emu_t *emu, uintptr_t fcn) { dFdd_t fn = (dFdd_t)fcn; emu->xmm[0].d[0]=fn(emu->xmm[0].d[0], emu->xmm[1].d[0]); }
 void dFdp(x64emu_t *emu, uintptr_t fcn) { dFdp_t fn = (dFdp_t)fcn; emu->xmm[0].d[0]=fn(emu->xmm[0].d[0], (void*)R_RDI); }
+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 LFpL(x64emu_t *emu, uintptr_t fcn) { LFpL_t fn = (LFpL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI); }
 void pFEp(x64emu_t *emu, uintptr_t fcn) { pFEp_t fn = (pFEp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI); }
+void pFii(x64emu_t *emu, uintptr_t fcn) { pFii_t fn = (pFii_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (int32_t)R_RSI); }
+void pFui(x64emu_t *emu, uintptr_t fcn) { pFui_t fn = (pFui_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI); }
+void pFuu(x64emu_t *emu, uintptr_t fcn) { pFuu_t fn = (pFuu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI); }
 void pFup(x64emu_t *emu, uintptr_t fcn) { pFup_t fn = (pFup_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (void*)R_RSI); }
+void pFlp(x64emu_t *emu, uintptr_t fcn) { pFlp_t fn = (pFlp_t)fcn; R_RAX=(uintptr_t)fn((intptr_t)R_RDI, (void*)R_RSI); }
 void pFLL(x64emu_t *emu, uintptr_t fcn) { pFLL_t fn = (pFLL_t)fcn; R_RAX=(uintptr_t)fn((uintptr_t)R_RDI, (uintptr_t)R_RSI); }
+void pFpi(x64emu_t *emu, uintptr_t fcn) { pFpi_t fn = (pFpi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI); }
+void pFpu(x64emu_t *emu, uintptr_t fcn) { pFpu_t fn = (pFpu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI); }
+void pFpL(x64emu_t *emu, uintptr_t fcn) { pFpL_t fn = (pFpL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI); }
+void pFpp(x64emu_t *emu, uintptr_t fcn) { pFpp_t fn = (pFpp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI); }
 void pFpV(x64emu_t *emu, uintptr_t fcn) { pFpV_t fn = (pFpV_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)(R_RSP + 8)); }
+void HFpi(x64emu_t *emu, uintptr_t fcn) { HFpi_t fn = (HFpi_t)fcn; unsigned __int128 u128 = fn((void*)R_RDI, (int32_t)R_RSI); R_RAX=(u128&0xFFFFFFFFFFFFFFFFL); R_RDX=(u128>>64)&0xFFFFFFFFFFFFFFFFL; }
 void vFEpu(x64emu_t *emu, uintptr_t fcn) { vFEpu_t fn = (vFEpu_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI); }
+void vFEpp(x64emu_t *emu, uintptr_t fcn) { vFEpp_t fn = (vFEpp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI); }
+void vFEpV(x64emu_t *emu, uintptr_t fcn) { vFEpV_t fn = (vFEpV_t)fcn; fn(emu, (void*)R_RDI, (void*)(R_RSP + 8)); }
+void vFiii(x64emu_t *emu, uintptr_t fcn) { vFiii_t fn = (vFiii_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
+void vFiip(x64emu_t *emu, uintptr_t fcn) { vFiip_t fn = (vFiip_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void vFiui(x64emu_t *emu, uintptr_t fcn) { vFiui_t fn = (vFiui_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX); }
+void vFiuu(x64emu_t *emu, uintptr_t fcn) { vFiuu_t fn = (vFiuu_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
+void vFiup(x64emu_t *emu, uintptr_t fcn) { vFiup_t fn = (vFiup_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+void vFiff(x64emu_t *emu, uintptr_t fcn) { vFiff_t fn = (vFiff_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
+void vFidd(x64emu_t *emu, uintptr_t fcn) { vFidd_t fn = (vFidd_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
+void vFipi(x64emu_t *emu, uintptr_t fcn) { vFipi_t fn = (vFipi_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void vFipu(x64emu_t *emu, uintptr_t fcn) { vFipu_t fn = (vFipu_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void vFipp(x64emu_t *emu, uintptr_t fcn) { vFipp_t fn = (vFipp_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void vFuii(x64emu_t *emu, uintptr_t fcn) { vFuii_t fn = (vFuii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
+void vFuiI(x64emu_t *emu, uintptr_t fcn) { vFuiI_t fn = (vFuiI_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int64_t)R_RDX); }
+void vFuiu(x64emu_t *emu, uintptr_t fcn) { vFuiu_t fn = (vFuiu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
+void vFuif(x64emu_t *emu, uintptr_t fcn) { vFuif_t fn = (vFuif_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].f[0]); }
+void vFuid(x64emu_t *emu, uintptr_t fcn) { vFuid_t fn = (vFuid_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].d[0]); }
+void vFuip(x64emu_t *emu, uintptr_t fcn) { vFuip_t fn = (vFuip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void vFuui(x64emu_t *emu, uintptr_t fcn) { vFuui_t fn = (vFuui_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX); }
+void vFuuu(x64emu_t *emu, uintptr_t fcn) { vFuuu_t fn = (vFuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
+void vFuuf(x64emu_t *emu, uintptr_t fcn) { vFuuf_t fn = (vFuuf_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].f[0]); }
+void vFuud(x64emu_t *emu, uintptr_t fcn) { vFuud_t fn = (vFuud_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].d[0]); }
+void vFuup(x64emu_t *emu, uintptr_t fcn) { vFuup_t fn = (vFuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+void vFuff(x64emu_t *emu, uintptr_t fcn) { vFuff_t fn = (vFuff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
+void vFudd(x64emu_t *emu, uintptr_t fcn) { vFudd_t fn = (vFudd_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
+void vFupi(x64emu_t *emu, uintptr_t fcn) { vFupi_t fn = (vFupi_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void vFfff(x64emu_t *emu, uintptr_t fcn) { vFfff_t fn = (vFfff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
 void vFfpp(x64emu_t *emu, uintptr_t fcn) { vFfpp_t fn = (vFfpp_t)fcn; fn(emu->xmm[0].f[0], (void*)R_RDI, (void*)R_RSI); }
+void vFddd(x64emu_t *emu, uintptr_t fcn) { vFddd_t fn = (vFddd_t)fcn; fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
 void vFdpp(x64emu_t *emu, uintptr_t fcn) { vFdpp_t fn = (vFdpp_t)fcn; fn(emu->xmm[0].d[0], (void*)R_RDI, (void*)R_RSI); }
+void vFpii(x64emu_t *emu, uintptr_t fcn) { vFpii_t fn = (vFpii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
+void vFpiu(x64emu_t *emu, uintptr_t fcn) { vFpiu_t fn = (vFpiu_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
+void vFpif(x64emu_t *emu, uintptr_t fcn) { vFpif_t fn = (vFpif_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, emu->xmm[0].f[0]); }
+void vFpid(x64emu_t *emu, uintptr_t fcn) { vFpid_t fn = (vFpid_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, emu->xmm[0].d[0]); }
+void vFpip(x64emu_t *emu, uintptr_t fcn) { vFpip_t fn = (vFpip_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (void*)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); }
+void vFppu(x64emu_t *emu, uintptr_t fcn) { vFppu_t fn = (vFppu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void vFppp(x64emu_t *emu, uintptr_t fcn) { vFppp_t fn = (vFppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void iFEip(x64emu_t *emu, uintptr_t fcn) { iFEip_t fn = (iFEip_t)fcn; R_RAX=fn(emu, (int32_t)R_RDI, (void*)R_RSI); }
+void iFEWW(x64emu_t *emu, uintptr_t fcn) { iFEWW_t fn = (iFEWW_t)fcn; R_RAX=fn(emu, (uint16_t)R_RDI, (uint16_t)R_RSI); }
+void iFEup(x64emu_t *emu, uintptr_t fcn) { iFEup_t fn = (iFEup_t)fcn; R_RAX=fn(emu, (uint32_t)R_RDI, (void*)R_RSI); }
 void iFEpi(x64emu_t *emu, uintptr_t fcn) { iFEpi_t fn = (iFEpi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI); }
 void iFEpp(x64emu_t *emu, uintptr_t fcn) { iFEpp_t fn = (iFEpp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI); }
 void iFEpV(x64emu_t *emu, uintptr_t fcn) { iFEpV_t fn = (iFEpV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)(R_RSP + 8)); }
+void iFiip(x64emu_t *emu, uintptr_t fcn) { iFiip_t fn = (iFiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void iFipu(x64emu_t *emu, uintptr_t fcn) { iFipu_t fn = (iFipu_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void iFipp(x64emu_t *emu, uintptr_t fcn) { iFipp_t fn = (iFipp_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void iFuup(x64emu_t *emu, uintptr_t fcn) { iFuup_t fn = (iFuup_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+void iFuff(x64emu_t *emu, uintptr_t fcn) { iFuff_t fn = (iFuff_t)fcn; R_RAX=fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
+void iFfff(x64emu_t *emu, uintptr_t fcn) { iFfff_t fn = (iFfff_t)fcn; R_RAX=fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
+void iFpii(x64emu_t *emu, uintptr_t fcn) { iFpii_t fn = (iFpii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
 void iFpiu(x64emu_t *emu, uintptr_t fcn) { iFpiu_t fn = (iFpiu_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
+void iFpip(x64emu_t *emu, uintptr_t fcn) { iFpip_t fn = (iFpip_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void iFpuu(x64emu_t *emu, uintptr_t fcn) { iFpuu_t fn = (iFpuu_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
 void iFpuL(x64emu_t *emu, uintptr_t fcn) { iFpuL_t fn = (iFpuL_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uintptr_t)R_RDX); }
+void iFpup(x64emu_t *emu, uintptr_t fcn) { iFpup_t fn = (iFpup_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+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 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 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 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); }
+void iFppp(x64emu_t *emu, uintptr_t fcn) { iFppp_t fn = (iFppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void iFppV(x64emu_t *emu, uintptr_t fcn) { iFppV_t fn = (iFppV_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); }
+void IFpIi(x64emu_t *emu, uintptr_t fcn) { IFpIi_t fn = (IFpIi_t)fcn; R_RAX=(uint64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int32_t)R_RDX); }
+void IFppi(x64emu_t *emu, uintptr_t fcn) { IFppi_t fn = (IFppi_t)fcn; R_RAX=(uint64_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void uFEpW(x64emu_t *emu, uintptr_t fcn) { uFEpW_t fn = (uFEpW_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint16_t)R_RSI); }
+void uFEpu(x64emu_t *emu, uintptr_t fcn) { uFEpu_t fn = (uFEpu_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI); }
+void uFEpU(x64emu_t *emu, uintptr_t fcn) { uFEpU_t fn = (uFEpU_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI); }
+void uFipu(x64emu_t *emu, uintptr_t fcn) { uFipu_t fn = (uFipu_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void uFuip(x64emu_t *emu, uintptr_t fcn) { uFuip_t fn = (uFuip_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void uFuuu(x64emu_t *emu, uintptr_t fcn) { uFuuu_t fn = (uFuuu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
+void uFuup(x64emu_t *emu, uintptr_t fcn) { uFuup_t fn = (uFuup_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+void uFupu(x64emu_t *emu, uintptr_t fcn) { uFupu_t fn = (uFupu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void uFupp(x64emu_t *emu, uintptr_t fcn) { uFupp_t fn = (uFupp_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void uFpiu(x64emu_t *emu, uintptr_t fcn) { uFpiu_t fn = (uFpiu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
+void uFppi(x64emu_t *emu, uintptr_t fcn) { uFppi_t fn = (uFppi_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void uFppu(x64emu_t *emu, uintptr_t fcn) { uFppu_t fn = (uFppu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
+void UFppi(x64emu_t *emu, uintptr_t fcn) { UFppi_t fn = (UFppi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void fFuii(x64emu_t *emu, uintptr_t fcn) { fFuii_t fn = (fFuii_t)fcn; emu->xmm[0].f[0]=fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
 void fFfff(x64emu_t *emu, uintptr_t fcn) { fFfff_t fn = (fFfff_t)fcn; emu->xmm[0].f[0]=fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
 void fFffp(x64emu_t *emu, uintptr_t fcn) { fFffp_t fn = (fFffp_t)fcn; emu->xmm[0].f[0]=fn(emu->xmm[0].f[0], emu->xmm[1].f[0], (void*)R_RDI); }
 void dFddd(x64emu_t *emu, uintptr_t fcn) { dFddd_t fn = (dFddd_t)fcn; emu->xmm[0].d[0]=fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
@@ -231,23 +830,392 @@ void dFddp(x64emu_t *emu, uintptr_t fcn) { dFddp_t fn = (dFddp_t)fcn; emu->xmm[0
 void pFEip(x64emu_t *emu, uintptr_t fcn) { pFEip_t fn = (pFEip_t)fcn; R_RAX=(uintptr_t)fn(emu, (int32_t)R_RDI, (void*)R_RSI); }
 void pFEpi(x64emu_t *emu, uintptr_t fcn) { pFEpi_t fn = (pFEpi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI); }
 void pFEpp(x64emu_t *emu, uintptr_t fcn) { pFEpp_t fn = (pFEpp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI); }
+void pFipi(x64emu_t *emu, uintptr_t fcn) { pFipi_t fn = (pFipi_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void pFipp(x64emu_t *emu, uintptr_t fcn) { pFipp_t fn = (pFipp_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void pFIpi(x64emu_t *emu, uintptr_t fcn) { pFIpi_t fn = (pFIpi_t)fcn; R_RAX=(uintptr_t)fn((int64_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void pFuii(x64emu_t *emu, uintptr_t fcn) { pFuii_t fn = (pFuii_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
+void pFupi(x64emu_t *emu, uintptr_t fcn) { pFupi_t fn = (pFupi_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void pFUpi(x64emu_t *emu, uintptr_t fcn) { pFUpi_t fn = (pFUpi_t)fcn; R_RAX=(uintptr_t)fn((uint64_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void pFpii(x64emu_t *emu, uintptr_t fcn) { pFpii_t fn = (pFpii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX); }
+void pFpiu(x64emu_t *emu, uintptr_t fcn) { pFpiu_t fn = (pFpiu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX); }
 void pFpiL(x64emu_t *emu, uintptr_t fcn) { pFpiL_t fn = (pFpiL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (uintptr_t)R_RDX); }
+void pFpip(x64emu_t *emu, uintptr_t fcn) { pFpip_t fn = (pFpip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void pFpuu(x64emu_t *emu, uintptr_t fcn) { pFpuu_t fn = (pFpuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX); }
+void pFppi(x64emu_t *emu, uintptr_t fcn) { pFppi_t fn = (pFppi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
+void pFppu(x64emu_t *emu, uintptr_t fcn) { pFppu_t fn = (pFppu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX); }
 void pFppL(x64emu_t *emu, uintptr_t fcn) { pFppL_t fn = (pFppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
+void pFppp(x64emu_t *emu, uintptr_t fcn) { pFppp_t fn = (pFppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void vFEipV(x64emu_t *emu, uintptr_t fcn) { vFEipV_t fn = (vFEipV_t)fcn; fn(emu, (int32_t)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); }
+void vFEpip(x64emu_t *emu, uintptr_t fcn) { vFEpip_t fn = (vFEpip_t)fcn; fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
 void vFEpup(x64emu_t *emu, uintptr_t fcn) { vFEpup_t fn = (vFEpup_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX); }
+void vFiiii(x64emu_t *emu, uintptr_t fcn) { vFiiii_t fn = (vFiiii_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void vFiiip(x64emu_t *emu, uintptr_t fcn) { vFiiip_t fn = (vFiiip_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFiuip(x64emu_t *emu, uintptr_t fcn) { vFiuip_t fn = (vFiuip_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFiuuu(x64emu_t *emu, uintptr_t fcn) { vFiuuu_t fn = (vFiuuu_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
+void vFiupu(x64emu_t *emu, uintptr_t fcn) { vFiupu_t fn = (vFiupu_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
+void vFiupV(x64emu_t *emu, uintptr_t fcn) { vFiupV_t fn = (vFiupV_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
+void vFifff(x64emu_t *emu, uintptr_t fcn) { vFifff_t fn = (vFifff_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
+void vFiddd(x64emu_t *emu, uintptr_t fcn) { vFiddd_t fn = (vFiddd_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
+void vFipup(x64emu_t *emu, uintptr_t fcn) { vFipup_t fn = (vFipup_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void vFippp(x64emu_t *emu, uintptr_t fcn) { vFippp_t fn = (vFippp_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void vFuiii(x64emu_t *emu, uintptr_t fcn) { vFuiii_t fn = (vFuiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void vFuiip(x64emu_t *emu, uintptr_t fcn) { vFuiip_t fn = (vFuiip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFuiui(x64emu_t *emu, uintptr_t fcn) { vFuiui_t fn = (vFuiui_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
+void vFuiuu(x64emu_t *emu, uintptr_t fcn) { vFuiuu_t fn = (vFuiuu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
+void vFuiup(x64emu_t *emu, uintptr_t fcn) { vFuiup_t fn = (vFuiup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void vFuifi(x64emu_t *emu, uintptr_t fcn) { vFuifi_t fn = (vFuifi_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].f[0], (int32_t)R_RDX); }
+void vFuiff(x64emu_t *emu, uintptr_t fcn) { vFuiff_t fn = (vFuiff_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
+void vFuidd(x64emu_t *emu, uintptr_t fcn) { vFuidd_t fn = (vFuidd_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
+void vFuipi(x64emu_t *emu, uintptr_t fcn) { vFuipi_t fn = (vFuipi_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
+void vFuipu(x64emu_t *emu, uintptr_t fcn) { vFuipu_t fn = (vFuipu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
+void vFuipp(x64emu_t *emu, uintptr_t fcn) { vFuipp_t fn = (vFuipp_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void vFuuii(x64emu_t *emu, uintptr_t fcn) { vFuuii_t fn = (vFuuii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void vFuuiu(x64emu_t *emu, uintptr_t fcn) { vFuuiu_t fn = (vFuuiu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
+void vFuuip(x64emu_t *emu, uintptr_t fcn) { vFuuip_t fn = (vFuuip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFuuui(x64emu_t *emu, uintptr_t fcn) { vFuuui_t fn = (vFuuui_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
+void vFuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuu_t fn = (vFuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
+void vFuuuf(x64emu_t *emu, uintptr_t fcn) { vFuuuf_t fn = (vFuuuf_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, emu->xmm[0].f[0]); }
+void vFuuud(x64emu_t *emu, uintptr_t fcn) { vFuuud_t fn = (vFuuud_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, emu->xmm[0].d[0]); }
+void vFuuup(x64emu_t *emu, uintptr_t fcn) { vFuuup_t fn = (vFuuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void vFuupi(x64emu_t *emu, uintptr_t fcn) { vFuupi_t fn = (vFuupi_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
+void vFuupp(x64emu_t *emu, uintptr_t fcn) { vFuupp_t fn = (vFuupp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void vFufff(x64emu_t *emu, uintptr_t fcn) { vFufff_t fn = (vFufff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
+void vFuddd(x64emu_t *emu, uintptr_t fcn) { vFuddd_t fn = (vFuddd_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
+void vFupii(x64emu_t *emu, uintptr_t fcn) { vFupii_t fn = (vFupii_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void vFuppi(x64emu_t *emu, uintptr_t fcn) { vFuppi_t fn = (vFuppi_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
+void vFffff(x64emu_t *emu, uintptr_t fcn) { vFffff_t fn = (vFffff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFdddd(x64emu_t *emu, uintptr_t fcn) { vFdddd_t fn = (vFdddd_t)fcn; fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFpiii(x64emu_t *emu, uintptr_t fcn) { vFpiii_t fn = (vFpiii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void vFpiip(x64emu_t *emu, uintptr_t fcn) { vFpiip_t fn = (vFpiip_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFpipp(x64emu_t *emu, uintptr_t fcn) { vFpipp_t fn = (vFpipp_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void vFpdii(x64emu_t *emu, uintptr_t fcn) { vFpdii_t fn = (vFpdii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], (int32_t)R_RSI, (int32_t)R_RDX); }
+void vFpddd(x64emu_t *emu, uintptr_t fcn) { vFpddd_t fn = (vFpddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
+void vFppip(x64emu_t *emu, uintptr_t fcn) { vFppip_t fn = (vFppip_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFppui(x64emu_t *emu, uintptr_t fcn) { vFppui_t fn = (vFppui_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX); }
+void vFpppp(x64emu_t *emu, uintptr_t fcn) { vFpppp_t fn = (vFpppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void cFpiii(x64emu_t *emu, uintptr_t fcn) { cFpiii_t fn = (cFpiii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void iFEupp(x64emu_t *emu, uintptr_t fcn) { iFEupp_t fn = (iFEupp_t)fcn; R_RAX=fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void iFEpip(x64emu_t *emu, uintptr_t fcn) { iFEpip_t fn = (iFEpip_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX); }
+void iFEppi(x64emu_t *emu, uintptr_t fcn) { iFEppi_t fn = (iFEppi_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void iFEppp(x64emu_t *emu, uintptr_t fcn) { iFEppp_t fn = (iFEppp_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void iFiiiu(x64emu_t *emu, uintptr_t fcn) { iFiiiu_t fn = (iFiiiu_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
+void iFippp(x64emu_t *emu, uintptr_t fcn) { iFippp_t fn = (iFippp_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void iFuipp(x64emu_t *emu, uintptr_t fcn) { iFuipp_t fn = (iFuipp_t)fcn; R_RAX=fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void iFuuff(x64emu_t *emu, uintptr_t fcn) { iFuuff_t fn = (iFuuff_t)fcn; R_RAX=fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
+void iFuppp(x64emu_t *emu, uintptr_t fcn) { iFuppp_t fn = (iFuppp_t)fcn; R_RAX=fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void iFpiiu(x64emu_t *emu, uintptr_t fcn) { iFpiiu_t fn = (iFpiiu_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
+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 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); }
+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 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 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 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 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); }
+void iFpppp(x64emu_t *emu, uintptr_t fcn) { iFpppp_t fn = (iFpppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void IFEpIi(x64emu_t *emu, uintptr_t fcn) { IFEpIi_t fn = (IFEpIi_t)fcn; R_RAX=(uint64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int32_t)R_RDX); }
+void uFuuuu(x64emu_t *emu, uintptr_t fcn) { uFuuuu_t fn = (uFuuuu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
+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 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 LFpLLp(x64emu_t *emu, uintptr_t fcn) { LFpLLp_t fn = (LFpLLp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); }
+void pFEupp(x64emu_t *emu, uintptr_t fcn) { pFEupp_t fn = (pFEupp_t)fcn; R_RAX=(uintptr_t)fn(emu, (uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX); }
 void pFEppi(x64emu_t *emu, uintptr_t fcn) { pFEppi_t fn = (pFEppi_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX); }
 void pFEppp(x64emu_t *emu, uintptr_t fcn) { pFEppp_t fn = (pFEppp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
+void pFiiiu(x64emu_t *emu, uintptr_t fcn) { pFiiiu_t fn = (pFiiiu_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX); }
+void pFiiup(x64emu_t *emu, uintptr_t fcn) { pFiiup_t fn = (pFiiup_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void pFuiii(x64emu_t *emu, uintptr_t fcn) { pFuiii_t fn = (pFuiii_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void pFpiii(x64emu_t *emu, uintptr_t fcn) { pFpiii_t fn = (pFpiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
+void pFpipp(x64emu_t *emu, uintptr_t fcn) { pFpipp_t fn = (pFpipp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void pFpuii(x64emu_t *emu, uintptr_t fcn) { pFpuii_t fn = (pFpuii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void pFppiL(x64emu_t *emu, uintptr_t fcn) { pFppiL_t fn = (pFppiL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uintptr_t)R_RCX); }
 void pFppuL(x64emu_t *emu, uintptr_t fcn) { pFppuL_t fn = (pFppuL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uintptr_t)R_RCX); }
+void pFppLL(x64emu_t *emu, uintptr_t fcn) { pFppLL_t fn = (pFppLL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX); }
+void pFpppi(x64emu_t *emu, uintptr_t fcn) { pFpppi_t fn = (pFpppi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX); }
+void pFpppu(x64emu_t *emu, uintptr_t fcn) { pFpppu_t fn = (pFpppu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint32_t)R_RCX); }
+void pFpppL(x64emu_t *emu, uintptr_t fcn) { pFpppL_t fn = (pFpppL_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
+void pFpppp(x64emu_t *emu, uintptr_t fcn) { pFpppp_t fn = (pFpppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void vFEpuup(x64emu_t *emu, uintptr_t fcn) { vFEpuup_t fn = (vFEpuup_t)fcn; fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX); }
+void vFiiiii(x64emu_t *emu, uintptr_t fcn) { vFiiiii_t fn = (vFiiiii_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFiiiiu(x64emu_t *emu, uintptr_t fcn) { vFiiiiu_t fn = (vFiiiiu_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
+void vFiiuup(x64emu_t *emu, uintptr_t fcn) { vFiiuup_t fn = (vFiiuup_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void vFiipii(x64emu_t *emu, uintptr_t fcn) { vFiipii_t fn = (vFiipii_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFiuiip(x64emu_t *emu, uintptr_t fcn) { vFiuiip_t fn = (vFiuiip_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFiuipi(x64emu_t *emu, uintptr_t fcn) { vFiuipi_t fn = (vFiuipi_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void vFiuuuu(x64emu_t *emu, uintptr_t fcn) { vFiuuuu_t fn = (vFiuuuu_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void vFiffff(x64emu_t *emu, uintptr_t fcn) { vFiffff_t fn = (vFiffff_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFidddd(x64emu_t *emu, uintptr_t fcn) { vFidddd_t fn = (vFidddd_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFilill(x64emu_t *emu, uintptr_t fcn) { vFilill_t fn = (vFilill_t)fcn; fn((int32_t)R_RDI, (intptr_t)R_RSI, (int32_t)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8); }
+void vFipipu(x64emu_t *emu, uintptr_t fcn) { vFipipu_t fn = (vFipipu_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8); }
+void vFipipp(x64emu_t *emu, uintptr_t fcn) { vFipipp_t fn = (vFipipp_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void vFipupi(x64emu_t *emu, uintptr_t fcn) { vFipupi_t fn = (vFipupi_t)fcn; fn((int32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void vFuiiii(x64emu_t *emu, uintptr_t fcn) { vFuiiii_t fn = (vFuiiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFuiiiu(x64emu_t *emu, uintptr_t fcn) { vFuiiiu_t fn = (vFuiiiu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
+void vFuiiip(x64emu_t *emu, uintptr_t fcn) { vFuiiip_t fn = (vFuiiip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFuiiup(x64emu_t *emu, uintptr_t fcn) { vFuiiup_t fn = (vFuiiup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void vFuiIII(x64emu_t *emu, uintptr_t fcn) { vFuiIII_t fn = (vFuiIII_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8); }
+void vFuiuii(x64emu_t *emu, uintptr_t fcn) { vFuiuii_t fn = (vFuiuii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFuiuiu(x64emu_t *emu, uintptr_t fcn) { vFuiuiu_t fn = (vFuiuiu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
+void vFuiuip(x64emu_t *emu, uintptr_t fcn) { vFuiuip_t fn = (vFuiuip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFuiuuu(x64emu_t *emu, uintptr_t fcn) { vFuiuuu_t fn = (vFuiuuu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void vFuiuup(x64emu_t *emu, uintptr_t fcn) { vFuiuup_t fn = (vFuiuup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void vFuiupi(x64emu_t *emu, uintptr_t fcn) { vFuiupi_t fn = (vFuiupi_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void vFuiupu(x64emu_t *emu, uintptr_t fcn) { vFuiupu_t fn = (vFuiupu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8); }
+void vFuifff(x64emu_t *emu, uintptr_t fcn) { vFuifff_t fn = (vFuifff_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
+void vFuiddd(x64emu_t *emu, uintptr_t fcn) { vFuiddd_t fn = (vFuiddd_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
+void vFuipii(x64emu_t *emu, uintptr_t fcn) { vFuipii_t fn = (vFuipii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFuipip(x64emu_t *emu, uintptr_t fcn) { vFuipip_t fn = (vFuipip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFuipup(x64emu_t *emu, uintptr_t fcn) { vFuipup_t fn = (vFuipup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void vFuippp(x64emu_t *emu, uintptr_t fcn) { vFuippp_t fn = (vFuippp_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void vFuuiii(x64emu_t *emu, uintptr_t fcn) { vFuuiii_t fn = (vFuuiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFuuiui(x64emu_t *emu, uintptr_t fcn) { vFuuiui_t fn = (vFuuiui_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8); }
+void vFuuiuu(x64emu_t *emu, uintptr_t fcn) { vFuuiuu_t fn = (vFuuiuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void vFuuiup(x64emu_t *emu, uintptr_t fcn) { vFuuiup_t fn = (vFuuiup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void vFuuipi(x64emu_t *emu, uintptr_t fcn) { vFuuipi_t fn = (vFuuipi_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void vFuuipu(x64emu_t *emu, uintptr_t fcn) { vFuuipu_t fn = (vFuuipu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8); }
+void vFuuipp(x64emu_t *emu, uintptr_t fcn) { vFuuipp_t fn = (vFuuipp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void vFuuuii(x64emu_t *emu, uintptr_t fcn) { vFuuuii_t fn = (vFuuuii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFuuuiu(x64emu_t *emu, uintptr_t fcn) { vFuuuiu_t fn = (vFuuuiu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
+void vFuuuip(x64emu_t *emu, uintptr_t fcn) { vFuuuip_t fn = (vFuuuip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFuuuui(x64emu_t *emu, uintptr_t fcn) { vFuuuui_t fn = (vFuuuui_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8); }
+void vFuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuu_t fn = (vFuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void vFuuuup(x64emu_t *emu, uintptr_t fcn) { vFuuuup_t fn = (vFuuuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void vFuupii(x64emu_t *emu, uintptr_t fcn) { vFuupii_t fn = (vFuupii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFuffff(x64emu_t *emu, uintptr_t fcn) { vFuffff_t fn = (vFuffff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFudddd(x64emu_t *emu, uintptr_t fcn) { vFudddd_t fn = (vFudddd_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFupupi(x64emu_t *emu, uintptr_t fcn) { vFupupi_t fn = (vFupupi_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void vFuppip(x64emu_t *emu, uintptr_t fcn) { vFuppip_t fn = (vFuppip_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFupppp(x64emu_t *emu, uintptr_t fcn) { vFupppp_t fn = (vFupppp_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void vFfffff(x64emu_t *emu, uintptr_t fcn) { vFfffff_t fn = (vFfffff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0]); }
+void vFddddp(x64emu_t *emu, uintptr_t fcn) { vFddddp_t fn = (vFddddp_t)fcn; fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], (void*)R_RDI); }
+void vFpiiii(x64emu_t *emu, uintptr_t fcn) { vFpiiii_t fn = (vFpiiii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+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 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); }
+void vFpppii(x64emu_t *emu, uintptr_t fcn) { vFpppii_t fn = (vFpppii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void vFppppp(x64emu_t *emu, uintptr_t fcn) { vFppppp_t fn = (vFppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
 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 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 iFiiupp(x64emu_t *emu, uintptr_t fcn) { iFiiupp_t fn = (iFiiupp_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
 void iFipppi(x64emu_t *emu, uintptr_t fcn) { iFipppi_t fn = (iFipppi_t)fcn; R_RAX=fn((int32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void iFpiiii(x64emu_t *emu, uintptr_t fcn) { iFpiiii_t fn = (iFpiiii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void iFpiiip(x64emu_t *emu, uintptr_t fcn) { iFpiiip_t fn = (iFpiiip_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void iFpiiuu(x64emu_t *emu, uintptr_t fcn) { iFpiiuu_t fn = (iFpiiuu_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void iFpipii(x64emu_t *emu, uintptr_t fcn) { iFpipii_t fn = (iFpipii_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)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 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 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 iFppppp(x64emu_t *emu, uintptr_t fcn) { iFppppp_t fn = (iFppppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void IFppIII(x64emu_t *emu, uintptr_t fcn) { IFppIII_t fn = (IFppIII_t)fcn; R_RAX=(uint64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8); }
+void uFEppuu(x64emu_t *emu, uintptr_t fcn) { uFEppuu_t fn = (uFEppuu_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX); }
+void uFiuuuu(x64emu_t *emu, uintptr_t fcn) { uFiuuuu_t fn = (uFiuuuu_t)fcn; R_RAX=(uint32_t)fn((int32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void uFuiiiu(x64emu_t *emu, uintptr_t fcn) { uFuiiiu_t fn = (uFuiiiu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
+void uFpCCCC(x64emu_t *emu, uintptr_t fcn) { uFpCCCC_t fn = (uFpCCCC_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint8_t)R_RSI, (uint8_t)R_RDX, (uint8_t)R_RCX, (uint8_t)R_R8); }
+void uFpuuuu(x64emu_t *emu, uintptr_t fcn) { uFpuuuu_t fn = (uFpuuuu_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8); }
+void uFppppp(x64emu_t *emu, uintptr_t fcn) { uFppppp_t fn = (uFppppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void LFppppp(x64emu_t *emu, uintptr_t fcn) { LFppppp_t fn = (LFppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void pFuiiiu(x64emu_t *emu, uintptr_t fcn) { pFuiiiu_t fn = (pFuiiiu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8); }
+void pFuiipp(x64emu_t *emu, uintptr_t fcn) { pFuiipp_t fn = (pFuiipp_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void pFpuiii(x64emu_t *emu, uintptr_t fcn) { pFpuiii_t fn = (pFpuiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8); }
+void pFppipi(x64emu_t *emu, uintptr_t fcn) { pFppipi_t fn = (pFppipi_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8); }
+void pFppuup(x64emu_t *emu, uintptr_t fcn) { pFppuup_t fn = (pFppuup_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8); }
+void pFpppip(x64emu_t *emu, uintptr_t fcn) { pFpppip_t fn = (pFpppip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFEiiipp(x64emu_t *emu, uintptr_t fcn) { vFEiiipp_t fn = (vFEiiipp_t)fcn; fn(emu, (int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void vFiiiiii(x64emu_t *emu, uintptr_t fcn) { vFiiiiii_t fn = (vFiiiiii_t)fcn; 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 vFiiiuil(x64emu_t *emu, uintptr_t fcn) { vFiiiuil_t fn = (vFiiiuil_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (intptr_t)R_R9); }
+void vFiuippp(x64emu_t *emu, uintptr_t fcn) { vFiuippp_t fn = (vFiuippp_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void vFiffiff(x64emu_t *emu, uintptr_t fcn) { vFiffiff_t fn = (vFiffiff_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], (int32_t)R_RSI, emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFiddidd(x64emu_t *emu, uintptr_t fcn) { vFiddidd_t fn = (vFiddidd_t)fcn; fn((int32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI, emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFuiiiii(x64emu_t *emu, uintptr_t fcn) { vFuiiiii_t fn = (vFuiiiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFuiiiip(x64emu_t *emu, uintptr_t fcn) { vFuiiiip_t fn = (vFuiiiip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void vFuiiuii(x64emu_t *emu, uintptr_t fcn) { vFuiiuii_t fn = (vFuiiuii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFuiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiuup_t fn = (vFuiiuup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
+void vFuiuiii(x64emu_t *emu, uintptr_t fcn) { vFuiuiii_t fn = (vFuiuiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFuiuiip(x64emu_t *emu, uintptr_t fcn) { vFuiuiip_t fn = (vFuiuiip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void vFuiuiuu(x64emu_t *emu, uintptr_t fcn) { vFuiuiuu_t fn = (vFuiuiuu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
+void vFuiuuip(x64emu_t *emu, uintptr_t fcn) { vFuiuuip_t fn = (vFuiuuip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void vFuiuuuu(x64emu_t *emu, uintptr_t fcn) { vFuiuuuu_t fn = (vFuiuuuu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
+void vFuiupii(x64emu_t *emu, uintptr_t fcn) { vFuiupii_t fn = (vFuiupii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFuiupiu(x64emu_t *emu, uintptr_t fcn) { vFuiupiu_t fn = (vFuiupiu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (uint32_t)R_R9); }
+void vFuiffff(x64emu_t *emu, uintptr_t fcn) { vFuiffff_t fn = (vFuiffff_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFuidddd(x64emu_t *emu, uintptr_t fcn) { vFuidddd_t fn = (vFuidddd_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFuipiup(x64emu_t *emu, uintptr_t fcn) { vFuipiup_t fn = (vFuipiup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
+void vFuuiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiiii_t fn = (vFuuiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFuuiuii(x64emu_t *emu, uintptr_t fcn) { vFuuiuii_t fn = (vFuuiuii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFuuiuiu(x64emu_t *emu, uintptr_t fcn) { vFuuiuiu_t fn = (vFuuiuiu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9); }
+void vFuuiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiuup_t fn = (vFuuiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
+void vFuuippp(x64emu_t *emu, uintptr_t fcn) { vFuuippp_t fn = (vFuuippp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void vFuuuiup(x64emu_t *emu, uintptr_t fcn) { vFuuuiup_t fn = (vFuuuiup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9); }
+void vFuuuipi(x64emu_t *emu, uintptr_t fcn) { vFuuuipi_t fn = (vFuuuipi_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9); }
+void vFuuuipp(x64emu_t *emu, uintptr_t fcn) { vFuuuipp_t fn = (vFuuuipp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
+void vFuuuuii(x64emu_t *emu, uintptr_t fcn) { vFuuuuii_t fn = (vFuuuuii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFuuuuip(x64emu_t *emu, uintptr_t fcn) { vFuuuuip_t fn = (vFuuuuip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void vFuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuu_t fn = (vFuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
+void vFuuuuff(x64emu_t *emu, uintptr_t fcn) { vFuuuuff_t fn = (vFuuuuff_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
+void vFuuuppi(x64emu_t *emu, uintptr_t fcn) { vFuuuppi_t fn = (vFuuuppi_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (int32_t)R_R9); }
+void vFuuuppp(x64emu_t *emu, uintptr_t fcn) { vFuuuppp_t fn = (vFuuuppp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void vFuuffff(x64emu_t *emu, uintptr_t fcn) { vFuuffff_t fn = (vFuuffff_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFuudddd(x64emu_t *emu, uintptr_t fcn) { vFuudddd_t fn = (vFuudddd_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFuffiip(x64emu_t *emu, uintptr_t fcn) { vFuffiip_t fn = (vFuffiip_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFufffff(x64emu_t *emu, uintptr_t fcn) { vFufffff_t fn = (vFufffff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0]); }
+void vFuddiip(x64emu_t *emu, uintptr_t fcn) { vFuddiip_t fn = (vFuddiip_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
+void vFupupip(x64emu_t *emu, uintptr_t fcn) { vFupupip_t fn = (vFupupip_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void vFuppppp(x64emu_t *emu, uintptr_t fcn) { vFuppppp_t fn = (vFuppppp_t)fcn; fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void vFffffff(x64emu_t *emu, uintptr_t fcn) { vFffffff_t fn = (vFffffff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0]); }
+void vFdddddd(x64emu_t *emu, uintptr_t fcn) { vFdddddd_t fn = (vFdddddd_t)fcn; fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0], emu->xmm[5].d[0]); }
+void vFpdddii(x64emu_t *emu, uintptr_t fcn) { vFpdddii_t fn = (vFpdddii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], (int32_t)R_RSI, (int32_t)R_RDX); }
+void vFppiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiii_t fn = (vFppiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFppupii(x64emu_t *emu, uintptr_t fcn) { vFppupii_t fn = (vFppupii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFpppppp(x64emu_t *emu, uintptr_t fcn) { vFpppppp_t fn = (vFpppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+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 iFEpupVV(x64emu_t *emu, uintptr_t fcn) { iFEpupVV_t fn = (iFEpupVV_t)fcn; R_RAX=fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8), (void*)(R_RSP + 8)); }
+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); }
+void iFuppppp(x64emu_t *emu, uintptr_t fcn) { iFuppppp_t fn = (iFuppppp_t)fcn; R_RAX=fn((uint32_t)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void iFpiiipp(x64emu_t *emu, uintptr_t fcn) { iFpiiipp_t fn = (iFpiiipp_t)fcn; R_RAX=fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (void*)R_R9); }
+void iFppIppp(x64emu_t *emu, uintptr_t fcn) { iFppIppp_t fn = (iFppIppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void pFEpippp(x64emu_t *emu, uintptr_t fcn) { pFEpippp_t fn = (pFEpippp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
+void pFiCiiCi(x64emu_t *emu, uintptr_t fcn) { pFiCiiCi_t fn = (pFiCiiCi_t)fcn; R_RAX=(uintptr_t)fn((int32_t)R_RDI, (uint8_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint8_t)R_R8, (int32_t)R_R9); }
+void pFpiiiiu(x64emu_t *emu, uintptr_t fcn) { pFpiiiiu_t fn = (pFpiiiiu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9); }
+void pFpippip(x64emu_t *emu, uintptr_t fcn) { pFpippip_t fn = (pFpippip_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void pFpuuuuu(x64emu_t *emu, uintptr_t fcn) { pFpuuuuu_t fn = (pFpuuuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); }
+void pFppiiii(x64emu_t *emu, uintptr_t fcn) { pFppiiii_t fn = (pFppiiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9); }
+void vFiiiiiip(x64emu_t *emu, uintptr_t fcn) { vFiiiiiip_t fn = (vFiiiiiip_t)fcn; 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**)(R_RSP + 8)); }
+void vFiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFiiiiuup_t fn = (vFiiiiuup_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFiiupuip(x64emu_t *emu, uintptr_t fcn) { vFiiupuip_t fn = (vFiiupuip_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFiiffffp(x64emu_t *emu, uintptr_t fcn) { vFiiffffp_t fn = (vFiiffffp_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], (void*)R_RDX); }
+void vFiupuuup(x64emu_t *emu, uintptr_t fcn) { vFiupuuup_t fn = (vFiupuuup_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuiiiiii_t fn = (vFuiiiiii_t)fcn; fn((uint32_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 vFuiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuiiiuip_t fn = (vFuiiiuip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiuup_t fn = (vFuiiiuup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuiuiiii(x64emu_t *emu, uintptr_t fcn) { vFuiuiiii_t fn = (vFuiuiiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFuiuiiip(x64emu_t *emu, uintptr_t fcn) { vFuiuiiip_t fn = (vFuiuiiip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuiuiiuu(x64emu_t *emu, uintptr_t fcn) { vFuiuiiuu_t fn = (vFuiuiiuu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
+void vFuiupiiu(x64emu_t *emu, uintptr_t fcn) { vFuiupiiu_t fn = (vFuiupiiu_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
+void vFuipiiii(x64emu_t *emu, uintptr_t fcn) { vFuipiiii_t fn = (vFuipiiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFuipffff(x64emu_t *emu, uintptr_t fcn) { vFuipffff_t fn = (vFuipffff_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFuipdddd(x64emu_t *emu, uintptr_t fcn) { vFuipdddd_t fn = (vFuipdddd_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFuuiiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiiiii_t fn = (vFuuiiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_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 vFuuiiiip(x64emu_t *emu, uintptr_t fcn) { vFuuiiiip_t fn = (vFuuiiiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuuiiiui(x64emu_t *emu, uintptr_t fcn) { vFuuiiiui_t fn = (vFuuiiiui_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFuuiiiuu(x64emu_t *emu, uintptr_t fcn) { vFuuiiiuu_t fn = (vFuuiiiuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
+void vFuuiiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiiuup_t fn = (vFuuiiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuuiuiii(x64emu_t *emu, uintptr_t fcn) { vFuuiuiii_t fn = (vFuuiuiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFuuipppp(x64emu_t *emu, uintptr_t fcn) { vFuuipppp_t fn = (vFuuipppp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void vFuuuiiii(x64emu_t *emu, uintptr_t fcn) { vFuuuiiii_t fn = (vFuuuiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFuuuiiip(x64emu_t *emu, uintptr_t fcn) { vFuuuiiip_t fn = (vFuuuiiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuuuiuii(x64emu_t *emu, uintptr_t fcn) { vFuuuiuii_t fn = (vFuuuiuii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFuuuiupi(x64emu_t *emu, uintptr_t fcn) { vFuuuiupi_t fn = (vFuuuiupi_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (void*)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFuuuuiip(x64emu_t *emu, uintptr_t fcn) { vFuuuuiip_t fn = (vFuuuuiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuu_t fn = (vFuuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8)); }
+void vFuuuufff(x64emu_t *emu, uintptr_t fcn) { vFuuuufff_t fn = (vFuuuufff_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
+void vFuuuffff(x64emu_t *emu, uintptr_t fcn) { vFuuuffff_t fn = (vFuuuffff_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
+void vFuuudddd(x64emu_t *emu, uintptr_t fcn) { vFuuudddd_t fn = (vFuuudddd_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void vFuuffiip(x64emu_t *emu, uintptr_t fcn) { vFuuffiip_t fn = (vFuuffiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0], (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFuuddiip(x64emu_t *emu, uintptr_t fcn) { vFuuddiip_t fn = (vFuuddiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8); }
+void vFuffffff(x64emu_t *emu, uintptr_t fcn) { vFuffffff_t fn = (vFuffffff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0]); }
+void vFudddddd(x64emu_t *emu, uintptr_t fcn) { vFudddddd_t fn = (vFudddddd_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0], emu->xmm[5].d[0]); }
+void vFpipipii(x64emu_t *emu, uintptr_t fcn) { vFpipipii_t fn = (vFpipipii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void vFpddiidd(x64emu_t *emu, uintptr_t fcn) { vFpddiidd_t fn = (vFpddiidd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[2].d[0], emu->xmm[3].d[0]); }
+void iFiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiip_t fn = (iFiiiiiip_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**)(R_RSP + 8)); }
+void iFpuuiuui(x64emu_t *emu, uintptr_t fcn) { iFpuuiuui_t fn = (iFpuuiuui_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(int32_t*)(R_RSP + 8)); }
+void iFppppdpi(x64emu_t *emu, uintptr_t fcn) { iFppppdpi_t fn = (iFppppdpi_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, emu->xmm[0].d[0], (void*)R_R8, (int32_t)R_R9); }
+void iFppppppp(x64emu_t *emu, uintptr_t fcn) { iFppppppp_t fn = (iFppppppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void uFuippppp(x64emu_t *emu, uintptr_t fcn) { uFuippppp_t fn = (uFuippppp_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void vFiiiiuuip(x64emu_t *emu, uintptr_t fcn) { vFiiiiuuip_t fn = (vFiiiiuuip_t)fcn; fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFiupuiuup(x64emu_t *emu, uintptr_t fcn) { vFiupuiuup_t fn = (vFiupuiuup_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFiupuuuup(x64emu_t *emu, uintptr_t fcn) { vFiupuuuup_t fn = (vFiupuuuup_t)fcn; fn((int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiii_t fn = (vFuiiiiiii_t)fcn; fn((uint32_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), *(int32_t*)(R_RSP + 16)); }
+void vFuiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiiuup_t fn = (vFuiiiiuup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuiiipiup(x64emu_t *emu, uintptr_t fcn) { vFuiiipiup_t fn = (vFuiiipiup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuiuiiiii(x64emu_t *emu, uintptr_t fcn) { vFuiuiiiii_t fn = (vFuiuiiiii_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
+void vFuiuiiiip(x64emu_t *emu, uintptr_t fcn) { vFuiuiiiip_t fn = (vFuiuiiiip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_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 vFuuiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiii_t fn = (vFuuiiiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
+void vFuuiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuuiiiuip_t fn = (vFuuiiiuip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuuiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiiiuup_t fn = (vFuuiiiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuuiiuupp(x64emu_t *emu, uintptr_t fcn) { vFuuiiuupp_t fn = (vFuuiiuupp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuuiuiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiii_t fn = (vFuuiuiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
+void vFuuiuiiip(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiip_t fn = (vFuuiuiiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuuuiiiii(x64emu_t *emu, uintptr_t fcn) { vFuuuiiiii_t fn = (vFuuuiiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
+void vFuuuiuiii(x64emu_t *emu, uintptr_t fcn) { vFuuuiuiii_t fn = (vFuuuiuiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
+void vFuuuipipp(x64emu_t *emu, uintptr_t fcn) { vFuuuipipp_t fn = (vFuuuipipp_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuu_t fn = (vFuuuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16)); }
+void vFuuuuufff(x64emu_t *emu, uintptr_t fcn) { vFuuuuufff_t fn = (vFuuuuufff_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
+void vFffffffff(x64emu_t *emu, uintptr_t fcn) { vFffffffff_t fn = (vFffffffff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0]); }
 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 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)); }
+void iFpupppppp(x64emu_t *emu, uintptr_t fcn) { iFpupppppp_t fn = (iFpupppppp_t)fcn; R_RAX=fn((void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void iFppIIIppp(x64emu_t *emu, uintptr_t fcn) { iFppIIIppp_t fn = (iFppIIIppp_t)fcn; R_RAX=fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void iFpppipipi(x64emu_t *emu, uintptr_t fcn) { iFpppipipi_t fn = (iFpppipipi_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**)(R_RSP + 8), *(int32_t*)(R_RSP + 16)); }
+void uFuipppppp(x64emu_t *emu, uintptr_t fcn) { uFuipppppp_t fn = (uFuipppppp_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void pFuiiiuuuu(x64emu_t *emu, uintptr_t fcn) { pFuiiiuuuu_t fn = (pFuiiiuuuu_t)fcn; R_RAX=(uintptr_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16)); }
+void vFuiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiii_t fn = (vFuiiiiiiii_t)fcn; fn((uint32_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), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); }
+void vFuiiiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiuip_t fn = (vFuiiiiiuip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void vFuiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiuup_t fn = (vFuiiiiiuup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void vFuiuiiiiip(x64emu_t *emu, uintptr_t fcn) { vFuiuiiiiip_t fn = (vFuiuiiiiip_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void vFuiupuffup(x64emu_t *emu, uintptr_t fcn) { vFuiupuffup_t fn = (vFuiupuffup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (uint32_t)R_R8, emu->xmm[0].f[0], emu->xmm[1].f[0], (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuuiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiiii_t fn = (vFuuiiiiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); }
+void vFuuiuiiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiiii_t fn = (vFuuiuiiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24)); }
+void vFuuiuiiiip(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiiip_t fn = (vFuuiuiiiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void vFuuiuiiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiuup_t fn = (vFuuiuiiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void vFuuuiiiiip(x64emu_t *emu, uintptr_t fcn) { vFuuuiiiiip_t fn = (vFuuuiiiiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void vFuuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuuu_t fn = (vFuuuuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24)); }
+void vFuupiuiuuf(x64emu_t *emu, uintptr_t fcn) { vFuupiuiuuf_t fn = (vFuupiuiuuf_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (uint32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), emu->xmm[0].f[0]); }
+void vFuffffffff(x64emu_t *emu, uintptr_t fcn) { vFuffffffff_t fn = (vFuffffffff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0]); }
+void vFffuuuufff(x64emu_t *emu, uintptr_t fcn) { vFffuuuufff_t fn = (vFffuuuufff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], (uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0]); }
+void vFddddddddd(x64emu_t *emu, uintptr_t fcn) { vFddddddddd_t fn = (vFddddddddd_t)fcn; fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0], emu->xmm[5].d[0], emu->xmm[6].d[0], emu->xmm[7].d[0], *(double*)(R_RSP + 8)); }
+void iFiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiiip_t fn = (iFiiiiiiiip_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), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void iFiiiipiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiipiiip_t fn = (iFiiiipiiip_t)fcn; R_RAX=fn((int32_t)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24)); }
+void iFdddpppppp(x64emu_t *emu, uintptr_t fcn) { iFdddpppppp_t fn = (iFdddpppppp_t)fcn; R_RAX=fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void pFpiiiiuuuu(x64emu_t *emu, uintptr_t fcn) { pFpiiiiuuuu_t fn = (pFpiiiiuuuu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24)); }
+void vFiiiiiiiiiu(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiiiiu_t fn = (vFiiiiiiiiiu_t)fcn; 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), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32)); }
+void vFuiiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiii_t fn = (vFuiiiiiiiii_t)fcn; fn((uint32_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), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32)); }
+void vFuiiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiuup_t fn = (vFuiiiiiiuup_t)fcn; fn((uint32_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), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
+void vFuiuiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiuiiiiuup_t fn = (vFuiuiiiiuup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
+void vFuuiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiiiii_t fn = (vFuuiiiiiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32)); }
+void vFuuiiiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiiuip_t fn = (vFuuiiiiiuip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
+void vFuuiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiiuup_t fn = (vFuuiiiiiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
+void vFuuiuiiiiip(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiiiip_t fn = (vFuuiuiiiiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
+void vFuuiuiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiiuup_t fn = (vFuuiuiiiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
+void vFuuuuuuuiii(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuiii_t fn = (vFuuuuuuuiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32)); }
+void vFuuuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuuuu_t fn = (vFuuuuuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32)); }
+void vFuupiiupuuf(x64emu_t *emu, uintptr_t fcn) { vFuupiiupuuf_t fn = (vFuupiiupuuf_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), emu->xmm[0].f[0]); }
+void vFuffiiffiip(x64emu_t *emu, uintptr_t fcn) { vFuffiiffiip_t fn = (vFuffiiffiip_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[2].f[0], emu->xmm[3].f[0], (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void vFuddiiddiip(x64emu_t *emu, uintptr_t fcn) { vFuddiiddiip_t fn = (vFuddiiddiip_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[2].d[0], emu->xmm[3].d[0], (int32_t)R_RCX, (int32_t)R_R8, (void*)R_R9); }
+void vFffffffffff(x64emu_t *emu, uintptr_t fcn) { vFffffffffff_t fn = (vFffffffffff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8), *(float*)(R_RSP + 16)); }
+void iFiiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiiiip_t fn = (iFiiiiiiiiip_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), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
+void vFuiiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiiip_t fn = (vFuiiiiiiiiip_t)fcn; fn((uint32_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), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
+void vFuiiiiiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiuip_t fn = (vFuiiiiiiiuip_t)fcn; fn((uint32_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), *(int32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
+void vFuiiiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiuup_t fn = (vFuiiiiiiiuup_t)fcn; fn((uint32_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), *(int32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
+void vFuiuiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiuiiiiiuup_t fn = (vFuiuiiiiiuup_t)fcn; fn((uint32_t)R_RDI, (int32_t)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
+void vFuuiuiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiuiiiiuup_t fn = (vFuuiuiiiiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
+void vFuuuuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuuuuu_t fn = (vFuuuuuuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40)); }
+void vFuuffiiffiip(x64emu_t *emu, uintptr_t fcn) { vFuuffiiffiip_t fn = (vFuuffiiffiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0], (int32_t)R_RDX, (int32_t)R_RCX, emu->xmm[2].f[0], emu->xmm[3].f[0], (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuufffffffff(x64emu_t *emu, uintptr_t fcn) { vFuufffffffff_t fn = (vFuufffffffff_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8)); }
+void vFuuddiiddiip(x64emu_t *emu, uintptr_t fcn) { vFuuddiiddiip_t fn = (vFuuddiiddiip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RDX, (int32_t)R_RCX, emu->xmm[2].d[0], emu->xmm[3].d[0], (int32_t)R_R8, (int32_t)R_R9, *(void**)(R_RSP + 8)); }
+void vFuffffffffff(x64emu_t *emu, uintptr_t fcn) { vFuffffffffff_t fn = (vFuffffffffff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8), *(float*)(R_RSP + 16)); }
+void vFpipipiipiii(x64emu_t *emu, uintptr_t fcn) { vFpipipiipiii_t fn = (vFpipipiipiii_t)fcn; fn((void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (int32_t)R_RCX, (void*)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(int32_t*)(R_RSP + 40)); }
+void iFiiiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiiiiiip_t fn = (iFiiiiiiiiiip_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), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
+void vFuuiiiiiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiiiiuip_t fn = (vFuuiiiiiiiuip_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(int32_t*)(R_RSP + 40), *(void**)(R_RSP + 48)); }
+void vFuuiiiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiiiiuup_t fn = (vFuuiiiiiiiuup_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40), *(void**)(R_RSP + 48)); }
+void vFuuuuuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuuuuuu_t fn = (vFuuuuuuuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40), *(uint32_t*)(R_RSP + 48)); }
+void vFffffffffffff(x64emu_t *emu, uintptr_t fcn) { vFffffffffffff_t fn = (vFffffffffffff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8), *(float*)(R_RSP + 16), *(float*)(R_RSP + 24), *(float*)(R_RSP + 32)); }
+void vFuiiiiiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiiiuup_t fn = (vFuiiiiiiiiiuup_t)fcn; fn((uint32_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), *(int32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40), *(uint32_t*)(R_RSP + 48), *(void**)(R_RSP + 56)); }
+void vFuuuuuuuuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuuuuuuu_t fn = (vFuuuuuuuuuuuuu_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(uint32_t*)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(uint32_t*)(R_RSP + 40), *(uint32_t*)(R_RSP + 48), *(uint32_t*)(R_RSP + 56)); }
+void vFuffffffffffff(x64emu_t *emu, uintptr_t fcn) { vFuffffffffffff_t fn = (vFuffffffffffff_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8), *(float*)(R_RSP + 16), *(float*)(R_RSP + 24), *(float*)(R_RSP + 32)); }
+void iFddddpppddpppp(x64emu_t *emu, uintptr_t fcn) { iFddddpppddpppp_t fn = (iFddddpppddpppp_t)fcn; R_RAX=fn(emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, emu->xmm[4].d[0], emu->xmm[5].d[0], (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
+void vFuffiiffiiffiip(x64emu_t *emu, uintptr_t fcn) { vFuffiiffiiffiip_t fn = (vFuffiiffiiffiip_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[2].f[0], emu->xmm[3].f[0], (int32_t)R_RCX, (int32_t)R_R8, emu->xmm[4].f[0], emu->xmm[5].f[0], (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuddiiddiiddiip(x64emu_t *emu, uintptr_t fcn) { vFuddiiddiiddiip_t fn = (vFuddiiddiiddiip_t)fcn; fn((uint32_t)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int32_t)R_RSI, (int32_t)R_RDX, emu->xmm[2].d[0], emu->xmm[3].d[0], (int32_t)R_RCX, (int32_t)R_R8, emu->xmm[4].d[0], emu->xmm[5].d[0], (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
+void vFuuiiiiuuiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiuuiiiiiii_t fn = (vFuuiiiiuuiiiiiii_t)fcn; fn((uint32_t)R_RDI, (uint32_t)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(uint32_t*)(R_RSP + 8), *(uint32_t*)(R_RSP + 16), *(int32_t*)(R_RSP + 24), *(int32_t*)(R_RSP + 32), *(int32_t*)(R_RSP + 40), *(int32_t*)(R_RSP + 48), *(int32_t*)(R_RSP + 56), *(int32_t*)(R_RSP + 64), *(int32_t*)(R_RSP + 72)); }
+void vFfffffffffffffff(x64emu_t *emu, uintptr_t fcn) { vFfffffffffffffff_t fn = (vFfffffffffffffff_t)fcn; fn(emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8), *(float*)(R_RSP + 16), *(float*)(R_RSP + 24), *(float*)(R_RSP + 32), *(float*)(R_RSP + 40), *(float*)(R_RSP + 48), *(float*)(R_RSP + 56)); }
+void vFppuiiiiipuiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFppuiiiiipuiiiiiiii_t fn = (vFppuiiiiipuiiiiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (int32_t)R_RCX, (int32_t)R_R8, (int32_t)R_R9, *(int32_t*)(R_RSP + 8), *(int32_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(uint32_t*)(R_RSP + 32), *(int32_t*)(R_RSP + 40), *(int32_t*)(R_RSP + 48), *(int32_t*)(R_RSP + 56), *(int32_t*)(R_RSP + 64), *(int32_t*)(R_RSP + 72), *(int32_t*)(R_RSP + 80), *(int32_t*)(R_RSP + 88), *(int32_t*)(R_RSP + 96)); }
 
 #if defined(HAVE_LD80BITS)
 void DFD(x64emu_t *emu, uintptr_t fcn) { DFD_t fn = (DFD_t)fcn; long double ld=fn(*(long double*)(R_RSP + 8)); fpu_do_push(emu); ST0val = ld; }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 9b59212d..da8843de 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -24,16 +24,20 @@ typedef void (*wrapper_t)(x64emu_t* emu, uintptr_t fnc);
 // O = libc O_ flags bitfield
 // S = _IO_2_1_stdXXX_ pointer (or FILE*)
 // Q = ...
-// 2 = struct of 2 uint
-// P = Vulkan struture pointer
-// G = a single GValue pointer
 // N = ... automatically sending 1 arg
 // M = ... automatically sending 2 args
+// H = Huge 128bits value/struct
 
 void vFE(x64emu_t *emu, uintptr_t fnc);
 void vFv(x64emu_t *emu, uintptr_t fnc);
 void vFi(x64emu_t *emu, uintptr_t fnc);
+void vFu(x64emu_t *emu, uintptr_t fnc);
+void vFf(x64emu_t *emu, uintptr_t fnc);
+void vFd(x64emu_t *emu, uintptr_t fnc);
 void vFp(x64emu_t *emu, uintptr_t fnc);
+void cFi(x64emu_t *emu, uintptr_t fnc);
+void cFu(x64emu_t *emu, uintptr_t fnc);
+void cFp(x64emu_t *emu, uintptr_t fnc);
 void iFE(x64emu_t *emu, uintptr_t fnc);
 void iFv(x64emu_t *emu, uintptr_t fnc);
 void iFi(x64emu_t *emu, uintptr_t fnc);
@@ -45,29 +49,75 @@ void iFp(x64emu_t *emu, uintptr_t fnc);
 void IFf(x64emu_t *emu, uintptr_t fnc);
 void IFd(x64emu_t *emu, uintptr_t fnc);
 void IFp(x64emu_t *emu, uintptr_t fnc);
+void WFi(x64emu_t *emu, uintptr_t fnc);
+void WFp(x64emu_t *emu, uintptr_t fnc);
+void uFv(x64emu_t *emu, uintptr_t fnc);
+void uFi(x64emu_t *emu, uintptr_t fnc);
 void uFu(x64emu_t *emu, uintptr_t fnc);
 void uFp(x64emu_t *emu, uintptr_t fnc);
+void UFv(x64emu_t *emu, uintptr_t fnc);
 void UFV(x64emu_t *emu, uintptr_t fnc);
+void fFi(x64emu_t *emu, uintptr_t fnc);
 void fFf(x64emu_t *emu, uintptr_t fnc);
+void fFp(x64emu_t *emu, uintptr_t fnc);
+void dFi(x64emu_t *emu, uintptr_t fnc);
 void dFd(x64emu_t *emu, uintptr_t fnc);
 void dFp(x64emu_t *emu, uintptr_t fnc);
 void lFp(x64emu_t *emu, uintptr_t fnc);
 void LFv(x64emu_t *emu, uintptr_t fnc);
 void LFp(x64emu_t *emu, uintptr_t fnc);
 void pFE(x64emu_t *emu, uintptr_t fnc);
+void pFv(x64emu_t *emu, uintptr_t fnc);
+void pFi(x64emu_t *emu, uintptr_t fnc);
 void pFu(x64emu_t *emu, uintptr_t fnc);
 void pFL(x64emu_t *emu, uintptr_t fnc);
 void pFp(x64emu_t *emu, uintptr_t fnc);
+void HFi(x64emu_t *emu, uintptr_t fnc);
+void HFp(x64emu_t *emu, uintptr_t fnc);
 void vFEp(x64emu_t *emu, uintptr_t fnc);
+void vFii(x64emu_t *emu, uintptr_t fnc);
+void vFiu(x64emu_t *emu, uintptr_t fnc);
+void vFif(x64emu_t *emu, uintptr_t fnc);
+void vFid(x64emu_t *emu, uintptr_t fnc);
+void vFip(x64emu_t *emu, uintptr_t fnc);
+void vFWW(x64emu_t *emu, uintptr_t fnc);
+void vFui(x64emu_t *emu, uintptr_t fnc);
+void vFuu(x64emu_t *emu, uintptr_t fnc);
+void vFuf(x64emu_t *emu, uintptr_t fnc);
+void vFud(x64emu_t *emu, uintptr_t fnc);
+void vFup(x64emu_t *emu, uintptr_t fnc);
+void vFfi(x64emu_t *emu, uintptr_t fnc);
+void vFff(x64emu_t *emu, uintptr_t fnc);
+void vFfp(x64emu_t *emu, uintptr_t fnc);
+void vFdd(x64emu_t *emu, uintptr_t fnc);
+void vFpi(x64emu_t *emu, uintptr_t fnc);
 void vFpp(x64emu_t *emu, uintptr_t fnc);
+void cFpp(x64emu_t *emu, uintptr_t fnc);
 void iFEp(x64emu_t *emu, uintptr_t fnc);
+void iFii(x64emu_t *emu, uintptr_t fnc);
 void iFip(x64emu_t *emu, uintptr_t fnc);
+void iFIi(x64emu_t *emu, uintptr_t fnc);
+void iFui(x64emu_t *emu, uintptr_t fnc);
+void iFuu(x64emu_t *emu, uintptr_t fnc);
 void iFup(x64emu_t *emu, uintptr_t fnc);
+void iFUU(x64emu_t *emu, uintptr_t fnc);
 void iFLL(x64emu_t *emu, uintptr_t fnc);
 void iFLp(x64emu_t *emu, uintptr_t fnc);
 void iFpi(x64emu_t *emu, uintptr_t fnc);
+void iFpC(x64emu_t *emu, uintptr_t fnc);
+void iFpu(x64emu_t *emu, uintptr_t fnc);
+void iFpf(x64emu_t *emu, uintptr_t fnc);
 void iFpp(x64emu_t *emu, uintptr_t fnc);
+void IFEp(x64emu_t *emu, uintptr_t fnc);
+void CFui(x64emu_t *emu, uintptr_t fnc);
+void CFpi(x64emu_t *emu, uintptr_t fnc);
+void uFEp(x64emu_t *emu, uintptr_t fnc);
+void uFui(x64emu_t *emu, uintptr_t fnc);
+void uFuu(x64emu_t *emu, uintptr_t fnc);
+void uFup(x64emu_t *emu, uintptr_t fnc);
+void uFpi(x64emu_t *emu, uintptr_t fnc);
 void uFpp(x64emu_t *emu, uintptr_t fnc);
+void UFEp(x64emu_t *emu, uintptr_t fnc);
 void fFif(x64emu_t *emu, uintptr_t fnc);
 void fFfi(x64emu_t *emu, uintptr_t fnc);
 void fFff(x64emu_t *emu, uintptr_t fnc);
@@ -76,19 +126,101 @@ void dFid(x64emu_t *emu, uintptr_t fnc);
 void dFdi(x64emu_t *emu, uintptr_t fnc);
 void dFdd(x64emu_t *emu, uintptr_t fnc);
 void dFdp(x64emu_t *emu, uintptr_t fnc);
+void dFpp(x64emu_t *emu, uintptr_t fnc);
+void LFpL(x64emu_t *emu, uintptr_t fnc);
 void pFEp(x64emu_t *emu, uintptr_t fnc);
+void pFii(x64emu_t *emu, uintptr_t fnc);
+void pFui(x64emu_t *emu, uintptr_t fnc);
+void pFuu(x64emu_t *emu, uintptr_t fnc);
 void pFup(x64emu_t *emu, uintptr_t fnc);
+void pFlp(x64emu_t *emu, uintptr_t fnc);
 void pFLL(x64emu_t *emu, uintptr_t fnc);
+void pFpi(x64emu_t *emu, uintptr_t fnc);
+void pFpu(x64emu_t *emu, uintptr_t fnc);
+void pFpL(x64emu_t *emu, uintptr_t fnc);
+void pFpp(x64emu_t *emu, uintptr_t fnc);
 void pFpV(x64emu_t *emu, uintptr_t fnc);
+void HFpi(x64emu_t *emu, uintptr_t fnc);
 void vFEpu(x64emu_t *emu, uintptr_t fnc);
+void vFEpp(x64emu_t *emu, uintptr_t fnc);
+void vFEpV(x64emu_t *emu, uintptr_t fnc);
+void vFiii(x64emu_t *emu, uintptr_t fnc);
+void vFiip(x64emu_t *emu, uintptr_t fnc);
+void vFiui(x64emu_t *emu, uintptr_t fnc);
+void vFiuu(x64emu_t *emu, uintptr_t fnc);
+void vFiup(x64emu_t *emu, uintptr_t fnc);
+void vFiff(x64emu_t *emu, uintptr_t fnc);
+void vFidd(x64emu_t *emu, uintptr_t fnc);
+void vFipi(x64emu_t *emu, uintptr_t fnc);
+void vFipu(x64emu_t *emu, uintptr_t fnc);
+void vFipp(x64emu_t *emu, uintptr_t fnc);
+void vFuii(x64emu_t *emu, uintptr_t fnc);
+void vFuiI(x64emu_t *emu, uintptr_t fnc);
+void vFuiu(x64emu_t *emu, uintptr_t fnc);
+void vFuif(x64emu_t *emu, uintptr_t fnc);
+void vFuid(x64emu_t *emu, uintptr_t fnc);
+void vFuip(x64emu_t *emu, uintptr_t fnc);
+void vFuui(x64emu_t *emu, uintptr_t fnc);
+void vFuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuf(x64emu_t *emu, uintptr_t fnc);
+void vFuud(x64emu_t *emu, uintptr_t fnc);
+void vFuup(x64emu_t *emu, uintptr_t fnc);
+void vFuff(x64emu_t *emu, uintptr_t fnc);
+void vFudd(x64emu_t *emu, uintptr_t fnc);
+void vFupi(x64emu_t *emu, uintptr_t fnc);
+void vFfff(x64emu_t *emu, uintptr_t fnc);
 void vFfpp(x64emu_t *emu, uintptr_t fnc);
+void vFddd(x64emu_t *emu, uintptr_t fnc);
 void vFdpp(x64emu_t *emu, uintptr_t fnc);
+void vFpii(x64emu_t *emu, uintptr_t fnc);
+void vFpiu(x64emu_t *emu, uintptr_t fnc);
+void vFpif(x64emu_t *emu, uintptr_t fnc);
+void vFpid(x64emu_t *emu, uintptr_t fnc);
+void vFpip(x64emu_t *emu, uintptr_t fnc);
+void vFppi(x64emu_t *emu, uintptr_t fnc);
+void vFppu(x64emu_t *emu, uintptr_t fnc);
+void vFppp(x64emu_t *emu, uintptr_t fnc);
+void iFEip(x64emu_t *emu, uintptr_t fnc);
+void iFEWW(x64emu_t *emu, uintptr_t fnc);
+void iFEup(x64emu_t *emu, uintptr_t fnc);
 void iFEpi(x64emu_t *emu, uintptr_t fnc);
 void iFEpp(x64emu_t *emu, uintptr_t fnc);
 void iFEpV(x64emu_t *emu, uintptr_t fnc);
+void iFiip(x64emu_t *emu, uintptr_t fnc);
+void iFipu(x64emu_t *emu, uintptr_t fnc);
+void iFipp(x64emu_t *emu, uintptr_t fnc);
+void iFuup(x64emu_t *emu, uintptr_t fnc);
+void iFuff(x64emu_t *emu, uintptr_t fnc);
+void iFfff(x64emu_t *emu, uintptr_t fnc);
+void iFpii(x64emu_t *emu, uintptr_t fnc);
 void iFpiu(x64emu_t *emu, uintptr_t fnc);
+void iFpip(x64emu_t *emu, uintptr_t fnc);
+void iFpuu(x64emu_t *emu, uintptr_t fnc);
 void iFpuL(x64emu_t *emu, uintptr_t fnc);
+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 iFppi(x64emu_t *emu, uintptr_t fnc);
+void iFppu(x64emu_t *emu, uintptr_t fnc);
 void iFppL(x64emu_t *emu, uintptr_t fnc);
+void iFppp(x64emu_t *emu, uintptr_t fnc);
+void iFppV(x64emu_t *emu, uintptr_t fnc);
+void IFpIi(x64emu_t *emu, uintptr_t fnc);
+void IFppi(x64emu_t *emu, uintptr_t fnc);
+void uFEpW(x64emu_t *emu, uintptr_t fnc);
+void uFEpu(x64emu_t *emu, uintptr_t fnc);
+void uFEpU(x64emu_t *emu, uintptr_t fnc);
+void uFipu(x64emu_t *emu, uintptr_t fnc);
+void uFuip(x64emu_t *emu, uintptr_t fnc);
+void uFuuu(x64emu_t *emu, uintptr_t fnc);
+void uFuup(x64emu_t *emu, uintptr_t fnc);
+void uFupu(x64emu_t *emu, uintptr_t fnc);
+void uFupp(x64emu_t *emu, uintptr_t fnc);
+void uFpiu(x64emu_t *emu, uintptr_t fnc);
+void uFppi(x64emu_t *emu, uintptr_t fnc);
+void uFppu(x64emu_t *emu, uintptr_t fnc);
+void UFppi(x64emu_t *emu, uintptr_t fnc);
+void fFuii(x64emu_t *emu, uintptr_t fnc);
 void fFfff(x64emu_t *emu, uintptr_t fnc);
 void fFffp(x64emu_t *emu, uintptr_t fnc);
 void dFddd(x64emu_t *emu, uintptr_t fnc);
@@ -96,23 +228,392 @@ void dFddp(x64emu_t *emu, uintptr_t fnc);
 void pFEip(x64emu_t *emu, uintptr_t fnc);
 void pFEpi(x64emu_t *emu, uintptr_t fnc);
 void pFEpp(x64emu_t *emu, uintptr_t fnc);
+void pFipi(x64emu_t *emu, uintptr_t fnc);
 void pFipp(x64emu_t *emu, uintptr_t fnc);
+void pFIpi(x64emu_t *emu, uintptr_t fnc);
+void pFuii(x64emu_t *emu, uintptr_t fnc);
+void pFupi(x64emu_t *emu, uintptr_t fnc);
+void pFUpi(x64emu_t *emu, uintptr_t fnc);
+void pFpii(x64emu_t *emu, uintptr_t fnc);
+void pFpiu(x64emu_t *emu, uintptr_t fnc);
 void pFpiL(x64emu_t *emu, uintptr_t fnc);
+void pFpip(x64emu_t *emu, uintptr_t fnc);
+void pFpuu(x64emu_t *emu, uintptr_t fnc);
+void pFppi(x64emu_t *emu, uintptr_t fnc);
+void pFppu(x64emu_t *emu, uintptr_t fnc);
 void pFppL(x64emu_t *emu, uintptr_t fnc);
+void pFppp(x64emu_t *emu, uintptr_t fnc);
+void vFEipV(x64emu_t *emu, uintptr_t fnc);
+void vFEpip(x64emu_t *emu, uintptr_t fnc);
 void vFEpup(x64emu_t *emu, uintptr_t fnc);
+void vFiiii(x64emu_t *emu, uintptr_t fnc);
+void vFiiip(x64emu_t *emu, uintptr_t fnc);
+void vFiuip(x64emu_t *emu, uintptr_t fnc);
+void vFiuuu(x64emu_t *emu, uintptr_t fnc);
+void vFiupu(x64emu_t *emu, uintptr_t fnc);
+void vFiupV(x64emu_t *emu, uintptr_t fnc);
+void vFifff(x64emu_t *emu, uintptr_t fnc);
+void vFiddd(x64emu_t *emu, uintptr_t fnc);
+void vFipup(x64emu_t *emu, uintptr_t fnc);
+void vFippp(x64emu_t *emu, uintptr_t fnc);
+void vFuiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiui(x64emu_t *emu, uintptr_t fnc);
+void vFuiuu(x64emu_t *emu, uintptr_t fnc);
+void vFuiup(x64emu_t *emu, uintptr_t fnc);
+void vFuifi(x64emu_t *emu, uintptr_t fnc);
+void vFuiff(x64emu_t *emu, uintptr_t fnc);
+void vFuidd(x64emu_t *emu, uintptr_t fnc);
+void vFuipi(x64emu_t *emu, uintptr_t fnc);
+void vFuipu(x64emu_t *emu, uintptr_t fnc);
+void vFuipp(x64emu_t *emu, uintptr_t fnc);
+void vFuuii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiu(x64emu_t *emu, uintptr_t fnc);
+void vFuuip(x64emu_t *emu, uintptr_t fnc);
+void vFuuui(x64emu_t *emu, uintptr_t fnc);
+void vFuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuuf(x64emu_t *emu, uintptr_t fnc);
+void vFuuud(x64emu_t *emu, uintptr_t fnc);
+void vFuuup(x64emu_t *emu, uintptr_t fnc);
+void vFuupi(x64emu_t *emu, uintptr_t fnc);
+void vFuupp(x64emu_t *emu, uintptr_t fnc);
+void vFufff(x64emu_t *emu, uintptr_t fnc);
+void vFuddd(x64emu_t *emu, uintptr_t fnc);
+void vFupii(x64emu_t *emu, uintptr_t fnc);
+void vFuppi(x64emu_t *emu, uintptr_t fnc);
+void vFffff(x64emu_t *emu, uintptr_t fnc);
+void vFdddd(x64emu_t *emu, uintptr_t fnc);
+void vFpiii(x64emu_t *emu, uintptr_t fnc);
+void vFpiip(x64emu_t *emu, uintptr_t fnc);
+void vFpipp(x64emu_t *emu, uintptr_t fnc);
+void vFpdii(x64emu_t *emu, uintptr_t fnc);
+void vFpddd(x64emu_t *emu, uintptr_t fnc);
+void vFppip(x64emu_t *emu, uintptr_t fnc);
+void vFppui(x64emu_t *emu, uintptr_t fnc);
+void vFpppp(x64emu_t *emu, uintptr_t fnc);
+void cFpiii(x64emu_t *emu, uintptr_t fnc);
 void iFEupp(x64emu_t *emu, uintptr_t fnc);
 void iFEpip(x64emu_t *emu, uintptr_t fnc);
+void iFEppi(x64emu_t *emu, uintptr_t fnc);
 void iFEppp(x64emu_t *emu, uintptr_t fnc);
+void iFiiiu(x64emu_t *emu, uintptr_t fnc);
+void iFippp(x64emu_t *emu, uintptr_t fnc);
 void iFuipp(x64emu_t *emu, uintptr_t fnc);
+void iFuuff(x64emu_t *emu, uintptr_t fnc);
+void iFuppp(x64emu_t *emu, uintptr_t fnc);
+void iFpiiu(x64emu_t *emu, uintptr_t fnc);
+void iFpiip(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);
+void iFpuup(x64emu_t *emu, uintptr_t fnc);
+void iFpupV(x64emu_t *emu, uintptr_t fnc);
+void iFppii(x64emu_t *emu, uintptr_t fnc);
+void iFppiu(x64emu_t *emu, uintptr_t fnc);
+void iFppip(x64emu_t *emu, uintptr_t fnc);
+void iFpppi(x64emu_t *emu, uintptr_t fnc);
+void iFpppp(x64emu_t *emu, uintptr_t fnc);
+void IFEpIi(x64emu_t *emu, uintptr_t fnc);
+void uFuuuu(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 uFpppi(x64emu_t *emu, uintptr_t fnc);
 void LFpLLp(x64emu_t *emu, uintptr_t fnc);
+void pFEupp(x64emu_t *emu, uintptr_t fnc);
 void pFEppi(x64emu_t *emu, uintptr_t fnc);
 void pFEppp(x64emu_t *emu, uintptr_t fnc);
+void pFiiiu(x64emu_t *emu, uintptr_t fnc);
+void pFiiup(x64emu_t *emu, uintptr_t fnc);
+void pFuiii(x64emu_t *emu, uintptr_t fnc);
+void pFpiii(x64emu_t *emu, uintptr_t fnc);
+void pFpipp(x64emu_t *emu, uintptr_t fnc);
+void pFpuii(x64emu_t *emu, uintptr_t fnc);
 void pFppiL(x64emu_t *emu, uintptr_t fnc);
 void pFppuL(x64emu_t *emu, uintptr_t fnc);
+void pFppLL(x64emu_t *emu, uintptr_t fnc);
+void pFpppi(x64emu_t *emu, uintptr_t fnc);
+void pFpppu(x64emu_t *emu, uintptr_t fnc);
+void pFpppL(x64emu_t *emu, uintptr_t fnc);
+void pFpppp(x64emu_t *emu, uintptr_t fnc);
+void vFEpuup(x64emu_t *emu, uintptr_t fnc);
+void vFiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFiiiiu(x64emu_t *emu, uintptr_t fnc);
+void vFiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFiipii(x64emu_t *emu, uintptr_t fnc);
+void vFiuiip(x64emu_t *emu, uintptr_t fnc);
+void vFiuipi(x64emu_t *emu, uintptr_t fnc);
+void vFiuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFiffff(x64emu_t *emu, uintptr_t fnc);
+void vFidddd(x64emu_t *emu, uintptr_t fnc);
+void vFilill(x64emu_t *emu, uintptr_t fnc);
+void vFipipu(x64emu_t *emu, uintptr_t fnc);
+void vFipipp(x64emu_t *emu, uintptr_t fnc);
+void vFipupi(x64emu_t *emu, uintptr_t fnc);
+void vFuiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiu(x64emu_t *emu, uintptr_t fnc);
+void vFuiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiiup(x64emu_t *emu, uintptr_t fnc);
+void vFuiIII(x64emu_t *emu, uintptr_t fnc);
+void vFuiuii(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiu(x64emu_t *emu, uintptr_t fnc);
+void vFuiuip(x64emu_t *emu, uintptr_t fnc);
+void vFuiuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiupi(x64emu_t *emu, uintptr_t fnc);
+void vFuiupu(x64emu_t *emu, uintptr_t fnc);
+void vFuifff(x64emu_t *emu, uintptr_t fnc);
+void vFuiddd(x64emu_t *emu, uintptr_t fnc);
+void vFuipii(x64emu_t *emu, uintptr_t fnc);
+void vFuipip(x64emu_t *emu, uintptr_t fnc);
+void vFuipup(x64emu_t *emu, uintptr_t fnc);
+void vFuippp(x64emu_t *emu, uintptr_t fnc);
+void vFuuiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiui(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuiup(x64emu_t *emu, uintptr_t fnc);
+void vFuuipi(x64emu_t *emu, uintptr_t fnc);
+void vFuuipu(x64emu_t *emu, uintptr_t fnc);
+void vFuuipp(x64emu_t *emu, uintptr_t fnc);
+void vFuuuii(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiu(x64emu_t *emu, uintptr_t fnc);
+void vFuuuip(x64emu_t *emu, uintptr_t fnc);
+void vFuuuui(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuuup(x64emu_t *emu, uintptr_t fnc);
+void vFuupii(x64emu_t *emu, uintptr_t fnc);
+void vFuffff(x64emu_t *emu, uintptr_t fnc);
+void vFudddd(x64emu_t *emu, uintptr_t fnc);
+void vFupupi(x64emu_t *emu, uintptr_t fnc);
+void vFuppip(x64emu_t *emu, uintptr_t fnc);
+void vFupppp(x64emu_t *emu, uintptr_t fnc);
+void vFfffff(x64emu_t *emu, uintptr_t fnc);
+void vFddddp(x64emu_t *emu, uintptr_t fnc);
+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 vFppWui(x64emu_t *emu, uintptr_t fnc);
+void vFpppii(x64emu_t *emu, uintptr_t fnc);
+void vFppppp(x64emu_t *emu, uintptr_t fnc);
 void iFEppiV(x64emu_t *emu, uintptr_t fnc);
 void iFEpppp(x64emu_t *emu, uintptr_t fnc);
+void iFiiupp(x64emu_t *emu, uintptr_t fnc);
 void iFipppi(x64emu_t *emu, uintptr_t fnc);
+void iFpiiii(x64emu_t *emu, uintptr_t fnc);
+void iFpiiip(x64emu_t *emu, uintptr_t fnc);
+void iFpiiuu(x64emu_t *emu, uintptr_t fnc);
+void iFpipii(x64emu_t *emu, uintptr_t fnc);
+void iFpippp(x64emu_t *emu, uintptr_t fnc);
+void iFpCCCC(x64emu_t *emu, uintptr_t fnc);
+void iFppipi(x64emu_t *emu, uintptr_t fnc);
+void iFppupi(x64emu_t *emu, uintptr_t fnc);
+void iFppppp(x64emu_t *emu, uintptr_t fnc);
+void IFppIII(x64emu_t *emu, uintptr_t fnc);
+void uFEppuu(x64emu_t *emu, uintptr_t fnc);
+void uFiuuuu(x64emu_t *emu, uintptr_t fnc);
+void uFuiiiu(x64emu_t *emu, uintptr_t fnc);
+void uFpCCCC(x64emu_t *emu, uintptr_t fnc);
+void uFpuuuu(x64emu_t *emu, uintptr_t fnc);
+void uFppppp(x64emu_t *emu, uintptr_t fnc);
+void LFppppp(x64emu_t *emu, uintptr_t fnc);
+void pFuiiiu(x64emu_t *emu, uintptr_t fnc);
+void pFuiipp(x64emu_t *emu, uintptr_t fnc);
+void pFpuiii(x64emu_t *emu, uintptr_t fnc);
+void pFppipi(x64emu_t *emu, uintptr_t fnc);
+void pFppuup(x64emu_t *emu, uintptr_t fnc);
+void pFpppip(x64emu_t *emu, uintptr_t fnc);
+void vFEiiipp(x64emu_t *emu, uintptr_t fnc);
+void vFiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFiiiuil(x64emu_t *emu, uintptr_t fnc);
+void vFiuippp(x64emu_t *emu, uintptr_t fnc);
+void vFiffiff(x64emu_t *emu, uintptr_t fnc);
+void vFiddidd(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiiuii(x64emu_t *emu, uintptr_t fnc);
+void vFuiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiuu(x64emu_t *emu, uintptr_t fnc);
+void vFuiuuip(x64emu_t *emu, uintptr_t fnc);
+void vFuiuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuiupii(x64emu_t *emu, uintptr_t fnc);
+void vFuiupiu(x64emu_t *emu, uintptr_t fnc);
+void vFuiffff(x64emu_t *emu, uintptr_t fnc);
+void vFuidddd(x64emu_t *emu, uintptr_t fnc);
+void vFuipiup(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiu(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuippp(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiup(x64emu_t *emu, uintptr_t fnc);
+void vFuuuipi(x64emu_t *emu, uintptr_t fnc);
+void vFuuuipp(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuii(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuip(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuff(x64emu_t *emu, uintptr_t fnc);
+void vFuuuppi(x64emu_t *emu, uintptr_t fnc);
+void vFuuuppp(x64emu_t *emu, uintptr_t fnc);
+void vFuuffff(x64emu_t *emu, uintptr_t fnc);
+void vFuudddd(x64emu_t *emu, uintptr_t fnc);
+void vFuffiip(x64emu_t *emu, uintptr_t fnc);
+void vFufffff(x64emu_t *emu, uintptr_t fnc);
+void vFuddiip(x64emu_t *emu, uintptr_t fnc);
+void vFupupip(x64emu_t *emu, uintptr_t fnc);
+void vFuppppp(x64emu_t *emu, uintptr_t fnc);
+void vFffffff(x64emu_t *emu, uintptr_t fnc);
+void vFdddddd(x64emu_t *emu, uintptr_t fnc);
+void vFpdddii(x64emu_t *emu, uintptr_t fnc);
+void vFppiiii(x64emu_t *emu, uintptr_t fnc);
+void vFppupii(x64emu_t *emu, uintptr_t fnc);
+void vFpppppp(x64emu_t *emu, uintptr_t fnc);
+void iFEpippi(x64emu_t *emu, uintptr_t fnc);
+void iFEpupVV(x64emu_t *emu, uintptr_t fnc);
+void iFiiiiii(x64emu_t *emu, uintptr_t fnc);
+void iFiiiiip(x64emu_t *emu, uintptr_t fnc);
+void iFuppppp(x64emu_t *emu, uintptr_t fnc);
+void iFpiiipp(x64emu_t *emu, uintptr_t fnc);
+void iFppIppp(x64emu_t *emu, uintptr_t fnc);
+void pFEpippp(x64emu_t *emu, uintptr_t fnc);
+void pFiCiiCi(x64emu_t *emu, uintptr_t fnc);
+void pFpiiiiu(x64emu_t *emu, uintptr_t fnc);
+void pFpippip(x64emu_t *emu, uintptr_t fnc);
+void pFpuuuuu(x64emu_t *emu, uintptr_t fnc);
+void pFppiiii(x64emu_t *emu, uintptr_t fnc);
+void vFiiiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFiiupuip(x64emu_t *emu, uintptr_t fnc);
+void vFiiffffp(x64emu_t *emu, uintptr_t fnc);
+void vFiupuuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiuip(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiuu(x64emu_t *emu, uintptr_t fnc);
+void vFuiupiiu(x64emu_t *emu, uintptr_t fnc);
+void vFuipiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuipffff(x64emu_t *emu, uintptr_t fnc);
+void vFuipdddd(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiui(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuipppp(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiuii(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiupi(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuuufff(x64emu_t *emu, uintptr_t fnc);
+void vFuuuffff(x64emu_t *emu, uintptr_t fnc);
+void vFuuudddd(x64emu_t *emu, uintptr_t fnc);
+void vFuuffiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuddiip(x64emu_t *emu, uintptr_t fnc);
+void vFuffffff(x64emu_t *emu, uintptr_t fnc);
+void vFudddddd(x64emu_t *emu, uintptr_t fnc);
+void vFpipipii(x64emu_t *emu, uintptr_t fnc);
+void vFpddiidd(x64emu_t *emu, uintptr_t fnc);
+void iFiiiiiip(x64emu_t *emu, uintptr_t fnc);
+void iFpuuiuui(x64emu_t *emu, uintptr_t fnc);
+void iFppppdpi(x64emu_t *emu, uintptr_t fnc);
+void iFppppppp(x64emu_t *emu, uintptr_t fnc);
+void uFuippppp(x64emu_t *emu, uintptr_t fnc);
+void vFiiiiuuip(x64emu_t *emu, uintptr_t fnc);
+void vFiupuiuup(x64emu_t *emu, uintptr_t fnc);
+void vFiupuuuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiiipiup(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiuip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiuupp(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiuiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuuipipp(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuufff(x64emu_t *emu, uintptr_t fnc);
+void vFffffffff(x64emu_t *emu, uintptr_t fnc);
 void iFEpippppp(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);
+void iFpupppppp(x64emu_t *emu, uintptr_t fnc);
+void iFppIIIppp(x64emu_t *emu, uintptr_t fnc);
+void iFpppipipi(x64emu_t *emu, uintptr_t fnc);
+void uFuipppppp(x64emu_t *emu, uintptr_t fnc);
+void pFuiiiuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiuip(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiupuffup(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuuiiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuupiuiuuf(x64emu_t *emu, uintptr_t fnc);
+void vFuffffffff(x64emu_t *emu, uintptr_t fnc);
+void vFffuuuufff(x64emu_t *emu, uintptr_t fnc);
+void vFddddddddd(x64emu_t *emu, uintptr_t fnc);
+void iFiiiiiiiip(x64emu_t *emu, uintptr_t fnc);
+void iFiiiipiiip(x64emu_t *emu, uintptr_t fnc);
+void iFdddpppppp(x64emu_t *emu, uintptr_t fnc);
+void pFpiiiiuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFiiiiiiiiiu(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiiuip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuuiii(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuupiiupuuf(x64emu_t *emu, uintptr_t fnc);
+void vFuffiiffiip(x64emu_t *emu, uintptr_t fnc);
+void vFuddiiddiip(x64emu_t *emu, uintptr_t fnc);
+void vFffffffffff(x64emu_t *emu, uintptr_t fnc);
+void iFiiiiiiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiiiuip(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuiuiiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuiuiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuuffiiffiip(x64emu_t *emu, uintptr_t fnc);
+void vFuufffffffff(x64emu_t *emu, uintptr_t fnc);
+void vFuuddiiddiip(x64emu_t *emu, uintptr_t fnc);
+void vFuffffffffff(x64emu_t *emu, uintptr_t fnc);
+void vFpipipiipiii(x64emu_t *emu, uintptr_t fnc);
+void iFiiiiiiiiiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiiiiuip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFffffffffffff(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiiiiiiiuup(x64emu_t *emu, uintptr_t fnc);
+void vFuuuuuuuuuuuuu(x64emu_t *emu, uintptr_t fnc);
+void vFuffffffffffff(x64emu_t *emu, uintptr_t fnc);
+void iFddddpppddpppp(x64emu_t *emu, uintptr_t fnc);
+void vFuffiiffiiffiip(x64emu_t *emu, uintptr_t fnc);
+void vFuddiiddiiddiip(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiiuuiiiiiii(x64emu_t *emu, uintptr_t fnc);
+void vFfffffffffffffff(x64emu_t *emu, uintptr_t fnc);
+void vFppuiiiiipuiiiiiiii(x64emu_t *emu, uintptr_t fnc);
 
 #if defined(HAVE_LD80BITS)
 void DFD(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index ed3c7982..03825002 100755
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -1840,7 +1840,7 @@ EXPORT int32_t my_posix_spawnp(x64emu_t* emu, pid_t* pid, const char* path,
     // fullpath is gone, so the search will only be on PATH, not on BOX86_PATH (is that an issue?)
     return posix_spawnp(pid, path, actions, attrp, argv, envp);
 }
-
+#endif
 EXPORT void my__Jv_RegisterClasses() {}
 
 EXPORT int32_t my___cxa_thread_atexit_impl(x64emu_t* emu, void* dtor, void* obj, void* dso)
@@ -1857,7 +1857,7 @@ EXPORT unsigned long int my___fdelt_chk (unsigned long int d)
 
   return d / __NFDBITS;
 }
-
+#if 0
 EXPORT int32_t my_getrandom(x64emu_t* emu, void* buf, uint32_t buflen, uint32_t flags)
 {
     // not always implemented on old linux version...
diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h
index eaef9a7a..b183f5f0 100755
--- a/src/wrapped/wrappedlibc_private.h
+++ b/src/wrapped/wrappedlibc_private.h
@@ -73,6 +73,7 @@ GO(atoll, IFp)
 //GO(__backtrace_symbols_fd, 
 //GOW(backtrace_symbols_fd, 
 //GOW(basename, 
+//GOI(bcmp, 
 //GO(bcopy, 
 //GO(bdflush, 
 //GOW(bind, 
@@ -609,6 +610,8 @@ GOM(getcontext, iFEp)   //Weak
 //GO(getspnam_r, 
 //GO(getsubopt, 
 //GOW(gettext, 
+//GOI(__gettimeofday, 
+//GOI(gettimeofday, 
 //GOW(getttyent, 
 //GOW(getttynam, 
 //GOW(getuid, 
@@ -677,6 +680,7 @@ GOM(getcontext, iFEp)   //Weak
 //GOW(if_nametoindex, 
 //GOW(imaxabs, 
 //GOW(imaxdiv, 
+//GOI(index, 
 //GO(inet6_opt_append, 
 //GO(inet6_opt_find, 
 //GO(inet6_opt_finish, 
@@ -1442,6 +1446,8 @@ GOW(puts, iFp)
 //GOW(random, 
 //GOW(random_r, 
 //GO(rand_r, 
+//GOI(__rawmemchr, 
+//GOI(rawmemchr, 
 //GO(rcmd, 
 //GO(rcmd_af, 
 //DATAB(__rcmd_errstr, 
@@ -1521,6 +1527,7 @@ GOW(puts, iFp)
 //GO(rexec, 
 //GO(rexec_af, 
 //DATAB(rexecoptions, 
+//GOI(rindex, 
 //GOW(rmdir, 
 //DATAB(rpc_createerr, 
 //GO(_rpc_dtablesize, 
@@ -1546,6 +1553,7 @@ GOW(puts, iFp)
 //GO(scandirat64, 
 //GO(scanf, 
 //GO(__sched_cpualloc, 
+//GOI(__sched_cpucount, 
 //GO(__sched_cpufree, 
 //GO(sched_getaffinity, 
 //GO(sched_getaffinity, 
@@ -1729,18 +1737,31 @@ DATA(stdin, 8)
 DATA(stdout, 8)
 //GOW(step, 
 //GO(stime, 
+//GOI(__stpcpy, 
+//GOI(stpcpy, 
 //GO(__stpcpy_chk, 
 //GO(__stpcpy_small, 
+//GOI(__stpncpy, 
+//GOI(stpncpy, 
 //GO(__stpncpy_chk, 
+//GOI(__strcasecmp, 
+//GOI(strcasecmp, 
+//GOI(__strcasecmp_l, 
+//GOI(strcasecmp_l, 
 //GO(__strcasestr, 
 //GOW(strcasestr, 
+//GOI(strcat, 
 //GO(__strcat_chk, 
+//GOI(strchr, 
+//GOI(strchrnul, 
 GO(strcmp, iFpp)
 //GO(strcoll, 
 //GO(__strcoll_l, 
 //GOW(strcoll_l, 
+//GOI(strcpy, 
 //GO(__strcpy_chk, 
 //GO(__strcpy_small, 
+//GOI(strcspn, 
 //GO(__strcspn_c1, 
 //GO(__strcspn_c2, 
 //GO(__strcspn_c3, 
@@ -1766,23 +1787,34 @@ GO(strcmp, iFpp)
 //GO(__strftime_l, 
 //GOW(strftime_l, 
 GO(strlen, LFp)
-//GO(__strncat_chk, 
-//GO(__strncpy_chk, 
-//GO(__strndup, 
-//GOW(strndup, 
+GO(strncasecmp, iFppL)
+//GOI(__strncasecmp_l, 
+//GOI(strncasecmp_l, 
+GO(strncat, pFppL)
+GO(__strncat_chk, pFppLL)
+GO(strncmp, iFppL)
+GO(strncpy, pFppL)
+GO(__strncpy_chk, pFppLL)
+GO(__strndup, pFpL)
+GOW(strndup, pFpL)
+GO(strnlen, LFpL)
+GO(strpbrk, pFpp)
 //GO(__strpbrk_c2, 
 //GO(__strpbrk_c3, 
 //GO(strptime, 
 //GOW(strptime_l, 
+//GOI(strrchr, 
 //GOW(strsep, 
 //GO(__strsep_1c, 
 //GO(__strsep_2c, 
 //GO(__strsep_3c, 
 //GO(__strsep_g, 
 //GO(strsignal, 
+//GOI(strspn, 
 //GO(__strspn_c1, 
 //GO(__strspn_c2, 
 //GO(__strspn_c3, 
+//GOI(strstr, 
 //GO(strtod, 
 //GO(__strtod_internal, 
 //GO(__strtod_l, 
@@ -1927,6 +1959,7 @@ GOM(syscall, iFEv)
 //GO(thrd_equal, 
 //GO(thrd_sleep, 
 //GO(thrd_yield, 
+//GOI(time, 
 //GO(timegm, 
 //GOW(timelocal, 
 //GO(timerfd_create, 
@@ -2063,26 +2096,33 @@ GO(usleep, iFu)
 //GOW(wcscasecmp_l, 
 //GOW(wcscat, 
 //GO(__wcscat_chk, 
+//GOI(wcschr, 
 //GOW(wcschrnul, 
+//GOI(wcscmp, 
 //GOW(wcscoll, 
 //GO(__wcscoll_l, 
 //GOW(wcscoll_l, 
+//GOI(wcscpy, 
 //GO(__wcscpy_chk, 
 //GO(wcscspn, 
 //GO(wcsdup, 
 //GO(wcsftime, 
 //GO(__wcsftime_l, 
 //GOW(wcsftime_l, 
+//GOI(wcslen, 
 //GOW(wcsncasecmp, 
 //GO(__wcsncasecmp_l, 
 //GOW(wcsncasecmp_l, 
 //GO(wcsncat, 
 //GO(__wcsncat_chk, 
+//GOI(wcsncmp, 
 //GOW(wcsncpy, 
 //GO(__wcsncpy_chk, 
 //GOW(wcsnrtombs, 
 //GO(__wcsnrtombs_chk, 
+//GOI(wcsnlen, 
 //GO(wcspbrk, 
+//GOI(wcsrchr, 
 //GOW(wcsrtombs, 
 //GO(__wcsrtombs_chk, 
 //GO(wcsspn, 
@@ -2148,12 +2188,16 @@ GOW(wctype, uFp)
 GOW(wctype_l, uFpp)
 GO(__wctype_l, uFpp)
 //GO(wcwidth, 
+//GOI(wmemchr, 
+//GOI(wmemcmp, 
 //GOW(wmemcpy, 
 //GO(__wmemcpy_chk, 
 //GOW(wmemmove, 
 //GO(__wmemmove_chk, 
 //GOW(wmempcpy, 
 //GO(__wmempcpy_chk, 
+//GOI(wmemset, 
+//GOI(__wmemset_chk, 
 //GO(wordexp, 
 //GO(wordfree, 
 //GO(__woverflow, 
@@ -2247,55 +2291,11 @@ GO(__wctype_l, uFpp)
 //GO(__xstat, 
 //GO(__xstat64, 
 
+GOM(_Jv_RegisterClasses, vFv)   // dummy
+
 GOM(_ITM_addUserCommitAction, vFEpup)
 GOM(_ITM_registerTMCloneTable, vFEpu)
 GOM(_ITM_deregisterTMCloneTable, vFEp)
 
 GOM(__register_frame_info, vFpp)    // faked function
 GOM(__deregister_frame_info, pFp)
-
-//GOI(bcmp, 
-//GOI(__gettimeofday, 
-//GOI(gettimeofday, 
-//GOI(index, 
-//GOI(__rawmemchr, 
-//GOI(rawmemchr, 
-//GOI(rindex, 
-//GOI(__sched_cpucount, 
-//GOI(__stpcpy, 
-//GOI(stpcpy, 
-//GOI(__stpncpy, 
-//GOI(stpncpy, 
-//GOI(__strcasecmp, 
-//GOI(strcasecmp, 
-//GOI(__strcasecmp_l, 
-//GOI(strcasecmp_l, 
-//GOI(strcat, 
-//GOI(strchr, 
-//GOI(strchrnul, 
-//GOI(strcmp, 
-//GOI(strcpy, 
-//GOI(strcspn, 
-//GOI(strncasecmp, 
-//GOI(__strncasecmp_l, 
-//GOI(strncasecmp_l, 
-//GOI(strncat, 
-//GOI(strncmp, 
-//GOI(strncpy, 
-//GOI(strnlen, 
-//GOI(strpbrk, 
-//GOI(strrchr, 
-//GOI(strspn, 
-//GOI(strstr, 
-//GOI(time, 
-//GOI(wcschr, 
-//GOI(wcscmp, 
-//GOI(wcscpy, 
-//GOI(wcslen, 
-//GOI(wcsncmp, 
-//GOI(wcsnlen, 
-//GOI(wcsrchr, 
-//GOI(wmemchr, 
-//GOI(wmemcmp, 
-//GOI(wmemset, 
-//GOI(__wmemset_chk, 
\ No newline at end of file
diff --git a/src/wrapped/wrappedlibgl.c b/src/wrapped/wrappedlibgl.c
new file mode 100755
index 00000000..2343506a
--- /dev/null
+++ b/src/wrapped/wrappedlibgl.c
@@ -0,0 +1,193 @@
+#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 "box64context.h"
+#include "librarian.h"
+#include "callback.h"
+
+extern char* libGL;
+
+const char* libglName = "libGL.so.1";
+#define LIBNAME libgl
+
+void fillGLProcWrapper(box64context_t*);
+void freeProcWrapper(kh_symbolmap_t** symbolmap);
+
+EXPORT void* my_glXGetProcAddress(x64emu_t* emu, void* name) 
+{
+    khint_t k;
+    const char* rname = (const char*)name;
+    if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "Calling glXGetProcAddress(\"%s\") => ", rname);
+    if(!emu->context->glwrappers)
+        fillGLProcWrapper(emu->context);
+    // check if glxprocaddress is filled, and search for lib and fill it if needed
+    // get proc adress using actual glXGetProcAddress
+    k = kh_get(symbolmap, emu->context->glmymap, rname);
+    int is_my = (k==kh_end(emu->context->glmymap))?0:1;
+    void* symbol;
+    if(is_my) {
+        // try again, by using custom "my_" now...
+        char tmp[200];
+        strcpy(tmp, "my_");
+        strcat(tmp, rname);
+        symbol = dlsym(emu->context->box64lib, tmp);
+    } else 
+        symbol = emu->context->glxprocaddress(rname);
+    if(!symbol) {
+        if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL);
+        return NULL;    // easy
+    }
+    // check if alread bridged
+    uintptr_t ret = CheckBridged(emu->context->system, symbol);
+    if(ret) {
+        if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", (void*)ret);
+        return (void*)ret; // already bridged
+    }
+    // get wrapper    
+    k = kh_get(symbolmap, emu->context->glwrappers, rname);
+    if(k==kh_end(emu->context->glwrappers) && strstr(rname, "ARB")==NULL) {
+        // try again, adding ARB at the end if not present
+        char tmp[200];
+        strcpy(tmp, rname);
+        strcat(tmp, "ARB");
+        k = kh_get(symbolmap, emu->context->glwrappers, tmp);
+    }
+    if(k==kh_end(emu->context->glwrappers) && strstr(rname, "EXT")==NULL) {
+        // try again, adding EXT at the end if not present
+        char tmp[200];
+        strcpy(tmp, rname);
+        strcat(tmp, "EXT");
+        k = kh_get(symbolmap, emu->context->glwrappers, tmp);
+    }
+    if(k==kh_end(emu->context->glwrappers)) {
+        if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL);
+        if(dlsym_error && box64_log<LOG_INFO) printf_log(LOG_NONE, "Warning, no wrapper for %s\n", rname);
+        return NULL;
+    }
+    AddOffsetSymbol(emu->context->maplib, symbol, rname);
+    ret = AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0);
+    if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", (void*)ret);
+    return (void*)ret;
+
+}
+EXPORT void* my_glXGetProcAddressARB(x64emu_t* emu, void* name) __attribute__((alias("my_glXGetProcAddress")));
+
+typedef int  (*iFi_t)(int);
+typedef void (*vFpp_t)(void*, void*);
+typedef void (*debugProc_t)(int32_t, int32_t, uint32_t, int32_t, int32_t, void*, void*);
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// debug_callback ...
+#define GO(A)   \
+static uintptr_t my_debug_callback_fct_##A = 0;                                                                         \
+static void my_debug_callback_##A(int32_t a, int32_t b, uint32_t c, int32_t d, int32_t e, const char* f, const void* g) \
+{                                                                                                                       \
+    RunFunction(my_context, my_debug_callback_fct_##A, 7, a, b, c, d, e, f, g);                                         \
+}
+SUPER()
+#undef GO
+static void* find_debug_callback_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_debug_callback_fct_##A == (uintptr_t)fct) return my_debug_callback_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_debug_callback_fct_##A == 0) {my_debug_callback_fct_##A = (uintptr_t)fct; return my_debug_callback_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libGL debug_callback callback\n");
+    return NULL;
+}
+#undef SUPER
+
+EXPORT void my_glDebugMessageCallback(x64emu_t* emu, void* prod, void* param)
+{
+    static vFpp_t DebugMessageCallback = NULL;
+    static int init = 1;
+    if(init) {
+        DebugMessageCallback = emu->context->glxprocaddress("glDebugMessageCallback");
+        init = 0;
+    }
+    if(!DebugMessageCallback)
+        return;
+    DebugMessageCallback(find_debug_callback_Fct(prod), param);
+}
+EXPORT void my_glDebugMessageCallbackARB(x64emu_t* emu, void* prod, void* param) __attribute__((alias("my_glDebugMessageCallback")));
+
+EXPORT int my_glXSwapIntervalMESA(int interval)
+{
+    static iFi_t SwapIntervalMESA = NULL;
+    static int init = 1;
+    if(init) {
+        SwapIntervalMESA = my_context->glxprocaddress("glXSwapIntervalMESA");
+        init = 0;
+    }
+    if(!SwapIntervalMESA)
+        return 0;
+    return SwapIntervalMESA(interval);
+}
+
+#define PRE_INIT if(libGL) {lib->priv.w.lib = dlopen(libGL, RTLD_LAZY | RTLD_GLOBAL); lib->path = strdup(libGL);} else
+#define CUSTOM_INIT \
+    lib->priv.w.priv = dlsym(lib->priv.w.lib, "glXGetProcAddress"); \
+    box64->glxprocaddress = lib->priv.w.priv;
+
+
+#include "wrappedlib_init.h"
+
+void fillGLProcWrapper(box64context_t* context)
+{
+    int cnt, ret;
+    khint_t k;
+    kh_symbolmap_t * symbolmap = kh_init(symbolmap);
+    // populates maps...
+    cnt = sizeof(libglsymbolmap)/sizeof(map_onesymbol_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbolmap, symbolmap, libglsymbolmap[i].name, &ret);
+        kh_value(symbolmap, k) = libglsymbolmap[i].w;
+    }
+    // and the my_ symbols map
+    cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbolmap, symbolmap, libglmysymbolmap[i].name, &ret);
+        kh_value(symbolmap, k) = libglmysymbolmap[i].w;
+    }
+    context->glwrappers = symbolmap;
+    // my_* map
+    symbolmap = kh_init(symbolmap);
+    cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbolmap, symbolmap, libglmysymbolmap[i].name, &ret);
+        kh_value(symbolmap, k) = libglmysymbolmap[i].w;
+    }
+    context->glmymap = symbolmap;
+}
+void freeGLProcWrapper(box64context_t* context)
+{
+    if(!context)
+        return;
+    if(context->glwrappers)
+        kh_destroy(symbolmap, context->glwrappers);
+    if(context->glmymap)
+        kh_destroy(symbolmap, context->glmymap);
+    context->glwrappers = NULL;
+    context->glmymap = NULL;
+}
diff --git a/src/wrapped/wrappedlibgl_private.h b/src/wrapped/wrappedlibgl_private.h
new file mode 100755
index 00000000..2507fdcf
--- /dev/null
+++ b/src/wrapped/wrappedlibgl_private.h
@@ -0,0 +1,3005 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+// _fini
+//3DFX_tbuffer
+GO(glTbufferMask3DFX,vFu)
+//AMD_debug_output
+// GOM(glDebugMessageCallbackAMD,vFE?p)
+GO(glDebugMessageEnableAMD,vFuuipi)
+GO(glDebugMessageInsertAMD,vFuuuip)
+GO(glGetDebugMessageLogAMD,uFuippppp)
+//AMD_draw_buffers_blend
+GO(glBlendEquationIndexedAMD,vFuu)
+GO(glBlendEquationSeparateIndexedAMD,vFuuu)
+GO(glBlendFuncIndexedAMD,vFuuu)
+GO(glBlendFuncSeparateIndexedAMD,vFuuuuu)
+//AMD_multi_draw_indirect
+GO(glMultiDrawArraysIndirectAMD,vFupii)
+GO(glMultiDrawElementsIndirectAMD,vFuupii)
+//AMD_name_gen_delete
+GO(glDeleteNamesAMD,vFuup)
+GO(glGenNamesAMD,vFuup)
+GO(glIsNameAMD,iFuu)
+//AMD_performance_monitor
+GO(glBeginPerfMonitorAMD,vFu)
+GO(glDeletePerfMonitorsAMD,vFip)
+GO(glEndPerfMonitorAMD,vFu)
+GO(glGenPerfMonitorsAMD,vFip)
+GO(glGetPerfMonitorCounterDataAMD,vFuuipp)
+GO(glGetPerfMonitorCounterInfoAMD,vFuuup)
+GO(glGetPerfMonitorCounterStringAMD,vFuuipp)
+GO(glGetPerfMonitorCountersAMD,vFuppip)
+GO(glGetPerfMonitorGroupStringAMD,vFuipp)
+GO(glGetPerfMonitorGroupsAMD,vFpip)
+GO(glSelectPerfMonitorCountersAMD,vFuiuip)
+//AMD_sample_positions
+GO(glSetMultisamplefvAMD,vFuup)
+//AMD_sparse_texture
+GO(glTexStorageSparseAMD,vFuuiiiii)
+GO(glTextureStorageSparseAMD,vFuuuiiiii)
+//AMD_stencil_operation_extended
+GO(glStencilOpValueAMD,vFuu)
+//AMD_vertex_shader_tessellator
+GO(glTessellationFactorAMD,vFf)
+GO(glTessellationModeAMD,vFu)
+//APPLE_element_array
+GO(glDrawElementArrayAPPLE,vFuii)
+GO(glDrawRangeElementArrayAPPLE,vFuuuii)
+GO(glElementPointerAPPLE,vFup)
+GO(glMultiDrawElementArrayAPPLE,vFuppi)
+GO(glMultiDrawRangeElementArrayAPPLE,vFuuuppi)
+//APPLE_fence
+GO(glDeleteFencesAPPLE,vFip)
+GO(glFinishFenceAPPLE,vFu)
+GO(glFinishObjectAPPLE,vFui)
+GO(glGenFencesAPPLE,vFip)
+GO(glIsFenceAPPLE,iFu)
+GO(glSetFenceAPPLE,vFu)
+GO(glTestFenceAPPLE,iFu)
+GO(glTestObjectAPPLE,iFuu)
+//APPLE_flush_buffer_range
+GO(glBufferParameteriAPPLE,vFuui)
+GO(glFlushMappedBufferRangeAPPLE,vFuii)
+//APPLE_object_purgeable
+GO(glGetObjectParameterivAPPLE,vFuuup)
+GO(glObjectPurgeableAPPLE,uFuuu)
+GO(glObjectUnpurgeableAPPLE,uFuuu)
+//APPLE_texture_range
+GO(glGetTexParameterPointervAPPLE,vFuup)
+GO(glTextureRangeAPPLE,vFuip)
+//APPLE_vertex_array_object
+GO(glBindVertexArrayAPPLE,vFu)
+GO(glDeleteVertexArraysAPPLE,vFip)
+GO(glGenVertexArraysAPPLE,vFip)
+GO(glIsVertexArrayAPPLE,iFu)
+//APPLE_vertex_array_range
+GO(glFlushVertexArrayRangeAPPLE,vFip)
+GO(glVertexArrayParameteriAPPLE,vFui)
+GO(glVertexArrayRangeAPPLE,vFip)
+//APPLE_vertex_program_evaluators
+GO(glDisableVertexAttribAPPLE,vFuu)
+GO(glEnableVertexAttribAPPLE,vFuu)
+GO(glIsVertexAttribEnabledAPPLE,iFuu)
+GO(glMapVertexAttrib1dAPPLE,vFuuddiip)
+GO(glMapVertexAttrib1fAPPLE,vFuuffiip)
+GO(glMapVertexAttrib2dAPPLE,vFuuddiiddiip)
+GO(glMapVertexAttrib2fAPPLE,vFuuffiiffiip)
+//ARB_ES2_compatibility
+GO(glClearDepthf,vFf)
+GO(glDepthRangef,vFff)
+GO(glGetShaderPrecisionFormat,vFuupp)
+GO(glReleaseShaderCompiler,vFv)
+GO(glShaderBinary,vFipupi)
+//ARB_base_instance
+GO(glDrawArraysInstancedBaseInstance,vFuiiiu)
+GO(glDrawElementsInstancedBaseInstance,vFuiupiu)
+GO(glDrawElementsInstancedBaseVertexBaseInstance,vFuiupiiu)
+//ARB_blend_func_extended
+GO(glBindFragDataLocationIndexed,vFuuup)
+GO(glGetFragDataIndex,iFup)
+//ARB_cl_event
+GO(glCreateSyncFromCLeventARB,pFppi)
+//ARB_clear_buffer_object
+GO(glClearBufferData,vFuuuup)
+GO(glClearBufferSubData,vFuuiiuup)
+GO(glClearNamedBufferDataEXT,vFuuuup)
+GO(glClearNamedBufferSubDataEXT,vFuuuuiip)
+//ARB_color_buffer_float
+GO(glClampColorARB,vFuu)
+//ARB_compute_shader
+GO(glDispatchCompute,vFuuu)
+GO(glDispatchComputeIndirect,vFi)
+//ARB_copy_buffer
+GO(glCopyBufferSubData,vFuuiii)
+//ARB_copy_image
+GO(glCopyImageSubData,vFuuiiiiuuiiiiiii)
+//ARB_debug_output
+GOM(glDebugMessageCallbackARB,vFEpp)
+GO(glDebugMessageControlARB,vFuuuipi)
+GO(glDebugMessageInsertARB,vFuuuuip)
+GO(glGetDebugMessageLogARB,uFuipppppp)
+//ARB_draw_buffers
+GO(glDrawBuffersARB,vFip)
+//ARB_draw_buffers_blend
+GO(glBlendEquationSeparateiARB,vFuuu)
+GO(glBlendEquationiARB,vFuu)
+GO(glBlendFuncSeparateiARB,vFuuuuu)
+GO(glBlendFunciARB,vFuuu)
+//ARB_draw_elements_base_vertex
+GO(glDrawElementsBaseVertex,vFuiupi)
+GO(glDrawElementsInstancedBaseVertex,vFuiupii)
+GO(glDrawRangeElementsBaseVertex,vFuuuiupi)
+GO(glMultiDrawElementsBaseVertex,vFupupip)
+//ARB_draw_indirect
+GO(glDrawArraysIndirect,vFup)
+GO(glDrawElementsIndirect,vFuup)
+//ARB_draw_instanced
+GO(glDrawArraysInstancedARB,vFuiii)
+GO(glDrawElementsInstancedARB,vFuiupi)
+//ARB_framebuffer_no_attachments
+GO(glFramebufferParameteri,vFuui)
+GO(glGetFramebufferParameteriv,vFuup)
+GO(glGetNamedFramebufferParameterivEXT,vFuup)
+GO(glNamedFramebufferParameteriEXT,vFuui)
+//ARB_framebuffer_object
+GO(glBindFramebuffer,vFuu)
+GO(glBindRenderbuffer,vFuu)
+GO(glBlitFramebuffer,vFiiiiiiiiiu)
+GO(glCheckFramebufferStatus,uFu)
+GO(glDeleteFramebuffers,vFip)
+GO(glDeleteRenderbuffers,vFip)
+GO(glFramebufferRenderbuffer,vFuuuu)
+GO(glFramebufferTexture1D,vFuuuui)
+GO(glFramebufferTexture2D,vFuuuui)
+GO(glFramebufferTexture3D,vFuuuuii)
+GO(glFramebufferTextureLayer,vFuuuii)
+GO(glGenFramebuffers,vFip)
+GO(glGenRenderbuffers,vFip)
+GO(glGenerateMipmap,vFu)
+GO(glGetFramebufferAttachmentParameteriv,vFuuup)
+GO(glGetRenderbufferParameteriv,vFuup)
+GO(glIsFramebuffer,iFu)
+GO(glIsRenderbuffer,iFu)
+GO(glRenderbufferStorage,vFuuii)
+GO(glRenderbufferStorageMultisample,vFuiuii)
+//ARB_geometry_shader4
+GO(glFramebufferTextureARB,vFuuui)
+GO(glFramebufferTextureFaceARB,vFuuuiu)
+GO(glFramebufferTextureLayerARB,vFuuuii)
+GO(glProgramParameteriARB,vFuui)
+//ARB_get_program_binary
+GO(glGetProgramBinary,vFuippp)
+GO(glProgramBinary,vFuupi)
+GO(glProgramParameteri,vFuui)
+//ARB_gpu_shader_fp64
+GO(glGetUniformdv,vFuip)
+GO(glUniform1d,vFid)
+GO(glUniform1dv,vFiip)
+GO(glUniform2d,vFidd)
+GO(glUniform2dv,vFiip)
+GO(glUniform3d,vFiddd)
+GO(glUniform3dv,vFiip)
+GO(glUniform4d,vFidddd)
+GO(glUniform4dv,vFiip)
+GO(glUniformMatrix2dv,vFiiip)
+GO(glUniformMatrix2x3dv,vFiiip)
+GO(glUniformMatrix2x4dv,vFiiip)
+GO(glUniformMatrix3dv,vFiiip)
+GO(glUniformMatrix3x2dv,vFiiip)
+GO(glUniformMatrix3x4dv,vFiiip)
+GO(glUniformMatrix4dv,vFiiip)
+GO(glUniformMatrix4x2dv,vFiiip)
+GO(glUniformMatrix4x3dv,vFiiip)
+//ARB_instanced_arrays
+GO(glVertexAttribDivisorARB,vFuu)
+//ARB_internalformat_query
+GO(glGetInternalformativ,vFuuuip)
+//ARB_internalformat_query2
+GO(glGetInternalformati64v,vFuuuip)
+//ARB_invalidate_subdata
+GO(glInvalidateBufferData,vFu)
+GO(glInvalidateBufferSubData,vFuii)
+GO(glInvalidateFramebuffer,vFuip)
+GO(glInvalidateSubFramebuffer,vFuipiiii)
+GO(glInvalidateTexImage,vFui)
+GO(glInvalidateTexSubImage,vFuiiiiiii)
+//ARB_map_buffer_range
+GO(glFlushMappedBufferRange,vFuii)
+GO(glMapBufferRange,pFuiii)
+//ARB_matrix_palette
+GO(glCurrentPaletteMatrixARB,vFi)
+GO(glMatrixIndexPointerARB,vFiuip)
+GO(glMatrixIndexubvARB,vFip)
+GO(glMatrixIndexuivARB,vFip)
+GO(glMatrixIndexusvARB,vFip)
+//ARB_multi_draw_indirect
+GO(glMultiDrawArraysIndirect,vFupii)
+GO(glMultiDrawElementsIndirect,vFuupii)
+//ARB_multisample
+GO(glSampleCoverageARB,vFfi)
+//ARB_multitexture
+GO(glActiveTextureARB,vFu)
+GO(glClientActiveTextureARB,vFu)
+GO(glMultiTexCoord1dARB,vFud)
+GO(glMultiTexCoord1dvARB,vFup)
+GO(glMultiTexCoord1fARB,vFuf)
+GO(glMultiTexCoord1fvARB,vFup)
+GO(glMultiTexCoord1iARB,vFui)
+GO(glMultiTexCoord1ivARB,vFup)
+GO(glMultiTexCoord1sARB,vFui)
+GO(glMultiTexCoord1svARB,vFup)
+GO(glMultiTexCoord2dARB,vFudd)
+GO(glMultiTexCoord2dvARB,vFup)
+GO(glMultiTexCoord2fARB,vFuff)
+GO(glMultiTexCoord2fvARB,vFup)
+GO(glMultiTexCoord2iARB,vFuii)
+GO(glMultiTexCoord2ivARB,vFup)
+GO(glMultiTexCoord2sARB,vFuii)
+GO(glMultiTexCoord2svARB,vFup)
+GO(glMultiTexCoord3dARB,vFuddd)
+GO(glMultiTexCoord3dvARB,vFup)
+GO(glMultiTexCoord3fARB,vFufff)
+GO(glMultiTexCoord3fvARB,vFup)
+GO(glMultiTexCoord3iARB,vFuiii)
+GO(glMultiTexCoord3ivARB,vFup)
+GO(glMultiTexCoord3sARB,vFuiii)
+GO(glMultiTexCoord3svARB,vFup)
+GO(glMultiTexCoord4dARB,vFudddd)
+GO(glMultiTexCoord4dvARB,vFup)
+GO(glMultiTexCoord4fARB,vFuffff)
+GO(glMultiTexCoord4fvARB,vFup)
+GO(glMultiTexCoord4iARB,vFuiiii)
+GO(glMultiTexCoord4ivARB,vFup)
+GO(glMultiTexCoord4sARB,vFuiiii)
+GO(glMultiTexCoord4svARB,vFup)
+//ARB_occlusion_query
+GO(glBeginQueryARB,vFuu)
+GO(glDeleteQueriesARB,vFip)
+GO(glEndQueryARB,vFu)
+GO(glGenQueriesARB,vFip)
+GO(glGetQueryObjectivARB,vFuup)
+GO(glGetQueryObjectuivARB,vFuup)
+GO(glGetQueryivARB,vFuup)
+GO(glIsQueryARB,iFu)
+//ARB_point_parameters
+GO(glPointParameterfARB,vFuf)
+GO(glPointParameterfvARB,vFup)
+//ARB_program_interface_query
+GO(glGetProgramInterfaceiv,vFuuup)
+GO(glGetProgramResourceIndex,uFuup)
+GO(glGetProgramResourceLocation,iFuup)
+GO(glGetProgramResourceLocationIndex,iFuup)
+GO(glGetProgramResourceName,vFuuuipp)
+GO(glGetProgramResourceiv,vFuuuipipp)
+//ARB_provoking_vertex
+GO(glProvokingVertex,vFu)
+//ARB_robustness
+GO(glGetGraphicsResetStatusARB,uFv)
+GO(glGetnColorTableARB,vFuuuip)
+GO(glGetnCompressedTexImageARB,vFuiip)
+GO(glGetnConvolutionFilterARB,vFuuuip)
+GO(glGetnHistogramARB,vFuiuuip)
+GO(glGetnMapdvARB,vFuuip)
+GO(glGetnMapfvARB,vFuuip)
+GO(glGetnMapivARB,vFuuip)
+GO(glGetnMinmaxARB,vFuiuuip)
+GO(glGetnPixelMapfvARB,vFuip)
+GO(glGetnPixelMapuivARB,vFuip)
+GO(glGetnPixelMapusvARB,vFuip)
+GO(glGetnPolygonStippleARB,vFip)
+GO(glGetnSeparableFilterARB,vFuuuipipp)
+GO(glGetnTexImageARB,vFuiuuip)
+GO(glGetnUniformdvARB,vFuiip)
+GO(glGetnUniformfvARB,vFuiip)
+GO(glGetnUniformivARB,vFuiip)
+GO(glGetnUniformuivARB,vFuiip)
+GO(glReadnPixelsARB,vFiiiiuuip)
+//ARB_sample_shading
+GO(glMinSampleShadingARB,vFf)
+//ARB_sampler_objects
+GO(glBindSampler,vFuu)
+GO(glDeleteSamplers,vFip)
+GO(glGenSamplers,vFip)
+GO(glGetSamplerParameterIiv,vFuup)
+GO(glGetSamplerParameterIuiv,vFuup)
+GO(glGetSamplerParameterfv,vFuup)
+GO(glGetSamplerParameteriv,vFuup)
+GO(glIsSampler,iFu)
+GO(glSamplerParameterIiv,vFuup)
+GO(glSamplerParameterIuiv,vFuup)
+GO(glSamplerParameterf,vFuuf)
+GO(glSamplerParameterfv,vFuup)
+GO(glSamplerParameteri,vFuui)
+GO(glSamplerParameteriv,vFuup)
+//ARB_separate_shader_objects
+GO(glActiveShaderProgram,vFuu)
+GO(glBindProgramPipeline,vFu)
+GO(glCreateShaderProgramv,uFuip)
+GO(glDeleteProgramPipelines,vFip)
+GO(glGenProgramPipelines,vFip)
+GO(glGetProgramPipelineInfoLog,vFuipp)
+GO(glGetProgramPipelineiv,vFuup)
+GO(glIsProgramPipeline,iFu)
+GO(glProgramUniform1d,vFuid)
+GO(glProgramUniform1dv,vFuiip)
+GO(glProgramUniform1f,vFuif)
+GO(glProgramUniform1fv,vFuiip)
+GO(glProgramUniform1i,vFuii)
+GO(glProgramUniform1iv,vFuiip)
+GO(glProgramUniform1ui,vFuiu)
+GO(glProgramUniform1uiv,vFuiip)
+GO(glProgramUniform2d,vFuidd)
+GO(glProgramUniform2dv,vFuiip)
+GO(glProgramUniform2f,vFuiff)
+GO(glProgramUniform2fv,vFuiip)
+GO(glProgramUniform2i,vFuiii)
+GO(glProgramUniform2iv,vFuiip)
+GO(glProgramUniform2ui,vFuiuu)
+GO(glProgramUniform2uiv,vFuiip)
+GO(glProgramUniform3d,vFuiddd)
+GO(glProgramUniform3dv,vFuiip)
+GO(glProgramUniform3f,vFuifff)
+GO(glProgramUniform3fv,vFuiip)
+GO(glProgramUniform3i,vFuiiii)
+GO(glProgramUniform3iv,vFuiip)
+GO(glProgramUniform3ui,vFuiuuu)
+GO(glProgramUniform3uiv,vFuiip)
+GO(glProgramUniform4d,vFuidddd)
+GO(glProgramUniform4dv,vFuiip)
+GO(glProgramUniform4f,vFuiffff)
+GO(glProgramUniform4fv,vFuiip)
+GO(glProgramUniform4i,vFuiiiii)
+GO(glProgramUniform4iv,vFuiip)
+GO(glProgramUniform4ui,vFuiuuuu)
+GO(glProgramUniform4uiv,vFuiip)
+GO(glProgramUniformMatrix2dv,vFuiiip)
+GO(glProgramUniformMatrix2fv,vFuiiip)
+GO(glProgramUniformMatrix2x3dv,vFuiiip)
+GO(glProgramUniformMatrix2x3fv,vFuiiip)
+GO(glProgramUniformMatrix2x4dv,vFuiiip)
+GO(glProgramUniformMatrix2x4fv,vFuiiip)
+GO(glProgramUniformMatrix3dv,vFuiiip)
+GO(glProgramUniformMatrix3fv,vFuiiip)
+GO(glProgramUniformMatrix3x2dv,vFuiiip)
+GO(glProgramUniformMatrix3x2fv,vFuiiip)
+GO(glProgramUniformMatrix3x4dv,vFuiiip)
+GO(glProgramUniformMatrix3x4fv,vFuiiip)
+GO(glProgramUniformMatrix4dv,vFuiiip)
+GO(glProgramUniformMatrix4fv,vFuiiip)
+GO(glProgramUniformMatrix4x2dv,vFuiiip)
+GO(glProgramUniformMatrix4x2fv,vFuiiip)
+GO(glProgramUniformMatrix4x3dv,vFuiiip)
+GO(glProgramUniformMatrix4x3fv,vFuiiip)
+GO(glUseProgramStages,vFuiu)
+GO(glValidateProgramPipeline,vFu)
+//ARB_shader_atomic_counters
+GO(glGetActiveAtomicCounterBufferiv,vFuuup)
+//ARB_shader_image_load_store
+GO(glBindImageTexture,vFuuiiiuu)
+GO(glMemoryBarrier,vFi)
+//ARB_shader_objects
+GO(glAttachObjectARB,vFuu)
+GO(glCompileShaderARB,vFu)
+GO(glCreateProgramObjectARB,uFv)
+GO(glCreateShaderObjectARB,uFu)
+GO(glDeleteObjectARB,vFu)
+GO(glDetachObjectARB,vFuu)
+GO(glGetActiveUniformARB,vFuuipppp)
+GO(glGetAttachedObjectsARB,vFuipp)
+GO(glGetHandleARB,uFu)
+GO(glGetInfoLogARB,vFuipp)
+GO(glGetObjectParameterfvARB,vFuup)
+GO(glGetObjectParameterivARB,vFuup)
+GO(glGetShaderSourceARB,vFuipp)
+GO(glGetUniformLocationARB,iFup)
+GO(glGetUniformfvARB,vFuip)
+GO(glGetUniformivARB,vFuip)
+GO(glLinkProgramARB,vFu)
+GO(glShaderSourceARB,vFuipp)
+GO(glUniform1fARB,vFif)
+GO(glUniform1fvARB,vFiip)
+GO(glUniform1iARB,vFii)
+GO(glUniform1ivARB,vFiip)
+GO(glUniform2fARB,vFiff)
+GO(glUniform2fvARB,vFiip)
+GO(glUniform2iARB,vFiii)
+GO(glUniform2ivARB,vFiip)
+GO(glUniform3fARB,vFifff)
+GO(glUniform3fvARB,vFiip)
+GO(glUniform3iARB,vFiiii)
+GO(glUniform3ivARB,vFiip)
+GO(glUniform4fARB,vFiffff)
+GO(glUniform4fvARB,vFiip)
+GO(glUniform4iARB,vFiiiii)
+GO(glUniform4ivARB,vFiip)
+GO(glUniformMatrix2fvARB,vFiiip)
+GO(glUniformMatrix3fvARB,vFiiip)
+GO(glUniformMatrix4fvARB,vFiiip)
+GO(glUseProgramObjectARB,vFu)
+GO(glValidateProgramARB,vFu)
+//ARB_shader_storage_buffer_object
+GO(glShaderStorageBlockBinding,vFuuu)
+//ARB_shader_subroutine
+GO(glGetActiveSubroutineName,vFuuuipp)
+GO(glGetActiveSubroutineUniformName,vFuuuipp)
+GO(glGetActiveSubroutineUniformiv,vFuuuup)
+GO(glGetProgramStageiv,vFuuup)
+GO(glGetSubroutineIndex,uFuup)
+GO(glGetSubroutineUniformLocation,iFuup)
+GO(glGetUniformSubroutineuiv,vFuip)
+GO(glUniformSubroutinesuiv,vFuip)
+//ARB_shading_language_include
+GO(glCompileShaderIncludeARB,vFuipp)
+GO(glDeleteNamedStringARB,vFip)
+GO(glGetNamedStringARB,vFipipp)
+GO(glGetNamedStringivARB,vFipup)
+GO(glIsNamedStringARB,iFip)
+GO(glNamedStringARB,vFuipip)
+//ARB_sync
+GO(glClientWaitSync,uFpiu)
+GO(glDeleteSync,vFp)
+GO(glFenceSync,pFui)
+GO(glGetInteger64v,vFup)
+GO(glGetSynciv,vFpuipp)
+GO(glIsSync,iFp)
+GO(glWaitSync,vFpiu)
+//ARB_tessellation_shader
+GO(glPatchParameterfv,vFup)
+GO(glPatchParameteri,vFui)
+//ARB_texture_buffer_object
+GO(glTexBufferARB,vFuuu)
+//ARB_texture_buffer_range
+GO(glTexBufferRange,vFuuuii)
+GO(glTextureBufferRangeEXT,vFuuuuii)
+//ARB_texture_compression
+GO(glCompressedTexImage1DARB,vFuiuiiip)
+GO(glCompressedTexImage2DARB,vFuiuiiiip)
+GO(glCompressedTexImage3DARB,vFuiuiiiiip)
+GO(glCompressedTexSubImage1DARB,vFuiiiuip)
+GO(glCompressedTexSubImage2DARB,vFuiiiiiuip)
+GO(glCompressedTexSubImage3DARB,vFuiiiiiiiuip)
+GO(glGetCompressedTexImageARB,vFuip)
+//ARB_texture_multisample
+GO(glGetMultisamplefv,vFuup)
+GO(glSampleMaski,vFui)
+GO(glTexImage2DMultisample,vFuiiiii)
+GO(glTexImage3DMultisample,vFuiiiiii)
+//ARB_texture_storage
+GO(glTexStorage1D,vFuiui)
+GO(glTexStorage2D,vFuiuii)
+GO(glTexStorage3D,vFuiuiii)
+GO(glTextureStorage1DEXT,vFuuiui)
+GO(glTextureStorage2DEXT,vFuuiuii)
+GO(glTextureStorage3DEXT,vFuuiuiii)
+//ARB_texture_storage_multisample
+GO(glTexStorage2DMultisample,vFuiuiii)
+GO(glTexStorage3DMultisample,vFuiuiiii)
+GO(glTextureStorage2DMultisampleEXT,vFuuiuiii)
+GO(glTextureStorage3DMultisampleEXT,vFuuiuiiii)
+//ARB_texture_view
+GO(glTextureView,vFuuuuuuuu)
+//ARB_timer_query
+GO(glGetQueryObjecti64v,vFuup)
+GO(glGetQueryObjectui64v,vFuup)
+GO(glQueryCounter,vFuu)
+//ARB_transform_feedback2
+GO(glBindTransformFeedback,vFuu)
+GO(glDeleteTransformFeedbacks,vFip)
+GO(glDrawTransformFeedback,vFuu)
+GO(glGenTransformFeedbacks,vFip)
+GO(glIsTransformFeedback,iFu)
+GO(glPauseTransformFeedback,vFv)
+GO(glResumeTransformFeedback,vFv)
+//ARB_transform_feedback3
+GO(glBeginQueryIndexed,vFuuu)
+GO(glDrawTransformFeedbackStream,vFuuu)
+GO(glEndQueryIndexed,vFuu)
+GO(glGetQueryIndexediv,vFuuup)
+//ARB_transform_feedback_instanced
+GO(glDrawTransformFeedbackInstanced,vFuui)
+GO(glDrawTransformFeedbackStreamInstanced,vFuuui)
+//ARB_transpose_matrix
+GO(glLoadTransposeMatrixdARB,vFp)
+GO(glLoadTransposeMatrixfARB,vFp)
+GO(glMultTransposeMatrixdARB,vFp)
+GO(glMultTransposeMatrixfARB,vFp)
+//ARB_uniform_buffer_object
+GO(glGetActiveUniformBlockName,vFuuipp)
+GO(glGetActiveUniformBlockiv,vFuuup)
+GO(glGetActiveUniformName,vFuuipp)
+GO(glGetActiveUniformsiv,vFuipup)
+GO(glGetUniformBlockIndex,uFup)
+GO(glGetUniformIndices,vFuipp)
+GO(glUniformBlockBinding,vFuuu)
+//ARB_vertex_array_object
+GO(glBindVertexArray,vFu)
+GO(glDeleteVertexArrays,vFip)
+GO(glGenVertexArrays,vFip)
+GO(glIsVertexArray,iFu)
+//ARB_vertex_attrib_64bit
+GO(glGetVertexAttribLdv,vFuup)
+GO(glVertexAttribL1d,vFud)
+GO(glVertexAttribL1dv,vFup)
+GO(glVertexAttribL2d,vFudd)
+GO(glVertexAttribL2dv,vFup)
+GO(glVertexAttribL3d,vFuddd)
+GO(glVertexAttribL3dv,vFup)
+GO(glVertexAttribL4d,vFudddd)
+GO(glVertexAttribL4dv,vFup)
+GO(glVertexAttribLPointer,vFuiuip)
+//ARB_vertex_attrib_binding
+GO(glBindVertexBuffer,vFuuii)
+GO(glVertexArrayBindVertexBufferEXT,vFuuuii)
+GO(glVertexArrayVertexAttribBindingEXT,vFuuu)
+GO(glVertexArrayVertexAttribFormatEXT,vFuuiuiu)
+GO(glVertexArrayVertexAttribIFormatEXT,vFuuiuu)
+GO(glVertexArrayVertexAttribLFormatEXT,vFuuiuu)
+GO(glVertexArrayVertexBindingDivisorEXT,vFuuu)
+GO(glVertexAttribBinding,vFuu)
+GO(glVertexAttribFormat,vFuiuiu)
+GO(glVertexAttribIFormat,vFuiuu)
+GO(glVertexAttribLFormat,vFuiuu)
+GO(glVertexBindingDivisor,vFuu)
+//ARB_vertex_blend
+GO(glVertexBlendARB,vFi)
+GO(glWeightPointerARB,vFiuip)
+GO(glWeightbvARB,vFip)
+GO(glWeightdvARB,vFip)
+GO(glWeightfvARB,vFip)
+GO(glWeightivARB,vFip)
+GO(glWeightsvARB,vFip)
+GO(glWeightubvARB,vFip)
+GO(glWeightuivARB,vFip)
+GO(glWeightusvARB,vFip)
+//ARB_vertex_buffer_object
+GO(glBindBufferARB,vFuu)
+GO(glBufferDataARB,vFuipu)
+GO(glBufferSubDataARB,vFuiip)
+GO(glDeleteBuffersARB,vFip)
+GO(glGenBuffersARB,vFip)
+GO(glGetBufferParameterivARB,vFuup)
+GO(glGetBufferPointervARB,vFuup)
+GO(glGetBufferSubDataARB,vFuiip)
+GO(glIsBufferARB,iFu)
+GO(glMapBufferARB,pFuu)
+GO(glUnmapBufferARB,iFu)
+//ARB_vertex_program
+GO(glBindProgramARB,vFuu)
+GO(glDeleteProgramsARB,vFip)
+GO(glDisableVertexAttribArrayARB,vFu)
+GO(glEnableVertexAttribArrayARB,vFu)
+GO(glGenProgramsARB,vFip)
+GO(glGetProgramEnvParameterdvARB,vFuup)
+GO(glGetProgramEnvParameterfvARB,vFuup)
+GO(glGetProgramLocalParameterdvARB,vFuup)
+GO(glGetProgramLocalParameterfvARB,vFuup)
+GO(glGetProgramStringARB,vFuup)
+GO(glGetProgramivARB,vFuup)
+GO(glGetVertexAttribPointervARB,vFuup)
+GO(glGetVertexAttribdvARB,vFuup)
+GO(glGetVertexAttribfvARB,vFuup)
+GO(glGetVertexAttribivARB,vFuup)
+GO(glIsProgramARB,iFu)
+GO(glProgramEnvParameter4dARB,vFuudddd)
+GO(glProgramEnvParameter4dvARB,vFuup)
+GO(glProgramEnvParameter4fARB,vFuuffff)
+GO(glProgramEnvParameter4fvARB,vFuup)
+GO(glProgramLocalParameter4dARB,vFuudddd)
+GO(glProgramLocalParameter4dvARB,vFuup)
+GO(glProgramLocalParameter4fARB,vFuuffff)
+GO(glProgramLocalParameter4fvARB,vFuup)
+GO(glProgramStringARB,vFuuip)
+GO(glVertexAttrib1dARB,vFud)
+GO(glVertexAttrib1dvARB,vFup)
+GO(glVertexAttrib1fARB,vFuf)
+GO(glVertexAttrib1fvARB,vFup)
+GO(glVertexAttrib1sARB,vFui)
+GO(glVertexAttrib1svARB,vFup)
+GO(glVertexAttrib2dARB,vFudd)
+GO(glVertexAttrib2dvARB,vFup)
+GO(glVertexAttrib2fARB,vFuff)
+GO(glVertexAttrib2fvARB,vFup)
+GO(glVertexAttrib2sARB,vFuii)
+GO(glVertexAttrib2svARB,vFup)
+GO(glVertexAttrib3dARB,vFuddd)
+GO(glVertexAttrib3dvARB,vFup)
+GO(glVertexAttrib3fARB,vFufff)
+GO(glVertexAttrib3fvARB,vFup)
+GO(glVertexAttrib3sARB,vFuiii)
+GO(glVertexAttrib3svARB,vFup)
+GO(glVertexAttrib4NbvARB,vFup)
+GO(glVertexAttrib4NivARB,vFup)
+GO(glVertexAttrib4NsvARB,vFup)
+GO(glVertexAttrib4NubARB,vFuuuuu)
+GO(glVertexAttrib4NubvARB,vFup)
+GO(glVertexAttrib4NuivARB,vFup)
+GO(glVertexAttrib4NusvARB,vFup)
+GO(glVertexAttrib4bvARB,vFup)
+GO(glVertexAttrib4dARB,vFudddd)
+GO(glVertexAttrib4dvARB,vFup)
+GO(glVertexAttrib4fARB,vFuffff)
+GO(glVertexAttrib4fvARB,vFup)
+GO(glVertexAttrib4ivARB,vFup)
+GO(glVertexAttrib4sARB,vFuiiii)
+GO(glVertexAttrib4svARB,vFup)
+GO(glVertexAttrib4ubvARB,vFup)
+GO(glVertexAttrib4uivARB,vFup)
+GO(glVertexAttrib4usvARB,vFup)
+GO(glVertexAttribPointerARB,vFuiuiip)
+//ARB_vertex_shader
+GO(glBindAttribLocationARB,vFuup)
+GO(glGetActiveAttribARB,vFuuipppp)
+GO(glGetAttribLocationARB,iFup)
+//ARB_vertex_type_2_10_10_10_rev
+GO(glColorP3ui,vFuu)
+GO(glColorP3uiv,vFup)
+GO(glColorP4ui,vFuu)
+GO(glColorP4uiv,vFup)
+GO(glMultiTexCoordP1ui,vFuuu)
+GO(glMultiTexCoordP1uiv,vFuup)
+GO(glMultiTexCoordP2ui,vFuuu)
+GO(glMultiTexCoordP2uiv,vFuup)
+GO(glMultiTexCoordP3ui,vFuuu)
+GO(glMultiTexCoordP3uiv,vFuup)
+GO(glMultiTexCoordP4ui,vFuuu)
+GO(glMultiTexCoordP4uiv,vFuup)
+GO(glNormalP3ui,vFuu)
+GO(glNormalP3uiv,vFup)
+GO(glSecondaryColorP3ui,vFuu)
+GO(glSecondaryColorP3uiv,vFup)
+GO(glTexCoordP1ui,vFuu)
+GO(glTexCoordP1uiv,vFup)
+GO(glTexCoordP2ui,vFuu)
+GO(glTexCoordP2uiv,vFup)
+GO(glTexCoordP3ui,vFuu)
+GO(glTexCoordP3uiv,vFup)
+GO(glTexCoordP4ui,vFuu)
+GO(glTexCoordP4uiv,vFup)
+GO(glVertexAttribP1ui,vFuuiu)
+GO(glVertexAttribP1uiv,vFuuip)
+GO(glVertexAttribP2ui,vFuuiu)
+GO(glVertexAttribP2uiv,vFuuip)
+GO(glVertexAttribP3ui,vFuuiu)
+GO(glVertexAttribP3uiv,vFuuip)
+GO(glVertexAttribP4ui,vFuuiu)
+GO(glVertexAttribP4uiv,vFuuip)
+GO(glVertexP2ui,vFuu)
+GO(glVertexP2uiv,vFup)
+GO(glVertexP3ui,vFuu)
+GO(glVertexP3uiv,vFup)
+GO(glVertexP4ui,vFuu)
+GO(glVertexP4uiv,vFup)
+//ARB_viewport_array
+GO(glDepthRangeArrayv,vFuip)
+GO(glDepthRangeIndexed,vFudd)
+GO(glGetDoublei_v,vFuup)
+GO(glGetFloati_v,vFuup)
+GO(glScissorArrayv,vFuip)
+GO(glScissorIndexed,vFuiiii)
+GO(glScissorIndexedv,vFup)
+GO(glViewportArrayv,vFuip)
+GO(glViewportIndexedf,vFuffff)
+GO(glViewportIndexedfv,vFup)
+//ARB_window_pos
+GO(glWindowPos2dARB,vFdd)
+GO(glWindowPos2dvARB,vFp)
+GO(glWindowPos2fARB,vFff)
+GO(glWindowPos2fvARB,vFp)
+GO(glWindowPos2iARB,vFii)
+GO(glWindowPos2ivARB,vFp)
+GO(glWindowPos2sARB,vFii)
+GO(glWindowPos2svARB,vFp)
+GO(glWindowPos3dARB,vFddd)
+GO(glWindowPos3dvARB,vFp)
+GO(glWindowPos3fARB,vFfff)
+GO(glWindowPos3fvARB,vFp)
+GO(glWindowPos3iARB,vFiii)
+GO(glWindowPos3ivARB,vFp)
+GO(glWindowPos3sARB,vFiii)
+GO(glWindowPos3svARB,vFp)
+//ATI_draw_buffers
+GO(glDrawBuffersATI,vFip)
+//ATI_element_array
+GO(glDrawElementArrayATI,vFui)
+GO(glDrawRangeElementArrayATI,vFuuui)
+GO(glElementPointerATI,vFup)
+//ATI_envmap_bumpmap
+GO(glGetTexBumpParameterfvATI,vFup)
+GO(glGetTexBumpParameterivATI,vFup)
+GO(glTexBumpParameterfvATI,vFup)
+GO(glTexBumpParameterivATI,vFup)
+//ATI_fragment_shader
+GO(glAlphaFragmentOp1ATI,vFuuuuuu)
+GO(glAlphaFragmentOp2ATI,vFuuuuuuuuu)
+GO(glAlphaFragmentOp3ATI,vFuuuuuuuuuuuu)
+GO(glBeginFragmentShaderATI,vFv)
+GO(glBindFragmentShaderATI,vFu)
+GO(glColorFragmentOp1ATI,vFuuuuuuu)
+GO(glColorFragmentOp2ATI,vFuuuuuuuuuu)
+GO(glColorFragmentOp3ATI,vFuuuuuuuuuuuuu)
+GO(glDeleteFragmentShaderATI,vFu)
+GO(glEndFragmentShaderATI,vFv)
+GO(glGenFragmentShadersATI,uFu)
+GO(glPassTexCoordATI,vFuuu)
+GO(glSampleMapATI,vFuuu)
+GO(glSetFragmentShaderConstantATI,vFup)
+//ATI_map_object_buffer
+GO(glMapObjectBufferATI,pFu)
+GO(glUnmapObjectBufferATI,vFu)
+//ATI_pn_triangles
+GO(glPNTrianglesfATI,vFuf)
+GO(glPNTrianglesiATI,vFui)
+//ATI_separate_stencil
+GO(glStencilFuncSeparateATI,vFuuiu)
+GO(glStencilOpSeparateATI,vFuuuu)
+//ATI_vertex_array_object
+GO(glArrayObjectATI,vFuiuiuu)
+GO(glFreeObjectBufferATI,vFu)
+GO(glGetArrayObjectfvATI,vFuup)
+GO(glGetArrayObjectivATI,vFuup)
+GO(glGetObjectBufferfvATI,vFuup)
+GO(glGetObjectBufferivATI,vFuup)
+GO(glGetVariantArrayObjectfvATI,vFuup)
+GO(glGetVariantArrayObjectivATI,vFuup)
+GO(glIsObjectBufferATI,iFu)
+GO(glNewObjectBufferATI,uFipu)
+GO(glUpdateObjectBufferATI,vFuuipu)
+GO(glVariantArrayObjectATI,vFuuiuu)
+//ATI_vertex_attrib_array_object
+GO(glGetVertexAttribArrayObjectfvATI,vFuup)
+GO(glGetVertexAttribArrayObjectivATI,vFuup)
+GO(glVertexAttribArrayObjectATI,vFuiuiiuu)
+//ATI_vertex_streams
+GO(glClientActiveVertexStreamATI,vFu)
+GO(glNormalStream3bATI,vFuiii)
+GO(glNormalStream3bvATI,vFup)
+GO(glNormalStream3dATI,vFuddd)
+GO(glNormalStream3dvATI,vFup)
+GO(glNormalStream3fATI,vFufff)
+GO(glNormalStream3fvATI,vFup)
+GO(glNormalStream3iATI,vFuiii)
+GO(glNormalStream3ivATI,vFup)
+GO(glNormalStream3sATI,vFuiii)
+GO(glNormalStream3svATI,vFup)
+GO(glVertexBlendEnvfATI,vFuf)
+GO(glVertexBlendEnviATI,vFui)
+GO(glVertexStream1dATI,vFud)
+GO(glVertexStream1dvATI,vFup)
+GO(glVertexStream1fATI,vFuf)
+GO(glVertexStream1fvATI,vFup)
+GO(glVertexStream1iATI,vFui)
+GO(glVertexStream1ivATI,vFup)
+GO(glVertexStream1sATI,vFui)
+GO(glVertexStream1svATI,vFup)
+GO(glVertexStream2dATI,vFudd)
+GO(glVertexStream2dvATI,vFup)
+GO(glVertexStream2fATI,vFuff)
+GO(glVertexStream2fvATI,vFup)
+GO(glVertexStream2iATI,vFuii)
+GO(glVertexStream2ivATI,vFup)
+GO(glVertexStream2sATI,vFuii)
+GO(glVertexStream2svATI,vFup)
+GO(glVertexStream3dATI,vFuddd)
+GO(glVertexStream3dvATI,vFup)
+GO(glVertexStream3fATI,vFufff)
+GO(glVertexStream3fvATI,vFup)
+GO(glVertexStream3iATI,vFuiii)
+GO(glVertexStream3ivATI,vFup)
+GO(glVertexStream3sATI,vFuiii)
+GO(glVertexStream3svATI,vFup)
+GO(glVertexStream4dATI,vFudddd)
+GO(glVertexStream4dvATI,vFup)
+GO(glVertexStream4fATI,vFuffff)
+GO(glVertexStream4fvATI,vFup)
+GO(glVertexStream4iATI,vFuiiii)
+GO(glVertexStream4ivATI,vFup)
+GO(glVertexStream4sATI,vFuiiii)
+GO(glVertexStream4svATI,vFup)
+//EXT_bindable_uniform
+GO(glGetUniformBufferSizeEXT,iFui)
+GO(glGetUniformOffsetEXT,iFui)
+GO(glUniformBufferEXT,vFuiu)
+//EXT_blend_color
+GO(glBlendColorEXT,vFffff)
+//EXT_blend_equation_separate
+GO(glBlendEquationSeparateEXT,vFuu)
+//EXT_blend_func_separate
+GO(glBlendFuncSeparateEXT,vFuuuu)
+//EXT_blend_minmax
+GO(glBlendEquationEXT,vFu)
+//EXT_color_subtable
+GO(glColorSubTableEXT,vFuiiuup)
+GO(glCopyColorSubTableEXT,vFuiiii)
+//EXT_compiled_vertex_array
+GO(glLockArraysEXT,vFii)
+GO(glUnlockArraysEXT,vFv)
+//EXT_convolution
+GO(glConvolutionFilter1DEXT,vFuuiuup)
+GO(glConvolutionFilter2DEXT,vFuuiiuup)
+GO(glConvolutionParameterfEXT,vFuuf)
+GO(glConvolutionParameterfvEXT,vFuup)
+GO(glConvolutionParameteriEXT,vFuui)
+GO(glConvolutionParameterivEXT,vFuup)
+GO(glCopyConvolutionFilter1DEXT,vFuuiii)
+GO(glCopyConvolutionFilter2DEXT,vFuuiiii)
+GO(glGetConvolutionFilterEXT,vFuuup)
+GO(glGetConvolutionParameterfvEXT,vFuup)
+GO(glGetConvolutionParameterivEXT,vFuup)
+GO(glGetSeparableFilterEXT,vFuuuppp)
+GO(glSeparableFilter2DEXT,vFuuiiuupp)
+//EXT_coordinate_frame
+GO(glBinormal3bEXT,vFiii)
+GO(glBinormal3bvEXT,vFp)
+GO(glBinormal3dEXT,vFddd)
+GO(glBinormal3dvEXT,vFp)
+GO(glBinormal3fEXT,vFfff)
+GO(glBinormal3fvEXT,vFp)
+GO(glBinormal3iEXT,vFiii)
+GO(glBinormal3ivEXT,vFp)
+GO(glBinormal3sEXT,vFiii)
+GO(glBinormal3svEXT,vFp)
+GO(glBinormalPointerEXT,vFuip)
+GO(glTangent3bEXT,vFiii)
+GO(glTangent3bvEXT,vFp)
+GO(glTangent3dEXT,vFddd)
+GO(glTangent3dvEXT,vFp)
+GO(glTangent3fEXT,vFfff)
+GO(glTangent3fvEXT,vFp)
+GO(glTangent3iEXT,vFiii)
+GO(glTangent3ivEXT,vFp)
+GO(glTangent3sEXT,vFiii)
+GO(glTangent3svEXT,vFp)
+GO(glTangentPointerEXT,vFuip)
+//EXT_copy_texture
+GO(glCopyTexImage1DEXT,vFuiuiiii)
+GO(glCopyTexImage2DEXT,vFuiuiiiii)
+GO(glCopyTexSubImage1DEXT,vFuiiiii)
+GO(glCopyTexSubImage2DEXT,vFuiiiiiii)
+GO(glCopyTexSubImage3DEXT,vFuiiiiiiii)
+//EXT_cull_vertex
+GO(glCullParameterdvEXT,vFup)
+GO(glCullParameterfvEXT,vFup)
+//EXT_depth_bounds_test
+GO(glDepthBoundsEXT,vFdd)
+//EXT_direct_state_access
+GO(glBindMultiTextureEXT,vFuuu)
+GO(glCheckNamedFramebufferStatusEXT,uFuu)
+GO(glClientAttribDefaultEXT,vFi)
+GO(glCompressedMultiTexImage1DEXT,vFuuiuiiip)
+GO(glCompressedMultiTexImage2DEXT,vFuuiuiiiip)
+GO(glCompressedMultiTexImage3DEXT,vFuuiuiiiiip)
+GO(glCompressedMultiTexSubImage1DEXT,vFuuiiiuip)
+GO(glCompressedMultiTexSubImage2DEXT,vFuuiiiiiuip)
+GO(glCompressedMultiTexSubImage3DEXT,vFuuiiiiiiiuip)
+GO(glCompressedTextureImage1DEXT,vFuuiuiiip)
+GO(glCompressedTextureImage2DEXT,vFuuiuiiiip)
+GO(glCompressedTextureImage3DEXT,vFuuiuiiiiip)
+GO(glCompressedTextureSubImage1DEXT,vFuuiiiuip)
+GO(glCompressedTextureSubImage2DEXT,vFuuiiiiiuip)
+GO(glCompressedTextureSubImage3DEXT,vFuuiiiiiiiuip)
+GO(glCopyMultiTexImage1DEXT,vFuuiuiiii)
+GO(glCopyMultiTexImage2DEXT,vFuuiuiiiii)
+GO(glCopyMultiTexSubImage1DEXT,vFuuiiiii)
+GO(glCopyMultiTexSubImage2DEXT,vFuuiiiiiii)
+GO(glCopyMultiTexSubImage3DEXT,vFuuiiiiiiii)
+GO(glCopyTextureImage1DEXT,vFuuiuiiii)
+GO(glCopyTextureImage2DEXT,vFuuiuiiiii)
+GO(glCopyTextureSubImage1DEXT,vFuuiiiii)
+GO(glCopyTextureSubImage2DEXT,vFuuiiiiiii)
+GO(glCopyTextureSubImage3DEXT,vFuuiiiiiiii)
+GO(glDisableClientStateIndexedEXT,vFuu)
+GO(glDisableClientStateiEXT,vFuu)
+GO(glDisableVertexArrayAttribEXT,vFuu)
+GO(glDisableVertexArrayEXT,vFuu)
+GO(glEnableClientStateIndexedEXT,vFuu)
+GO(glEnableClientStateiEXT,vFuu)
+GO(glEnableVertexArrayAttribEXT,vFuu)
+GO(glEnableVertexArrayEXT,vFuu)
+GO(glFlushMappedNamedBufferRangeEXT,vFuii)
+GO(glFramebufferDrawBufferEXT,vFuu)
+GO(glFramebufferDrawBuffersEXT,vFuip)
+GO(glFramebufferReadBufferEXT,vFuu)
+GO(glGenerateMultiTexMipmapEXT,vFuu)
+GO(glGenerateTextureMipmapEXT,vFuu)
+GO(glGetCompressedMultiTexImageEXT,vFuuip)
+GO(glGetCompressedTextureImageEXT,vFuuip)
+GO(glGetDoubleIndexedvEXT,vFuup)
+GO(glGetDoublei_vEXT,vFuup)
+GO(glGetFloatIndexedvEXT,vFuup)
+GO(glGetFloati_vEXT,vFuup)
+GO(glGetFramebufferParameterivEXT,vFuup)
+GO(glGetMultiTexEnvfvEXT,vFuuup)
+GO(glGetMultiTexEnvivEXT,vFuuup)
+GO(glGetMultiTexGendvEXT,vFuuup)
+GO(glGetMultiTexGenfvEXT,vFuuup)
+GO(glGetMultiTexGenivEXT,vFuuup)
+GO(glGetMultiTexImageEXT,vFuuiuup)
+GO(glGetMultiTexLevelParameterfvEXT,vFuuiup)
+GO(glGetMultiTexLevelParameterivEXT,vFuuiup)
+GO(glGetMultiTexParameterIivEXT,vFuuup)
+GO(glGetMultiTexParameterIuivEXT,vFuuup)
+GO(glGetMultiTexParameterfvEXT,vFuuup)
+GO(glGetMultiTexParameterivEXT,vFuuup)
+GO(glGetNamedBufferParameterivEXT,vFuup)
+GO(glGetNamedBufferPointervEXT,vFuup)
+GO(glGetNamedBufferSubDataEXT,vFuiip)
+GO(glGetNamedFramebufferAttachmentParameterivEXT,vFuuup)
+GO(glGetNamedProgramLocalParameterIivEXT,vFuuup)
+GO(glGetNamedProgramLocalParameterIuivEXT,vFuuup)
+GO(glGetNamedProgramLocalParameterdvEXT,vFuuup)
+GO(glGetNamedProgramLocalParameterfvEXT,vFuuup)
+GO(glGetNamedProgramStringEXT,vFuuup)
+GO(glGetNamedProgramivEXT,vFuuup)
+GO(glGetNamedRenderbufferParameterivEXT,vFuup)
+GO(glGetPointerIndexedvEXT,vFuup)
+GO(glGetPointeri_vEXT,vFuup)
+GO(glGetTextureImageEXT,vFuuiuup)
+GO(glGetTextureLevelParameterfvEXT,vFuuiup)
+GO(glGetTextureLevelParameterivEXT,vFuuiup)
+GO(glGetTextureParameterIivEXT,vFuuup)
+GO(glGetTextureParameterIuivEXT,vFuuup)
+GO(glGetTextureParameterfvEXT,vFuuup)
+GO(glGetTextureParameterivEXT,vFuuup)
+GO(glGetVertexArrayIntegeri_vEXT,vFuuup)
+GO(glGetVertexArrayIntegervEXT,vFuup)
+GO(glGetVertexArrayPointeri_vEXT,vFuuup)
+GO(glGetVertexArrayPointervEXT,vFuup)
+GO(glMapNamedBufferEXT,pFuu)
+GO(glMapNamedBufferRangeEXT,pFuiii)
+GO(glMatrixFrustumEXT,vFudddddd)
+GO(glMatrixLoadIdentityEXT,vFu)
+GO(glMatrixLoadTransposedEXT,vFup)
+GO(glMatrixLoadTransposefEXT,vFup)
+GO(glMatrixLoaddEXT,vFup)
+GO(glMatrixLoadfEXT,vFup)
+GO(glMatrixMultTransposedEXT,vFup)
+GO(glMatrixMultTransposefEXT,vFup)
+GO(glMatrixMultdEXT,vFup)
+GO(glMatrixMultfEXT,vFup)
+GO(glMatrixOrthoEXT,vFudddddd)
+GO(glMatrixPopEXT,vFu)
+GO(glMatrixPushEXT,vFu)
+GO(glMatrixRotatedEXT,vFudddd)
+GO(glMatrixRotatefEXT,vFuffff)
+GO(glMatrixScaledEXT,vFuddd)
+GO(glMatrixScalefEXT,vFufff)
+GO(glMatrixTranslatedEXT,vFuddd)
+GO(glMatrixTranslatefEXT,vFufff)
+GO(glMultiTexBufferEXT,vFuuuu)
+GO(glMultiTexCoordPointerEXT,vFuiuip)
+GO(glMultiTexEnvfEXT,vFuuuf)
+GO(glMultiTexEnvfvEXT,vFuuup)
+GO(glMultiTexEnviEXT,vFuuui)
+GO(glMultiTexEnvivEXT,vFuuup)
+GO(glMultiTexGendEXT,vFuuud)
+GO(glMultiTexGendvEXT,vFuuup)
+GO(glMultiTexGenfEXT,vFuuuf)
+GO(glMultiTexGenfvEXT,vFuuup)
+GO(glMultiTexGeniEXT,vFuuui)
+GO(glMultiTexGenivEXT,vFuuup)
+GO(glMultiTexImage1DEXT,vFuuiuiiuup)
+GO(glMultiTexImage2DEXT,vFuuiuiiiuup)
+GO(glMultiTexImage3DEXT,vFuuiuiiiiuup)
+GO(glMultiTexParameterIivEXT,vFuuup)
+GO(glMultiTexParameterIuivEXT,vFuuup)
+GO(glMultiTexParameterfEXT,vFuuuf)
+GO(glMultiTexParameterfvEXT,vFuuup)
+GO(glMultiTexParameteriEXT,vFuuui)
+GO(glMultiTexParameterivEXT,vFuuup)
+GO(glMultiTexRenderbufferEXT,vFuuu)
+GO(glMultiTexSubImage1DEXT,vFuuiiiuup)
+GO(glMultiTexSubImage2DEXT,vFuuiiiiiuup)
+GO(glMultiTexSubImage3DEXT,vFuuiiiiiiiuup)
+GO(glNamedBufferDataEXT,vFuipu)
+GO(glNamedBufferSubDataEXT,vFuiip)
+GO(glNamedCopyBufferSubDataEXT,vFuuiii)
+GO(glNamedFramebufferRenderbufferEXT,vFuuuu)
+GO(glNamedFramebufferTexture1DEXT,vFuuuui)
+GO(glNamedFramebufferTexture2DEXT,vFuuuui)
+GO(glNamedFramebufferTexture3DEXT,vFuuuuii)
+GO(glNamedFramebufferTextureEXT,vFuuui)
+GO(glNamedFramebufferTextureFaceEXT,vFuuuiu)
+GO(glNamedFramebufferTextureLayerEXT,vFuuuii)
+GO(glNamedProgramLocalParameter4dEXT,vFuuudddd)
+GO(glNamedProgramLocalParameter4dvEXT,vFuuup)
+GO(glNamedProgramLocalParameter4fEXT,vFuuuffff)
+GO(glNamedProgramLocalParameter4fvEXT,vFuuup)
+GO(glNamedProgramLocalParameterI4iEXT,vFuuuiiii)
+GO(glNamedProgramLocalParameterI4ivEXT,vFuuup)
+GO(glNamedProgramLocalParameterI4uiEXT,vFuuuuuuu)
+GO(glNamedProgramLocalParameterI4uivEXT,vFuuup)
+GO(glNamedProgramLocalParameters4fvEXT,vFuuuip)
+GO(glNamedProgramLocalParametersI4ivEXT,vFuuuip)
+GO(glNamedProgramLocalParametersI4uivEXT,vFuuuip)
+GO(glNamedProgramStringEXT,vFuuuip)
+GO(glNamedRenderbufferStorageEXT,vFuuii)
+GO(glNamedRenderbufferStorageMultisampleCoverageEXT,vFuiiuii)
+GO(glNamedRenderbufferStorageMultisampleEXT,vFuiuii)
+GO(glProgramUniform1dEXT,vFuid)
+GO(glProgramUniform1dvEXT,vFuiip)
+GO(glProgramUniform1fEXT,vFuif)
+GO(glProgramUniform1fvEXT,vFuiip)
+GO(glProgramUniform1iEXT,vFuii)
+GO(glProgramUniform1ivEXT,vFuiip)
+GO(glProgramUniform1uiEXT,vFuiu)
+GO(glProgramUniform1uivEXT,vFuiip)
+GO(glProgramUniform2dEXT,vFuidd)
+GO(glProgramUniform2dvEXT,vFuiip)
+GO(glProgramUniform2fEXT,vFuiff)
+GO(glProgramUniform2fvEXT,vFuiip)
+GO(glProgramUniform2iEXT,vFuiii)
+GO(glProgramUniform2ivEXT,vFuiip)
+GO(glProgramUniform2uiEXT,vFuiuu)
+GO(glProgramUniform2uivEXT,vFuiip)
+GO(glProgramUniform3dEXT,vFuiddd)
+GO(glProgramUniform3dvEXT,vFuiip)
+GO(glProgramUniform3fEXT,vFuifff)
+GO(glProgramUniform3fvEXT,vFuiip)
+GO(glProgramUniform3iEXT,vFuiiii)
+GO(glProgramUniform3ivEXT,vFuiip)
+GO(glProgramUniform3uiEXT,vFuiuuu)
+GO(glProgramUniform3uivEXT,vFuiip)
+GO(glProgramUniform4dEXT,vFuidddd)
+GO(glProgramUniform4dvEXT,vFuiip)
+GO(glProgramUniform4fEXT,vFuiffff)
+GO(glProgramUniform4fvEXT,vFuiip)
+GO(glProgramUniform4iEXT,vFuiiiii)
+GO(glProgramUniform4ivEXT,vFuiip)
+GO(glProgramUniform4uiEXT,vFuiuuuu)
+GO(glProgramUniform4uivEXT,vFuiip)
+GO(glProgramUniformMatrix2dvEXT,vFuiiip)
+GO(glProgramUniformMatrix2fvEXT,vFuiiip)
+GO(glProgramUniformMatrix2x3dvEXT,vFuiiip)
+GO(glProgramUniformMatrix2x3fvEXT,vFuiiip)
+GO(glProgramUniformMatrix2x4dvEXT,vFuiiip)
+GO(glProgramUniformMatrix2x4fvEXT,vFuiiip)
+GO(glProgramUniformMatrix3dvEXT,vFuiiip)
+GO(glProgramUniformMatrix3fvEXT,vFuiiip)
+GO(glProgramUniformMatrix3x2dvEXT,vFuiiip)
+GO(glProgramUniformMatrix3x2fvEXT,vFuiiip)
+GO(glProgramUniformMatrix3x4dvEXT,vFuiiip)
+GO(glProgramUniformMatrix3x4fvEXT,vFuiiip)
+GO(glProgramUniformMatrix4dvEXT,vFuiiip)
+GO(glProgramUniformMatrix4fvEXT,vFuiiip)
+GO(glProgramUniformMatrix4x2dvEXT,vFuiiip)
+GO(glProgramUniformMatrix4x2fvEXT,vFuiiip)
+GO(glProgramUniformMatrix4x3dvEXT,vFuiiip)
+GO(glProgramUniformMatrix4x3fvEXT,vFuiiip)
+GO(glPushClientAttribDefaultEXT,vFi)
+GO(glTextureBufferEXT,vFuuuu)
+GO(glTextureImage1DEXT,vFuuiuiiuup)
+GO(glTextureImage2DEXT,vFuuiuiiiuup)
+GO(glTextureImage3DEXT,vFuuiuiiiiuup)
+GO(glTextureParameterIivEXT,vFuuup)
+GO(glTextureParameterIuivEXT,vFuuup)
+GO(glTextureParameterfEXT,vFuuuf)
+GO(glTextureParameterfvEXT,vFuuup)
+GO(glTextureParameteriEXT,vFuuui)
+GO(glTextureParameterivEXT,vFuuup)
+GO(glTextureRenderbufferEXT,vFuuu)
+GO(glTextureSubImage1DEXT,vFuuiiiuup)
+GO(glTextureSubImage2DEXT,vFuuiiiiiuup)
+GO(glTextureSubImage3DEXT,vFuuiiiiiiiuup)
+GO(glUnmapNamedBufferEXT,iFu)
+GO(glVertexArrayColorOffsetEXT,vFuuiuii)
+GO(glVertexArrayEdgeFlagOffsetEXT,vFuuii)
+GO(glVertexArrayFogCoordOffsetEXT,vFuuuii)
+GO(glVertexArrayIndexOffsetEXT,vFuuuii)
+GO(glVertexArrayMultiTexCoordOffsetEXT,vFuuuiuii)
+GO(glVertexArrayNormalOffsetEXT,vFuuuii)
+GO(glVertexArraySecondaryColorOffsetEXT,vFuuiuii)
+GO(glVertexArrayTexCoordOffsetEXT,vFuuiuii)
+GO(glVertexArrayVertexAttribIOffsetEXT,vFuuuiuii)
+GO(glVertexArrayVertexAttribOffsetEXT,vFuuuiuiii)
+GO(glVertexArrayVertexOffsetEXT,vFuuiuii)
+//EXT_draw_buffers2
+GO(glColorMaskIndexedEXT,vFuiiii)
+GO(glDisableIndexedEXT,vFuu)
+GO(glEnableIndexedEXT,vFuu)
+GO(glGetBooleanIndexedvEXT,vFuup)
+GO(glGetIntegerIndexedvEXT,vFuup)
+GO(glIsEnabledIndexedEXT,iFuu)
+//EXT_draw_instanced
+GO(glDrawArraysInstancedEXT,vFuiii)
+GO(glDrawElementsInstancedEXT,vFuiupi)
+//EXT_draw_range_elements
+GO(glDrawRangeElementsEXT,vFuuuiup)
+//EXT_fog_coord
+GO(glFogCoordPointerEXT,vFuip)
+GO(glFogCoorddEXT,vFd)
+GO(glFogCoorddvEXT,vFp)
+GO(glFogCoordfEXT,vFf)
+GO(glFogCoordfvEXT,vFp)
+//EXT_framebuffer_blit
+GO(glBlitFramebufferEXT,vFiiiiiiiiiu)
+//EXT_framebuffer_multisample
+GO(glRenderbufferStorageMultisampleEXT,vFuiuii)
+//EXT_framebuffer_object
+GO(glBindFramebufferEXT,vFuu)
+GO(glBindRenderbufferEXT,vFuu)
+GO(glCheckFramebufferStatusEXT,uFu)
+GO(glDeleteFramebuffersEXT,vFip)
+GO(glDeleteRenderbuffersEXT,vFip)
+GO(glFramebufferRenderbufferEXT,vFuuuu)
+GO(glFramebufferTexture1DEXT,vFuuuui)
+GO(glFramebufferTexture2DEXT,vFuuuui)
+GO(glFramebufferTexture3DEXT,vFuuuuii)
+GO(glGenFramebuffersEXT,vFip)
+GO(glGenRenderbuffersEXT,vFip)
+GO(glGenerateMipmapEXT,vFu)
+GO(glGetFramebufferAttachmentParameterivEXT,vFuuup)
+GO(glGetRenderbufferParameterivEXT,vFuup)
+GO(glIsFramebufferEXT,iFu)
+GO(glIsRenderbufferEXT,iFu)
+GO(glRenderbufferStorageEXT,vFuuii)
+//EXT_geometry_shader4
+GO(glProgramParameteriEXT,vFuui)
+//EXT_gpu_program_parameters
+GO(glProgramEnvParameters4fvEXT,vFuuip)
+GO(glProgramLocalParameters4fvEXT,vFuuip)
+//EXT_gpu_shader4
+GO(glBindFragDataLocationEXT,vFuup)
+GO(glGetFragDataLocationEXT,iFup)
+GO(glGetUniformuivEXT,vFuip)
+GO(glUniform1uiEXT,vFiu)
+GO(glUniform1uivEXT,vFiip)
+GO(glUniform2uiEXT,vFiuu)
+GO(glUniform2uivEXT,vFiip)
+GO(glUniform3uiEXT,vFiuuu)
+GO(glUniform3uivEXT,vFiip)
+GO(glUniform4uiEXT,vFiuuuu)
+GO(glUniform4uivEXT,vFiip)
+//EXT_histogram
+GO(glGetHistogramEXT,vFuiuup)
+GO(glGetHistogramParameterfvEXT,vFuup)
+GO(glGetHistogramParameterivEXT,vFuup)
+GO(glGetMinmaxEXT,vFuiuup)
+GO(glGetMinmaxParameterfvEXT,vFuup)
+GO(glGetMinmaxParameterivEXT,vFuup)
+GO(glHistogramEXT,vFuiui)
+GO(glMinmaxEXT,vFuui)
+GO(glResetHistogramEXT,vFu)
+GO(glResetMinmaxEXT,vFu)
+//EXT_index_func
+GO(glIndexFuncEXT,vFuf)
+//EXT_index_material
+GO(glIndexMaterialEXT,vFuu)
+//EXT_light_texture
+GO(glApplyTextureEXT,vFu)
+GO(glTextureLightEXT,vFu)
+GO(glTextureMaterialEXT,vFuu)
+//EXT_multi_draw_arrays
+GO(glMultiDrawArraysEXT,vFuppi)
+GO(glMultiDrawElementsEXT,vFupupi)
+//EXT_multisample
+GO(glSampleMaskEXT,vFfi)
+GO(glSamplePatternEXT,vFu)
+//EXT_paletted_texture
+GO(glColorTableEXT,vFuuiuup)
+GO(glGetColorTableEXT,vFuuup)
+GO(glGetColorTableParameterfvEXT,vFuup)
+GO(glGetColorTableParameterivEXT,vFuup)
+//EXT_pixel_transform
+GO(glGetPixelTransformParameterfvEXT,vFuup)
+GO(glGetPixelTransformParameterivEXT,vFuup)
+GO(glPixelTransformParameterfEXT,vFuuf)
+GO(glPixelTransformParameterfvEXT,vFuup)
+GO(glPixelTransformParameteriEXT,vFuui)
+GO(glPixelTransformParameterivEXT,vFuup)
+//EXT_point_parameters
+GO(glPointParameterfEXT,vFuf)
+GO(glPointParameterfvEXT,vFup)
+//EXT_polygon_offset
+GO(glPolygonOffsetEXT,vFff)
+//EXT_provoking_vertex
+GO(glProvokingVertexEXT,vFu)
+//EXT_secondary_color
+GO(glSecondaryColor3bEXT,vFiii)
+GO(glSecondaryColor3bvEXT,vFp)
+GO(glSecondaryColor3dEXT,vFddd)
+GO(glSecondaryColor3dvEXT,vFp)
+GO(glSecondaryColor3fEXT,vFfff)
+GO(glSecondaryColor3fvEXT,vFp)
+GO(glSecondaryColor3iEXT,vFiii)
+GO(glSecondaryColor3ivEXT,vFp)
+GO(glSecondaryColor3sEXT,vFiii)
+GO(glSecondaryColor3svEXT,vFp)
+GO(glSecondaryColor3ubEXT,vFuuu)
+GO(glSecondaryColor3ubvEXT,vFp)
+GO(glSecondaryColor3uiEXT,vFuuu)
+GO(glSecondaryColor3uivEXT,vFp)
+GO(glSecondaryColor3usEXT,vFuuu)
+GO(glSecondaryColor3usvEXT,vFp)
+GO(glSecondaryColorPointerEXT,vFiuip)
+//EXT_separate_shader_objects
+GO(glActiveProgramEXT,vFu)
+GO(glCreateShaderProgramEXT,uFup)
+GO(glUseShaderProgramEXT,vFuu)
+//EXT_shader_image_load_store
+GO(glBindImageTextureEXT,vFuuiiiui)
+GO(glMemoryBarrierEXT,vFi)
+//EXT_stencil_clear_tag
+GO(glStencilClearTagEXT,vFiu)
+//EXT_stencil_two_side
+GO(glActiveStencilFaceEXT,vFu)
+//EXT_subtexture
+GO(glTexSubImage1DEXT,vFuiiiuup)
+GO(glTexSubImage2DEXT,vFuiiiiiuup)
+//EXT_texture3D
+GO(glTexImage3DEXT,vFuiuiiiiuup)
+GO(glTexSubImage3DEXT,vFuiiiiiiiuup)
+//EXT_texture_buffer_object
+GO(glTexBufferEXT,vFuuu)
+//EXT_texture_integer
+GO(glClearColorIiEXT,vFiiii)
+GO(glClearColorIuiEXT,vFuuuu)
+GO(glGetTexParameterIivEXT,vFuup)
+GO(glGetTexParameterIuivEXT,vFuup)
+GO(glTexParameterIivEXT,vFuup)
+GO(glTexParameterIuivEXT,vFuup)
+//EXT_texture_object
+GO(glAreTexturesResidentEXT,iFipp)
+GO(glBindTextureEXT,vFuu)
+GO(glDeleteTexturesEXT,vFip)
+GO(glGenTexturesEXT,vFip)
+GO(glIsTextureEXT,iFu)
+GO(glPrioritizeTexturesEXT,vFipp)
+//EXT_texture_perturb_normal
+GO(glTextureNormalEXT,vFu)
+//EXT_timer_query
+GO(glGetQueryObjecti64vEXT,vFuup)
+GO(glGetQueryObjectui64vEXT,vFuup)
+//EXT_transform_feedback
+GO(glBeginTransformFeedbackEXT,vFu)
+GO(glBindBufferBaseEXT,vFuuu)
+GO(glBindBufferOffsetEXT,vFuuui)
+GO(glBindBufferRangeEXT,vFuuuii)
+GO(glEndTransformFeedbackEXT,vFv)
+GO(glGetTransformFeedbackVaryingEXT,vFuuipppp)
+GO(glTransformFeedbackVaryingsEXT,vFuipu)
+//EXT_vertex_array
+GO(glArrayElementEXT,vFi)
+GO(glColorPointerEXT,vFiuiip)
+GO(glDrawArraysEXT,vFuii)
+GO(glEdgeFlagPointerEXT,vFiip)
+GO(glGetPointervEXT,vFup)
+GO(glIndexPointerEXT,vFuiip)
+GO(glNormalPointerEXT,vFuiip)
+GO(glTexCoordPointerEXT,vFiuiip)
+GO(glVertexPointerEXT,vFiuiip)
+//EXT_vertex_attrib_64bit
+GO(glGetVertexAttribLdvEXT,vFuup)
+GO(glVertexArrayVertexAttribLOffsetEXT,vFuuuiuii)
+GO(glVertexAttribL1dEXT,vFud)
+GO(glVertexAttribL1dvEXT,vFup)
+GO(glVertexAttribL2dEXT,vFudd)
+GO(glVertexAttribL2dvEXT,vFup)
+GO(glVertexAttribL3dEXT,vFuddd)
+GO(glVertexAttribL3dvEXT,vFup)
+GO(glVertexAttribL4dEXT,vFudddd)
+GO(glVertexAttribL4dvEXT,vFup)
+GO(glVertexAttribLPointerEXT,vFuiuip)
+//EXT_vertex_shader
+GO(glBeginVertexShaderEXT,vFv)
+GO(glBindLightParameterEXT,uFuu)
+GO(glBindMaterialParameterEXT,uFuu)
+GO(glBindParameterEXT,uFu)
+GO(glBindTexGenParameterEXT,uFuuu)
+GO(glBindTextureUnitParameterEXT,uFuu)
+GO(glBindVertexShaderEXT,vFu)
+GO(glDeleteVertexShaderEXT,vFu)
+GO(glDisableVariantClientStateEXT,vFu)
+GO(glEnableVariantClientStateEXT,vFu)
+GO(glEndVertexShaderEXT,vFv)
+GO(glExtractComponentEXT,vFuuu)
+GO(glGenSymbolsEXT,uFuuuu)
+GO(glGenVertexShadersEXT,uFu)
+GO(glGetInvariantBooleanvEXT,vFuup)
+GO(glGetInvariantFloatvEXT,vFuup)
+GO(glGetInvariantIntegervEXT,vFuup)
+GO(glGetLocalConstantBooleanvEXT,vFuup)
+GO(glGetLocalConstantFloatvEXT,vFuup)
+GO(glGetLocalConstantIntegervEXT,vFuup)
+GO(glGetVariantBooleanvEXT,vFuup)
+GO(glGetVariantFloatvEXT,vFuup)
+GO(glGetVariantIntegervEXT,vFuup)
+GO(glGetVariantPointervEXT,vFuup)
+GO(glInsertComponentEXT,vFuuu)
+GO(glIsVariantEnabledEXT,iFuu)
+GO(glSetInvariantEXT,vFuup)
+GO(glSetLocalConstantEXT,vFuup)
+GO(glShaderOp1EXT,vFuuu)
+GO(glShaderOp2EXT,vFuuuu)
+GO(glShaderOp3EXT,vFuuuuu)
+GO(glSwizzleEXT,vFuuuuuu)
+GO(glVariantPointerEXT,vFuuup)
+GO(glVariantbvEXT,vFup)
+GO(glVariantdvEXT,vFup)
+GO(glVariantfvEXT,vFup)
+GO(glVariantivEXT,vFup)
+GO(glVariantsvEXT,vFup)
+GO(glVariantubvEXT,vFup)
+GO(glVariantuivEXT,vFup)
+GO(glVariantusvEXT,vFup)
+GO(glWriteMaskEXT,vFuuuuuu)
+//EXT_vertex_weighting
+GO(glVertexWeightPointerEXT,vFiuip)
+GO(glVertexWeightfEXT,vFf)
+GO(glVertexWeightfvEXT,vFp)
+//EXT_x11_sync_object
+GO(glImportSyncEXT,pFuii)
+//GREMEDY_frame_terminator
+GO(glFrameTerminatorGREMEDY,vFv)
+//GREMEDY_string_marker
+GO(glStringMarkerGREMEDY,vFip)
+//HP_image_transform
+GO(glGetImageTransformParameterfvHP,vFuup)
+GO(glGetImageTransformParameterivHP,vFuup)
+GO(glImageTransformParameterfHP,vFuuf)
+GO(glImageTransformParameterfvHP,vFuup)
+GO(glImageTransformParameteriHP,vFuui)
+GO(glImageTransformParameterivHP,vFuup)
+//IBM_multimode_draw_arrays
+GO(glMultiModeDrawArraysIBM,vFpppii)
+GO(glMultiModeDrawElementsIBM,vFppupii)
+//IBM_static_data
+GO(glFlushStaticDataIBM,vFu)
+//IBM_vertex_array_lists
+GO(glColorPointerListIBM,vFiuipi)
+GO(glEdgeFlagPointerListIBM,vFipi)
+GO(glFogCoordPointerListIBM,vFuipi)
+GO(glIndexPointerListIBM,vFuipi)
+GO(glNormalPointerListIBM,vFuipi)
+GO(glSecondaryColorPointerListIBM,vFiuipi)
+GO(glTexCoordPointerListIBM,vFiuipi)
+GO(glVertexPointerListIBM,vFiuipi)
+//INGR_blend_func_separate
+GO(glBlendFuncSeparateINGR,vFuuuu)
+//INTEL_map_texture
+GO(glMapTexture2DINTEL,pFuiipp)
+GO(glSyncTextureINTEL,vFu)
+GO(glUnmapTexture2DINTEL,vFui)
+//INTEL_parallel_arrays
+GO(glColorPointervINTEL,vFiup)
+GO(glNormalPointervINTEL,vFup)
+GO(glTexCoordPointervINTEL,vFiup)
+GO(glVertexPointervINTEL,vFiup)
+//KHR_debug
+GOM(glDebugMessageCallback,vFEpp)   // not ideal, because the my_ version will always exist, even if glDebugMessageCallback doesn't
+GO(glDebugMessageControl,vFuuuipi)
+GO(glDebugMessageInsert,vFuuuuip)
+GO(glGetDebugMessageLog,uFuipppppp)
+GO(glGetObjectLabel,vFuuipp)
+GO(glGetObjectPtrLabel,vFpipp)
+GO(glObjectLabel,vFuuip)
+GO(glObjectPtrLabel,vFpip)
+GO(glPopDebugGroup,vFv)
+GO(glPushDebugGroup,vFuuip)
+//MESA_resize_buffers
+GO(glResizeBuffersMESA,vFv)
+//MESA_window_pos
+GO(glWindowPos2dMESA,vFdd)
+GO(glWindowPos2dvMESA,vFp)
+GO(glWindowPos2fMESA,vFff)
+GO(glWindowPos2fvMESA,vFp)
+GO(glWindowPos2iMESA,vFii)
+GO(glWindowPos2ivMESA,vFp)
+GO(glWindowPos2sMESA,vFii)
+GO(glWindowPos2svMESA,vFp)
+GO(glWindowPos3dMESA,vFddd)
+GO(glWindowPos3dvMESA,vFp)
+GO(glWindowPos3fMESA,vFfff)
+GO(glWindowPos3fvMESA,vFp)
+GO(glWindowPos3iMESA,vFiii)
+GO(glWindowPos3ivMESA,vFp)
+GO(glWindowPos3sMESA,vFiii)
+GO(glWindowPos3svMESA,vFp)
+GO(glWindowPos4dMESA,vFdddd)
+GO(glWindowPos4dvMESA,vFp)
+GO(glWindowPos4fMESA,vFffff)
+GO(glWindowPos4fvMESA,vFp)
+GO(glWindowPos4iMESA,vFiiii)
+GO(glWindowPos4ivMESA,vFp)
+GO(glWindowPos4sMESA,vFiiii)
+GO(glWindowPos4svMESA,vFp)
+//NVX_conditional_render
+GO(glBeginConditionalRenderNVX,vFu)
+GO(glEndConditionalRenderNVX,vFv)
+//NV_bindless_texture
+GO(glGetImageHandleNV,uFuiiiu)
+GO(glGetTextureHandleNV,uFu)
+GO(glGetTextureSamplerHandleNV,uFuu)
+GO(glIsImageHandleResidentNV,iFu)
+GO(glIsTextureHandleResidentNV,iFu)
+GO(glMakeImageHandleNonResidentNV,vFu)
+GO(glMakeImageHandleResidentNV,vFuu)
+GO(glMakeTextureHandleNonResidentNV,vFu)
+GO(glMakeTextureHandleResidentNV,vFu)
+GO(glProgramUniformHandleui64NV,vFuiu)
+GO(glProgramUniformHandleui64vNV,vFuiip)
+GO(glUniformHandleui64NV,vFiu)
+GO(glUniformHandleui64vNV,vFiip)
+//NV_conditional_render
+GO(glBeginConditionalRenderNV,vFuu)
+GO(glEndConditionalRenderNV,vFv)
+//NV_copy_image
+GO(glCopyImageSubDataNV,vFuuiiiiuuiiiiiii)
+//NV_depth_buffer_float
+GO(glClearDepthdNV,vFd)
+GO(glDepthBoundsdNV,vFdd)
+GO(glDepthRangedNV,vFdd)
+//NV_draw_texture
+GO(glDrawTextureNV,vFuufffffffff)
+//NV_evaluators
+GO(glEvalMapsNV,vFuu)
+GO(glGetMapAttribParameterfvNV,vFuuup)
+GO(glGetMapAttribParameterivNV,vFuuup)
+GO(glGetMapControlPointsNV,vFuuuiiip)
+GO(glGetMapParameterfvNV,vFuup)
+GO(glGetMapParameterivNV,vFuup)
+GO(glMapControlPointsNV,vFuuuiiiiip)
+GO(glMapParameterfvNV,vFuup)
+GO(glMapParameterivNV,vFuup)
+//NV_explicit_multisample
+GO(glGetMultisamplefvNV,vFuup)
+GO(glSampleMaskIndexedNV,vFui)
+GO(glTexRenderbufferNV,vFuu)
+//NV_fence
+GO(glDeleteFencesNV,vFip)
+GO(glFinishFenceNV,vFu)
+GO(glGenFencesNV,vFip)
+GO(glGetFenceivNV,vFuup)
+GO(glIsFenceNV,iFu)
+GO(glSetFenceNV,vFuu)
+GO(glTestFenceNV,iFu)
+//NV_fragment_program
+GO(glGetProgramNamedParameterdvNV,vFuipp)
+GO(glGetProgramNamedParameterfvNV,vFuipp)
+GO(glProgramNamedParameter4dNV,vFuipdddd)
+GO(glProgramNamedParameter4dvNV,vFuipp)
+GO(glProgramNamedParameter4fNV,vFuipffff)
+GO(glProgramNamedParameter4fvNV,vFuipp)
+//NV_framebuffer_multisample_coverage
+GO(glRenderbufferStorageMultisampleCoverageNV,vFuiiuii)
+//NV_geometry_program4
+GO(glFramebufferTextureEXT,vFuuui)
+GO(glFramebufferTextureFaceEXT,vFuuuiu)
+GO(glFramebufferTextureLayerEXT,vFuuuii)
+GO(glProgramVertexLimitNV,vFui)
+//NV_gpu_program4
+GO(glGetProgramEnvParameterIivNV,vFuup)
+GO(glGetProgramEnvParameterIuivNV,vFuup)
+GO(glGetProgramLocalParameterIivNV,vFuup)
+GO(glGetProgramLocalParameterIuivNV,vFuup)
+GO(glProgramEnvParameterI4iNV,vFuuiiii)
+GO(glProgramEnvParameterI4ivNV,vFuup)
+GO(glProgramEnvParameterI4uiNV,vFuuuuuu)
+GO(glProgramEnvParameterI4uivNV,vFuup)
+GO(glProgramEnvParametersI4ivNV,vFuuip)
+GO(glProgramEnvParametersI4uivNV,vFuuip)
+GO(glProgramLocalParameterI4iNV,vFuuiiii)
+GO(glProgramLocalParameterI4ivNV,vFuup)
+GO(glProgramLocalParameterI4uiNV,vFuuuuuu)
+GO(glProgramLocalParameterI4uivNV,vFuup)
+GO(glProgramLocalParametersI4ivNV,vFuuip)
+GO(glProgramLocalParametersI4uivNV,vFuuip)
+//NV_gpu_program5
+GO(glGetProgramSubroutineParameteruivNV,vFuup)
+GO(glProgramSubroutineParametersuivNV,vFuip)
+//NV_gpu_shader5
+GO(glGetUniformi64vNV,vFuip)
+GO(glProgramUniform1i64NV,vFuii)
+GO(glProgramUniform1i64vNV,vFuiip)
+GO(glProgramUniform1ui64NV,vFuiu)
+GO(glProgramUniform1ui64vNV,vFuiip)
+GO(glProgramUniform2i64NV,vFuiii)
+GO(glProgramUniform2i64vNV,vFuiip)
+GO(glProgramUniform2ui64NV,vFuiuu)
+GO(glProgramUniform2ui64vNV,vFuiip)
+GO(glProgramUniform3i64NV,vFuiiii)
+GO(glProgramUniform3i64vNV,vFuiip)
+GO(glProgramUniform3ui64NV,vFuiuuu)
+GO(glProgramUniform3ui64vNV,vFuiip)
+GO(glProgramUniform4i64NV,vFuiiiii)
+GO(glProgramUniform4i64vNV,vFuiip)
+GO(glProgramUniform4ui64NV,vFuiuuuu)
+GO(glProgramUniform4ui64vNV,vFuiip)
+GO(glUniform1i64NV,vFii)
+GO(glUniform1i64vNV,vFiip)
+GO(glUniform1ui64NV,vFiu)
+GO(glUniform1ui64vNV,vFiip)
+GO(glUniform2i64NV,vFiii)
+GO(glUniform2i64vNV,vFiip)
+GO(glUniform2ui64NV,vFiuu)
+GO(glUniform2ui64vNV,vFiip)
+GO(glUniform3i64NV,vFiiii)
+GO(glUniform3i64vNV,vFiip)
+GO(glUniform3ui64NV,vFiuuu)
+GO(glUniform3ui64vNV,vFiip)
+GO(glUniform4i64NV,vFiiiii)
+GO(glUniform4i64vNV,vFiip)
+GO(glUniform4ui64NV,vFiuuuu)
+GO(glUniform4ui64vNV,vFiip)
+//NV_half_float
+GO(glColor3hNV,vFiii)
+GO(glColor3hvNV,vFp)
+GO(glColor4hNV,vFiiii)
+GO(glColor4hvNV,vFp)
+GO(glFogCoordhNV,vFi)
+GO(glFogCoordhvNV,vFp)
+GO(glMultiTexCoord1hNV,vFui)
+GO(glMultiTexCoord1hvNV,vFup)
+GO(glMultiTexCoord2hNV,vFuii)
+GO(glMultiTexCoord2hvNV,vFup)
+GO(glMultiTexCoord3hNV,vFuiii)
+GO(glMultiTexCoord3hvNV,vFup)
+GO(glMultiTexCoord4hNV,vFuiiii)
+GO(glMultiTexCoord4hvNV,vFup)
+GO(glNormal3hNV,vFiii)
+GO(glNormal3hvNV,vFp)
+GO(glSecondaryColor3hNV,vFiii)
+GO(glSecondaryColor3hvNV,vFp)
+GO(glTexCoord1hNV,vFi)
+GO(glTexCoord1hvNV,vFp)
+GO(glTexCoord2hNV,vFii)
+GO(glTexCoord2hvNV,vFp)
+GO(glTexCoord3hNV,vFiii)
+GO(glTexCoord3hvNV,vFp)
+GO(glTexCoord4hNV,vFiiii)
+GO(glTexCoord4hvNV,vFp)
+GO(glVertex2hNV,vFii)
+GO(glVertex2hvNV,vFp)
+GO(glVertex3hNV,vFiii)
+GO(glVertex3hvNV,vFp)
+GO(glVertex4hNV,vFiiii)
+GO(glVertex4hvNV,vFp)
+GO(glVertexAttrib1hNV,vFui)
+GO(glVertexAttrib1hvNV,vFup)
+GO(glVertexAttrib2hNV,vFuii)
+GO(glVertexAttrib2hvNV,vFup)
+GO(glVertexAttrib3hNV,vFuiii)
+GO(glVertexAttrib3hvNV,vFup)
+GO(glVertexAttrib4hNV,vFuiiii)
+GO(glVertexAttrib4hvNV,vFup)
+GO(glVertexAttribs1hvNV,vFuip)
+GO(glVertexAttribs2hvNV,vFuip)
+GO(glVertexAttribs3hvNV,vFuip)
+GO(glVertexAttribs4hvNV,vFuip)
+GO(glVertexWeighthNV,vFi)
+GO(glVertexWeighthvNV,vFp)
+//NV_occlusion_query
+GO(glBeginOcclusionQueryNV,vFu)
+GO(glDeleteOcclusionQueriesNV,vFip)
+GO(glEndOcclusionQueryNV,vFv)
+GO(glGenOcclusionQueriesNV,vFip)
+GO(glGetOcclusionQueryivNV,vFuup)
+GO(glGetOcclusionQueryuivNV,vFuup)
+GO(glIsOcclusionQueryNV,iFu)
+//NV_parameter_buffer_object
+GO(glProgramBufferParametersIivNV,vFuuuip)
+GO(glProgramBufferParametersIuivNV,vFuuuip)
+GO(glProgramBufferParametersfvNV,vFuuuip)
+//NV_path_rendering
+GO(glCopyPathNV,vFuu)
+GO(glCoverFillPathInstancedNV,vFiupuuup)
+GO(glCoverFillPathNV,vFuu)
+GO(glCoverStrokePathInstancedNV,vFiupuuup)
+GO(glCoverStrokePathNV,vFuu)
+GO(glDeletePathsNV,vFui)
+GO(glGenPathsNV,uFi)
+GO(glGetPathColorGenfvNV,vFuup)
+GO(glGetPathColorGenivNV,vFuup)
+GO(glGetPathCommandsNV,vFup)
+GO(glGetPathCoordsNV,vFup)
+GO(glGetPathDashArrayNV,vFup)
+GO(glGetPathLengthNV,fFuii)
+GO(glGetPathMetricRangeNV,vFiuiip)
+GO(glGetPathMetricsNV,vFiiupuip)
+GO(glGetPathParameterfvNV,vFuup)
+GO(glGetPathParameterivNV,vFuup)
+GO(glGetPathSpacingNV,vFuiupuffup)
+GO(glGetPathTexGenfvNV,vFuup)
+GO(glGetPathTexGenivNV,vFuup)
+GO(glInterpolatePathsNV,vFuuuf)
+GO(glIsPathNV,iFu)
+GO(glIsPointInFillPathNV,iFuuff)
+GO(glIsPointInStrokePathNV,iFuff)
+GO(glPathColorGenNV,vFuuup)
+GO(glPathCommandsNV,vFuipiup)
+GO(glPathCoordsNV,vFuiup)
+GO(glPathCoverDepthFuncNV,vFu)
+GO(glPathDashArrayNV,vFuip)
+GO(glPathFogGenNV,vFu)
+GO(glPathGlyphRangeNV,vFuupiuiuuf)
+GO(glPathGlyphsNV,vFuupiiupuuf)
+GO(glPathParameterfNV,vFuuf)
+GO(glPathParameterfvNV,vFuup)
+GO(glPathParameteriNV,vFuui)
+GO(glPathParameterivNV,vFuup)
+GO(glPathStencilDepthOffsetNV,vFff)
+GO(glPathStencilFuncNV,vFuiu)
+GO(glPathStringNV,vFuuip)
+GO(glPathSubCommandsNV,vFuiiipiup)
+GO(glPathSubCoordsNV,vFuiiup)
+GO(glPathTexGenNV,vFuuip)
+GO(glPointAlongPathNV,iFuiifpppp)
+GO(glStencilFillPathInstancedNV,vFiupuuuup)
+GO(glStencilFillPathNV,vFuuu)
+GO(glStencilStrokePathInstancedNV,vFiupuiuup)
+GO(glStencilStrokePathNV,vFuiu)
+GO(glTransformPathNV,vFuuup)
+GO(glWeightPathsNV,vFuipp)
+//NV_pixel_data_range
+GO(glFlushPixelDataRangeNV,vFu)
+GO(glPixelDataRangeNV,vFuip)
+//NV_point_sprite
+GO(glPointParameteriNV,vFui)
+GO(glPointParameterivNV,vFup)
+//NV_present_video
+GO(glGetVideoi64vNV,vFuup)
+GO(glGetVideoivNV,vFuup)
+GO(glGetVideoui64vNV,vFuup)
+GO(glGetVideouivNV,vFuup)
+GO(glPresentFrameDualFillNV,vFuuuuuuuuuuuuu)
+GO(glPresentFrameKeyedNV,vFuuuuuuuuuuu)
+//NV_primitive_restart
+GO(glPrimitiveRestartIndexNV,vFu)
+GO(glPrimitiveRestartNV,vFv)
+//NV_register_combiners
+GO(glCombinerInputNV,vFuuuuuu)
+GO(glCombinerOutputNV,vFuuuuuuuiii)
+GO(glCombinerParameterfNV,vFuf)
+GO(glCombinerParameterfvNV,vFup)
+GO(glCombinerParameteriNV,vFui)
+GO(glCombinerParameterivNV,vFup)
+GO(glFinalCombinerInputNV,vFuuuu)
+GO(glGetCombinerInputParameterfvNV,vFuuuup)
+GO(glGetCombinerInputParameterivNV,vFuuuup)
+GO(glGetCombinerOutputParameterfvNV,vFuuup)
+GO(glGetCombinerOutputParameterivNV,vFuuup)
+GO(glGetFinalCombinerInputParameterfvNV,vFuup)
+GO(glGetFinalCombinerInputParameterivNV,vFuup)
+//NV_register_combiners2
+GO(glCombinerStageParameterfvNV,vFuup)
+GO(glGetCombinerStageParameterfvNV,vFuup)
+//NV_shader_buffer_load
+GO(glGetBufferParameterui64vNV,vFuup)
+GO(glGetIntegerui64vNV,vFup)
+GO(glGetNamedBufferParameterui64vNV,vFuup)
+GO(glGetUniformui64vNV,vFuip)
+GO(glIsBufferResidentNV,iFu)
+GO(glIsNamedBufferResidentNV,iFu)
+GO(glMakeBufferNonResidentNV,vFu)
+GO(glMakeBufferResidentNV,vFuu)
+GO(glMakeNamedBufferNonResidentNV,vFu)
+GO(glMakeNamedBufferResidentNV,vFuu)
+GO(glProgramUniformui64NV,vFuiu)
+GO(glProgramUniformui64vNV,vFuiip)
+GO(glUniformui64NV,vFiu)
+GO(glUniformui64vNV,vFiip)
+//NV_texture_barrier
+GO(glTextureBarrierNV,vFv)
+//NV_texture_multisample
+GO(glTexImage2DMultisampleCoverageNV,vFuiiiiii)
+GO(glTexImage3DMultisampleCoverageNV,vFuiiiiiii)
+GO(glTextureImage2DMultisampleCoverageNV,vFuuiiiiii)
+GO(glTextureImage2DMultisampleNV,vFuuiiiii)
+GO(glTextureImage3DMultisampleCoverageNV,vFuuiiiiiii)
+GO(glTextureImage3DMultisampleNV,vFuuiiiiii)
+//NV_transform_feedback
+GO(glActiveVaryingNV,vFup)
+GO(glBeginTransformFeedbackNV,vFu)
+GO(glBindBufferBaseNV,vFuuu)
+GO(glBindBufferOffsetNV,vFuuui)
+GO(glBindBufferRangeNV,vFuuuii)
+GO(glEndTransformFeedbackNV,vFv)
+GO(glGetActiveVaryingNV,vFuuipppp)
+GO(glGetTransformFeedbackVaryingNV,vFuup)
+GO(glGetVaryingLocationNV,iFup)
+GO(glTransformFeedbackAttribsNV,vFipu)
+GO(glTransformFeedbackStreamAttribsNV,vFipipu)
+GO(glTransformFeedbackVaryingsNV,vFuipu)
+//NV_transform_feedback2
+GO(glBindTransformFeedbackNV,vFuu)
+GO(glDeleteTransformFeedbacksNV,vFip)
+GO(glDrawTransformFeedbackNV,vFuu)
+GO(glGenTransformFeedbacksNV,vFip)
+GO(glIsTransformFeedbackNV,iFu)
+GO(glPauseTransformFeedbackNV,vFv)
+GO(glResumeTransformFeedbackNV,vFv)
+//NV_vdpau_interop
+GO(glVDPAUFiniNV,vFv)
+GO(glVDPAUGetSurfaceivNV,vFuuipp)
+GO(glVDPAUInitNV,vFpp)
+GO(glVDPAUIsSurfaceNV,vFu)
+GO(glVDPAUMapSurfacesNV,vFip)
+GO(glVDPAURegisterOutputSurfaceNV,uFpuip)
+GO(glVDPAURegisterVideoSurfaceNV,uFpuip)
+GO(glVDPAUSurfaceAccessNV,vFuu)
+GO(glVDPAUUnmapSurfacesNV,vFip)
+GO(glVDPAUUnregisterSurfaceNV,vFu)
+//NV_vertex_array_range
+GO(glFlushVertexArrayRangeNV,vFv)
+GO(glVertexArrayRangeNV,vFip)
+//NV_vertex_attrib_integer_64bit
+GO(glGetVertexAttribLi64vNV,vFuup)
+GO(glGetVertexAttribLui64vNV,vFuup)
+GO(glVertexAttribL1i64NV,vFui)
+GO(glVertexAttribL1i64vNV,vFup)
+GO(glVertexAttribL1ui64NV,vFuu)
+GO(glVertexAttribL1ui64vNV,vFup)
+GO(glVertexAttribL2i64NV,vFuii)
+GO(glVertexAttribL2i64vNV,vFup)
+GO(glVertexAttribL2ui64NV,vFuuu)
+GO(glVertexAttribL2ui64vNV,vFup)
+GO(glVertexAttribL3i64NV,vFuiii)
+GO(glVertexAttribL3i64vNV,vFup)
+GO(glVertexAttribL3ui64NV,vFuuuu)
+GO(glVertexAttribL3ui64vNV,vFup)
+GO(glVertexAttribL4i64NV,vFuiiii)
+GO(glVertexAttribL4i64vNV,vFup)
+GO(glVertexAttribL4ui64NV,vFuuuuu)
+GO(glVertexAttribL4ui64vNV,vFup)
+GO(glVertexAttribLFormatNV,vFuiui)
+//NV_vertex_buffer_unified_memory
+GO(glBufferAddressRangeNV,vFuuui)
+GO(glColorFormatNV,vFiui)
+GO(glEdgeFlagFormatNV,vFi)
+GO(glFogCoordFormatNV,vFui)
+GO(glGetIntegerui64i_vNV,vFuup)
+GO(glIndexFormatNV,vFui)
+GO(glNormalFormatNV,vFui)
+GO(glSecondaryColorFormatNV,vFiui)
+GO(glTexCoordFormatNV,vFiui)
+GO(glVertexAttribFormatNV,vFuiuii)
+GO(glVertexAttribIFormatNV,vFuiui)
+GO(glVertexFormatNV,vFiui)
+//NV_vertex_program
+GO(glAreProgramsResidentNV,iFipp)
+GO(glBindProgramNV,vFuu)
+GO(glDeleteProgramsNV,vFip)
+GO(glExecuteProgramNV,vFuup)
+GO(glGenProgramsNV,vFip)
+GO(glGetProgramParameterdvNV,vFuuup)
+GO(glGetProgramParameterfvNV,vFuuup)
+GO(glGetProgramStringNV,vFuup)
+GO(glGetProgramivNV,vFuup)
+GO(glGetTrackMatrixivNV,vFuuup)
+GO(glGetVertexAttribPointervNV,vFuup)
+GO(glGetVertexAttribdvNV,vFuup)
+GO(glGetVertexAttribfvNV,vFuup)
+GO(glGetVertexAttribivNV,vFuup)
+GO(glIsProgramNV,iFu)
+GO(glLoadProgramNV,vFuuip)
+GO(glProgramParameter4dNV,vFuudddd)
+GO(glProgramParameter4dvNV,vFuup)
+GO(glProgramParameter4fNV,vFuuffff)
+GO(glProgramParameter4fvNV,vFuup)
+GO(glProgramParameters4dvNV,vFuuip)
+GO(glProgramParameters4fvNV,vFuuip)
+GO(glRequestResidentProgramsNV,vFip)
+GO(glTrackMatrixNV,vFuuuu)
+GO(glVertexAttrib1dNV,vFud)
+GO(glVertexAttrib1dvNV,vFup)
+GO(glVertexAttrib1fNV,vFuf)
+GO(glVertexAttrib1fvNV,vFup)
+GO(glVertexAttrib1sNV,vFui)
+GO(glVertexAttrib1svNV,vFup)
+GO(glVertexAttrib2dNV,vFudd)
+GO(glVertexAttrib2dvNV,vFup)
+GO(glVertexAttrib2fNV,vFuff)
+GO(glVertexAttrib2fvNV,vFup)
+GO(glVertexAttrib2sNV,vFuii)
+GO(glVertexAttrib2svNV,vFup)
+GO(glVertexAttrib3dNV,vFuddd)
+GO(glVertexAttrib3dvNV,vFup)
+GO(glVertexAttrib3fNV,vFufff)
+GO(glVertexAttrib3fvNV,vFup)
+GO(glVertexAttrib3sNV,vFuiii)
+GO(glVertexAttrib3svNV,vFup)
+GO(glVertexAttrib4dNV,vFudddd)
+GO(glVertexAttrib4dvNV,vFup)
+GO(glVertexAttrib4fNV,vFuffff)
+GO(glVertexAttrib4fvNV,vFup)
+GO(glVertexAttrib4sNV,vFuiiii)
+GO(glVertexAttrib4svNV,vFup)
+GO(glVertexAttrib4ubNV,vFuuuuu)
+GO(glVertexAttrib4ubvNV,vFup)
+GO(glVertexAttribPointerNV,vFuiuip)
+GO(glVertexAttribs1dvNV,vFuip)
+GO(glVertexAttribs1fvNV,vFuip)
+GO(glVertexAttribs1svNV,vFuip)
+GO(glVertexAttribs2dvNV,vFuip)
+GO(glVertexAttribs2fvNV,vFuip)
+GO(glVertexAttribs2svNV,vFuip)
+GO(glVertexAttribs3dvNV,vFuip)
+GO(glVertexAttribs3fvNV,vFuip)
+GO(glVertexAttribs3svNV,vFuip)
+GO(glVertexAttribs4dvNV,vFuip)
+GO(glVertexAttribs4fvNV,vFuip)
+GO(glVertexAttribs4svNV,vFuip)
+GO(glVertexAttribs4ubvNV,vFuip)
+//NV_vertex_program4
+GO(glGetVertexAttribIivEXT,vFuup)
+GO(glGetVertexAttribIuivEXT,vFuup)
+GO(glVertexAttribI1iEXT,vFui)
+GO(glVertexAttribI1ivEXT,vFup)
+GO(glVertexAttribI1uiEXT,vFuu)
+GO(glVertexAttribI1uivEXT,vFup)
+GO(glVertexAttribI2iEXT,vFuii)
+GO(glVertexAttribI2ivEXT,vFup)
+GO(glVertexAttribI2uiEXT,vFuuu)
+GO(glVertexAttribI2uivEXT,vFup)
+GO(glVertexAttribI3iEXT,vFuiii)
+GO(glVertexAttribI3ivEXT,vFup)
+GO(glVertexAttribI3uiEXT,vFuuuu)
+GO(glVertexAttribI3uivEXT,vFup)
+GO(glVertexAttribI4bvEXT,vFup)
+GO(glVertexAttribI4iEXT,vFuiiii)
+GO(glVertexAttribI4ivEXT,vFup)
+GO(glVertexAttribI4svEXT,vFup)
+GO(glVertexAttribI4ubvEXT,vFup)
+GO(glVertexAttribI4uiEXT,vFuuuuu)
+GO(glVertexAttribI4uivEXT,vFup)
+GO(glVertexAttribI4usvEXT,vFup)
+GO(glVertexAttribIPointerEXT,vFuiuip)
+//NV_video_capture
+GO(glBeginVideoCaptureNV,vFu)
+GO(glBindVideoCaptureStreamBufferNV,vFuuui)
+GO(glBindVideoCaptureStreamTextureNV,vFuuuuu)
+GO(glEndVideoCaptureNV,vFu)
+GO(glGetVideoCaptureStreamdvNV,vFuuup)
+GO(glGetVideoCaptureStreamfvNV,vFuuup)
+GO(glGetVideoCaptureStreamivNV,vFuuup)
+GO(glGetVideoCaptureivNV,vFuup)
+GO(glVideoCaptureNV,uFupp)
+GO(glVideoCaptureStreamParameterdvNV,vFuuup)
+GO(glVideoCaptureStreamParameterfvNV,vFuuup)
+GO(glVideoCaptureStreamParameterivNV,vFuuup)
+//OES_byte_coordinates
+GO(glMultiTexCoord1bOES,vFui)
+GO(glMultiTexCoord1bvOES,vFup)
+GO(glMultiTexCoord2bOES,vFuii)
+GO(glMultiTexCoord2bvOES,vFup)
+GO(glMultiTexCoord3bOES,vFuiii)
+GO(glMultiTexCoord3bvOES,vFup)
+GO(glMultiTexCoord4bOES,vFuiiii)
+GO(glMultiTexCoord4bvOES,vFup)
+GO(glTexCoord1bOES,vFi)
+GO(glTexCoord1bvOES,vFp)
+GO(glTexCoord2bOES,vFii)
+GO(glTexCoord2bvOES,vFp)
+GO(glTexCoord3bOES,vFiii)
+GO(glTexCoord3bvOES,vFp)
+GO(glTexCoord4bOES,vFiiii)
+GO(glTexCoord4bvOES,vFp)
+GO(glVertex2bOES,vFi)
+GO(glVertex2bvOES,vFp)
+GO(glVertex3bOES,vFii)
+GO(glVertex3bvOES,vFp)
+GO(glVertex4bOES,vFiii)
+GO(glVertex4bvOES,vFp)
+//OES_fixed_point
+GO(glAccumxOES,vFui)
+GO(glAlphaFuncxOES,vFui)
+GO(glBitmapxOES,vFiiiiiip)
+GO(glBlendColorxOES,vFiiii)
+GO(glClearAccumxOES,vFiiii)
+GO(glClearColorxOES,vFiiii)
+GO(glClearDepthxOES,vFi)
+GO(glClipPlanexOES,vFup)
+GO(glColor3xOES,vFiii)
+GO(glColor3xvOES,vFp)
+GO(glColor4xOES,vFiiii)
+GO(glColor4xvOES,vFp)
+GO(glConvolutionParameterxOES,vFuui)
+GO(glConvolutionParameterxvOES,vFuup)
+GO(glDepthRangexOES,vFii)
+GO(glEvalCoord1xOES,vFi)
+GO(glEvalCoord1xvOES,vFp)
+GO(glEvalCoord2xOES,vFii)
+GO(glEvalCoord2xvOES,vFp)
+GO(glFeedbackBufferxOES,vFiup)
+GO(glFogxOES,vFui)
+GO(glFogxvOES,vFup)
+GO(glFrustumxOES,vFiiiiii)
+GO(glGetClipPlanexOES,vFup)
+GO(glGetConvolutionParameterxvOES,vFuup)
+GO(glGetFixedvOES,vFup)
+GO(glGetHistogramParameterxvOES,vFuup)
+GO(glGetLightxOES,vFuup)
+GO(glGetMapxvOES,vFuup)
+GO(glGetMaterialxOES,vFuui)
+GO(glGetPixelMapxv,vFuip)
+GO(glGetTexEnvxvOES,vFuup)
+GO(glGetTexGenxvOES,vFuup)
+GO(glGetTexLevelParameterxvOES,vFuiup)
+GO(glGetTexParameterxvOES,vFuup)
+GO(glIndexxOES,vFi)
+GO(glIndexxvOES,vFp)
+GO(glLightModelxOES,vFui)
+GO(glLightModelxvOES,vFup)
+GO(glLightxOES,vFuui)
+GO(glLightxvOES,vFuup)
+GO(glLineWidthxOES,vFi)
+GO(glLoadMatrixxOES,vFp)
+GO(glLoadTransposeMatrixxOES,vFp)
+GO(glMap1xOES,vFuiiiii)
+GO(glMap2xOES,vFuiiiiiiiii)
+GO(glMapGrid1xOES,vFiii)
+GO(glMapGrid2xOES,vFiiiii)
+GO(glMaterialxOES,vFuui)
+GO(glMaterialxvOES,vFuup)
+GO(glMultMatrixxOES,vFp)
+GO(glMultTransposeMatrixxOES,vFp)
+GO(glMultiTexCoord1xOES,vFui)
+GO(glMultiTexCoord1xvOES,vFup)
+GO(glMultiTexCoord2xOES,vFuii)
+GO(glMultiTexCoord2xvOES,vFup)
+GO(glMultiTexCoord3xOES,vFuiii)
+GO(glMultiTexCoord3xvOES,vFup)
+GO(glMultiTexCoord4xOES,vFuiiii)
+GO(glMultiTexCoord4xvOES,vFup)
+GO(glNormal3xOES,vFiii)
+GO(glNormal3xvOES,vFp)
+GO(glOrthoxOES,vFiiiiii)
+GO(glPassThroughxOES,vFi)
+GO(glPixelMapx,vFuip)
+GO(glPixelStorex,vFui)
+GO(glPixelTransferxOES,vFui)
+GO(glPixelZoomxOES,vFii)
+GO(glPointParameterxvOES,vFup)
+GO(glPointSizexOES,vFi)
+GO(glPolygonOffsetxOES,vFii)
+GO(glPrioritizeTexturesxOES,vFipp)
+GO(glRasterPos2xOES,vFii)
+GO(glRasterPos2xvOES,vFp)
+GO(glRasterPos3xOES,vFiii)
+GO(glRasterPos3xvOES,vFp)
+GO(glRasterPos4xOES,vFiiii)
+GO(glRasterPos4xvOES,vFp)
+GO(glRectxOES,vFiiii)
+GO(glRectxvOES,vFpp)
+GO(glRotatexOES,vFiiii)
+GO(glSampleCoverageOES,vFii)
+GO(glScalexOES,vFiii)
+GO(glTexCoord1xOES,vFi)
+GO(glTexCoord1xvOES,vFp)
+GO(glTexCoord2xOES,vFii)
+GO(glTexCoord2xvOES,vFp)
+GO(glTexCoord3xOES,vFiii)
+GO(glTexCoord3xvOES,vFp)
+GO(glTexCoord4xOES,vFiiii)
+GO(glTexCoord4xvOES,vFp)
+GO(glTexEnvxOES,vFuui)
+GO(glTexEnvxvOES,vFuup)
+GO(glTexGenxOES,vFuui)
+GO(glTexGenxvOES,vFuup)
+GO(glTexParameterxOES,vFuui)
+GO(glTexParameterxvOES,vFuup)
+GO(glTranslatexOES,vFiii)
+GO(glVertex2xOES,vFi)
+GO(glVertex2xvOES,vFp)
+GO(glVertex3xOES,vFii)
+GO(glVertex3xvOES,vFp)
+GO(glVertex4xOES,vFiii)
+GO(glVertex4xvOES,vFp)
+//OES_query_matrix
+GO(glQueryMatrixxOES,iFpp)
+//OES_single_precision
+GO(glClearDepthfOES,vFf)
+GO(glClipPlanefOES,vFup)
+GO(glDepthRangefOES,vFff)
+GO(glFrustumfOES,vFffffff)
+GO(glGetClipPlanefOES,vFup)
+GO(glOrthofOES,vFffffff)
+//PGI_misc_hints
+GO(glHintPGI,vFui)
+//SGIS_detail_texture
+GO(glDetailTexFuncSGIS,vFuip)
+GO(glGetDetailTexFuncSGIS,vFup)
+//SGIS_fog_function
+GO(glFogFuncSGIS,vFip)
+GO(glGetFogFuncSGIS,vFp)
+//SGIS_multisample
+GO(glSampleMaskSGIS,vFfi)
+GO(glSamplePatternSGIS,vFu)
+//SGIS_pixel_texture
+GO(glGetPixelTexGenParameterfvSGIS,vFup)
+GO(glGetPixelTexGenParameterivSGIS,vFup)
+GO(glPixelTexGenParameterfSGIS,vFuf)
+GO(glPixelTexGenParameterfvSGIS,vFup)
+GO(glPixelTexGenParameteriSGIS,vFui)
+GO(glPixelTexGenParameterivSGIS,vFup)
+//SGIS_point_parameters
+GO(glPointParameterfSGIS,vFuf)
+GO(glPointParameterfvSGIS,vFup)
+//SGIS_sharpen_texture
+GO(glGetSharpenTexFuncSGIS,vFup)
+GO(glSharpenTexFuncSGIS,vFuip)
+//SGIS_texture4D
+GO(glTexImage4DSGIS,vFuiuiiiiiuup)
+GO(glTexSubImage4DSGIS,vFuiiiiiiiiiuup)
+//SGIS_texture_color_mask
+GO(glTextureColorMaskSGIS,vFiiii)
+//SGIS_texture_filter4
+GO(glGetTexFilterFuncSGIS,vFuup)
+GO(glTexFilterFuncSGIS,vFuuip)
+//SGIX_async
+GO(glAsyncMarkerSGIX,vFu)
+GO(glDeleteAsyncMarkersSGIX,vFui)
+GO(glFinishAsyncSGIX,iFp)
+GO(glGenAsyncMarkersSGIX,uFi)
+GO(glIsAsyncMarkerSGIX,iFu)
+GO(glPollAsyncSGIX,iFp)
+//SGIX_flush_raster
+GO(glFlushRasterSGIX,vFv)
+//SGIX_fragment_lighting
+GO(glFragmentColorMaterialSGIX,vFuu)
+GO(glFragmentLightModelfSGIX,vFuf)
+GO(glFragmentLightModelfvSGIX,vFup)
+GO(glFragmentLightModeliSGIX,vFui)
+GO(glFragmentLightModelivSGIX,vFup)
+GO(glFragmentLightfSGIX,vFuuf)
+GO(glFragmentLightfvSGIX,vFuup)
+GO(glFragmentLightiSGIX,vFuui)
+GO(glFragmentLightivSGIX,vFuup)
+GO(glFragmentMaterialfSGIX,vFuuf)
+GO(glFragmentMaterialfvSGIX,vFuup)
+GO(glFragmentMaterialiSGIX,vFuui)
+GO(glFragmentMaterialivSGIX,vFuup)
+GO(glGetFragmentLightfvSGIX,vFuup)
+GO(glGetFragmentLightivSGIX,vFuup)
+GO(glGetFragmentMaterialfvSGIX,vFuup)
+GO(glGetFragmentMaterialivSGIX,vFuup)
+GO(glLightEnviSGIX,vFui)
+//SGIX_framezoom
+GO(glFrameZoomSGIX,vFi)
+//SGIX_igloo_interface
+GO(glIglooInterfaceSGIX,vFup)
+//SGIX_instruments
+GO(glGetInstrumentsSGIX,iFv)
+GO(glInstrumentsBufferSGIX,vFip)
+GO(glPollInstrumentsSGIX,iFp)
+GO(glReadInstrumentsSGIX,vFi)
+GO(glStartInstrumentsSGIX,vFv)
+GO(glStopInstrumentsSGIX,vFi)
+//SGIX_list_priority
+GO(glGetListParameterfvSGIX,vFuup)
+GO(glGetListParameterivSGIX,vFuup)
+GO(glListParameterfSGIX,vFuuf)
+GO(glListParameterfvSGIX,vFuup)
+GO(glListParameteriSGIX,vFuui)
+GO(glListParameterivSGIX,vFuup)
+//SGIX_pixel_texture
+GO(glPixelTexGenSGIX,vFu)
+//SGIX_polynomial_ffd
+GO(glDeformSGIX,vFi)
+GO(glDeformationMap3dSGIX,vFuddiiddiiddiip)
+GO(glDeformationMap3fSGIX,vFuffiiffiiffiip)
+GO(glLoadIdentityDeformationMapSGIX,vFi)
+//SGIX_reference_plane
+GO(glReferencePlaneSGIX,vFp)
+//SGIX_sprite
+GO(glSpriteParameterfSGIX,vFuf)
+GO(glSpriteParameterfvSGIX,vFup)
+GO(glSpriteParameteriSGIX,vFui)
+GO(glSpriteParameterivSGIX,vFup)
+//SGIX_tag_sample_buffer
+GO(glTagSampleBufferSGIX,vFv)
+//SGI_color_table
+GO(glColorTableParameterfvSGI,vFuup)
+GO(glColorTableParameterivSGI,vFuup)
+GO(glColorTableSGI,vFuuiuup)
+GO(glCopyColorTableSGI,vFuuiii)
+GO(glGetColorTableParameterfvSGI,vFuup)
+GO(glGetColorTableParameterivSGI,vFuup)
+GO(glGetColorTableSGI,vFuuup)
+//SUNX_constant_data
+GO(glFinishTextureSUNX,vFv)
+//SUN_global_alpha
+GO(glGlobalAlphaFactorbSUN,vFi)
+GO(glGlobalAlphaFactordSUN,vFd)
+GO(glGlobalAlphaFactorfSUN,vFf)
+GO(glGlobalAlphaFactoriSUN,vFi)
+GO(glGlobalAlphaFactorsSUN,vFi)
+GO(glGlobalAlphaFactorubSUN,vFu)
+GO(glGlobalAlphaFactoruiSUN,vFu)
+GO(glGlobalAlphaFactorusSUN,vFu)
+//SUN_mesh_array
+GO(glDrawMeshArraysSUN,vFuiii)
+//SUN_triangle_list
+GO(glReplacementCodePointerSUN,vFuip)
+GO(glReplacementCodeubSUN,vFu)
+GO(glReplacementCodeubvSUN,vFp)
+GO(glReplacementCodeuiSUN,vFu)
+GO(glReplacementCodeuivSUN,vFp)
+GO(glReplacementCodeusSUN,vFu)
+GO(glReplacementCodeusvSUN,vFp)
+//SUN_vertex
+GO(glColor3fVertex3fSUN,vFffffff)
+GO(glColor3fVertex3fvSUN,vFpp)
+GO(glColor4fNormal3fVertex3fSUN,vFffffffffff)
+GO(glColor4fNormal3fVertex3fvSUN,vFppp)
+GO(glColor4ubVertex2fSUN,vFuuuuff)
+GO(glColor4ubVertex2fvSUN,vFpp)
+GO(glColor4ubVertex3fSUN,vFuuuufff)
+GO(glColor4ubVertex3fvSUN,vFpp)
+GO(glNormal3fVertex3fSUN,vFffffff)
+GO(glNormal3fVertex3fvSUN,vFpp)
+GO(glReplacementCodeuiColor3fVertex3fSUN,vFuffffff)
+GO(glReplacementCodeuiColor3fVertex3fvSUN,vFppp)
+GO(glReplacementCodeuiColor4fNormal3fVertex3fSUN,vFuffffffffff)
+GO(glReplacementCodeuiColor4fNormal3fVertex3fvSUN,vFpppp)
+GO(glReplacementCodeuiColor4ubVertex3fSUN,vFuuuuufff)
+GO(glReplacementCodeuiColor4ubVertex3fvSUN,vFppp)
+GO(glReplacementCodeuiNormal3fVertex3fSUN,vFuffffff)
+GO(glReplacementCodeuiNormal3fVertex3fvSUN,vFppp)
+GO(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN,vFuffffffffffff)
+GO(glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN,vFppppp)
+GO(glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN,vFuffffffff)
+GO(glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN,vFpppp)
+GO(glReplacementCodeuiTexCoord2fVertex3fSUN,vFufffff)
+GO(glReplacementCodeuiTexCoord2fVertex3fvSUN,vFppp)
+GO(glReplacementCodeuiVertex3fSUN,vFufff)
+GO(glReplacementCodeuiVertex3fvSUN,vFpp)
+GO(glTexCoord2fColor3fVertex3fSUN,vFffffffff)
+GO(glTexCoord2fColor3fVertex3fvSUN,vFppp)
+GO(glTexCoord2fColor4fNormal3fVertex3fSUN,vFffffffffffff)
+GO(glTexCoord2fColor4fNormal3fVertex3fvSUN,vFpppp)
+GO(glTexCoord2fColor4ubVertex3fSUN,vFffuuuufff)
+GO(glTexCoord2fColor4ubVertex3fvSUN,vFppp)
+GO(glTexCoord2fNormal3fVertex3fSUN,vFffffffff)
+GO(glTexCoord2fNormal3fVertex3fvSUN,vFppp)
+GO(glTexCoord2fVertex3fSUN,vFfffff)
+GO(glTexCoord2fVertex3fvSUN,vFpp)
+GO(glTexCoord4fColor4fNormal3fVertex4fSUN,vFfffffffffffffff)
+GO(glTexCoord4fColor4fNormal3fVertex4fvSUN,vFpppp)
+GO(glTexCoord4fVertex4fSUN,vFffffffff)
+GO(glTexCoord4fVertex4fvSUN,vFpp)
+//VERSION_1_0
+GO(glAccum,vFuf)
+GO(glAlphaFunc,vFuf)
+GO(glBegin,vFu)
+GO(glBitmap,vFiiffffp)
+GO(glBlendFunc,vFuu)
+GO(glCallList,vFu)
+GO(glCallLists,vFiup)
+GO(glClear,vFi)
+GO(glClearAccum,vFffff)
+GO(glClearColor,vFffff)
+GO(glClearDepth,vFd)
+GO(glClearIndex,vFf)
+GO(glClearStencil,vFi)
+GO(glClipPlane,vFup)
+GO(glColor3b,vFiii)
+GO(glColor3bv,vFp)
+GO(glColor3d,vFddd)
+GO(glColor3dv,vFp)
+GO(glColor3f,vFfff)
+GO(glColor3fv,vFp)
+GO(glColor3i,vFiii)
+GO(glColor3iv,vFp)
+GO(glColor3s,vFiii)
+GO(glColor3sv,vFp)
+GO(glColor3ub,vFuuu)
+GO(glColor3ubv,vFp)
+GO(glColor3ui,vFuuu)
+GO(glColor3uiv,vFp)
+GO(glColor3us,vFuuu)
+GO(glColor3usv,vFp)
+GO(glColor4b,vFiiii)
+GO(glColor4bv,vFp)
+GO(glColor4d,vFdddd)
+GO(glColor4dv,vFp)
+GO(glColor4f,vFffff)
+GO(glColor4fv,vFp)
+GO(glColor4i,vFiiii)
+GO(glColor4iv,vFp)
+GO(glColor4s,vFiiii)
+GO(glColor4sv,vFp)
+GO(glColor4ub,vFuuuu)
+GO(glColor4ubv,vFp)
+GO(glColor4ui,vFuuuu)
+GO(glColor4uiv,vFp)
+GO(glColor4us,vFuuuu)
+GO(glColor4usv,vFp)
+GO(glColorMask,vFiiii)
+GO(glColorMaterial,vFuu)
+GO(glCopyPixels,vFiiiiu)
+GO(glCullFace,vFu)
+GO(glDeleteLists,vFui)
+GO(glDepthFunc,vFu)
+GO(glDepthMask,vFi)
+GO(glDepthRange,vFdd)
+GO(glDisable,vFu)
+GO(glDrawBuffer,vFu)
+GO(glDrawPixels,vFiiuup)
+GO(glEdgeFlag,vFi)
+GO(glEdgeFlagv,vFp)
+GO(glEnable,vFu)
+GO(glEnd,vFv)
+GO(glEndList,vFv)
+GO(glEvalCoord1d,vFd)
+GO(glEvalCoord1dv,vFp)
+GO(glEvalCoord1f,vFf)
+GO(glEvalCoord1fv,vFp)
+GO(glEvalCoord2d,vFdd)
+GO(glEvalCoord2dv,vFp)
+GO(glEvalCoord2f,vFff)
+GO(glEvalCoord2fv,vFp)
+GO(glEvalMesh1,vFuii)
+GO(glEvalMesh2,vFuiiii)
+GO(glEvalPoint1,vFi)
+GO(glEvalPoint2,vFii)
+GO(glFeedbackBuffer,vFiup)
+GO(glFinish,vFv)
+GO(glFlush,vFv)
+GO(glFogf,vFuf)
+GO(glFogfv,vFup)
+GO(glFogi,vFui)
+GO(glFogiv,vFup)
+GO(glFrontFace,vFu)
+GO(glFrustum,vFdddddd)
+GO(glGenLists,uFi)
+GO(glGetBooleanv,vFup)
+GO(glGetClipPlane,vFup)
+GO(glGetDoublev,vFup)
+GO(glGetError,uFv)
+GO(glGetFloatv,vFup)
+GO(glGetIntegerv,vFup)
+GO(glGetLightfv,vFuup)
+GO(glGetLightiv,vFuup)
+GO(glGetMapdv,vFuup)
+GO(glGetMapfv,vFuup)
+GO(glGetMapiv,vFuup)
+GO(glGetMaterialfv,vFuup)
+GO(glGetMaterialiv,vFuup)
+GO(glGetPixelMapfv,vFup)
+GO(glGetPixelMapuiv,vFup)
+GO(glGetPixelMapusv,vFup)
+GO(glGetPolygonStipple,vFp)
+GO(glGetString,pFu)
+GO(glGetTexEnvfv,vFuup)
+GO(glGetTexEnviv,vFuup)
+GO(glGetTexGendv,vFuup)
+GO(glGetTexGenfv,vFuup)
+GO(glGetTexGeniv,vFuup)
+GO(glGetTexImage,vFuiuup)
+GO(glGetTexLevelParameterfv,vFuiup)
+GO(glGetTexLevelParameteriv,vFuiup)
+GO(glGetTexParameterfv,vFuup)
+GO(glGetTexParameteriv,vFuup)
+GO(glHint,vFuu)
+GO(glIndexMask,vFu)
+GO(glIndexd,vFd)
+GO(glIndexdv,vFp)
+GO(glIndexf,vFf)
+GO(glIndexfv,vFp)
+GO(glIndexi,vFi)
+GO(glIndexiv,vFp)
+GO(glIndexs,vFi)
+GO(glIndexsv,vFp)
+GO(glInitNames,vFv)
+GO(glIsEnabled,iFu)
+GO(glIsList,iFu)
+GO(glLightModelf,vFuf)
+GO(glLightModelfv,vFup)
+GO(glLightModeli,vFui)
+GO(glLightModeliv,vFup)
+GO(glLightf,vFuuf)
+GO(glLightfv,vFuup)
+GO(glLighti,vFuui)
+GO(glLightiv,vFuup)
+GO(glLineStipple,vFiu)
+GO(glLineWidth,vFf)
+GO(glListBase,vFu)
+GO(glLoadIdentity,vFv)
+GO(glLoadMatrixd,vFp)
+GO(glLoadMatrixf,vFp)
+GO(glLoadName,vFu)
+GO(glLogicOp,vFu)
+GO(glMap1d,vFuddiip)
+GO(glMap1f,vFuffiip)
+GO(glMap2d,vFuddiiddiip)
+GO(glMap2f,vFuffiiffiip)
+GO(glMapGrid1d,vFidd)
+GO(glMapGrid1f,vFiff)
+GO(glMapGrid2d,vFiddidd)
+GO(glMapGrid2f,vFiffiff)
+GO(glMaterialf,vFuuf)
+GO(glMaterialfv,vFuup)
+GO(glMateriali,vFuui)
+GO(glMaterialiv,vFuup)
+GO(glMatrixMode,vFu)
+GO(glMultMatrixd,vFp)
+GO(glMultMatrixf,vFp)
+GO(glNewList,vFuu)
+GO(glNormal3b,vFiii)
+GO(glNormal3bv,vFp)
+GO(glNormal3d,vFddd)
+GO(glNormal3dv,vFp)
+GO(glNormal3f,vFfff)
+GO(glNormal3fv,vFp)
+GO(glNormal3i,vFiii)
+GO(glNormal3iv,vFp)
+GO(glNormal3s,vFiii)
+GO(glNormal3sv,vFp)
+GO(glOrtho,vFdddddd)
+GO(glPassThrough,vFf)
+GO(glPixelMapfv,vFuip)
+GO(glPixelMapuiv,vFuip)
+GO(glPixelMapusv,vFuip)
+GO(glPixelStoref,vFuf)
+GO(glPixelStorei,vFui)
+GO(glPixelTransferf,vFuf)
+GO(glPixelTransferi,vFui)
+GO(glPixelZoom,vFff)
+GO(glPointSize,vFf)
+GO(glPolygonMode,vFuu)
+GO(glPolygonStipple,vFp)
+GO(glPopAttrib,vFv)
+GO(glPopMatrix,vFv)
+GO(glPopName,vFv)
+GO(glPushAttrib,vFi)
+GO(glPushMatrix,vFv)
+GO(glPushName,vFu)
+GO(glRasterPos2d,vFdd)
+GO(glRasterPos2dv,vFp)
+GO(glRasterPos2f,vFff)
+GO(glRasterPos2fv,vFp)
+GO(glRasterPos2i,vFii)
+GO(glRasterPos2iv,vFp)
+GO(glRasterPos2s,vFii)
+GO(glRasterPos2sv,vFp)
+GO(glRasterPos3d,vFddd)
+GO(glRasterPos3dv,vFp)
+GO(glRasterPos3f,vFfff)
+GO(glRasterPos3fv,vFp)
+GO(glRasterPos3i,vFiii)
+GO(glRasterPos3iv,vFp)
+GO(glRasterPos3s,vFiii)
+GO(glRasterPos3sv,vFp)
+GO(glRasterPos4d,vFdddd)
+GO(glRasterPos4dv,vFp)
+GO(glRasterPos4f,vFffff)
+GO(glRasterPos4fv,vFp)
+GO(glRasterPos4i,vFiiii)
+GO(glRasterPos4iv,vFp)
+GO(glRasterPos4s,vFiiii)
+GO(glRasterPos4sv,vFp)
+GO(glReadBuffer,vFu)
+GO(glReadPixels,vFiiiiuup)
+GO(glRectd,vFdddd)
+GO(glRectdv,vFpp)
+GO(glRectf,vFffff)
+GO(glRectfv,vFpp)
+GO(glRecti,vFiiii)
+GO(glRectiv,vFpp)
+GO(glRects,vFiiii)
+GO(glRectsv,vFpp)
+GO(glRenderMode,iFu)
+GO(glRotated,vFdddd)
+GO(glRotatef,vFffff)
+GO(glScaled,vFddd)
+GO(glScalef,vFfff)
+GO(glScissor,vFiiii)
+GO(glSelectBuffer,vFip)
+GO(glShadeModel,vFu)
+GO(glStencilFunc,vFuiu)
+GO(glStencilMask,vFu)
+GO(glStencilOp,vFuuu)
+GO(glTexCoord1d,vFd)
+GO(glTexCoord1dv,vFp)
+GO(glTexCoord1f,vFf)
+GO(glTexCoord1fv,vFp)
+GO(glTexCoord1i,vFi)
+GO(glTexCoord1iv,vFp)
+GO(glTexCoord1s,vFi)
+GO(glTexCoord1sv,vFp)
+GO(glTexCoord2d,vFdd)
+GO(glTexCoord2dv,vFp)
+GO(glTexCoord2f,vFff)
+GO(glTexCoord2fv,vFp)
+GO(glTexCoord2i,vFii)
+GO(glTexCoord2iv,vFp)
+GO(glTexCoord2s,vFii)
+GO(glTexCoord2sv,vFp)
+GO(glTexCoord3d,vFddd)
+GO(glTexCoord3dv,vFp)
+GO(glTexCoord3f,vFfff)
+GO(glTexCoord3fv,vFp)
+GO(glTexCoord3i,vFiii)
+GO(glTexCoord3iv,vFp)
+GO(glTexCoord3s,vFiii)
+GO(glTexCoord3sv,vFp)
+GO(glTexCoord4d,vFdddd)
+GO(glTexCoord4dv,vFp)
+GO(glTexCoord4f,vFffff)
+GO(glTexCoord4fv,vFp)
+GO(glTexCoord4i,vFiiii)
+GO(glTexCoord4iv,vFp)
+GO(glTexCoord4s,vFiiii)
+GO(glTexCoord4sv,vFp)
+GO(glTexEnvf,vFuuf)
+GO(glTexEnvfv,vFuup)
+GO(glTexEnvi,vFuui)
+GO(glTexEnviv,vFuup)
+GO(glTexGend,vFuud)
+GO(glTexGendv,vFuup)
+GO(glTexGenf,vFuuf)
+GO(glTexGenfv,vFuup)
+GO(glTexGeni,vFuui)
+GO(glTexGeniv,vFuup)
+GO(glTexImage1D,vFuiiiiuup)
+GO(glTexImage2D,vFuiiiiiuup)
+GO(glTexParameterf,vFuuf)
+GO(glTexParameterfv,vFuup)
+GO(glTexParameteri,vFuui)
+GO(glTexParameteriv,vFuup)
+GO(glTranslated,vFddd)
+GO(glTranslatef,vFfff)
+GO(glVertex2d,vFdd)
+GO(glVertex2dv,vFp)
+GO(glVertex2f,vFff)
+GO(glVertex2fv,vFp)
+GO(glVertex2i,vFii)
+GO(glVertex2iv,vFp)
+GO(glVertex2s,vFii)
+GO(glVertex2sv,vFp)
+GO(glVertex3d,vFddd)
+GO(glVertex3dv,vFp)
+GO(glVertex3f,vFfff)
+GO(glVertex3fv,vFp)
+GO(glVertex3i,vFiii)
+GO(glVertex3iv,vFp)
+GO(glVertex3s,vFiii)
+GO(glVertex3sv,vFp)
+GO(glVertex4d,vFdddd)
+GO(glVertex4dv,vFp)
+GO(glVertex4f,vFffff)
+GO(glVertex4fv,vFp)
+GO(glVertex4i,vFiiii)
+GO(glVertex4iv,vFp)
+GO(glVertex4s,vFiiii)
+GO(glVertex4sv,vFp)
+GO(glViewport,vFiiii)
+//VERSION_1_1
+GO(glAreTexturesResident,iFipp)
+GO(glArrayElement,vFi)
+GO(glBindTexture,vFuu)
+GO(glColorPointer,vFiuip)
+GO(glCopyTexImage1D,vFuiuiiii)
+GO(glCopyTexImage2D,vFuiuiiiii)
+GO(glCopyTexSubImage1D,vFuiiiii)
+GO(glCopyTexSubImage2D,vFuiiiiiii)
+GO(glDeleteTextures,vFip)
+GO(glDisableClientState,vFu)
+GO(glDrawArrays,vFuii)
+GO(glDrawElements,vFuiup)
+GO(glEdgeFlagPointer,vFip)
+GO(glEnableClientState,vFu)
+GO(glGenTextures,vFip)
+GO(glGetPointerv,vFup)
+GO(glIndexPointer,vFuip)
+GO(glIndexub,vFu)
+GO(glIndexubv,vFp)
+GO(glInterleavedArrays,vFuip)
+GO(glIsTexture,iFu)
+GO(glNormalPointer,vFuip)
+GO(glPolygonOffset,vFff)
+GO(glPopClientAttrib,vFv)
+GO(glPrioritizeTextures,vFipp)
+GO(glPushClientAttrib,vFi)
+GO(glTexCoordPointer,vFiuip)
+GO(glTexSubImage1D,vFuiiiuup)
+GO(glTexSubImage2D,vFuiiiiiuup)
+GO(glVertexPointer,vFiuip)
+//VERSION_1_2
+GO(glBlendColor,vFffff)
+GO(glBlendEquation,vFu)
+GO(glColorSubTable,vFuiiuup)
+GO(glColorTable,vFuuiuup)
+GO(glColorTableParameterfv,vFuup)
+GO(glColorTableParameteriv,vFuup)
+GO(glConvolutionFilter1D,vFuuiuup)
+GO(glConvolutionFilter2D,vFuuiiuup)
+GO(glConvolutionParameterf,vFuuf)
+GO(glConvolutionParameterfv,vFuup)
+GO(glConvolutionParameteri,vFuui)
+GO(glConvolutionParameteriv,vFuup)
+GO(glCopyColorSubTable,vFuiiii)
+GO(glCopyColorTable,vFuuiii)
+GO(glCopyConvolutionFilter1D,vFuuiii)
+GO(glCopyConvolutionFilter2D,vFuuiiii)
+GO(glCopyTexSubImage3D,vFuiiiiiiii)
+GO(glDrawRangeElements,vFuuuiup)
+GO(glGetColorTable,vFuuup)
+GO(glGetColorTableParameterfv,vFuup)
+GO(glGetColorTableParameteriv,vFuup)
+GO(glGetConvolutionFilter,vFuuup)
+GO(glGetConvolutionParameterfv,vFuup)
+GO(glGetConvolutionParameteriv,vFuup)
+GO(glGetHistogram,vFuiuup)
+GO(glGetHistogramParameterfv,vFuup)
+GO(glGetHistogramParameteriv,vFuup)
+GO(glGetMinmax,vFuiuup)
+GO(glGetMinmaxParameterfv,vFuup)
+GO(glGetMinmaxParameteriv,vFuup)
+GO(glGetSeparableFilter,vFuuuppp)
+GO(glHistogram,vFuiui)
+GO(glMinmax,vFuui)
+GO(glResetHistogram,vFu)
+GO(glResetMinmax,vFu)
+GO(glSeparableFilter2D,vFuuiiuupp)
+GO(glTexImage3D,vFuiiiiiiuup)
+GO(glTexSubImage3D,vFuiiiiiiiuup)
+//VERSION_1_3
+GO(glActiveTexture,vFu)
+GO(glClientActiveTexture,vFu)
+GO(glCompressedTexImage1D,vFuiuiiip)
+GO(glCompressedTexImage2D,vFuiuiiiip)
+GO(glCompressedTexImage3D,vFuiuiiiiip)
+GO(glCompressedTexSubImage1D,vFuiiiuip)
+GO(glCompressedTexSubImage2D,vFuiiiiiuip)
+GO(glCompressedTexSubImage3D,vFuiiiiiiiuip)
+GO(glGetCompressedTexImage,vFuip)
+GO(glLoadTransposeMatrixd,vFp)
+GO(glLoadTransposeMatrixf,vFp)
+GO(glMultTransposeMatrixd,vFp)
+GO(glMultTransposeMatrixf,vFp)
+GO(glMultiTexCoord1d,vFud)
+GO(glMultiTexCoord1dv,vFup)
+GO(glMultiTexCoord1f,vFuf)
+GO(glMultiTexCoord1fv,vFup)
+GO(glMultiTexCoord1i,vFui)
+GO(glMultiTexCoord1iv,vFup)
+GO(glMultiTexCoord1s,vFui)
+GO(glMultiTexCoord1sv,vFup)
+GO(glMultiTexCoord2d,vFudd)
+GO(glMultiTexCoord2dv,vFup)
+GO(glMultiTexCoord2f,vFuff)
+GO(glMultiTexCoord2fv,vFup)
+GO(glMultiTexCoord2i,vFuii)
+GO(glMultiTexCoord2iv,vFup)
+GO(glMultiTexCoord2s,vFuii)
+GO(glMultiTexCoord2sv,vFup)
+GO(glMultiTexCoord3d,vFuddd)
+GO(glMultiTexCoord3dv,vFup)
+GO(glMultiTexCoord3f,vFufff)
+GO(glMultiTexCoord3fv,vFup)
+GO(glMultiTexCoord3i,vFuiii)
+GO(glMultiTexCoord3iv,vFup)
+GO(glMultiTexCoord3s,vFuiii)
+GO(glMultiTexCoord3sv,vFup)
+GO(glMultiTexCoord4d,vFudddd)
+GO(glMultiTexCoord4dv,vFup)
+GO(glMultiTexCoord4f,vFuffff)
+GO(glMultiTexCoord4fv,vFup)
+GO(glMultiTexCoord4i,vFuiiii)
+GO(glMultiTexCoord4iv,vFup)
+GO(glMultiTexCoord4s,vFuiiii)
+GO(glMultiTexCoord4sv,vFup)
+GO(glSampleCoverage,vFfi)
+//VERSION_1_4
+GO(glBlendFuncSeparate,vFuuuu)
+GO(glFogCoordPointer,vFuip)
+GO(glFogCoordd,vFd)
+GO(glFogCoorddv,vFp)
+GO(glFogCoordf,vFf)
+GO(glFogCoordfv,vFp)
+GO(glMultiDrawArrays,vFuppi)
+GO(glMultiDrawElements,vFupupi)
+GO(glPointParameterf,vFuf)
+GO(glPointParameterfv,vFup)
+GO(glPointParameteri,vFui)
+GO(glPointParameteriv,vFup)
+GO(glSecondaryColor3b,vFiii)
+GO(glSecondaryColor3bv,vFp)
+GO(glSecondaryColor3d,vFddd)
+GO(glSecondaryColor3dv,vFp)
+GO(glSecondaryColor3f,vFfff)
+GO(glSecondaryColor3fv,vFp)
+GO(glSecondaryColor3i,vFiii)
+GO(glSecondaryColor3iv,vFp)
+GO(glSecondaryColor3s,vFiii)
+GO(glSecondaryColor3sv,vFp)
+GO(glSecondaryColor3ub,vFuuu)
+GO(glSecondaryColor3ubv,vFp)
+GO(glSecondaryColor3ui,vFuuu)
+GO(glSecondaryColor3uiv,vFp)
+GO(glSecondaryColor3us,vFuuu)
+GO(glSecondaryColor3usv,vFp)
+GO(glSecondaryColorPointer,vFiuip)
+GO(glWindowPos2d,vFdd)
+GO(glWindowPos2dv,vFp)
+GO(glWindowPos2f,vFff)
+GO(glWindowPos2fv,vFp)
+GO(glWindowPos2i,vFii)
+GO(glWindowPos2iv,vFp)
+GO(glWindowPos2s,vFii)
+GO(glWindowPos2sv,vFp)
+GO(glWindowPos3d,vFddd)
+GO(glWindowPos3dv,vFp)
+GO(glWindowPos3f,vFfff)
+GO(glWindowPos3fv,vFp)
+GO(glWindowPos3i,vFiii)
+GO(glWindowPos3iv,vFp)
+GO(glWindowPos3s,vFiii)
+GO(glWindowPos3sv,vFp)
+//VERSION_1_5
+GO(glBeginQuery,vFuu)
+GO(glBindBuffer,vFuu)
+GO(glBufferData,vFuipu)
+GO(glBufferSubData,vFuiip)
+GO(glDeleteBuffers,vFip)
+GO(glDeleteQueries,vFip)
+GO(glEndQuery,vFu)
+GO(glGenBuffers,vFip)
+GO(glGenQueries,vFip)
+GO(glGetBufferParameteriv,vFuup)
+GO(glGetBufferPointerv,vFuup)
+GO(glGetBufferSubData,vFuiip)
+GO(glGetQueryObjectiv,vFuup)
+GO(glGetQueryObjectuiv,vFuup)
+GO(glGetQueryiv,vFuup)
+GO(glIsBuffer,iFu)
+GO(glIsQuery,iFu)
+GO(glMapBuffer,pFuu)
+GO(glUnmapBuffer,iFu)
+//VERSION_2_0
+GO(glAttachShader,vFuu)
+GO(glBindAttribLocation,vFuup)
+GO(glBlendEquationSeparate,vFuu)
+GO(glCompileShader,vFu)
+GO(glCreateProgram,uFv)
+GO(glCreateShader,uFu)
+GO(glDeleteProgram,vFu)
+GO(glDeleteShader,vFu)
+GO(glDetachShader,vFuu)
+GO(glDisableVertexAttribArray,vFu)
+GO(glDrawBuffers,vFip)
+GO(glEnableVertexAttribArray,vFu)
+GO(glGetActiveAttrib,vFuuipppp)
+GO(glGetActiveUniform,vFuuipppp)
+GO(glGetAttachedShaders,vFuipp)
+GO(glGetAttribLocation,iFup)
+GO(glGetProgramInfoLog,vFuipp)
+GO(glGetProgramiv,vFuup)
+GO(glGetShaderInfoLog,vFuipp)
+GO(glGetShaderSource,vFuipp)
+GO(glGetShaderiv,vFuup)
+GO(glGetUniformLocation,iFup)
+GO(glGetUniformfv,vFuip)
+GO(glGetUniformiv,vFuip)
+GO(glGetVertexAttribPointerv,vFuup)
+GO(glGetVertexAttribdv,vFuup)
+GO(glGetVertexAttribfv,vFuup)
+GO(glGetVertexAttribiv,vFuup)
+GO(glIsProgram,iFu)
+GO(glIsShader,iFu)
+GO(glLinkProgram,vFu)
+GO(glShaderSource,vFuipp)
+GO(glStencilFuncSeparate,vFuuiu)
+GO(glStencilMaskSeparate,vFuu)
+GO(glStencilOpSeparate,vFuuuu)
+GO(glUniform1f,vFif)
+GO(glUniform1fv,vFiip)
+GO(glUniform1i,vFii)
+GO(glUniform1iv,vFiip)
+GO(glUniform2f,vFiff)
+GO(glUniform2fv,vFiip)
+GO(glUniform2i,vFiii)
+GO(glUniform2iv,vFiip)
+GO(glUniform3f,vFifff)
+GO(glUniform3fv,vFiip)
+GO(glUniform3i,vFiiii)
+GO(glUniform3iv,vFiip)
+GO(glUniform4f,vFiffff)
+GO(glUniform4fv,vFiip)
+GO(glUniform4i,vFiiiii)
+GO(glUniform4iv,vFiip)
+GO(glUniformMatrix2fv,vFiiip)
+GO(glUniformMatrix3fv,vFiiip)
+GO(glUniformMatrix4fv,vFiiip)
+GO(glUseProgram,vFu)
+GO(glValidateProgram,vFu)
+GO(glVertexAttrib1d,vFud)
+GO(glVertexAttrib1dv,vFup)
+GO(glVertexAttrib1f,vFuf)
+GO(glVertexAttrib1fv,vFup)
+GO(glVertexAttrib1s,vFui)
+GO(glVertexAttrib1sv,vFup)
+GO(glVertexAttrib2d,vFudd)
+GO(glVertexAttrib2dv,vFup)
+GO(glVertexAttrib2f,vFuff)
+GO(glVertexAttrib2fv,vFup)
+GO(glVertexAttrib2s,vFuii)
+GO(glVertexAttrib2sv,vFup)
+GO(glVertexAttrib3d,vFuddd)
+GO(glVertexAttrib3dv,vFup)
+GO(glVertexAttrib3f,vFufff)
+GO(glVertexAttrib3fv,vFup)
+GO(glVertexAttrib3s,vFuiii)
+GO(glVertexAttrib3sv,vFup)
+GO(glVertexAttrib4Nbv,vFup)
+GO(glVertexAttrib4Niv,vFup)
+GO(glVertexAttrib4Nsv,vFup)
+GO(glVertexAttrib4Nub,vFuuuuu)
+GO(glVertexAttrib4Nubv,vFup)
+GO(glVertexAttrib4Nuiv,vFup)
+GO(glVertexAttrib4Nusv,vFup)
+GO(glVertexAttrib4bv,vFup)
+GO(glVertexAttrib4d,vFudddd)
+GO(glVertexAttrib4dv,vFup)
+GO(glVertexAttrib4f,vFuffff)
+GO(glVertexAttrib4fv,vFup)
+GO(glVertexAttrib4iv,vFup)
+GO(glVertexAttrib4s,vFuiiii)
+GO(glVertexAttrib4sv,vFup)
+GO(glVertexAttrib4ubv,vFup)
+GO(glVertexAttrib4uiv,vFup)
+GO(glVertexAttrib4usv,vFup)
+GO(glVertexAttribPointer,vFuiuiip)
+//VERSION_2_1
+GO(glUniformMatrix2x3fv,vFiiip)
+GO(glUniformMatrix2x4fv,vFiiip)
+GO(glUniformMatrix3x2fv,vFiiip)
+GO(glUniformMatrix3x4fv,vFiiip)
+GO(glUniformMatrix4x2fv,vFiiip)
+GO(glUniformMatrix4x3fv,vFiiip)
+//VERSION_3_0
+GO(glBeginConditionalRender,vFuu)
+GO(glBeginTransformFeedback,vFu)
+GO(glBindBufferBase,vFuuu)
+GO(glBindBufferRange,vFuuuii)
+GO(glBindFragDataLocation,vFuup)
+GO(glClampColor,vFuu)
+GO(glClearBufferfi,vFuifi)
+GO(glClearBufferfv,vFuip)
+GO(glClearBufferiv,vFuip)
+GO(glClearBufferuiv,vFuip)
+GO(glColorMaski,vFuiiii)
+GO(glDisablei,vFuu)
+GO(glEnablei,vFuu)
+GO(glEndConditionalRender,vFv)
+GO(glEndTransformFeedback,vFv)
+GO(glGetBooleani_v,vFuup)
+GO(glGetFragDataLocation,iFup)
+GO(glGetIntegeri_v,vFuup)
+GO(glGetStringi,pFuu)
+GO(glGetTexParameterIiv,vFuup)
+GO(glGetTexParameterIuiv,vFuup)
+GO(glGetTransformFeedbackVarying,vFuuipppp)
+GO(glGetUniformuiv,vFuip)
+GO(glGetVertexAttribIiv,vFuup)
+GO(glGetVertexAttribIuiv,vFuup)
+GO(glIsEnabledi,iFuu)
+GO(glTexParameterIiv,vFuup)
+GO(glTexParameterIuiv,vFuup)
+GO(glTransformFeedbackVaryings,vFuipu)
+GO(glUniform1ui,vFiu)
+GO(glUniform1uiv,vFiip)
+GO(glUniform2ui,vFiuu)
+GO(glUniform2uiv,vFiip)
+GO(glUniform3ui,vFiuuu)
+GO(glUniform3uiv,vFiip)
+GO(glUniform4ui,vFiuuuu)
+GO(glUniform4uiv,vFiip)
+GO(glVertexAttribI1i,vFui)
+GO(glVertexAttribI1iv,vFup)
+GO(glVertexAttribI1ui,vFuu)
+GO(glVertexAttribI1uiv,vFup)
+GO(glVertexAttribI2i,vFuii)
+GO(glVertexAttribI2iv,vFup)
+GO(glVertexAttribI2ui,vFuuu)
+GO(glVertexAttribI2uiv,vFup)
+GO(glVertexAttribI3i,vFuiii)
+GO(glVertexAttribI3iv,vFup)
+GO(glVertexAttribI3ui,vFuuuu)
+GO(glVertexAttribI3uiv,vFup)
+GO(glVertexAttribI4bv,vFup)
+GO(glVertexAttribI4i,vFuiiii)
+GO(glVertexAttribI4iv,vFup)
+GO(glVertexAttribI4sv,vFup)
+GO(glVertexAttribI4ubv,vFup)
+GO(glVertexAttribI4ui,vFuuuuu)
+GO(glVertexAttribI4uiv,vFup)
+GO(glVertexAttribI4usv,vFup)
+GO(glVertexAttribIPointer,vFuiuip)
+//VERSION_3_1
+GO(glDrawArraysInstanced,vFuiii)
+GO(glDrawElementsInstanced,vFuiupi)
+GO(glPrimitiveRestartIndex,vFu)
+GO(glTexBuffer,vFuuu)
+//VERSION_3_2
+GO(glFramebufferTexture,vFuuui)
+GO(glGetBufferParameteri64v,vFuup)
+GO(glGetInteger64i_v,vFuup)
+//VERSION_3_3
+GO(glVertexAttribDivisor,vFuu)
+//VERSION_4_0
+GO(glBlendEquationSeparatei,vFuuu)
+GO(glBlendEquationi,vFuu)
+GO(glBlendFuncSeparatei,vFuuuuu)
+GO(glBlendFunci,vFuuu)
+GO(glMinSampleShading,vFf)
+//VERSION_4_3
+GO(glInvalidateNamedFramebuffer, vFiup)
+//VERSION_4_4
+GO(glBindBuffersBase, vFiuip)
+GO(glBindBuffersRange, vFiuippp)
+GO(glBindImageTextures, vFuip)
+GO(glBindSamplers, vFuip)
+GO(glBindTextures, vFuip)
+GO(glBindVertexBuffers, vFuippp)
+GO(glBufferStorage, vFiupu)
+GO(glClearTexImage, vFuiiip)
+GO(glClearTexSubImage, vFuiiiiiiiiip)
+//VERSION_4_5
+GO(glBindTextureUnit, vFuu)
+GO(glCreateFramebuffers, vFip)
+GO(glCreateProgramPipelines, vFip)
+GO(glCreateRenderbuffers, vFip)
+GO(glCreateTextures, vFuip)
+GO(glClipControl, vFii)
+GO(glInvalidateNamedFramebufferData, vFuip)
+GO(glNamedBufferStorage, vFuiupu)
+GO(glTextureBarrier, vFv)
+GO(glVertexArrayVertexBuffers, vFuuippp)
+
+//GL_EXT_memory_object
+GO(glGetUnsignedBytei_vEXT, vFiup)
+GO(glGetUnsignedBytevEXT, vFip)
+
+//GL_ARB_polygon_offset_clamp
+GO(glPolygonOffsetClamp, vFfff)
+
+//GL_EXT_polygon_offset_clamp
+GO(glPolygonOffsetClampEXT, vFfff)
+
+//GL_EXT_multisampled_render_to_texture
+GO(glRenderbufferStorageMultisampleEXT, vFilill)
+GO(glFramebufferTexture2DMultisampleEXT, vFiiiuil)
+
+//GL_KTX_buffer_region
+GO(glBufferRegionEnabled,uFv)
+GO(glNewBufferRegion,uFi)
+GO(glDeleteBufferRegion,vFi)
+GO(glReadBufferRegion,vFuiiii)
+GO(glDrawBufferRegion,vFuiiiiii)
+
+//glx
+GO(glXBindHyperpipeSGIX,iFpi)
+GO(glXBindTexImageEXT, vFppip)
+GO(glXBindSwapBarrierNV, iFpuu)
+GO(glXBindSwapBarrierSGIX,vFii)
+GO(glXBindVideoCaptureDeviceNV, iFpup)
+GO(glXBindVideoDeviceNV, iFpuup)
+GO(glXBindVideoImageNV, iFpppi)
+GO(glXChangeDrawableAttributes,vFp)
+GO(glXChangeDrawableAttributesSGIX,vFp)
+GO(glXClientInfo,vFv)
+GO(glXCopyContext,vFppp)
+GO(glXChooseFBConfig, pFpipp)
+GO(glXChooseFBConfigSGIX, pFpipp)
+GO(glXCreateContext,pFpppi)
+GO(glXCreateContextAttribsARB, pFpppip)
+GO(glXCreateContextWithConfigSGIX,pFppipi)
+GO(glXCreateGLXPbufferSGIX,pFppuup)
+GO(glXCreateGLXPixmap,pFppp)
+GO(glXCreateGLXPixmapWithConfigSGIX,pFppp)
+GO(glXCreateGLXVideoSourceSGIX,pFpippip)
+GO(glXCreateNewContext,pFppipi)
+GO(glXCreatePbuffer,pFppp)
+GO(glXCreatePixmap,pFppp)
+GO(glXCreateWindow,pFpppp)
+GO(glXChooseVisual, pFpip)
+GO(glXCopyImageSubDataNV, vFppuiiiiipuiiiiiiii)
+GO(glXCopySubBufferMESA, vFppiiii)
+GO(glXDestroyContext,vFpp)
+GO(glXDestroyGLXPbufferSGIX,vFpp)
+GO(glXDestroyGLXPixmap,vFpp)
+GO(glXDestroyGLXVideoSourceSGIX,vFpp)
+GO(glXDestroyHyperpipeConfigSGIX,iFpi)
+GO(glXDestroyPbuffer,vFpp)
+GO(glXDestroyPixmap,vFpp)
+GO(glXDestroyWindow,vFpp)
+GO(glXEnumerateVideoCaptureDevicesNV, pFpip)
+GO(glXEnumerateVideoDevicesNV, pFpip)
+GO(glXFreeContextEXT, vFpp)
+GO(glXGetClientString, pFpi)
+GO(glXGetConfig, iFppip)
+GO(glXGetContextIDEXT, uFp)
+GO(glXGetCurrentContext, pFv)
+GO(glXGetCurrentDisplay, pFv)
+GO(glXGetCurrentDrawable, pFv)
+GO(glXGetCurrentReadDrawable, pFv)
+GO(glXGetDrawableAttributes,vFi)
+GO(glXGetDrawableAttributesSGIX,vFi)
+GO(glXGetFBConfigs,pFpip)
+GO(glXGetFBConfigAttrib, iFppip)
+GO(glXGetFBConfigAttribSGIX, iFppip)
+GO(glXGetFBConfigFromVisualSGIX, pFpp)
+GO(glXGetFBConfigsSGIX,pFpip)
+GO(glXGetSelectedEvent, vFppp)
+GO(glXGetSelectedEventSGIX, vFppp)
+GO(glXGetVideoDeviceNV, iFpiip)
+GO(glXGetVideoInfoNV, iFpippp)
+GO(glXGetVideoSyncSGI, iFp)
+GO(glXGetVisualConfigs,pFpp)
+GO(glXGetVisualFromFBConfig, pFpp)
+GO(glXGetVisualFromFBConfigSGIX, pFpp)
+GO(glXHyperpipeAttribSGIX,iFpiiip)
+//GO(glXHyperpipeConfigSGIX,iFpii?p)
+GO(glXImportContextEXT, pFpu)
+GO(glXIsDirect,iFpp)
+GO(glXJoinSwapGroupNV, iFppu)
+GO(glXJoinSwapGroupSGIX,vFpp)
+GO(glXLockVideoCaptureDeviceNV, vFpp)
+GO(glXMakeContextCurrent,iFpppp)
+GO(glXMakeCurrent,iFppp)
+GO(glXMakeCurrentReadSGI,iFppp)
+GO(glXQueryContext,iFppip)
+GO(glXQueryContextInfoEXT,iFppip)
+GO(glXQueryDrawable, iFppip)
+GO(glXQueryExtension, iFppp)
+GO(glXQueryExtensionsString,pFpi)
+GO(glXQueryFrameCountNV, iFpip)
+GO(glXQueryGLXPbufferSGIX, vFppip)
+GO(glXQueryHyperpipeAttribSGIX,iFpiiip)
+GO(glXQueryHyperpipeBestAttribSGIX,iFpiiipp)
+GO(glXQueryHyperpipeConfigSGIX,pFpip)
+GO(glXQueryHyperpipeNetworkSGIX,pFpp)
+GO(glXQueryMaxSwapBarriersSGIX,pFpp) //?
+GO(glXQueryMaxSwapGroupsNV, iFpipp)
+GO(glXQueryServerString,pFpii)
+GO(glXQuerySwapGroupNV, iFpipp)
+GO(glXQueryVersion,iFppp)
+GO(glXQueryVideoCaptureDeviceNV, iFppip)
+GO(glXReleaseTexImageEXT, vFppi)
+GO(glXReleaseVideoCaptureDeviceNV, vFpp)
+GO(glXReleaseVideoDeviceNV, iFpip)
+GO(glXReleaseVideoImageNV, iFpp)
+//GO(glXRender,vFv)
+//GO(glXRenderLarge,vFv)
+GO(glXResetFrameCountNV, iFpi)
+GO(glXSelectEvent, vFppu)
+GO(glXSelectEventSGIX, vFppu)
+GO(glXSendPbufferToVideoNV, iFppipi)
+GO(glXSwapBuffers,vFpp)
+GO(glXUseXFont,vFpiii)
+//GO(glXVendorPrivate,vFv)
+//GO(glXVendorPrivateWithReply,vFv)
+GO(glXWaitGL,vFv)
+GO(glXWaitVideoSyncSGI, iFiip)
+GO(glXWaitX,vFv)
+
+GOM(glXGetProcAddress, pFEp)
+GOM(glXGetProcAddressARB, pFEp)
+
+//GLX_MESA_query_renderer
+GO(glXQueryRendererIntegerMESA, iFpiiip)
+GO(glXQueryCurrentRendererIntegerMESA, iFip)
+GO(glXQueryRendererStringMESA, pFpiii)
+GO(glXQueryCurrentRendererStringMESA, pFi)
+
+//GLX_OML_sync_control
+GO(glXGetSyncValuesOML, iFppppp)
+GO(glXGetMscRateOML, iFpppp)
+GO(glXSwapBuffersMscOML, IFppIII)
+GO(glXWaitForMscOML, iFppIIIppp)
+GO(glXWaitForSbcOML, iFppIppp)
+
+//GLX_EXT_swap_control
+GO(glXSwapIntervalEXT,pFppi)
+//GLX_EXT_swap_control_tear
+//nothing
+
+//GLX_MESA_swap_control
+GOM(glXSwapIntervalMESA,iFi)
+GO(glXGetSwapIntervalMESA, iFv)
+
+//GLX_SGI_swap_control
+GO(glXSwapIntervalSGI,iFi)
diff --git a/src/wrapped/wrappedlibglu.c b/src/wrapped/wrappedlibglu.c
new file mode 100755
index 00000000..be9a6023
--- /dev/null
+++ b/src/wrapped/wrappedlibglu.c
@@ -0,0 +1,174 @@
+#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"
+
+typedef void        (*vFpip_t)(void*, int32_t, void*);
+
+static library_t* my_lib = NULL;
+
+#define SUPER() \
+    GO(gluQuadricCallback, vFpip_t) \
+    GO(gluTessCallback, vFpip_t)   \
+    GO(gluNurbsCallback, vFpip_t)
+
+typedef struct libglu_my_s {
+    // functions
+    #define GO(A, B)    B   A;
+    SUPER()
+    #undef GO
+} libglu_my_t;
+
+void* getGLUMy(library_t* lib)
+{
+    libglu_my_t* my = (libglu_my_t*)calloc(1, sizeof(libglu_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    SUPER()
+    #undef GO
+    return my;
+}
+
+void freeGLUMy(void* lib)
+{
+    //libglu_my_t *my = (libglu_my_t *)lib;
+}
+#undef SUPER
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)   \
+GO(5)   \
+GO(6)   \
+GO(7)   \
+GO(8)   \
+GO(9)   \
+
+// glu_callback
+#define GO(A)   \
+static uintptr_t my_glu_callback_fct_##A = 0;                       \
+static void my_glu_callback_##A(void* a, void* b)                   \
+{                                                                   \
+    RunFunction(my_context, my_glu_callback_fct_##A, 2, a, b);  \
+}
+SUPER()
+#undef GO
+static void* findglu_callbackFct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_glu_callback_fct_##A == (uintptr_t)fct) return my_glu_callback_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_glu_callback_fct_##A == 0) {my_glu_callback_fct_##A = (uintptr_t)fct; return my_glu_callback_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for Jpeg glu_callback callback\n");
+    return NULL;
+}
+// glu_callback4
+#define GO(A)   \
+static uintptr_t my_glu_callback4_fct_##A = 0;                              \
+static void my_glu_callback4_##A(void* a, void* b, void* c, void* d)        \
+{                                                                           \
+    RunFunction(my_context, my_glu_callback4_fct_##A, 4, a, b, c, d);   \
+}
+SUPER()
+#undef GO
+static void* findglu_callback4Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_glu_callback4_fct_##A == (uintptr_t)fct) return my_glu_callback4_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_glu_callback4_fct_##A == 0) {my_glu_callback4_fct_##A = (uintptr_t)fct; return my_glu_callback4_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for Jpeg glu_callback4 callback\n");
+    return NULL;
+}
+// glu_callback5
+#define GO(A)   \
+static uintptr_t my_glu_callback5_fct_##A = 0;                                  \
+static void my_glu_callback5_##A(void* a, void* b, void* c, void* d, void* e)   \
+{                                                                               \
+    RunFunction(my_context, my_glu_callback5_fct_##A, 5, a, b, c, d, e);    \
+}
+SUPER()
+#undef GO
+static void* findglu_callback5Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_glu_callback5_fct_##A == (uintptr_t)fct) return my_glu_callback5_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_glu_callback5_fct_##A == 0) {my_glu_callback5_fct_##A = (uintptr_t)fct; return my_glu_callback5_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for Jpeg glu_callback5 callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+// There are many callback signatures: vFv, vFi, vFp, vFip and vFpp... so a generic wrapping to vFpp works
+// except for GLU_TESS_COMBINE and GLU_TESS_COMBINE_DATA
+#define GLU_TESS_COMBINE                   100105
+#define GLU_TESS_COMBINE_DATA              100111
+void EXPORT my_gluQuadricCallback(x64emu_t* emu, void* a, int32_t b, void* cb)
+{
+    libglu_my_t *my = (libglu_my_t*)my_lib->priv.w.p2;
+    my->gluQuadricCallback(a, b, findglu_callbackFct(cb));
+}
+void EXPORT my_gluTessCallback(x64emu_t* emu, void* a, int32_t b, void* cb)
+{
+    libglu_my_t *my = (libglu_my_t*)my_lib->priv.w.p2;
+    if(b==GLU_TESS_COMBINE)
+        my->gluTessCallback(a, b, findglu_callback4Fct(cb));
+    else if(b==GLU_TESS_COMBINE_DATA)
+        my->gluTessCallback(a, b, findglu_callback5Fct(cb));
+    else
+        my->gluTessCallback(a, b, findglu_callbackFct(cb));
+}
+void EXPORT my_gluNurbsCallback(x64emu_t* emu, void* a, int32_t b, void* cb)
+{
+    libglu_my_t *my = (libglu_my_t*)my_lib->priv.w.p2;
+    my->gluNurbsCallback(a, b, findglu_callbackFct(cb));
+}
+
+const char* libgluName = "libGLU.so.1";
+#define LIBNAME libglu
+
+#define CUSTOM_INIT                     \
+    my_lib = lib;                       \
+    lib->priv.w.p2 = getGLUMy(lib);     \
+    lib->priv.w.needed = 1;             \
+    lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \
+    lib->priv.w.neededlibs[0] = strdup("libGL.so.1"); \
+
+#define CUSTOM_FINI             \
+    freeGLUMy(lib->priv.w.p2);  \
+    free(lib->priv.w.p2);       \
+    my_lib = NULL;
+
+
+#include "wrappedlib_init.h"
diff --git a/src/wrapped/wrappedlibglu_private.h b/src/wrapped/wrappedlibglu_private.h
new file mode 100755
index 00000000..a7c6b4ad
--- /dev/null
+++ b/src/wrapped/wrappedlibglu_private.h
@@ -0,0 +1,63 @@
+#if defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)
+
+GO(gluBeginCurve,vFp)
+GO(gluBeginPolygon,vFp)
+GO(gluBeginSurface,vFp)
+GO(gluBeginTrim,vFp)
+GO(gluBuild1DMipmapLevels,iFiiiiiiiip)
+GO(gluBuild1DMipmaps,iFiiiiip)
+GO(gluBuild2DMipmapLevels,iFiiiiiiiiip)
+GO(gluBuild2DMipmaps,iFiiiiiip)
+GO(gluBuild3DMipmapLevels,iFiiiiiiiiiip)
+GO(gluBuild3DMipmaps,iFiiiiiiip)
+GO(gluCheckExtension,iFpp)
+GO(gluCylinder,vFpdddii)
+GO(gluDeleteNurbsRenderer,vFp)
+GO(gluDeleteQuadric,vFp)
+GO(gluDeleteTess,vFp)
+GO(gluDisk,vFpddii)
+GO(gluEndCurve,vFp)
+GO(gluEndPolygon,vFp)
+GO(gluEndSurface,vFp)
+GO(gluEndTrim,vFp)
+GO(gluErrorString,pFi)
+GO(gluGetNurbsProperty,vFpip)
+GO(gluGetString,pFi)
+GO(gluGetTessProperty,vFpip)
+GO(gluLoadSamplingMatrices,vFpppp)
+GO(gluLookAt,vFddddddddd)
+GO(gluNewNurbsRenderer,pFv)
+GO(gluNewQuadric,pFv)
+GO(gluNewTess,pFv)
+GO(gluNextContour,vFpi)
+GOM(gluNurbsCallback,vFEpip)
+GO(gluNurbsCallbackData,vFpp)       // to check
+GO(gluNurbsCallbackDataEXT,vFpp)    // to check
+GO(gluNurbsCurve,vFpipipii)
+GO(gluNurbsProperty,vFpif)
+GO(gluNurbsSurface,vFpipipiipiii)
+GO(gluOrtho2D,vFdddd)
+GO(gluPartialDisk,vFpddiidd)
+GO(gluPerspective,vFdddd)
+GO(gluPickMatrix,vFddddp)
+GO(gluProject,iFdddpppppp)
+GO(gluPwlCurve,vFpipii)
+GOM(gluQuadricCallback,vFEpip)
+GO(gluQuadricDrawStyle,vFpi)
+GO(gluQuadricNormals,vFpi)
+GO(gluQuadricOrientation,vFpi)
+GO(gluQuadricTexture,vFpi)
+GO(gluScaleImage,iFiiiipiiip)
+GO(gluSphere,vFpdii)
+GO(gluTessBeginContour,vFp)
+GO(gluTessBeginPolygon,vFpp)
+GOM(gluTessCallback,vFEpip)
+GO(gluTessEndContour,vFp)
+GO(gluTessEndPolygon,vFp)
+GO(gluTessNormal,vFpddd)
+GO(gluTessProperty,vFpid)
+GO(gluTessVertex,vFppp)
+GO(gluUnProject,iFdddpppppp)
+GO(gluUnProject4,iFddddpppddpppp)
+
+#endif
\ No newline at end of file
diff --git a/src/wrapped/wrappedopenal.c b/src/wrapped/wrappedopenal.c
new file mode 100755
index 00000000..7f17bd4d
--- /dev/null
+++ b/src/wrapped/wrappedopenal.c
@@ -0,0 +1,224 @@
+#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 "box64context.h"
+#include "librarian.h"
+#include "myalign.h"
+
+static char* libname = NULL;
+
+typedef void* (*pFp_t)(void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef void (*vFv_t)();
+typedef void (*vFiiipp_t)(int32_t, int32_t, int32_t, void*, void*);
+
+typedef struct openal_my_s {
+    // functions
+    pFp_t  alGetProcAddress;
+    pFpp_t  alcGetProcAddress;
+    vFiiipp_t alRequestFoldbackStart;
+    vFv_t alRequestFoldbackStop;
+} openal_my_t;
+
+void* getOpenALMy(library_t* lib)
+{
+    openal_my_t* my = (openal_my_t*)calloc(1, sizeof(openal_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    GO(alGetProcAddress, pFp_t)
+    GO(alcGetProcAddress, pFpp_t)
+    GO(alRequestFoldbackStart, vFiiipp_t)
+    GO(alRequestFoldbackStop, vFv_t)
+    #undef GO
+    return my;
+}
+
+void freeOpenALMy(void* lib)
+{
+    //openal_my_t *my = (openal_my_t *)lib;
+}
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// Request ...
+#define GO(A)   \
+static uintptr_t my_Request_fct_##A = 0;                    \
+static void my_Request_##A(int32_t a, int32_t b)            \
+{                                                           \
+    RunFunction(my_context, my_Request_fct_##A, 2, a, b);   \
+}
+SUPER()
+#undef GO
+static void* find_Request_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_Request_fct_##A == (uintptr_t)fct) return my_Request_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_Request_fct_##A == 0) {my_Request_fct_##A = (uintptr_t)fct; return my_Request_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for zlib Request callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+void* my_alGetProcAddress(x64emu_t* emu, void* name);
+void* my_alcGetProcAddress(x64emu_t* emu, void* device, void* name);
+void my_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb);
+void my_alRequestFoldbackStop(x64emu_t* emu);
+
+const char* openalName = "libopenal.so.1";
+#define LIBNAME openal
+
+#define CUSTOM_INIT \
+    libname = lib->name;                \
+    lib->priv.w.p2 = getOpenALMy(lib);
+
+#define CUSTOM_FINI \
+    freeOpenALMy(lib->priv.w.p2); \
+    free(lib->priv.w.p2);
+
+#include "wrappedlib_init.h"
+
+
+
+void fillALProcWrapper(box64context_t* context)
+{
+    int cnt, ret;
+    khint_t k;
+    kh_symbolmap_t * symbolmap = kh_init(symbolmap);
+    // populates maps...
+    cnt = sizeof(openalsymbolmap)/sizeof(map_onesymbol_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbolmap, symbolmap, openalsymbolmap[i].name, &ret);
+        kh_value(symbolmap, k) = openalsymbolmap[i].w;
+    }
+    // and the my_ symbols map
+    cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbolmap, symbolmap, openalmysymbolmap[i].name, &ret);
+        kh_value(symbolmap, k) = openalmysymbolmap[i].w;
+    }
+    context->alwrappers = symbolmap;
+    // fill my_* map
+    symbolmap = kh_init(symbolmap);
+    cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbolmap, symbolmap, openalmysymbolmap[i].name, &ret);
+        kh_value(symbolmap, k) = openalmysymbolmap[i].w;
+    }
+    context->almymap = symbolmap;
+}
+void freeALProcWrapper(box64context_t* context)
+{
+    if(!context)
+        return;
+    if(context->alwrappers)
+        kh_destroy(symbolmap, context->alwrappers);
+    if(context->almymap)
+        kh_destroy(symbolmap, context->almymap);
+    context->alwrappers = NULL;
+    context->almymap = NULL;
+}
+
+EXPORT void* my_alGetProcAddress(x64emu_t* emu, void* name) 
+{
+    khint_t k;
+    openal_my_t* my = (openal_my_t*)GetLibInternal(libname)->priv.w.p2;
+    const char* rname = (const char*)name;
+    printf_log(LOG_DEBUG, "Calling alGetProcAddress(%s)\n", rname);
+    if(!emu->context->alwrappers)   // could be moved in "my" structure...
+        fillALProcWrapper(emu->context);
+    // get proc adress using actual alGetProcAddress
+    k = kh_get(symbolmap, emu->context->almymap, rname);
+    int is_my = (k==kh_end(emu->context->almymap))?0:1;
+    void* symbol;
+    if(is_my) {
+        // try again, by using custom "my_" now...
+        char tmp[200];
+        strcpy(tmp, "my_");
+        strcat(tmp, rname);
+        symbol = dlsym(emu->context->box64lib, tmp);
+    } else 
+        symbol = my->alGetProcAddress(name);
+    if(!symbol)
+        return NULL;    // easy
+    // check if alread bridged
+    uintptr_t ret = CheckBridged(emu->context->system, symbol);
+    if(ret)
+        return (void*)ret; // already bridged
+    // get wrapper    
+    k = kh_get(symbolmap, emu->context->alwrappers, rname);
+    if(k==kh_end(emu->context->alwrappers)) {
+        printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname);
+        return NULL;
+    }
+    AddOffsetSymbol(emu->context->maplib, symbol, rname);
+    return (void*)AddBridge(emu->context->system, kh_value(emu->context->alwrappers, k), symbol, 0);
+}
+
+EXPORT void* my_alcGetProcAddress(x64emu_t* emu, void* device, void* name)
+{
+    khint_t k;
+    openal_my_t* my = (openal_my_t*)GetLibInternal(libname)->priv.w.p2;
+    const char* rname = (const char*)name;
+    printf_log(LOG_DEBUG, "Calling alcGetProcAddress(%p, %s)\n", device, rname);
+    if(!emu->context->alwrappers)   // could be moved in "my" structure...
+        fillALProcWrapper(emu->context);
+    // get proc adress using actual alGetProcAddress
+    k = kh_get(symbolmap, emu->context->almymap, rname);
+    int is_my = (k==kh_end(emu->context->almymap))?0:1;
+    void* symbol;
+    if(is_my) {
+        // try again, by using custom "my_" now...
+        char tmp[200];
+        strcpy(tmp, "my_");
+        strcat(tmp, rname);
+        symbol = dlsym(emu->context->box64lib, tmp);
+    } else 
+        symbol = my->alcGetProcAddress(device, name);
+    if(!symbol)
+        return NULL;    // easy
+    uintptr_t ret = CheckBridged(emu->context->system, symbol);
+    if(ret)
+        return (void*)ret; // already bridged
+    // get wrapper    
+    k = kh_get(symbolmap, emu->context->alwrappers, rname);
+    if(k==kh_end(emu->context->alwrappers)) {
+        printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname);
+        return NULL;
+    }
+    AddOffsetSymbol(emu->context->maplib, symbol, rname);
+    return (void*)AddBridge(emu->context->system, kh_value(emu->context->alwrappers, k), symbol, 0);
+}
+
+EXPORT void my_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb)
+{
+    openal_my_t* my = (openal_my_t*)GetLibInternal(libname)->priv.w.p2;
+    my->alRequestFoldbackStart(mode, count, length, mem, find_Request_Fct(cb));
+}
+
+EXPORT void my_alRequestFoldbackStop(x64emu_t* emu)
+{
+    openal_my_t* my = (openal_my_t*)GetLibInternal(libname)->priv.w.p2;
+    my->alRequestFoldbackStop();
+}
+
diff --git a/src/wrapped/wrappedopenal_private.h b/src/wrapped/wrappedopenal_private.h
new file mode 100755
index 00000000..d57b2fb6
--- /dev/null
+++ b/src/wrapped/wrappedopenal_private.h
@@ -0,0 +1,167 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh...
+#endif
+
+GO(alDopplerFactor,vFf)
+GO(alDopplerVelocity,vFf)
+GO(alSpeedOfSound,vFf)
+GO(alDistanceModel,vFi)
+GO(alEnable,vFi)
+GO(alDisable,vFi)
+GO(alIsEnabled,cFi)
+GO(alGetString,pFi)
+GO(alGetBooleanv,vFip)
+GO(alGetIntegerv,vFip)
+GO(alGetFloatv,vFip)
+GO(alGetDoublev,vFip)
+GO(alGetBoolean,iFi)
+GO(alGetInteger,iFi)
+GO(alGetFloat,fFi)
+GO(alGetDouble,dFi)
+GO(alGetError,iFv)
+GO(alIsExtensionPresent,cFp)
+GOM(alGetProcAddress,pFEp)
+GO(alGetEnumValue,iFp)
+GO(alListenerf,vFif)
+GO(alListener3f,vFifff)
+GO(alListenerfv,vFip)
+GO(alListeneri,vFii)
+GO(alListener3i,vFiiii)
+GO(alListeneriv,vFip)
+GO(alGetListenerf,vFip)
+GO(alGetListener3f,vFippp)
+GO(alGetListenerfv,vFip)
+GO(alGetListeneri,vFip)
+GO(alGetListener3i,vFippp)
+GO(alGetListeneriv,vFip)
+GO(alGenSources,vFip)
+GO(alDeleteSources,vFip)
+GO(alIsSource,cFu)
+GO(alSourcef,vFuif)
+GO(alSource3f,vFuifff)
+GO(alSourcefv,vFuip)
+GO(alSourcei,vFuii)
+GO(alSource3i,vFuiiii)
+GO(alSourceiv,vFuip)
+GO(alGetSourcef,vFuip)
+GO(alGetSource3f,vFuippp)
+GO(alGetSourcefv,vFuip)
+GO(alGetSourcei,vFuip)
+GO(alGetSource3i,vFuippp)
+GO(alGetSourceiv,vFuip)
+GO(alSourcePlayv,vFip)
+GO(alSourceStopv,vFip)
+GO(alSourceRewindv,vFip)
+GO(alSourcePausev,vFip)
+GO(alSourcePlay,vFu)
+GO(alSourceStop,vFu)
+GO(alSourceRewind,vFu)
+GO(alSourcePause,vFu)
+GO(alSourceQueueBuffers,vFuip)
+GO(alSourceUnqueueBuffers,vFuip)
+GO(alGenBuffers,vFip)
+GO(alDeleteBuffers,vFip)
+GO(alIsBuffer,cFu)
+GO(alBufferData,vFuipii)
+GO(alBufferf,vFuif)
+GO(alBuffer3f,vFuifff)
+GO(alBufferfv,vFuip)
+GO(alBufferi,vFuii)
+GO(alBuffer3i,vFuiiii)
+GO(alBufferiv,vFuip)
+GO(alGetBufferf,vFuip)
+GO(alGetBuffer3f,vFuippp)
+GO(alGetBufferfv,vFuip)
+GO(alGetBufferi,vFuip)
+GO(alGetBuffer3i,vFuippp)
+GO(alGetBufferiv,vFuip)
+
+GO(alcCreateContext,pFpp)
+GO(alcMakeContextCurrent,iFp)
+GO(alcProcessContext,vFp)
+GO(alcSuspendContext,vFp)
+GO(alcDestroyContext,vFp)
+GO(alcGetCurrentContext,pFv)
+GO(alcGetContextsDevice,pFp)
+GO(alcOpenDevice,pFp)
+GO(alcCloseDevice,iFp)
+GO(alcGetError,iFp)
+GO(alcIsExtensionPresent,cFpp)
+GOM(alcGetProcAddress,pFEpp)
+GO(alcGetEnumValue,iFpp)
+GO(alcGetString,pFpi)
+GO(alcGetIntegerv,vFpiip)
+GO(alcCaptureOpenDevice,pFpuii)
+GO(alcCaptureCloseDevice,iFp)
+GO(alcCaptureStart,vFp)
+GO(alcCaptureStop,vFp)
+GO(alcCaptureSamples,vFppi)
+
+GO(alcGetThreadContext, pFv)
+GO(alcSetThreadContext, iFp)
+GO(alcLoopbackOpenDeviceSOFT, pFp)
+GO(alcIsRenderFormatSupportedSOFT, cFpiii)
+GO(alcRenderSamplesSOFT, vFppi)
+GO(alcDevicePauseSOFT, vFp)
+GO(alcDeviceResumeSOFT, vFp)
+GO(alcGetStringiSOFT, pFpii)
+GO(alcResetDeviceSOFT, iFpp)
+GO(alcGetInteger64vSOFT, vFpiip)
+
+GO(alBufferDataStatic,vFiipii)
+GO(alBufferSubDataSOFT,vFuipii)
+GOM(alRequestFoldbackStart,vFEiiipp)
+GOM(alRequestFoldbackStop,vFE)
+GO(alBufferSamplesSOFT,vFuuiiiip)
+GO(alBufferSubSamplesSOFT,vFuiiiip)
+GO(alGetBufferSamplesSOFT,vFuiiiip)
+GO(alIsBufferFormatSupportedSOFT,cFi)
+GO(alSourcedSOFT,vFuid)
+GO(alSource3dSOFT,vFuiddd)
+GO(alSourcedvSOFT,vFuip)
+GO(alGetSourcedSOFT,vFuip)
+GO(alGetSource3dSOFT,vFuippp)
+GO(alGetSourcedvSOFT,vFuip)
+GO(alSourcei64SOFT,vFuiI)
+GO(alSource3i64SOFT,vFuiIII)
+GO(alSourcei64vSOFT,vFuip)
+GO(alGetSourcei64SOFT,vFuip)
+GO(alGetSource3i64SOFT,vFuippp)
+GO(alGetSourcei64vSOFT,vFuip)
+GO(alDeferUpdatesSOFT,vFv)
+GO(alProcessUpdatesSOFT,vFv)
+GO(alGetStringiSOFT,pFii)
+
+GO(alGenEffects,vFip)
+GO(alDeleteEffects,vFip)
+GO(alIsEffect,cFu)
+GO(alEffecti,vFuii)
+GO(alEffectiv,vFuip)
+GO(alEffectf,vFuif)
+GO(alEffectfv,vFuip)
+GO(alGetEffecti,vFuip)
+GO(alGetEffectiv,vFuip)
+GO(alGetEffectf,vFuip)
+GO(alGetEffectfv,vFuip)
+GO(alGenFilters,vFip)
+GO(alDeleteFilters,vFip)
+GO(alIsFilter,cFu)
+GO(alFilteri,vFuii)
+GO(alFilteriv,vFuip)
+GO(alFilterf,vFuif)
+GO(alFilterfv,vFuip)
+GO(alGetFilteri,vFuip)
+GO(alGetFilteriv,vFuip)
+GO(alGetFilterf,vFuip)
+GO(alGetFilterfv,vFuip)
+GO(alGenAuxiliaryEffectSlots,vFip)
+GO(alDeleteAuxiliaryEffectSlots,vFip)
+GO(alIsAuxiliaryEffectSlot,cFu)
+GO(alAuxiliaryEffectSloti,vFuii)
+GO(alAuxiliaryEffectSlotiv,vFuip)
+GO(alAuxiliaryEffectSlotf,vFuif)
+GO(alAuxiliaryEffectSlotfv,vFuip)
+GO(alGetAuxiliaryEffectSloti,vFuip)
+GO(alGetAuxiliaryEffectSlotiv,vFuip)
+GO(alGetAuxiliaryEffectSlotf,vFuip)
+GO(alGetAuxiliaryEffectSlotfv,vFuip)
\ No newline at end of file
diff --git a/src/wrapped/wrappedsdl1.c b/src/wrapped/wrappedsdl1.c
new file mode 100755
index 00000000..e54be874
--- /dev/null
+++ b/src/wrapped/wrappedsdl1.c
@@ -0,0 +1,574 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "wrapper.h"
+#include "debug.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "callback.h"
+#include "librarian.h"
+#include "emu/x64emu_private.h"
+#include "box64context.h"
+#include "sdl1rwops.h"
+
+#include "x64trace.h"
+#include "threads.h"
+
+const char* sdl1Name = "libSDL-1.2.so.0";
+#define LIBNAME sdl1
+
+int sdl_Yes() { return 1; }
+int sdl_No() { return 0; }
+int EXPORT my_SDL_Has3DNow() __attribute__((alias("sdl_No")));
+int EXPORT my_SDL_Has3DNowExt() __attribute__((alias("sdl_No")));
+int EXPORT my_SDL_HasAltiVec() __attribute__((alias("sdl_No")));
+int EXPORT my_SDL_HasMMX() __attribute__((alias("sdl_Yes")));
+int EXPORT my_SDL_HasMMXExt() __attribute__((alias("sdl_Yes")));
+int EXPORT my_SDL_HasRDTSC() __attribute__((alias("sdl_Yes")));
+int EXPORT my_SDL_HasSSE() __attribute__((alias("sdl_Yes")));
+int EXPORT my_SDL_HasSSE2() __attribute__((alias("sdl_Yes")));
+
+typedef struct {
+  int32_t freq;
+  uint16_t format;
+  uint8_t channels;
+  uint8_t silence;
+  uint16_t samples;
+  uint32_t size;
+  void (*callback)(void *userdata, uint8_t *stream, int32_t len);
+  void *userdata;
+} SDL_AudioSpec;
+
+// TODO: put the wrapper type in a dedicate include
+typedef void  (*vFv_t)();
+typedef void* (*pFv_t)();
+typedef void* (*pFpi_t)(void*, int32_t);
+typedef void* (*pFp_t)(void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef int (*iFup_t)(uint32_t, void*);
+typedef int32_t (*iFp_t)(void*);
+typedef int32_t (*iFppi_t)(void*, void*, int32_t);
+typedef void* (*pFpippp_t)(void*, int32_t, void*, void*, void*);
+typedef void  (*vFp_t)(void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef uint32_t (*uFp_t)(void*);
+typedef uint64_t (*UFp_t)(void*);
+typedef uint32_t (*uFu_t)(uint32_t);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef uint32_t (*uFpW_t)(void*, uint16_t);
+typedef uint32_t (*uFpu_t)(void*, uint32_t);
+typedef uint32_t (*uFpU_t)(void*, uint64_t);
+typedef uint32_t (*uFupp_t)(uint32_t, void*, void*);
+
+#define SUPER()                                     \
+    GO(SDL_Quit, vFv_t)                             \
+    GO(SDL_AllocRW, sdl1_allocrw)                   \
+    GO(SDL_FreeRW, sdl1_freerw)                     \
+    GO(SDL_OpenAudio, iFpp_t)                       \
+    GO(SDL_LoadBMP_RW, pFpi_t)                      \
+    GO(SDL_RWFromConstMem, pFpi_t)                  \
+    GO(SDL_RWFromFP, pFpi_t)                        \
+    GO(SDL_RWFromFile, pFpp_t)                      \
+    GO(SDL_RWFromMem, pFpi_t)                       \
+    GO(SDL_SaveBMP_RW, iFppi_t)                     \
+    GO(SDL_LoadWAV_RW, pFpippp_t)                   \
+    GO(SDL_ReadBE16, uFp_t)                         \
+    GO(SDL_ReadBE32, uFp_t)                         \
+    GO(SDL_ReadBE64, UFp_t)                         \
+    GO(SDL_ReadLE16, uFp_t)                         \
+    GO(SDL_ReadLE32, uFp_t)                         \
+    GO(SDL_ReadLE64, UFp_t)                         \
+    GO(SDL_WriteBE16, uFpW_t)                       \
+    GO(SDL_WriteBE32, uFpu_t)                       \
+    GO(SDL_WriteBE64, uFpU_t)                       \
+    GO(SDL_WriteLE16, uFpW_t)                       \
+    GO(SDL_WriteLE32, uFpu_t)                       \
+    GO(SDL_WriteLE64, uFpU_t)                       \
+    GO(SDL_AddTimer, uFupp_t)                       \
+    GO(SDL_RemoveTimer, uFu_t)                      \
+    GO(SDL_CreateThread, pFpp_t)                    \
+    GO(SDL_KillThread, vFp_t)                       \
+    GO(SDL_SetEventFilter, vFp_t)                   \
+    GO(SDL_GL_GetProcAddress, pFp_t)                \
+    GO(SDL_GetWMInfo, iFp_t)                        \
+    GO(SDL_SetTimer, iFup_t)                        \
+    GO(SDL_GetEventFilter, pFv_t)                   \
+
+typedef struct sdl1_my_s {
+    // functions
+    #define GO(A, B)    B   A;
+    #define GO(A, B)    B   A;
+    SUPER()
+    #undef GO
+} sdl1_my_t;
+
+// event filter. Needs to be global, but there is only one, so that's should be fine
+x64emu_t        *sdl1_evtfilter = NULL;
+void*           sdl1_evtfnc = NULL;
+int             sdl1_evtautofree = 0;
+int             sdl1_evtinside = 0;
+
+
+void* getSDL1My(library_t* lib)
+{
+    sdl1_my_t* my = (sdl1_my_t*)calloc(1, sizeof(sdl1_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    SUPER()
+    #undef GO
+
+    return my;
+}
+#undef SUPER
+
+void freeSDL1My(void* lib)
+{
+    //sdl1_my_t *my = (sdl1_my_t *)lib;
+}
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// AudioCallback ...
+#define GO(A)   \
+static uintptr_t my_AudioCallback_fct_##A = 0;                                      \
+static void my_AudioCallback_##A(void *userdata, uint8_t *stream, int32_t len)      \
+{                                                                                   \
+    RunFunction(my_context, my_AudioCallback_fct_##A, 3, userdata, stream, len);    \
+}
+SUPER()
+#undef GO
+static void* find_AudioCallback_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_AudioCallback_fct_##A == (uintptr_t)fct) return my_AudioCallback_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_AudioCallback_fct_##A == 0) {my_AudioCallback_fct_##A = (uintptr_t)fct; return my_AudioCallback_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1 AudioCallback callback\n");
+    return NULL;
+}
+// TimerCallback ...
+#define GO(A)   \
+static uintptr_t my_TimerCallback_fct_##A = 0;                                                  \
+static uint32_t my_TimerCallback_##A(uint32_t interval, void *userdata)                         \
+{                                                                                               \
+    return (uint32_t)RunFunction(my_context, my_TimerCallback_fct_##A, 2, interval, userdata);  \
+}
+SUPER()
+#undef GO
+static void* find_TimerCallback_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_TimerCallback_fct_##A == (uintptr_t)fct) return my_TimerCallback_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_TimerCallback_fct_##A == 0) {my_TimerCallback_fct_##A = (uintptr_t)fct; return my_TimerCallback_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1 TimerCallback callback\n");
+    return NULL;
+}
+// EvtFilter ...
+#define GO(A)   \
+static uintptr_t my_EvtFilter_fct_##A = 0;                      \
+static int my_EvtFilter_##A(void* p)                            \
+{                                                               \
+    return RunFunction(my_context, my_EvtFilter_fct_##A, 1, p); \
+}
+SUPER()
+#undef GO
+static void* find_EvtFilter_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_EvtFilter_fct_##A == (uintptr_t)fct) return my_EvtFilter_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_EvtFilter_fct_##A == 0) {my_EvtFilter_fct_##A = (uintptr_t)fct; return my_EvtFilter_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL1 EvtFilter callback\n");
+    return NULL;
+}
+static void* reverse_EvtFilterFct(void* fct)
+{
+    if(!fct) return fct;
+    library_t* my_lib = my_context->sdl1lib;
+    if(CheckBridged(my_lib->priv.w.bridge, fct))
+        return (void*)CheckBridged(my_lib->priv.w.bridge, fct);
+    #define GO(A) if(my_EvtFilter_##A == fct) return (void*)my_EvtFilter_fct_##A;
+    SUPER()
+    #undef GO
+    return (void*)AddBridge(my_lib->priv.w.bridge, iFp, fct, 0);
+}
+#undef SUPER
+
+// TODO: track the memory for those callback
+int EXPORT my_SDL_OpenAudio(x64emu_t* emu, void* d, void* o)
+{
+    SDL_AudioSpec *desired = (SDL_AudioSpec*)d;
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    // create a callback
+    void *fnc = (void*)desired->callback;
+    desired->callback = find_AudioCallback_Fct(desired->callback);
+    int ret = my->SDL_OpenAudio(desired, (SDL_AudioSpec*)o);
+    if (ret!=0) {
+        // error, clean the callback...
+        desired->callback = fnc;
+        return ret;
+    }
+    // put back stuff in place?
+    desired->callback = fnc;
+
+    return ret;
+}
+
+void EXPORT *my_SDL_LoadBMP_RW(x64emu_t* emu, void* a, int b)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->SDL_LoadBMP_RW(rw, b);
+    if(b==0)
+        RWNativeEnd(rw);
+    return r;
+}
+int32_t EXPORT my_SDL_SaveBMP_RW(x64emu_t* emu, void* a, void* b, int c)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    int32_t r = my->SDL_SaveBMP_RW(rw, b, c);
+    if(c==0)
+        RWNativeEnd(rw);
+    return r;
+}
+void EXPORT *my_SDL_LoadWAV_RW(x64emu_t* emu, void* a, int b, void* c, void* d, void* e)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    void* r = my->SDL_LoadWAV_RW(rw, b, c, d, e);
+    if(b==0)
+        RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_ReadBE16(x64emu_t* emu, void* a)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_ReadBE16(rw);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_ReadBE32(x64emu_t* emu, void* a)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_ReadBE32(rw);
+    RWNativeEnd(rw);
+    return r;
+}
+uint64_t EXPORT my_SDL_ReadBE64(x64emu_t* emu, void* a)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint64_t r = my->SDL_ReadBE64(rw);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_ReadLE16(x64emu_t* emu, void* a)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_ReadLE16(rw);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_ReadLE32(x64emu_t* emu, void* a)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_ReadLE32(rw);
+    RWNativeEnd(rw);
+    return r;
+}
+uint64_t EXPORT my_SDL_ReadLE64(x64emu_t* emu, void* a)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint64_t r = my->SDL_ReadLE64(rw);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_WriteBE16(x64emu_t* emu, void* a, uint16_t v)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_WriteBE16(rw, v);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_WriteBE32(x64emu_t* emu, void* a, uint32_t v)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_WriteBE32(rw, v);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_WriteBE64(x64emu_t* emu, void* a, uint64_t v)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_WriteBE64(rw, v);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_WriteLE16(x64emu_t* emu, void* a, uint16_t v)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_WriteLE16(rw, v);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_WriteLE32(x64emu_t* emu, void* a, uint32_t v)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_WriteLE32(rw, v);
+    RWNativeEnd(rw);
+    return r;
+}
+uint32_t EXPORT my_SDL_WriteLE64(x64emu_t* emu, void* a, uint64_t v)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* rw = RWNativeStart(emu, (SDL1_RWops_t*)a);
+    uint32_t r = my->SDL_WriteLE64(rw, v);
+    RWNativeEnd(rw);
+    return r;
+}
+
+// SDL1 doesn't really used rw_ops->type, but box64 does, so set sensible value (from SDL2)....
+void EXPORT *my_SDL_RWFromConstMem(x64emu_t* emu, void* a, int b)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* r = (SDL1_RWops_t*)my->SDL_RWFromConstMem(a, b);
+    RWSetType(r, 5);
+    return AddNativeRW(emu, r);
+}
+void EXPORT *my_SDL_RWFromFP(x64emu_t* emu, void* a, int b)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* r = (SDL1_RWops_t*)my->SDL_RWFromFP(a, b);
+    RWSetType(r, 2);
+    return AddNativeRW(emu, r);
+}
+void EXPORT *my_SDL_RWFromFile(x64emu_t* emu, void* a, void* b)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* r = (SDL1_RWops_t*)my->SDL_RWFromFile(a, b);
+    RWSetType(r, 2);
+    return AddNativeRW(emu, r);
+}
+void EXPORT *my_SDL_RWFromMem(x64emu_t* emu, void* a, int b)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    SDL1_RWops_t* r = (SDL1_RWops_t*)my->SDL_RWFromMem(a, b);
+    RWSetType(r, 4);
+    return AddNativeRW(emu, r);
+}
+
+uint32_t EXPORT my_SDL_AddTimer(x64emu_t* emu, uint32_t a, void* cb, void* p)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    return my->SDL_AddTimer(a, find_TimerCallback_Fct(cb), p);
+}
+
+void EXPORT my_SDL_RemoveTimer(x64emu_t* emu, uint32_t t)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    my->SDL_RemoveTimer(t);
+}
+
+int32_t EXPORT my_SDL_SetTimer(x64emu_t* emu, uint32_t t, void* p)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    return my->SDL_SetTimer(t, find_TimerCallback_Fct(p));
+}
+#if 0
+int32_t EXPORT my_SDL_BuildAudioCVT(x64emu_t* emu, void* a, uint32_t b, uint32_t c, int32_t d, uint32_t e, uint32_t f, int32_t g)
+{
+    printf_log(LOG_NONE, "Error, using Unimplemented SDL1 SDL_BuildAudioCVT\n");
+    emu->quit = 1;
+    return 0;
+}
+
+int32_t EXPORT my_SDL_ConvertAudio(x64emu_t* emu, void* a)
+{
+    printf_log(LOG_NONE, "Error, using Unimplemented SDL1 SDL_ConvertAudio\n");
+    emu->quit = 1;
+    return 0;
+}
+#endif
+void EXPORT my_SDL_SetEventFilter(x64emu_t* emu, void* a)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    my->SDL_SetEventFilter(find_EvtFilter_Fct(a));
+}
+void EXPORT *my_SDL_GetEventFilter(x64emu_t* emu)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    return reverse_EvtFilterFct(my->SDL_GetEventFilter());
+}
+
+void EXPORT *my_SDL_CreateThread(x64emu_t* emu, void* cb, void* p)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    void* et = NULL;
+    return my->SDL_CreateThread(my_prepare_thread(emu, cb, p, 0, &et), et);
+}
+
+void EXPORT my_SDL_KillThread(x64emu_t* emu, void* p)
+{
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    my->SDL_KillThread(p);
+}
+
+void fillGLProcWrapper(box64context_t* context);
+EXPORT void* my_SDL_GL_GetProcAddress(x64emu_t* emu, void* name) 
+{
+    khint_t k;
+    const char* rname = (const char*)name;
+    printf_log(LOG_DEBUG, "Calling SDL_GL_GetProcAddress(%s)\n", rname);
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    // check if glxprocaddress is filled, and search for lib and fill it if needed
+    if(!emu->context->glwrappers)
+        fillGLProcWrapper(emu->context);
+    // get proc adress using actual glXGetProcAddress
+    k = kh_get(symbolmap, emu->context->glmymap, rname);
+    int is_my = (k==kh_end(emu->context->glmymap))?0:1;
+    void* symbol;
+    if(is_my) {
+        // try again, by using custom "my_" now...
+        char tmp[200];
+        strcpy(tmp, "my_");
+        strcat(tmp, rname);
+        symbol = dlsym(emu->context->box64lib, tmp);
+    } else 
+        symbol = my->SDL_GL_GetProcAddress(name);
+    if(!symbol)
+        return NULL;    // easy
+    // check if alread bridged
+    uintptr_t ret = CheckBridged(emu->context->system, symbol);
+    if(ret)
+        return (void*)ret; // already bridged
+    // get wrapper    
+    k = kh_get(symbolmap, emu->context->glwrappers, rname);
+    if(k==kh_end(emu->context->glwrappers) && strstr(rname, "ARB")==NULL) {
+        // try again, adding ARB at the end if not present
+        char tmp[200];
+        strcpy(tmp, rname);
+        strcat(tmp, "ARB");
+        k = kh_get(symbolmap, emu->context->glwrappers, tmp);
+    }
+    if(k==kh_end(emu->context->glwrappers) && strstr(rname, "EXT")==NULL) {
+        // try again, adding EXT at the end if not present
+        char tmp[200];
+        strcpy(tmp, rname);
+        strcat(tmp, "EXT");
+        k = kh_get(symbolmap, emu->context->glwrappers, tmp);
+    }
+    if(k==kh_end(emu->context->glwrappers)) {
+        printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname);
+        return NULL;
+    }
+    AddOffsetSymbol(emu->context->maplib, symbol, rname);
+    return (void*)AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0);
+}
+
+// DL functions from wrappedlibdl.c
+void* my_dlopen(x64emu_t* emu, void *filename, int flag);
+int my_dlclose(x64emu_t* emu, void *handle);
+void* my_dlsym(x64emu_t* emu, void *handle, void *symbol);
+EXPORT void* my_SDL_LoadObject(x64emu_t* emu, void* sofile)
+{
+    return my_dlopen(emu, sofile, 0);   // TODO: check correct flag value...
+}
+EXPORT void my_SDL_UnloadObject(x64emu_t* emu, void* handle)
+{
+    my_dlclose(emu, handle);
+}
+EXPORT void* my_SDL_LoadFunction(x64emu_t* emu, void* handle, void* name)
+{
+    return my_dlsym(emu, handle, name);
+}
+
+typedef struct my_SDL_version {
+    uint8_t major;
+    uint8_t minor;
+    uint8_t patch;
+} my_SDL_version;
+
+typedef struct {
+  my_SDL_version version;
+  int subsystem;
+  union {
+    struct {
+      void* display;
+      void* window;
+      void (*lock_func)(void);
+      void (*unlock_func)(void);
+      void* fswindow;
+      void* wmwindow;
+      void* gfxdisplay;
+    } x11;
+  } info;
+} my_SDL_SysWMinfo;
+
+EXPORT int32_t my_SDL_GetWMInfo(x64emu_t* emu, void* p)
+{
+    // does SDL_SysWMinfo needs alignment?
+    sdl1_my_t *my = (sdl1_my_t *)emu->context->sdl1lib->priv.w.p2;
+    int ret = my->SDL_GetWMInfo(p);
+    my_SDL_SysWMinfo *info = (my_SDL_SysWMinfo*)p;
+    if(info->info.x11.lock_func)
+        info->info.x11.lock_func = (void*)AddBridge(emu->context->system, vFv, info->info.x11.lock_func, 0);
+    if(info->info.x11.unlock_func)
+        info->info.x11.unlock_func = (void*)AddBridge(emu->context->system, vFv, info->info.x11.unlock_func, 0);
+    return ret;
+}
+
+#define CUSTOM_INIT \
+    box64->sdl1lib = lib; \
+    lib->priv.w.p2 = getSDL1My(lib); \
+    box64->sdl1allocrw = ((sdl1_my_t*)lib->priv.w.p2)->SDL_AllocRW; \
+    box64->sdl1freerw  = ((sdl1_my_t*)lib->priv.w.p2)->SDL_FreeRW; \
+    lib->priv.w.needed = 3; \
+    lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \
+    lib->priv.w.neededlibs[0] = strdup("libm.so.6"); \
+    lib->priv.w.neededlibs[1] = strdup("libdl.so.2"); \
+    lib->priv.w.neededlibs[2] = strdup("librt.so.1");
+
+#define CUSTOM_FINI \
+    ((sdl1_my_t *)lib->priv.w.p2)->SDL_Quit();              \
+    freeSDL1My(lib->priv.w.p2);                             \
+    free(lib->priv.w.p2);                                   \
+    ((box64context_t*)(lib->context))->sdl1lib = NULL;      \
+    ((box64context_t*)(lib->context))->sdl1allocrw = NULL;  \
+    ((box64context_t*)(lib->context))->sdl1freerw = NULL;
+
+#include "wrappedlib_init.h"
+
diff --git a/src/wrapped/wrappedsdl1_private.h b/src/wrapped/wrappedsdl1_private.h
new file mode 100755
index 00000000..35e0e78a
--- /dev/null
+++ b/src/wrapped/wrappedsdl1_private.h
@@ -0,0 +1,238 @@
+#if defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)
+
+// _fini
+// _init
+GOM(SDL_AddTimer, pFEupp)
+GO(SDL_AllocRW, pFv)    // no need to use a my_ version here
+GO(SDL_CDClose, vFp)
+GO(SDL_CDEject, iFp)
+GO(SDL_CDName, pFi)
+GO(SDL_CDNumDrives, iFv)
+GO(SDL_CDOpen, pFi)
+GO(SDL_CDPause, iFp)
+GO(SDL_CDPlay, iFpii)
+GO(SDL_CDPlayTracks, iFpiiii)
+GO(SDL_CDResume, iFp)
+GO(SDL_CDStatus, iFp)
+GO(SDL_CDStop, iFp)
+GO(SDL_ClearError, vFv)
+GO(SDL_CondBroadcast, iFp)
+GO(SDL_CondSignal, iFp)
+GO(SDL_CondWait, iFpp)
+GO(SDL_CondWaitTimeout, iFppu)
+GO(SDL_ConvertSurface, pFppu)
+GO(SDL_CreateCond, pFv)
+GO(SDL_CreateCursor, pFppiiii)
+GO(SDL_CreateMutex, pFv)
+GO(SDL_CreateRGBSurface, pFuiiiuuuu)
+GO(SDL_CreateRGBSurfaceFrom, pFpiiiiuuuu)
+GO(SDL_CreateSemaphore, pFu)
+GOM(SDL_CreateThread, pFEpp)
+GO(SDL_CreateYUVOverlay, pFiiup)
+GO(SDL_Delay, vFu)
+GO(SDL_DestroyCond, vFp)
+GO(SDL_DestroyMutex, vFp)
+GO(SDL_DestroySemaphore, vFp)
+GO(SDL_DisplayFormat, pFp)
+GO(SDL_DisplayFormatAlpha, pFp)
+GO(SDL_DisplayYUVOverlay, iFpp)
+GO(SDL_EnableKeyRepeat, iFii)
+GO(SDL_EnableUNICODE, iFi)
+GO(SDL_Error, vFi)
+GO(SDL_EventState, uFui)
+GO(SDL_FillRect, iFppu)
+GO(SDL_Flip, iFp)
+GO(SDL_FreeCursor, vFp)
+GO(SDL_FreeRW, vFp)
+GO(SDL_FreeSurface, vFp)
+GO(SDL_FreeYUVOverlay, vFp)
+GO(SDL_GL_GetAttribute, iFup)
+GOM(SDL_GL_GetProcAddress, pFEp)
+GO(SDL_GL_LoadLibrary, iFp)
+GO(SDL_GL_Lock, vFv)
+GO(SDL_GL_SetAttribute, iFui)
+GO(SDL_GL_SwapBuffers, vFv)
+GO(SDL_GL_Unlock, vFv)
+GO(SDL_GL_UpdateRects, vFip)
+GO(SDL_GetAppState, uFv)
+GO(SDL_GetClipRect, vFpp)
+GO(SDL_GetCursor, pFv)
+GO(SDL_GetError, pFv)
+GOM(SDL_GetEventFilter, pFEv)
+GO(SDL_GetGammaRamp, iFppp)
+GO(SDL_GetKeyName, pFi)
+GO(SDL_GetKeyRepeat, vFpp)
+GO(SDL_GetKeyState, pFp)
+GO(SDL_GetModState, iFv)
+GO(SDL_GetMouseState, uFpp)
+GO(SDL_GetRGB, vFupppp)
+GO(SDL_GetRGBA, vFuppppp)
+GO(SDL_GetRelativeMouseState, uFpp)
+GO(SDL_GetThreadID, uFp)
+GO(SDL_GetTicks, uFv)
+GO(SDL_GetVideoInfo, pFv)
+GO(SDL_GetVideoSurface, pFv)
+GOM(SDL_GetWMInfo, iFEp)
+GOM(SDL_Has3DNow, iFv)
+GOM(SDL_Has3DNowExt, iFv)
+GOM(SDL_HasAltiVec, iFv)
+GOM(SDL_HasMMX, iFv)
+GOM(SDL_HasMMXExt, iFv)
+GOM(SDL_HasRDTSC, iFv)
+GOM(SDL_HasSSE, iFv)
+GOM(SDL_HasSSE2, iFv)
+GO(SDL_Init, iFu)
+GO(SDL_InitQuickDraw, vFp)
+GO(SDL_InitSubSystem, iFu)
+GO(SDL_JoystickClose, vFp)
+GO(SDL_JoystickEventState, iFi)
+GO(SDL_JoystickGetAxis, iFpi)
+GO(SDL_JoystickGetBall, iFpipp)
+GO(SDL_JoystickGetButton, uFpi)
+GO(SDL_JoystickGetHat, uFpi)
+GO(SDL_JoystickIndex, iFp)
+GO(SDL_JoystickName, pFi)
+GO(SDL_JoystickNumAxes, iFp)
+GO(SDL_JoystickNumBalls, iFp)
+GO(SDL_JoystickNumButtons, iFp)
+GO(SDL_JoystickNumHats, iFp)
+GO(SDL_JoystickOpen, pFi)
+GO(SDL_JoystickOpened, iFi)
+GO(SDL_JoystickUpdate, vFv)
+GOM(SDL_KillThread, vFEp)
+GO(SDL_Linked_Version, pFv)
+GO(SDL_ListModes, pFpu)
+GOM(SDL_LoadBMP_RW, pFEpi)
+GOM(SDL_LoadFunction, pFEpp)
+GOM(SDL_LoadObject, pFEp)
+GO(SDL_LockSurface, iFp)
+GO(SDL_LockYUVOverlay, iFp)
+GO(SDL_LowerBlit, iFpppp)
+GO(SDL_MapRGB, uFpuuu)
+GO(SDL_MapRGBA, uFpuuuu)
+GO(SDL_NumJoysticks, iFv)
+GO(SDL_PeepEvents, iFpiiu)
+GO(SDL_PollEvent, iFp)
+GO(SDL_PumpEvents, vFv)
+GO(SDL_PushEvent, iFp)
+GO(SDL_Quit, vFv)
+GO(SDL_QuitSubSystem, vFu)
+GOM(SDL_RWFromConstMem, pFEpi)
+GOM(SDL_RWFromFP, pFEpi)
+GOM(SDL_RWFromFile, pFEpp)
+GOM(SDL_RWFromMem, pFEpi)
+GOM(SDL_ReadBE16, uFEp)
+GOM(SDL_ReadBE32, uFEp)
+GOM(SDL_ReadBE64, UFEp)
+GOM(SDL_ReadLE16, uFEp)
+GOM(SDL_ReadLE32, uFEp)
+GOM(SDL_ReadLE64, UFEp)
+GO(SDL_RegisterApp, iFpup)
+GOM(SDL_RemoveTimer, iFEp)
+GOM(SDL_SaveBMP_RW, iFEppi)
+GO(SDL_SemPost, iFp)
+GO(SDL_SemTryWait, iFp)
+GO(SDL_SemValue, uFp)
+GO(SDL_SemWait, iFp)
+GO(SDL_SemWaitTimeout, iFpu)
+GO(SDL_SetAlpha, iFpuu)
+GO(SDL_SetClipRect, iFpp)
+GO(SDL_SetColorKey, iFpuu)
+GO(SDL_SetColors, iFppii)
+GO(SDL_SetCursor, vFp)
+GO(SDL_SetError, vFpppppp)      // use ..., so putting arbitrary number of arguments...
+GOM(SDL_SetEventFilter, vFEp)
+GO(SDL_SetGamma, iFfff)
+GO(SDL_SetGammaRamp, iFppp)
+GO(SDL_SetModState, vFi)
+GO(SDL_SetModuleHandle, vFp)
+GO(SDL_SetPalette, iFpipii)
+GOM(SDL_SetTimer, iFEup)
+GO(SDL_SetVideoMode, pFiiiu)
+GO(SDL_ShowCursor, iFi)
+GO(SDL_SoftStretch, iFpppp)
+GO(SDL_ThreadID, uFv)
+GOM(SDL_UnloadObject, vFEp)
+GO(SDL_UnlockSurface, vFp)
+GO(SDL_UnlockYUVOverlay, vFp)
+GO(SDL_UnregisterApp, vFv)
+GO(SDL_UpdateRect, vFpiiii)
+GO(SDL_UpdateRects, vFpip)
+GO(SDL_UpperBlit, iFpppp)
+GO(SDL_VideoDriverName, pFpi)
+GO(SDL_VideoInit, iFpu)
+GO(SDL_VideoModeOK, iFiiiu)
+GO(SDL_VideoQuit, vFv)
+GO(SDL_WM_GetCaption, vFpp)
+GO(SDL_WM_GrabInput, iFi)
+GO(SDL_WM_IconifyWindow, iFv)
+GO(SDL_WM_SetCaption, vFpp)
+GO(SDL_WM_SetIcon, vFpp)
+GO(SDL_WM_ToggleFullScreen, iFp)
+GO(SDL_WaitEvent, iFp)
+GO(SDL_WaitThread, vFpp)
+GO(SDL_WarpMouse, vFWW)
+GO(SDL_WasInit, uFu)
+GOM(SDL_WriteBE16, uFEpW)
+GOM(SDL_WriteBE32, uFEpu)
+GOM(SDL_WriteBE64, uFEpU)
+GOM(SDL_WriteLE16, uFEpW)
+GOM(SDL_WriteLE32, uFEpu)
+GOM(SDL_WriteLE64, uFEpU)
+GO(SDL_framerateDelay, uFp)
+GO(SDL_getFramecount, iFp)
+GO(SDL_getFramerate, iFp)
+GO(SDL_iconv, uFppppp)
+GO(SDL_iconv_close, iFp)
+GO(SDL_iconv_open, pFpp)
+GO(SDL_iconv_string, pFpppu)
+GO(SDL_initFramerate, vFp)
+GO(SDL_lltoa, pFIpi)
+GO(SDL_ltoa, pFipi)
+GO(SDL_main, iFip)
+GO(SDL_memcmp, iFppu)
+GO(SDL_mutexP, iFp)
+GO(SDL_mutexV, iFp)
+GO(SDL_revcpy, pFppu)
+GO(SDL_setFramerate, iFpu)
+GO(SDL_snprintf, iFpupppppp)    // use ...
+GO(SDL_sscanf, iFppppppp)       // use ...
+GO(SDL_strcasecmp, iFpp)
+GO(SDL_strchr, pFpi)
+GO(SDL_strcmp, iFpp)
+GO(SDL_strdup, pFp)
+GO(SDL_strlcat, uFppu)
+GO(SDL_strlcpy, uFppu)
+GO(SDL_strlen, uFp)
+GO(SDL_strlwr, pFp)
+GO(SDL_strncasecmp, iFppu)
+GO(SDL_strncmp, iFppu)
+GO(SDL_strrchr, pFpi)
+GO(SDL_strrev, pFp)
+GO(SDL_strstr, pFpp)
+GO(SDL_strtod, dFpp)
+GO(SDL_strtol, iFppi)
+GO(SDL_strtoll, IFppi)
+GO(SDL_strtoul, uFppi)
+GO(SDL_strtoull, UFppi)
+GO(SDL_strupr, pFp)
+GO(SDL_ulltoa, pFUpi)
+GO(SDL_ultoa, pFupi)
+GO(SDL_vsnprintf, iFpupV)
+GOM(SDL_OpenAudio, iFEpp)
+GO(SDL_LockAudio, vFv)
+GO(SDL_UnlockAudio, vFv)
+GO(SDL_PauseAudio, vFi)
+GO(SDL_GetAudioStatus, iFv)
+GO(SDL_LoadWAV, pFpppp)
+GO(SDL_FreeWAV, vFp)
+GOM(SDL_LoadWAV_RW, pFEpippp)
+GO(SDL_BuildAudioCVT, iFpuuiuui)
+GO(SDL_ConvertAudio, iFp)
+GO(SDL_AudioInit, iFp)
+GO(SDL_AudioQuit, vFv) // should free callback
+GO(SDL_MixAudio, vFppui)
+GO(SDL_CloseAudio, vFv) // should free callback
+GO(SDL_AudioDriverName, pFpi)
+
+#endif
\ No newline at end of file
diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c
new file mode 100755
index 00000000..3dda257e
--- /dev/null
+++ b/src/wrapped/wrappedsdl2.c
@@ -0,0 +1,994 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+#include <stdarg.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper.h"
+#include "bridge.h"
+#include "callback.h"
+#include "librarian.h"
+#include "librarian/library_private.h"
+#include "emu/x64emu_private.h"
+#include "box64context.h"
+#include "sdl2rwops.h"
+#include "myalign.h"
+#include "threads.h"
+
+static int sdl_Yes() { return 1;}
+static int sdl_No() { return 0;}
+int EXPORT my2_SDL_Has3DNow() __attribute__((alias("sdl_No")));
+int EXPORT my2_SDL_Has3DNowExt() __attribute__((alias("sdl_No")));
+int EXPORT my2_SDL_HasAltiVec() __attribute__((alias("sdl_No")));
+int EXPORT my2_SDL_HasMMX() __attribute__((alias("sdl_Yes")));
+int EXPORT my2_SDL_HasMMXExt() __attribute__((alias("sdl_Yes")));
+int EXPORT my2_SDL_HasNEON() __attribute__((alias("sdl_No")));   // No neon in x86 ;)
+int EXPORT my2_SDL_HasRDTSC() __attribute__((alias("sdl_Yes")));
+int EXPORT my2_SDL_HasSSE() __attribute__((alias("sdl_Yes")));
+int EXPORT my2_SDL_HasSSE2() __attribute__((alias("sdl_Yes")));
+int EXPORT my2_SDL_HasSSE3() __attribute__((alias("sdl_Yes")));
+int EXPORT my2_SDL_HasSSE41() __attribute__((alias("sdl_No")));
+int EXPORT my2_SDL_HasSSE42() __attribute__((alias("sdl_No")));
+
+typedef struct {
+  int32_t freq;
+  uint16_t format;
+  uint8_t channels;
+  uint8_t silence;
+  uint16_t samples;
+  uint32_t size;
+  void (*callback)(void *userdata, uint8_t *stream, int32_t len);
+  void *userdata;
+} SDL2_AudioSpec;
+
+typedef struct {
+    uint8_t data[16];
+} SDL_JoystickGUID;
+
+typedef union {
+    SDL_JoystickGUID guid;
+    uint32_t         u[4];
+} SDL_JoystickGUID_Helper;
+
+typedef struct
+{
+    int32_t bindType;   // enum
+    union
+    {
+        int button;
+        int axis;
+        struct {
+            int hat;
+            int hat_mask;
+        } hat;
+    } value;
+} SDL_GameControllerButtonBind;
+
+
+// TODO: put the wrapper type in a dedicate include
+typedef void  (*vFv_t)();
+typedef void* (*pFv_t)();
+typedef int32_t (*iFp_t)(void*);
+typedef int32_t (*iFip_t)(int32_t, void*);
+typedef int32_t (*iFWW_t)(uint16_t, uint16_t);
+typedef void* (*pFpi_t)(void*, int32_t);
+typedef void* (*pFp_t)(void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef int32_t (*iFppi_t)(void*, void*, int32_t);
+typedef int32_t (*iFpippi_t)(void*, int32_t, void*, void*, int32_t);
+typedef int32_t (*iFppp_t)(void*, void*, void*);
+typedef void* (*pFpippp_t)(void*, int32_t, void*, void*, void*);
+typedef void*  (*pFpp_t)(void*, void*);
+typedef void*  (*pFppp_t)(void*, void*, void*);
+typedef void  (*vFp_t)(void*);
+typedef void  (*vFpp_t)(void*, void*);
+typedef void  (*vFiupp_t)(int32_t, uint32_t, void*, void*);
+typedef int32_t (*iFpupp_t)(void*, uint32_t, void*, void*);
+typedef uint32_t (*uFu_t)(uint32_t);
+typedef uint32_t (*uFp_t)(void*);
+typedef uint32_t (*uFupp_t)(uint32_t, void*, void*);
+typedef int64_t (*IFp_t)(void*);
+typedef uint64_t (*UFp_t)(void*);
+typedef int32_t (*iFpi_t)(void*, int32_t);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef int32_t (*iFUU_t)(uint64_t, uint64_t);
+typedef int32_t (*iFupp_t)(uint32_t, void*, void*);
+typedef uint32_t (*uFpC_t)(void*, uint8_t);
+typedef uint32_t (*uFpW_t)(void*, uint16_t);
+typedef uint32_t (*uFpu_t)(void*, uint32_t);
+typedef uint32_t (*uFpU_t)(void*, uint64_t);
+
+#define SUPER() \
+    GO(SDL_Quit, vFv_t)                             \
+    GO(SDL_OpenAudio, iFpp_t)                       \
+    GO(SDL_OpenAudioDevice, iFpippi_t)              \
+    GO(SDL_LoadFile_RW, pFpi_t)                     \
+    GO(SDL_LoadBMP_RW, pFpi_t)                      \
+    GO(SDL_RWFromConstMem, pFpi_t)                  \
+    GO(SDL_RWFromFP, pFpi_t)                        \
+    GO(SDL_RWFromFile, pFpp_t)                      \
+    GO(SDL_RWFromMem, pFpi_t)                       \
+    GO(SDL_SaveBMP_RW, iFppi_t)                     \
+    GO(SDL_LoadWAV_RW, pFpippp_t)                   \
+    GO(SDL_GameControllerAddMappingsFromRW, iFpi_t) \
+    GO(SDL_AllocRW, sdl2_allocrw)                   \
+    GO(SDL_FreeRW, sdl2_freerw)                     \
+    GO(SDL_ReadU8, uFp_t)                           \
+    GO(SDL_ReadBE16, uFp_t)                         \
+    GO(SDL_ReadBE32, uFp_t)                         \
+    GO(SDL_ReadBE64, UFp_t)                         \
+    GO(SDL_ReadLE16, uFp_t)                         \
+    GO(SDL_ReadLE32, uFp_t)                         \
+    GO(SDL_ReadLE64, UFp_t)                         \
+    GO(SDL_WriteU8, uFpC_t)                         \
+    GO(SDL_WriteBE16, uFpW_t)                       \
+    GO(SDL_WriteBE32, uFpu_t)                       \
+    GO(SDL_WriteBE64, uFpU_t)                       \
+    GO(SDL_WriteLE16, uFpW_t)                       \
+    GO(SDL_WriteLE32, uFpu_t)                       \
+    GO(SDL_WriteLE64, uFpU_t)                       \
+    GO(SDL_AddTimer, uFupp_t)                       \
+    GO(SDL_RemoveTimer, uFu_t)                      \
+    GO(SDL_CreateThread, pFppp_t)                   \
+    GO(SDL_KillThread, vFp_t)                       \
+    GO(SDL_GetEventFilter, iFpp_t)                  \
+    GO(SDL_SetEventFilter, vFpp_t)                  \
+    GO(SDL_LogGetOutputFunction, vFpp_t)            \
+    GO(SDL_LogSetOutputFunction, vFpp_t)            \
+    GO(SDL_LogMessageV, vFiupp_t)                   \
+    GO(SDL_GL_GetProcAddress, pFp_t)                \
+    GO(SDL_TLSSet, iFupp_t)                         \
+    GO(SDL_AddEventWatch, vFpp_t)                   \
+    GO(SDL_DelEventWatch, vFpp_t)                   \
+    GO(SDL_SaveAllDollarTemplates, iFp_t)           \
+    GO(SDL_SaveDollarTemplate, iFip_t)              \
+    GO(SDL_IsJoystickPS4, iFWW_t)                   \
+    GO(SDL_IsJoystickNintendoSwitchPro, iFWW_t)     \
+    GO(SDL_IsJoystickSteamController, iFWW_t)       \
+    GO(SDL_IsJoystickXbox360, iFWW_t)               \
+    GO(SDL_IsJoystickXboxOne, iFWW_t)               \
+    GO(SDL_IsJoystickXInput, iFUU_t)                \
+    GO(SDL_IsJoystickHIDAPI, iFUU_t)                \
+    GO(SDL_Vulkan_GetVkGetInstanceProcAddr, pFv_t)  \
+
+typedef struct sdl2_my_s {
+    #define GO(A, B)    B   A;
+    SUPER()
+    #undef GO
+} sdl2_my_t;
+
+void* getSDL2My(library_t* lib)
+{
+    sdl2_my_t* my = (sdl2_my_t*)calloc(1, sizeof(sdl2_my_t));
+    #define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
+    SUPER()
+    #undef GO
+    return my;
+}
+
+void freeSDL2My(void* lib)
+{
+    /*sdl2_my_t *my = (sdl2_my_t *)lib;*/
+}
+#undef SUPER
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// Timer
+#define GO(A)   \
+static uintptr_t my_Timer_fct_##A = 0;                                      \
+static uint32_t my_Timer_##A(uint32_t a, void* b)                           \
+{                                                                           \
+    return (uint32_t)RunFunction(my_context, my_Timer_fct_##A, 2, a, b);    \
+}
+SUPER()
+#undef GO
+static void* find_Timer_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_Timer_fct_##A == (uintptr_t)fct) return my_Timer_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_Timer_fct_##A == 0) {my_Timer_fct_##A = (uintptr_t)fct; return my_Timer_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL2 Timer callback\n");
+    return NULL;
+    
+}
+// AudioCallback
+#define GO(A)   \
+static uintptr_t my_AudioCallback_fct_##A = 0;                      \
+static void my_AudioCallback_##A(void* a, void* b, int c)           \
+{                                                                   \
+    RunFunction(my_context, my_AudioCallback_fct_##A, 3, a, b, c);  \
+}
+SUPER()
+#undef GO
+static void* find_AudioCallback_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_AudioCallback_fct_##A == (uintptr_t)fct) return my_AudioCallback_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_AudioCallback_fct_##A == 0) {my_AudioCallback_fct_##A = (uintptr_t)fct; return my_AudioCallback_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL2 AudioCallback callback\n");
+    return NULL;
+    
+}
+// eventfilter
+#define GO(A)   \
+static uintptr_t my_eventfilter_fct_##A = 0;                                \
+static int my_eventfilter_##A(void* userdata, void* event)                  \
+{                                                                           \
+    return (int)RunFunction(my_context, my_eventfilter_fct_##A, 2, userdata, event);    \
+}
+SUPER()
+#undef GO
+static void* find_eventfilter_Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my_eventfilter_fct_##A == (uintptr_t)fct) return my_eventfilter_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_eventfilter_fct_##A == 0) {my_eventfilter_fct_##A = (uintptr_t)fct; return my_eventfilter_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL2 eventfilter callback\n");
+    return NULL;
+    
+}
+static void* reverse_eventfilter_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(CheckBridged(my_context->sdl2lib->priv.w.bridge, fct))
+        return (void*)CheckBridged(my_context->sdl2lib->priv.w.bridge, fct);
+    #define GO(A) if(my_eventfilter_##A == fct) return (void*)my_eventfilter_fct_##A;
+    SUPER()
+    #undef GO
+    return (void*)AddBridge(my_context->sdl2lib->priv.w.bridge, iFpp, fct, 0);
+}
+
+// LogOutput
+#define GO(A)   \
+static uintptr_t my_LogOutput_fct_##A = 0;                                  \
+static void my_LogOutput_##A(void* a, int b, int c, void* d)                \
+{                                                                           \
+    RunFunction(my_context, my_LogOutput_fct_##A, 4, a, b, c, d);  \
+}
+SUPER()
+#undef GO
+static void* find_LogOutput_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_LogOutput_fct_##A == (uintptr_t)fct) return my_LogOutput_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_LogOutput_fct_##A == 0) {my_LogOutput_fct_##A = (uintptr_t)fct; return my_LogOutput_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for SDL2 LogOutput callback\n");
+    return NULL;
+}
+static void* reverse_LogOutput_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(CheckBridged(my_context->sdl2lib->priv.w.bridge, fct))
+        return (void*)CheckBridged(my_context->sdl2lib->priv.w.bridge, fct);
+    #define GO(A) if(my_LogOutput_##A == fct) return (void*)my_LogOutput_fct_##A;
+    SUPER()
+    #undef GO
+    return (void*)AddBridge(my_context->sdl2lib->priv.w.bridge, vFpiip, fct, 0);
+}
+
+#undef SUPER
+
+// TODO: track the memory for those callback
+EXPORT int32_t my2_SDL_OpenAudio(x64emu_t* emu, void* d, void* o)
+{
+    SDL2_AudioSpec *desired = (SDL2_AudioSpec*)d;
+
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // create a callback
+    void *fnc = (void*)desired->callback;
+    desired->callback = find_AudioCallback_Fct(fnc);
+    int ret = my->SDL_OpenAudio(desired, (SDL2_AudioSpec*)o);
+    if (ret!=0) {
+        // error, clean the callback...
+        desired->callback = fnc;
+        return ret;
+    }
+    // put back stuff in place?
+    desired->callback = fnc;
+
+    return ret;
+}
+
+EXPORT int32_t my2_SDL_OpenAudioDevice(x64emu_t* emu, void* device, int32_t iscapture, void* d, void* o, int32_t allowed)
+{
+    SDL2_AudioSpec *desired = (SDL2_AudioSpec*)d;
+
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // create a callback
+    void *fnc = (void*)desired->callback;
+    desired->callback = find_AudioCallback_Fct(fnc);
+    int ret = my->SDL_OpenAudioDevice(device, iscapture, desired, (SDL2_AudioSpec*)o, allowed);
+    if (ret<=0) {
+        // error, clean the callback...
+        desired->callback = fnc;
+        return ret;
+    }
+    // put back stuff in place?
+    desired->callback = fnc;
+
+    return ret;
+}
+
+EXPORT void *my2_SDL_LoadFile_RW(x64emu_t* emu, void* a, int b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    void* r = my->SDL_LoadFile_RW(rw, b);
+    if(b==0)
+        RWNativeEnd2(rw);
+    return r;
+}
+EXPORT void *my2_SDL_LoadBMP_RW(x64emu_t* emu, void* a, int b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    void* r = my->SDL_LoadBMP_RW(rw, b);
+    if(b==0)
+        RWNativeEnd2(rw);
+    return r;
+}
+EXPORT int32_t my2_SDL_SaveBMP_RW(x64emu_t* emu, void* a, void* b, int c)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    int32_t r = my->SDL_SaveBMP_RW(rw, b, c);
+    if(c==0)
+        RWNativeEnd2(rw);
+    return r;
+}
+EXPORT void *my2_SDL_LoadWAV_RW(x64emu_t* emu, void* a, int b, void* c, void* d, void* e)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    void* r = my->SDL_LoadWAV_RW(rw, b, c, d, e);
+    if(b==0)
+        RWNativeEnd2(rw);
+    return r;
+}
+EXPORT int32_t my2_SDL_GameControllerAddMappingsFromRW(x64emu_t* emu, void* a, int b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    int32_t r = my->SDL_GameControllerAddMappingsFromRW(rw, b);
+    if(b==0)
+        RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_ReadU8(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_ReadU8(rw);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_ReadBE16(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_ReadBE16(rw);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_ReadBE32(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_ReadBE32(rw);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint64_t my2_SDL_ReadBE64(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint64_t r = my->SDL_ReadBE64(rw);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_ReadLE16(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_ReadLE16(rw);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_ReadLE32(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_ReadLE32(rw);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint64_t my2_SDL_ReadLE64(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint64_t r = my->SDL_ReadLE64(rw);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_WriteU8(x64emu_t* emu, void* a, uint8_t v)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_WriteU8(rw, v);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_WriteBE16(x64emu_t* emu, void* a, uint16_t v)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_WriteBE16(rw, v);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_WriteBE32(x64emu_t* emu, void* a, uint32_t v)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_WriteBE32(rw, v);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_WriteBE64(x64emu_t* emu, void* a, uint64_t v)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_WriteBE64(rw, v);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_WriteLE16(x64emu_t* emu, void* a, uint16_t v)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_WriteLE16(rw, v);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_WriteLE32(x64emu_t* emu, void* a, uint32_t v)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_WriteLE32(rw, v);
+    RWNativeEnd2(rw);
+    return r;
+}
+EXPORT uint32_t my2_SDL_WriteLE64(x64emu_t* emu, void* a, uint64_t v)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t r = my->SDL_WriteLE64(rw, v);
+    RWNativeEnd2(rw);
+    return r;
+}
+
+EXPORT void *my2_SDL_RWFromConstMem(x64emu_t* emu, void* a, int b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    void* r = my->SDL_RWFromConstMem(a, b);
+    return AddNativeRW2(emu, (SDL2_RWops_t*)r);
+}
+EXPORT void *my2_SDL_RWFromFP(x64emu_t* emu, void* a, int b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    void* r = my->SDL_RWFromFP(a, b);
+    return AddNativeRW2(emu, (SDL2_RWops_t*)r);
+}
+EXPORT void *my2_SDL_RWFromFile(x64emu_t* emu, void* a, void* b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    void* r = my->SDL_RWFromFile(a, b);
+    return AddNativeRW2(emu, (SDL2_RWops_t*)r);
+}
+EXPORT void *my2_SDL_RWFromMem(x64emu_t* emu, void* a, int b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    void* r = my->SDL_RWFromMem(a, b);
+    return AddNativeRW2(emu, (SDL2_RWops_t*)r);
+}
+
+EXPORT int64_t my2_SDL_RWseek(x64emu_t* emu, void* a, int64_t offset, int32_t whence)
+{
+    //sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    int64_t ret = RWNativeSeek2(rw, offset, whence);
+    RWNativeEnd2(rw);
+    return ret;
+}
+EXPORT int64_t my2_SDL_RWtell(x64emu_t* emu, void* a)
+{
+    //sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    int64_t ret = RWNativeSeek2(rw, 0, 1);  //1 == RW_SEEK_CUR
+    RWNativeEnd2(rw);
+    return ret;
+}
+EXPORT uint32_t my2_SDL_RWread(x64emu_t* emu, void* a, void* ptr, uint32_t size, uint32_t maxnum)
+{
+    //sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t ret = RWNativeRead2(rw, ptr, size, maxnum);
+    RWNativeEnd2(rw);
+    return ret;
+}
+EXPORT uint32_t my2_SDL_RWwrite(x64emu_t* emu, void* a, const void* ptr, uint32_t size, uint32_t maxnum)
+{
+    //sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t ret = RWNativeWrite2(rw, ptr, size, maxnum);
+    RWNativeEnd2(rw);
+    return ret;
+}
+EXPORT int my2_SDL_RWclose(x64emu_t* emu, void* a)
+{
+    //sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    return RWNativeClose2(rw);
+}
+
+EXPORT int my2_SDL_SaveAllDollarTemplates(x64emu_t* emu, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t ret = my->SDL_SaveAllDollarTemplates(rw);
+    RWNativeEnd2(rw);
+    return ret;
+}
+
+EXPORT int my2_SDL_SaveDollarTemplate(x64emu_t* emu, int gesture, void* a)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    SDL2_RWops_t *rw = RWNativeStart2(emu, (SDL2_RWops_t*)a);
+    uint32_t ret = my->SDL_SaveDollarTemplate(gesture, rw);
+    RWNativeEnd2(rw);
+    return ret;
+}
+
+EXPORT uint32_t my2_SDL_AddTimer(x64emu_t* emu, uint32_t a, void* f, void* p)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    return my->SDL_AddTimer(a, find_Timer_Fct(f), p);
+}
+
+EXPORT void my2_SDL_RemoveTimer(x64emu_t* emu, uint32_t t)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    my->SDL_RemoveTimer(t);
+}
+
+EXPORT void my2_SDL_SetEventFilter(x64emu_t* emu, void* p, void* userdata)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    my->SDL_SetEventFilter(find_eventfilter_Fct(p), userdata);
+}
+EXPORT int my2_SDL_GetEventFilter(x64emu_t* emu, void** f, void* userdata)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    int ret = my->SDL_GetEventFilter(f, userdata);
+    *f = reverse_eventfilter_Fct(*f);
+    return ret;
+}
+
+EXPORT void my2_SDL_LogGetOutputFunction(x64emu_t* emu, void** f, void* arg)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    my->SDL_LogGetOutputFunction(f, arg);
+    if(*f) *f = reverse_LogOutput_Fct(*f);
+}
+EXPORT void my2_SDL_LogSetOutputFunction(x64emu_t* emu, void* f, void* arg)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    my->SDL_LogSetOutputFunction(find_LogOutput_Fct(f), arg);
+}
+
+EXPORT int my2_SDL_vsnprintf(x64emu_t* emu, void* buff, uint32_t s, void * fmt, void * b, va_list V)
+{
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign((const char*)fmt, *(uint32_t**)b, emu->scratch);
+    PREPARE_VALIST;
+    void* f = vsnprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, VARARGS);
+    return r;
+    #else
+    void* f = vsnprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, *(uint32_t**)b);
+    return r;
+    #endif
+}
+
+EXPORT void* my2_SDL_CreateThread(x64emu_t* emu, void* f, void* n, void* p)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    void* et = NULL;
+    return my->SDL_CreateThread(my_prepare_thread(emu, f, p, 0, &et), n, et);
+}
+
+EXPORT int my2_SDL_snprintf(x64emu_t* emu, void* buff, uint32_t s, void * fmt, void * b, va_list V) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    void* f = vsnprintf;
+    return ((iFpupp_t)f)(buff, s, fmt, VARARGS);
+    #else
+    return vsnprintf((char*)buff, s, (char*)fmt, V);
+    #endif
+}
+
+char EXPORT *my2_SDL_GetBasePath(x64emu_t* emu) {
+    char* p = strdup(emu->context->fullpath);
+    char* b = strrchr(p, '/');
+    if(b)
+        *(b+1) = '\0';
+    return p;
+}
+
+EXPORT void my2_SDL_LogCritical(x64emu_t* emu, int32_t cat, void* fmt, void *b) {
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // SDL_LOG_PRIORITY_CRITICAL == 6
+    #ifndef NOALIGN
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    my->SDL_LogMessageV(cat, 6, fmt, VARARGS);
+    #else
+    my->SDL_LogMessageV(cat, 6, fmt, b);
+    #endif
+}
+
+EXPORT void my2_SDL_LogError(x64emu_t* emu, int32_t cat, void* fmt, void *b) {
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // SDL_LOG_PRIORITY_ERROR == 5
+    #ifndef NOALIGN
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    my->SDL_LogMessageV(cat, 5, fmt, VARARGS);
+    #else
+    my->SDL_LogMessageV(cat, 5, fmt, b);
+    #endif
+}
+
+EXPORT void my2_SDL_LogWarn(x64emu_t* emu, int32_t cat, void* fmt, void *b) {
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // SDL_LOG_PRIORITY_WARN == 4
+    #ifndef NOALIGN
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    my->SDL_LogMessageV(cat, 4, fmt, VARARGS);
+    #else
+    my->SDL_LogMessageV(cat, 4, fmt, b);
+    #endif
+}
+
+EXPORT void my2_SDL_LogInfo(x64emu_t* emu, int32_t cat, void* fmt, void *b) {
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // SDL_LOG_PRIORITY_INFO == 3
+    #ifndef NOALIGN
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    my->SDL_LogMessageV(cat, 3, fmt, VARARGS);
+    #else
+    my->SDL_LogMessageV(cat, 3, fmt, b);
+    #endif
+}
+
+EXPORT void my2_SDL_LogDebug(x64emu_t* emu, int32_t cat, void* fmt, void *b) {
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // SDL_LOG_PRIORITY_DEBUG == 2
+    #ifndef NOALIGN
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    my->SDL_LogMessageV(cat, 2, fmt, VARARGS);
+    #else
+    my->SDL_LogMessageV(cat, 2, fmt, b);
+    #endif
+}
+
+EXPORT void my2_SDL_LogVerbose(x64emu_t* emu, int32_t cat, void* fmt, void *b) {
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // SDL_LOG_PRIORITY_VERBOSE == 1
+    #ifndef NOALIGN
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    my->SDL_LogMessageV(cat, 1, fmt, VARARGS);
+    #else
+    my->SDL_LogMessageV(cat, 1, fmt, b);
+    #endif
+}
+
+EXPORT void my2_SDL_Log(x64emu_t* emu, void* fmt, void *b) {
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // SDL_LOG_PRIORITY_INFO == 3
+    // SDL_LOG_CATEGORY_APPLICATION == 0
+    #ifndef NOALIGN
+    myStackAlign((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST;
+    my->SDL_LogMessageV(0, 3, fmt, VARARGS);
+    #else
+    my->SDL_LogMessageV(0, 3, fmt, b);
+    #endif
+}
+
+void fillGLProcWrapper(box64context_t*);
+EXPORT void* my2_SDL_GL_GetProcAddress(x64emu_t* emu, void* name) 
+{
+    khint_t k;
+    const char* rname = (const char*)name;
+    printf_log(LOG_DEBUG, "Calling SDL_GL_GetProcAddress(%s)\n", rname);
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    // check if glxprocaddress is filled, and search for lib and fill it if needed
+    if(!emu->context->glwrappers)
+        fillGLProcWrapper(emu->context);
+    // get proc adress using actual glXGetProcAddress
+    k = kh_get(symbolmap, emu->context->glmymap, rname);
+    int is_my = (k==kh_end(emu->context->glmymap))?0:1;
+    void* symbol;
+    if(is_my) {
+        // try again, by using custom "my_" now...
+        char tmp[200];
+        strcpy(tmp, "my_");
+        strcat(tmp, rname);
+        symbol = dlsym(emu->context->box64lib, tmp);
+    } else 
+        symbol = my->SDL_GL_GetProcAddress(name);
+    if(!symbol)
+        return NULL;    // easy
+    // check if alread bridged
+    uintptr_t ret = CheckBridged(emu->context->system, symbol);
+    if(ret)
+        return (void*)ret; // already bridged
+    // get wrapper    
+    k = kh_get(symbolmap, emu->context->glwrappers, rname);
+    if(k==kh_end(emu->context->glwrappers) && strstr(rname, "ARB")==NULL) {
+        // try again, adding ARB at the end if not present
+        char tmp[200];
+        strcpy(tmp, rname);
+        strcat(tmp, "ARB");
+        k = kh_get(symbolmap, emu->context->glwrappers, tmp);
+    }
+    if(k==kh_end(emu->context->glwrappers) && strstr(rname, "EXT")==NULL) {
+        // try again, adding EXT at the end if not present
+        char tmp[200];
+        strcpy(tmp, rname);
+        strcat(tmp, "EXT");
+        k = kh_get(symbolmap, emu->context->glwrappers, tmp);
+    }
+    if(k==kh_end(emu->context->glwrappers)) {
+        printf_log(LOG_INFO, "Warning, no wrapper for %s\n", rname);
+        return NULL;
+    }
+    AddOffsetSymbol(emu->context->maplib, symbol, rname);
+    return (void*)AddBridge(emu->context->system, kh_value(emu->context->glwrappers, k), symbol, 0);
+}
+
+#define nb_once	16
+typedef void(*sdl2_tls_dtor)(void*);
+static uintptr_t dtor_emu[nb_once] = {0};
+static void tls_dtor_callback(int n, void* a)
+{
+	if(dtor_emu[n]) {
+        RunFunction(my_context, dtor_emu[n], 1, a);
+	}
+}
+#define GO(N) \
+void tls_dtor_callback_##N(void* a) \
+{ \
+	tls_dtor_callback(N, a); \
+}
+
+GO(0)
+GO(1)
+GO(2)
+GO(3)
+GO(4)
+GO(5)
+GO(6)
+GO(7)
+GO(8)
+GO(9)
+GO(10)
+GO(11)
+GO(12)
+GO(13)
+GO(14)
+GO(15)
+#undef GO
+static const sdl2_tls_dtor dtor_cb[nb_once] = {
+	 tls_dtor_callback_0, tls_dtor_callback_1, tls_dtor_callback_2, tls_dtor_callback_3
+	,tls_dtor_callback_4, tls_dtor_callback_5, tls_dtor_callback_6, tls_dtor_callback_7
+	,tls_dtor_callback_8, tls_dtor_callback_9, tls_dtor_callback_10,tls_dtor_callback_11
+	,tls_dtor_callback_12,tls_dtor_callback_13,tls_dtor_callback_14,tls_dtor_callback_15
+};
+EXPORT int32_t my2_SDL_TLSSet(x64emu_t* emu, uint32_t id, void* value, void* dtor)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+	if(!dtor)
+		return my->SDL_TLSSet(id, value, NULL);
+	int n = 0;
+	while (n<nb_once) {
+		if(!dtor_emu[n] || (dtor_emu[n])==((uintptr_t)dtor)) {
+			dtor_emu[n] = (uintptr_t)dtor;
+			return my->SDL_TLSSet(id, value, dtor_cb[n]);
+		}
+		++n;
+	}
+	printf_log(LOG_NONE, "Error: SDL2 SDL_TLSSet with destructor: no more slot!\n");
+	//emu->quit = 1;
+	return -1;
+}
+
+EXPORT void my2_SDL_AddEventWatch(x64emu_t* emu, void* p, void* userdata)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    my->SDL_AddEventWatch(find_eventfilter_Fct(p), userdata);
+}
+EXPORT void my2_SDL_DelEventWatch(x64emu_t* emu, void* p, void* userdata)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    my->SDL_DelEventWatch(find_eventfilter_Fct(p), userdata);
+}
+
+// DL functions from wrappedlibdl.c
+void* my_dlopen(x64emu_t* emu, void *filename, int flag);
+int my_dlclose(x64emu_t* emu, void *handle);
+void* my_dlsym(x64emu_t* emu, void *handle, void *symbol);
+EXPORT void* my2_SDL_LoadObject(x64emu_t* emu, void* sofile)
+{
+    return my_dlopen(emu, sofile, 0);   // TODO: check correct flag value...
+}
+EXPORT void my2_SDL_UnloadObject(x64emu_t* emu, void* handle)
+{
+    my_dlclose(emu, handle);
+}
+EXPORT void* my2_SDL_LoadFunction(x64emu_t* emu, void* handle, void* name)
+{
+    return my_dlsym(emu, handle, name);
+}
+
+EXPORT int32_t my2_SDL_IsJoystickPS4(x64emu_t* emu, uint16_t vendor, uint16_t product_id)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    if(my->SDL_IsJoystickPS4)
+        return my->SDL_IsJoystickPS4(vendor, product_id);
+    // fallback
+    return 0;
+}
+EXPORT int32_t my2_SDL_IsJoystickNintendoSwitchPro(x64emu_t* emu, uint16_t vendor, uint16_t product_id)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    if(my->SDL_IsJoystickNintendoSwitchPro)
+        return my->SDL_IsJoystickNintendoSwitchPro(vendor, product_id);
+    // fallback
+    return 0;
+}
+EXPORT int32_t my2_SDL_IsJoystickSteamController(x64emu_t* emu, uint16_t vendor, uint16_t product_id)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    if(my->SDL_IsJoystickSteamController)
+        return my->SDL_IsJoystickSteamController(vendor, product_id);
+    // fallback
+    return 0;
+}
+EXPORT int32_t my2_SDL_IsJoystickXbox360(x64emu_t* emu, uint16_t vendor, uint16_t product_id)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    if(my->SDL_IsJoystickXbox360)
+        return my->SDL_IsJoystickXbox360(vendor, product_id);
+    // fallback
+    return 0;
+}
+EXPORT int32_t my2_SDL_IsJoystickXboxOne(x64emu_t* emu, uint16_t vendor, uint16_t product_id)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    if(my->SDL_IsJoystickXboxOne)
+        return my->SDL_IsJoystickXboxOne(vendor, product_id);
+    // fallback
+    return 0;
+}
+EXPORT int32_t my2_SDL_IsJoystickXInput(x64emu_t* emu, uint64_t a, uint64_t b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    if(my->SDL_IsJoystickXInput)
+        return my->SDL_IsJoystickXInput(a, b);
+    // fallback
+    return 0;
+}
+EXPORT int32_t my2_SDL_IsJoystickHIDAPI(x64emu_t* emu, uint64_t a, uint64_t b)
+{
+    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+
+    if(my->SDL_IsJoystickHIDAPI)
+        return my->SDL_IsJoystickHIDAPI(a, b);
+    // fallback
+    return 0;
+}
+
+void* my_vkGetInstanceProcAddr(x64emu_t* emu, void* device, void* name);
+EXPORT void* my2_SDL_Vulkan_GetVkGetInstanceProcAddr(x64emu_t* emu)
+{
+//    sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
+    
+//    if(!emu->context->vkprocaddress)
+//        emu->context->vkprocaddress = (vkprocaddess_t)my->SDL_Vulkan_GetVkGetInstanceProcAddr();
+
+//    if(emu->context->vkprocaddress)
+//        return (void*)AddCheckBridge(my_context->sdl2lib->priv.w.bridge, pFEpp, my_vkGetInstanceProcAddr, 0);
+    return NULL;
+}
+
+const char* sdl2Name = "libSDL2-2.0.so.0";
+#define LIBNAME sdl2
+
+#define CUSTOM_INIT \
+    box64->sdl2lib = lib;                                           \
+    lib->priv.w.p2 = getSDL2My(lib);                                \
+    box64->sdl2allocrw = ((sdl2_my_t*)lib->priv.w.p2)->SDL_AllocRW; \
+    box64->sdl2freerw  = ((sdl2_my_t*)lib->priv.w.p2)->SDL_FreeRW;  \
+    lib->altmy = strdup("my2_");                                    \
+    lib->priv.w.needed = 4;                                         \
+    lib->priv.w.neededlibs = (char**)calloc(lib->priv.w.needed, sizeof(char*)); \
+    lib->priv.w.neededlibs[0] = strdup("libdl.so.2");               \
+    lib->priv.w.neededlibs[1] = strdup("libm.so.6");                \
+    lib->priv.w.neededlibs[2] = strdup("librt.so.1");               \
+    lib->priv.w.neededlibs[3] = strdup("libpthread.so.0");
+
+#define CUSTOM_FINI \
+    ((sdl2_my_t *)lib->priv.w.p2)->SDL_Quit();              \
+    freeSDL2My(lib->priv.w.p2);                             \
+    free(lib->priv.w.p2);                                   \
+    ((box64context_t*)(lib->context))->sdl2lib = NULL;      \
+    ((box64context_t*)(lib->context))->sdl2allocrw = NULL;  \
+    ((box64context_t*)(lib->context))->sdl2freerw = NULL;
+
+
+#include "wrappedlib_init.h"
+
+
diff --git a/src/wrapped/wrappedsdl2_private.h b/src/wrapped/wrappedsdl2_private.h
new file mode 100755
index 00000000..e93699c2
--- /dev/null
+++ b/src/wrapped/wrappedsdl2_private.h
@@ -0,0 +1,689 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh!
+#endif
+
+// _fini
+// _init
+GO(SDL_abs, iFi)
+GO(SDL_acos, dFd)
+GO(SDL_acosf, fFf)
+GOM(SDL_AddEventWatch, vFEpp)
+// SDL_AddHintCallback
+GOM(SDL_AddTimer, pFEupp)
+GO(SDL_AllocFormat, pFu)
+GO(SDL_AllocPalette, pFi)
+GO(SDL_AllocRW, pFv)    // no need to create a "my_" probably
+GO(SDL_asin, dFd)
+GO(SDL_asinf, fFf)
+GO(SDL_atan, dFd)
+GO(SDL_atan2, dFdd)
+GO(SDL_atan2f, fFff)
+GO(SDL_atanf, fFf)
+GO(SDL_atof, dFp)
+GO(SDL_atoi, iFp)
+GO(SDL_AtomicAdd, iFpi)
+GO(SDL_AtomicCAS, iFpii)
+GO(SDL_AtomicCASPtr, iFppp)
+GO(SDL_AtomicGet, iFp)
+GO(SDL_AtomicGetPtr, pFp)
+GO(SDL_AtomicLock, vFp)
+GO(SDL_AtomicSet, iFpi)
+GO(SDL_AtomicSetPtr, pFpp)
+GO(SDL_AtomicTryLock, iFp)
+GO(SDL_AtomicUnlock, vFp)
+GO(SDL_AudioInit, iFp)
+GO(SDL_AudioQuit, vFv)
+GO(SDL_AudioStreamAvailable, iFp)
+GO(SDL_AudioStreamClear, vFp)
+GO(SDL_AudioStreamFlush, iFp)
+GO(SDL_AudioStreamGet, iFppi)
+GO(SDL_AudioStreamPut, iFppi)
+GO(SDL_BuildAudioCVT, iFpuuiuui)
+GO(SDL_CalculateGammaRamp, vFfp)
+GO(SDL_calloc, pFuu)
+GO(SDL_CaptureMouse, iFi)
+GO(SDL_ceil, dFd)
+GO(SDL_ceilf, fFf)
+GO(SDL_ClearError, vFv)
+GO(SDL_ClearHints, vFv)
+GO(SDL_ClearQueuedAudio, vFu)
+GO(SDL_CloseAudio, vFv)
+GO(SDL_CloseAudioDevice, vFi)
+GO(SDL_ComposeCustomBlendMode, iFiiiiii)
+GO(SDL_CondBroadcast, iFp)
+GO(SDL_CondSignal, iFp)
+GO(SDL_CondWait, iFpp)
+GO(SDL_CondWaitTimeout, iFppu)
+GO(SDL_ConvertAudio, iFp)
+GO(SDL_ConvertPixels, iFiiupiupi)
+GO(SDL_ConvertSurface, pFppu)
+GO(SDL_ConvertSurfaceFormat, pFpuu)
+GO(SDL_copysign, dFdd)
+GO(SDL_copysignf, fFff)
+GO(SDL_cos, dFd)
+GO(SDL_cosf, fFf)
+GO(SDL_CreateColorCursor, pFpii)
+GO(SDL_CreateCond, pFv)
+GO(SDL_CreateCursor, pFppiiii)
+GO(SDL_CreateMutex, pFv)
+GO(SDL_CreateRenderer, pFpiu)
+GO(SDL_CreateRGBSurface, pFuiiiuuuu)
+GO(SDL_CreateRGBSurfaceFrom, pFpiiiiuuuu)
+GO(SDL_CreateRGBSurfaceWithFormat, pFuiiiu)
+GO(SDL_CreateRGBSurfaceWithFormatFrom, pFpiiiiu)
+GO(SDL_CreateSemaphore, pFu)
+GO(SDL_CreateShapedWindow, pFpuuuuu)
+GO(SDL_CreateSoftwareRenderer, pFp)
+GO(SDL_CreateSystemCursor, pFu)
+GO(SDL_CreateTexture, pFpuiii)
+GO(SDL_CreateTextureFromSurface, pFpp)
+GOM(SDL_CreateThread, pFEppp)
+// SDL_CreateThreadWithStackSize
+GO(SDL_CreateWindow, pFpiiiiu)
+GO(SDL_CreateWindowAndRenderer, iFiiupp)
+GO(SDL_CreateWindowFrom, pFp)
+GO(SDL_Delay, vFu)
+GOM(SDL_DelEventWatch, vFEpp)
+// SDL_DelHintCallback
+GO(SDL_DequeueAudio, uFupu)
+GO(SDL_DestroyCond, vFp)
+GO(SDL_DestroyMutex, vFp)
+GO(SDL_DestroyRenderer, vFp)
+GO(SDL_DestroySemaphore, vFp)
+GO(SDL_DestroyTexture, vFp)
+GO(SDL_DestroyWindow, vFp)
+GO(SDL_DetachThread, vFp)
+GO(SDL_DisableScreenSaver, vFv)
+GO(SDL_DuplicateSurface, pFp)
+// SDL_DYNAPI_entry
+GO(SDL_EnableScreenSaver, vFv)
+GO(SDL_EnclosePoints, iFpipp)
+GO(SDL_Error, iFi)
+GO(SDL_EventState, CFui)
+GO(SDL_exp, dFd)
+GO(SDL_expf, fFf)
+GO(SDL_fabs, dFd)
+GO(SDL_fabsf, fFf)
+GO(SDL_FillRect, iFppu)
+GO(SDL_FillRects, iFppiu)
+// SDL_FilterEvents
+GO(SDL_floor, dFd)
+GO(SDL_floorf,fFf)
+GO(SDL_FlushEvent, vFu)
+GO(SDL_FlushEvents, vFuu)
+GO(SDL_fmod, dFdd)
+GO(SDL_fmodf, fFff)
+GO(SDL_free, vFp)
+GO(SDL_FreeAudioStream, vFp)
+GO(SDL_FreeCursor, vFp)
+GO(SDL_FreeFormat, vFp)
+GO(SDL_FreePalette, vFp)
+GO(SDL_FreeRW, vFp)
+GO(SDL_FreeSurface, vFp)
+GO(SDL_FreeWAV, vFp)
+GO(SDL_GameControllerAddMapping, iFp)
+GOM(SDL_GameControllerAddMappingsFromRW, iFEpi)
+GO(SDL_GameControllerClose, vFp)
+GO(SDL_GameControllerEventState, iFi)
+GO(SDL_GameControllerFromInstanceID, pFi)
+GO(SDL_GameControllerGetAttached, iFp)
+GO(SDL_GameControllerGetAxis, iFpi)
+GO(SDL_GameControllerGetAxisFromString, uFp)
+GO(SDL_GameControllerGetBindForAxis, HFpi)
+GO(SDL_GameControllerGetBindForButton, HFpi)
+GO(SDL_GameControllerGetButton, uFpi)
+GO(SDL_GameControllerGetButtonFromString, uFp)
+GO(SDL_GameControllerGetJoystick, pFp)
+GO(SDL_GameControllerGetPlayerIndex, iFp)
+GO(SDL_GameControllerGetProduct, WFp)
+GO(SDL_GameControllerGetProductVersion, WFp)
+GO(SDL_GameControllerGetStringForAxis, pFp)
+GO(SDL_GameControllerGetStringForButton, pFu)
+GO(SDL_GameControllerGetVendor, WFp)
+GO(SDL_GameControllerMapping, pFp)
+GO(SDL_GameControllerMappingForDeviceIndex, pFi)
+GOM(SDL_GameControllerMappingForGUID, pFpp)   // SDL_GameControllerMappingForGUID structure
+GO(SDL_GameControllerMappingForIndex, pFi)
+GO(SDL_GameControllerName, pFp)
+GO(SDL_GameControllerNameForIndex, pFi)
+GO(SDL_GameControllerNumMappings, iFv)
+GO(SDL_GameControllerOpen, pFi)
+GO(SDL_GameControllerRumble, iFpWWu)
+GO(SDL_GameControllerUpdate, vFv)
+// SDL_GetAssertionHandler
+GO(SDL_GetAssertionReport, pFv)
+GO(SDL_GetAudioDeviceName, pFii)
+GO(SDL_GetAudioDeviceStatus, iFi)
+GO(SDL_GetAudioDriver, pFi)
+GO(SDL_GetAudioStatus, iFv)
+GOM(SDL_GetBasePath, pFE)
+GO(SDL_GetClipboardText, pFv)
+GO(SDL_GetClipRect, vFpp)
+GO(SDL_GetClosestDisplayMode, pFipp)
+GO(SDL_GetColorKey, iFpp)
+GO(SDL_GetCPUCacheLineSize, iFv)
+GO(SDL_GetCPUCount, iFv)
+GO(SDL_GetCurrentAudioDriver, pFv)
+GO(SDL_GetCurrentDisplayMode, iFip)
+GO(SDL_GetCurrentVideoDriver, pFv)
+GO(SDL_GetCursor, pFv)
+// SDL_GetDefaultAssertionHandler
+GO(SDL_GetDefaultCursor, pFv)
+GO(SDL_GetDesktopDisplayMode, iFip)
+GO(SDL_GetDisplayBounds, iFip)
+GO(SDL_GetDisplayDPI, iFippp)
+GO(SDL_GetDisplayMode, iFiip)
+GO(SDL_GetDisplayName, pFi)
+GO(SDL_GetDisplayOrientation, iFi)
+GO(SDL_GetDisplayUsableBounds, iFip)
+GO(SDL_getenv, pFp)
+GO(SDL_GetError, pFv)
+GOM(SDL_GetEventFilter, iFpp)
+GO(SDL_GetGlobalMouseState, uFpp)
+GO(SDL_GetGrabbedWindow, pFv)
+GO(SDL_GetHint, pFp)
+GO(SDL_GetHintBoolean, iFpi)
+GO(SDL_GetJoystickGUIDInfo, vFppppp)   // the flat SDL_JoystickGUID stuct in 1st argument is same as 2 uint64
+GO(SDL_GetKeyboardFocus, pFv)
+GO(SDL_GetKeyboardState, pFp)
+GO(SDL_GetKeyFromName, pFp)
+GO(SDL_GetKeyFromScancode, uFu)
+GO(SDL_GetKeyName, pFu)
+GO(SDL_GetMemoryFunctions, iFpi)
+GO(SDL_GetModState, pFv)
+GO(SDL_GetMouseFocus, pFv)
+GO(SDL_GetMouseState, uFpp)
+GO(SDL_GetNumAllocations, iFv)
+GO(SDL_GetNumAudioDevices, iFi)
+GO(SDL_GetNumAudioDrivers, iFv)
+GO(SDL_GetNumDisplayModes, iFi)
+GO(SDL_GetNumRenderDrivers, iFv)
+GO(SDL_GetNumTouchDevices, iFv)
+GO(SDL_GetNumTouchFingers, iFu)
+GO(SDL_GetNumVideoDisplays, iFv)
+GO(SDL_GetNumVideoDrivers, iFv)
+GO(SDL_GetPerformanceCounter, UFv)
+GO(SDL_GetPerformanceFrequency, UFv)
+GO(SDL_GetPixelFormatName, pFu)
+GO(SDL_GetPlatform, pFv)
+GO(SDL_GetPowerInfo, iFpp)
+GO(SDL_GetPrefPath, pFpp)
+GO(SDL_GetQueuedAudioSize, uFi)
+GO(SDL_GetRelativeMouseMode, iFv)
+GO(SDL_GetRelativeMouseState, uFpp)
+GO(SDL_GetRenderDrawBlendMode, iFpp)
+GO(SDL_GetRenderDrawColor, iFppppp)
+GO(SDL_GetRenderDriverInfo, iFip)
+GO(SDL_GetRenderer, pFp)
+GO(SDL_GetRendererInfo, iFpp)
+GO(SDL_GetRendererOutputSize, iFppp)
+GO(SDL_GetRenderTarget, pFp)
+GO(SDL_GetRevision, pFv)
+GO(SDL_GetRevisionNumber, iFv)
+GO(SDL_GetRGB, vFupppp)
+GO(SDL_GetRGBA, vFuppppp)
+GO(SDL_GetScancodeFromKey, uFu)
+GO(SDL_GetScancodeFromName, iFp)
+GO(SDL_GetScancodeName, pFu)
+GO(SDL_GetShapedWindowMode, iFpp)
+GO(SDL_GetSurfaceAlphaMod, iFpp)
+GO(SDL_GetSurfaceBlendMode, iFpp)
+GO(SDL_GetSurfaceColorMod, iFpppp)
+GO(SDL_GetSystemRAM, iFv)
+GO(SDL_GetTextureAlphaMod, iFpp)
+GO(SDL_GetTextureBlendMode, iFpp)
+GO(SDL_GetTextureColorMod, iFpppp)
+GO(SDL_GetThreadID, uFp)
+GO(SDL_GetThreadName, pFp)
+GO(SDL_GetTicks, uFv)
+GO(SDL_GetTouchDevice, uFi)
+GO(SDL_GetTouchDeviceType, iFi)
+GO(SDL_GetTouchFinger, pFui)
+GO(SDL_GetVersion, vFp)
+GO(SDL_GetVideoDriver, pFi)
+GO(SDL_GetWindowBordersSize, iFppppp)
+GO(SDL_GetWindowBrightness, fFp)
+GO(SDL_GetWindowData, pFpp)
+GO(SDL_GetWindowDisplayIndex, iFp)
+GO(SDL_GetWindowDisplayMode, iFpp)
+GO(SDL_GetWindowFlags, uFp)
+GO(SDL_GetWindowFromID, pFu)
+GO(SDL_GetWindowGammaRamp, iFpppp)
+GO(SDL_GetWindowGrab, iFp)
+GO(SDL_GetWindowID, uFp)
+GO(SDL_GetWindowMaximumSize, vFppp)
+GO(SDL_GetWindowMinimumSize, vFppp)
+GO(SDL_GetWindowOpacity, iFpp)
+GO(SDL_GetWindowPixelFormat, uFp)
+GO(SDL_GetWindowPosition, vFppp)
+GO(SDL_GetWindowSize, vFppp)
+GO(SDL_GetWindowSurface, pFp)
+GO(SDL_GetWindowTitle, pFp)
+GO(SDL_GetWindowWMInfo, iFpp)
+GO(SDL_GetYUVConversionMode, iFv)
+GO(SDL_GetYUVConversionModeForResolution, iFii)
+GO(SDL_GL_BindTexture, iFppp)
+GO(SDL_GL_CreateContext, pFp)
+GO(SDL_GL_DeleteContext, vFp)
+GO(SDL_GL_ExtensionSupported, iFp)
+GO(SDL_GL_GetAttribute, iFup)
+GO(SDL_GL_GetCurrentContext, pFv)
+GO(SDL_GL_GetCurrentWindow, pFv)
+GO(SDL_GL_GetDrawableSize, vFppp)
+GOM(SDL_GL_GetProcAddress, pFEp)
+GO(SDL_GL_GetSwapInterval, iFv)
+GO(SDL_GL_LoadLibrary, iFp)
+GO(SDL_GL_MakeCurrent, iFpp)
+GO(SDL_GL_ResetAttributes, vFv)
+GO(SDL_GL_SetAttribute, iFui)
+GO(SDL_GL_SetSwapInterval, iFi)
+GO(SDL_GL_SwapWindow, vFp)
+GO(SDL_GL_UnbindTexture, iFp)
+GO(SDL_GL_UnloadLibrary, vFv)
+GO(SDL_HapticClose, vFp)
+GO(SDL_HapticDestroyEffect, vFpi)
+GO(SDL_HapticEffectSupported, iFpp)
+GO(SDL_HapticGetEffectStatus, iFpi)
+GO(SDL_HapticIndex, iFp)
+GO(SDL_HapticName, pFi)
+GO(SDL_HapticNewEffect, iFpp)
+GO(SDL_HapticNumAxes, iFp)
+GO(SDL_HapticNumEffects, iFp)
+GO(SDL_HapticNumEffectsPlaying, iFp)
+GO(SDL_HapticOpen, pFi)
+GO(SDL_HapticOpened, iFi)
+GO(SDL_HapticOpenFromJoystick, pFp)
+GO(SDL_HapticOpenFromMouse, pFv)
+GO(SDL_HapticPause, iFp)
+GO(SDL_HapticQuery, uFp)
+GO(SDL_HapticRumbleInit, iFp)
+GO(SDL_HapticRumblePlay, iFpfu)
+GO(SDL_HapticRumbleStop, iFp)
+GO(SDL_HapticRumbleSupported, iFp)
+GO(SDL_HapticRunEffect, iFpiu)
+GO(SDL_HapticSetAutocenter, iFpi)
+GO(SDL_HapticSetGain, iFpi)
+GO(SDL_HapticStopAll, iFp)
+GO(SDL_HapticStopEffect, iFpi)
+GO(SDL_HapticUnpause, iFp)
+GO(SDL_HapticUpdateEffect, iFpip)
+GOM(SDL_Has3DNow, iFv)
+GOM(SDL_HasAltiVec, iFv)
+GOM(SDL_HasAVX, iFv)
+GOM(SDL_HasAVX2, iFv)
+GOM(SDL_HasAVX512F, iFv)
+GO(SDL_HasClipboardText, iFv)
+GO(SDL_HasColorKey, iFv)
+GO(SDL_HasEvent, iFv)
+GO(SDL_HasEvents, iFv)
+GO(SDL_HasIntersection, iFv)
+GOM(SDL_HasMMX, iFv)
+GOM(SDL_HasNEON, iFv)
+GOM(SDL_HasRDTSC, iFv)
+GO(SDL_HasScreenKeyboardSupport, iFv)
+GOM(SDL_HasSSE, iFv)
+GOM(SDL_HasSSE2, iFv)
+GOM(SDL_HasSSE3, iFv)
+GOM(SDL_HasSSE41, iFv)
+GOM(SDL_HasSSE42, iFv)
+GO(SDL_HideWindow, vFp)
+GO(SDL_iconv, LFppppp)
+GO(SDL_iconv_close, iFp)
+GO(SDL_iconv_open, pFpp)
+GO(SDL_iconv_string, pFpppL)
+GO(SDL_Init, iFu)
+GO(SDL_InitSubSystem, iFu)
+GO(SDL_IntersectRect, iFppp)
+GO(SDL_IntersectRectAndLine, iFppppp)
+GO(SDL_isdigit, iFi)
+GO(SDL_IsGameController, iFi)
+GO(SDL_IsScreenKeyboardShown, iFp)
+GO(SDL_IsScreenSaverEnabled, iFv)
+GO(SDL_IsShapedWindow, iFp)
+GO(SDL_isspace, iFi)
+GO(SDL_IsTablet, iFv)
+GO(SDL_IsTextInputActive, iFv)
+GO(SDL_itoa, pFipi)
+GO(SDL_JoystickClose, vFp)
+GO(SDL_JoystickCurrentPowerLevel, iFp)
+GO(SDL_JoystickEventState, iFi)
+GO(SDL_JoystickFromInstanceID, pFi)
+GO(SDL_JoystickGetAttached, iFp)
+GO(SDL_JoystickGetAxis, iFpi)
+GO(SDL_JoystickGetAxisInitialState, iFpip)
+GO(SDL_JoystickGetBall, iFpipp)
+GO(SDL_JoystickGetButton, CFpi)
+GO(SDL_JoystickGetDeviceGUID, HFi)  // return a struct that is "uint8_t data[16]"
+GO(SDL_JoystickGetDeviceInstanceID, iFi)
+GO(SDL_JoystickGetDevicePlayerIndex, iFi)
+GO(SDL_JoystickGetDeviceProduct, WFi)
+GO(SDL_JoystickGetDeviceProductVersion, WFi)
+GO(SDL_JoystickGetDeviceType, iFi)
+GO(SDL_JoystickGetDeviceVendor, WFi)
+GO(SDL_JoystickGetGUID, HFp)
+GO(SDL_JoystickGetGUIDFromString, HFp)
+GO(SDL_JoystickGetGUIDString, vFupi)
+GO(SDL_JoystickGetHat, CFpi)
+GO(SDL_JoystickGetPlayerIndex, iFp)
+GO(SDL_JoystickGetProduct, WFp)
+GO(SDL_JoystickGetProductVersion, WFp)
+GO(SDL_JoystickGetType, iFp)
+GO(SDL_JoystickGetVendor, WFp)
+GO(SDL_JoystickInstanceID, iFp)
+GO(SDL_JoystickIsHaptic, iFp)
+GO(SDL_JoystickName, pFp)
+GO(SDL_JoystickNameForIndex, pFi)
+GO(SDL_JoystickNumAxes, iFp)
+GO(SDL_JoystickNumBalls, iFp)
+GO(SDL_JoystickNumButtons, iFp)
+GO(SDL_JoystickNumHats, iFp)
+GO(SDL_JoystickOpen, pFi)
+GO(SDL_JoystickRumble, iFpWWu)
+GO(SDL_JoystickUpdate, vFv)
+GO(SDL_LinuxSetThreadPriority, iFIi)
+GO(SDL_lltoa, pFIpi)
+GOM(SDL_LoadBMP_RW, pFEpi)
+GO(SDL_LoadDollarTemplates, iFip)
+GOM(SDL_LoadFile_RW, pFEppi)
+GOM(SDL_LoadFunction, pFEpp)
+GOM(SDL_LoadObject, pFEp)
+GOM(SDL_LoadWAV_RW, pFEpippp)
+GO(SDL_LockAudio, vFv)
+GO(SDL_LockAudioDevice, vFi)
+GO(SDL_LockJoysticks, vFv)
+GO(SDL_LockMutex, iFp)
+GO(SDL_LockSurface, iFp)
+GO(SDL_LockTexture, iFpppp)
+GO(SDL_log, dFd)
+GOM(SDL_Log, vFEpV)
+GO(SDL_log10, dFd)
+GO(SDL_log10f, fFf)
+GOM(SDL_LogCritical, vFEipV)
+GOM(SDL_LogDebug, vFEipV)
+GOM(SDL_LogError, vFEipV)
+GO(SDL_logf, fFf)
+GOM(SDL_LogGetOutputFunction, vFEpp)
+GO(SDL_LogGetPriority, iFi)
+GOM(SDL_LogInfo, vFEipV)
+GO2(SDL_LogMessage, vFiupV, SDL_LogMessageV)
+GO(SDL_LogMessageV, vFiupV)
+GO(SDL_LogResetPriorities, vFv)
+GO(SDL_LogSetAllPriority, vFu)
+GOM(SDL_LogSetOutputFunction, vFEpp)
+GO(SDL_LogSetPriority, vFiu)
+GOM(SDL_LogVerbose, vFEipV)
+GOM(SDL_LogWarn, vFEipV)
+GO(SDL_LowerBlit, iFpppp)
+GO(SDL_LowerBlitScaled, iFpppp)
+GO(SDL_ltoa, pFlp)
+GO(SDL_malloc, pFu)
+GO(SDL_MapRGB, uFpCCC)
+GO(SDL_MapRGBA, uFpCCCC)
+GO(SDL_MasksToPixelFormatEnum, uFiuuuu)
+GO(SDL_MaximizeWindow, vFp)
+GO(SDL_memcmp, iFppu)
+GO(SDL_memcpy, pFppu)
+GO(SDL_memmove, pFppu)
+GO(SDL_MemoryBarrierAcquireFunction, vFv)
+GO(SDL_MemoryBarrierReleaseFunction, vFv)
+GO(SDL_memset, pFpiu)
+GO(SDL_MinimizeWindow, vFp)
+GO(SDL_MixAudio, vFppui)
+GO(SDL_MixAudioFormat, vFppWui)
+GO(SDL_MouseIsHaptic, iFv)
+GO(SDL_NewAudioStream, pFiCiiCi)
+GO(SDL_NumHaptics, iFv)
+GO(SDL_NumJoysticks, iFv)
+GO(SDL_NumSensors, iFv)
+GOM(SDL_OpenAudio, iFEpp)
+GOM(SDL_OpenAudioDevice, iFEpippi)
+GO(SDL_PauseAudio, vFi)
+GO(SDL_PauseAudioDevice, vFii)
+GO(SDL_PeepEvents, iFpiiuu)
+GO(SDL_PixelFormatEnumToMasks, iFuppppp)
+GO(SDL_PollEvent, iFp)
+GO(SDL_pow, dFdd)
+GO(SDL_powf, fFff)
+GO(SDL_PumpEvents, vFv)
+GO(SDL_PushEvent, iFp)
+GO2(SDL_qsort, vFEpuup, my_qsort)
+GO(SDL_QueryTexture, iFppppp)
+GO(SDL_QueueAudio, iFipu)
+GO(SDL_Quit, vFv)
+GO(SDL_QuitSubSystem, vFu)
+GO(SDL_RaiseWindow, vFp)
+GOM(SDL_ReadBE16, uFEp)
+GOM(SDL_ReadBE32, uFEp)
+GOM(SDL_ReadBE64, UFEp)
+GOM(SDL_ReadLE16, uFEp)
+GOM(SDL_ReadLE32, uFEp)
+GOM(SDL_ReadLE64, UFEp)
+GOM(SDL_ReadU8, uFEp)
+GO(SDL_realloc, pFpu)
+GO(SDL_RecordGesture, iFi)
+GO(SDL_RegisterEvents, uFi)
+GOM(SDL_RemoveTimer, iFEp)
+GO(SDL_RenderClear, iFp)
+GO(SDL_RenderCopy, iFpppp)
+GO(SDL_RenderCopyEx, iFppppdpi)
+// SDL_RenderCopyExF
+// SDL_RenderCopyF
+GO(SDL_RenderDrawLine, iFpiiii)
+// SDL_RenderDrawLineF
+GO(SDL_RenderDrawLines, iFppi)
+// SDL_RenderDrawLinesF
+GO(SDL_RenderDrawPoint, iFpii)
+// SDL_RenderDrawPointF
+GO(SDL_RenderDrawPoints, iFppi)
+// SDL_RenderDrawPointsF
+GO(SDL_RenderDrawRect, iFpp)
+// SDL_RenderDrawRectF
+GO(SDL_RenderDrawRects, iFppi)
+// SDL_RenderDrawRectsF
+GO(SDL_RenderFillRect, iFpp)
+// SDL_RenderFillRectF
+GO(SDL_RenderFillRects, iFppi)
+// SDL_RenderFillRectsF
+// SDL_RenderFlush
+GO(SDL_RenderGetClipRect, vFpp)
+GO(SDL_RenderGetIntegerScale, iFp)
+GO(SDL_RenderGetLogicalSize, vFppp)
+// SDL_RenderGetMetalCommandEncoder
+// SDL_RenderGetMetalLayer
+GO(SDL_RenderGetScale, vFppp)
+GO(SDL_RenderGetViewport, vFpp)
+GO(SDL_RenderIsClipEnabled, iFp)
+GO(SDL_RenderPresent, vFp)
+GO(SDL_RenderReadPixels, iFppupi)
+GO(SDL_RenderSetClipRect, iFpp)
+GO(SDL_RenderSetIntegerScale, iFpi)
+GO(SDL_RenderSetLogicalSize, iFpii)
+GO(SDL_RenderSetScale, iFpff)
+GO(SDL_RenderSetViewport, iFpp)
+GO(SDL_RenderTargetSupported, iFp)
+GO(SDL_ReportAssertion, uFpppi)
+GO(SDL_ResetAssertionReport, vFv)
+GO(SDL_RestoreWindow, vFp)
+GOM(SDL_RWFromConstMem, pFEpi)
+GOM(SDL_RWFromFP, pFEpi)
+GOM(SDL_RWFromFile, pFEpp)
+GOM(SDL_RWFromMem, pFEpi)
+GOM(SDL_SaveAllDollarTemplates, pFEp)
+GOM(SDL_SaveBMP_RW, iFEppi)
+GOM(SDL_SaveDollarTemplate, iFEip)
+// SDL_scalbn
+// SDL_scalbnf
+GO(SDL_SemPost, iFp)
+GO(SDL_SemTryWait, iFp)
+GO(SDL_SemValue, uFp)
+GO(SDL_SemWait, iFp)
+GO(SDL_SemWaitTimeout, iFpu)
+// SDL_SensorClose
+// SDL_SensorFromInstanceID
+// SDL_SensorGetData
+// SDL_SensorGetDeviceInstanceID
+// SDL_SensorGetDeviceName
+// SDL_SensorGetDeviceNonPortableType
+// SDL_SensorGetDeviceType
+// SDL_SensorGetInstanceID
+// SDL_SensorGetName
+// SDL_SensorGetNonPortableType
+// SDL_SensorGetType
+// SDL_SensorOpen
+// SDL_SensorUpdate
+// SDL_SetAssertionHandler
+GO(SDL_SetClipboardText, iFp)
+GO(SDL_SetClipRect, iFpp)
+GO(SDL_SetColorKey, iFpiu)
+GO(SDL_SetCursor, vFp)
+GO(SDL_setenv, iFppi)
+GO(SDL_SetError, iFppppp)    // it use ..., so putarbitrary  4 args
+GOM(SDL_SetEventFilter, vFEpp)
+GO(SDL_SetHint, iFpp)
+GO(SDL_SetHintWithPriority, iFppi)
+GO(SDL_SetMainReady, vFv)
+// SDL_SetMemoryFunctions
+GO(SDL_SetModState, vFi)
+// SDL_SetPaletteColors
+// SDL_SetPixelFormatPalette
+GO(SDL_SetRelativeMouseMode, iFi)
+GO(SDL_SetRenderDrawBlendMode, iFpu)
+GO(SDL_SetRenderDrawColor, iFpCCCC)
+GO(SDL_SetRenderTarget, iFpp)
+GO(SDL_SetSurfaceAlphaMod, iFpC)
+GO(SDL_SetSurfaceBlendMode, iFpu)
+// SDL_SetSurfaceColorMod
+GO(SDL_SetSurfacePalette, iFpp)
+GO(SDL_SetSurfaceRLE, iFpi)
+GO(SDL_SetTextInputRect, vFp)
+GO(SDL_SetTextureAlphaMod, iFpC)
+GO(SDL_SetTextureBlendMode, iFpu)
+GO(SDL_SetTextureColorMod, iFpCCC)
+GO(SDL_SetThreadPriority, iFu)
+GO(SDL_SetWindowBordered, vFpi)
+GO(SDL_SetWindowBrightness, iFpf)
+GO(SDL_SetWindowData, pFppp)
+GO(SDL_SetWindowDisplayMode, iFpp)
+GO(SDL_SetWindowFullscreen, iFpu)
+GO(SDL_SetWindowGammaRamp, iFpppp)
+GO(SDL_SetWindowGrab, vFpi)
+// SDL_SetWindowHitTest
+GO(SDL_SetWindowIcon, vFpp)
+// SDL_SetWindowInputFocus
+GO(SDL_SetWindowMaximumSize, vFpii)
+GO(SDL_SetWindowMinimumSize, vFpii)
+// SDL_SetWindowModalFor
+// SDL_SetWindowOpacity
+GO(SDL_SetWindowPosition, vFpii)
+GO(SDL_SetWindowResizable, vFpi)
+GO(SDL_SetWindowShape, iFppp)
+GO(SDL_SetWindowSize, vFpii)
+GO(SDL_SetWindowTitle, vFpp)
+// SDL_SetYUVConversionMode
+GO(SDL_ShowCursor, iFi)
+GO(SDL_ShowMessageBox, iFpp)
+GO(SDL_ShowSimpleMessageBox, iFuppp)
+GO(SDL_ShowWindow, vFp)
+GO(SDL_sin, dFd)
+GO(SDL_sinf, fFf)
+GOM(SDL_snprintf, iFEpupVV)
+GO(SDL_SoftStretch, iFpppp)
+GO(SDL_sqrt, dFd)
+GO(SDL_sqrtf, fFf)
+GO2(SDL_sscanf, iFppV, SDL_vsscanf)
+GO(SDL_StartTextInput, vFv)
+GO(SDL_StopTextInput, vFv)
+GO(SDL_strcasecmp, iFpp)
+GO(SDL_strchr, pFpi)
+GO(SDL_strcmp, iFpp)
+GO(SDL_strdup, pFp)
+GO(SDL_strlcat, uFppu)
+GO(SDL_strlcpy, uFppu)
+GO(SDL_strlen, uFp)
+GO(SDL_strlwr, pFp)
+GO(SDL_strncasecmp, iFppu)
+GO(SDL_strncmp, iFppu)
+GO(SDL_strrchr, pFpi)
+GO(SDL_strrev, pFp)
+GO(SDL_strstr, pFpp)
+GO(SDL_strtod, dFpp)
+GO(SDL_strtol, iFppi)
+GO(SDL_strtoll, IFppi)
+GO(SDL_strtoul, uFppi)
+GO(SDL_strtoull, UFppi)
+GO(SDL_strupr, pFp)
+GO(SDL_tan, dFd)
+GO(SDL_tanf, fFf)
+GO(SDL_ThreadID, uFv)
+GO(SDL_TLSCreate, uFv)
+GO(SDL_TLSGet, pFu)
+GOM(SDL_TLSSet, iFEupp)
+GO(SDL_tolower, iFi)
+GO(SDL_toupper, iFi)
+GO(SDL_TryLockMutex, iFp)
+GO(SDL_uitoa, pFupi)
+GO(SDL_ulltoa, pFUpi)
+GO(SDL_ultoa, pFupi)
+GO(SDL_UnionRect, vFppp)
+GOM(SDL_UnloadObject, vFEp)
+GO(SDL_UnlockAudio, vFv)
+GO(SDL_UnlockAudioDevice, vFi)
+GO(SDL_UnlockJoysticks, vFv)
+GO(SDL_UnlockMutex, iFp)
+GO(SDL_UnlockSurface, vFp)
+GO(SDL_UnlockTexture, vFp)
+GO(SDL_UpdateTexture, iFpppi)
+GO(SDL_UpdateWindowSurface, iFp)
+// SDL_UpdateWindowSurfaceRects
+GO(SDL_UpdateYUVTexture, iFpppipipi)
+GO(SDL_UpperBlit, iFpppp)
+GO(SDL_UpperBlitScaled, iFpppp)
+GO(SDL_utf8strlcpy, uFppu)
+// SDL_utf8strlen
+GO(SDL_VideoInit, iFp)
+GO(SDL_VideoQuit, vFv)
+GOM(SDL_vsnprintf, iFEpupVV)
+// SDL_vsscanf
+GO(SDL_Vulkan_CreateSurface, iFppp)
+GO(SDL_Vulkan_GetDrawableSize, vFppp)
+GO(SDL_Vulkan_GetInstanceExtensions, iFppp)
+GOM(SDL_Vulkan_GetVkGetInstanceProcAddr, pFEv)
+GO(SDL_Vulkan_LoadLibrary, iFp) //TODO: wrap to also call my_dlopen with path?
+GO(SDL_Vulkan_UnloadLibrary, vFv)
+GO(SDL_WaitEvent, iFp)
+GO(SDL_WaitEventTimeout, iFpi)
+GO(SDL_WaitThread, vFpp)
+GO(SDL_WarpMouseGlobal, iFii)
+GO(SDL_WarpMouseInWindow, vFpii)
+GO(SDL_WasInit, uFu)
+// SDL_wcscmp
+// SDL_wcsdup
+// SDL_wcslcat
+// SDL_wcslcpy
+GO(SDL_wcslen, uFp)
+GOM(SDL_WriteBE16, uFEpW)
+GOM(SDL_WriteBE32, uFEpu)
+GOM(SDL_WriteBE64, uFEpU)
+GOM(SDL_WriteLE16, uFEpW)
+GOM(SDL_WriteLE32, uFEpu)
+GOM(SDL_WriteLE64, uFEpU)
+GOM(SDL_WriteU8, uFEpu)
+
+GOM(SDL_RWseek, IFEpIi)
+GOM(SDL_RWtell, IFEp)
+GOM(SDL_RWread, uFEppuu)
+GOM(SDL_RWwrite, uFEppuu)
+GOM(SDL_RWclose, iFEp)
+
+GO2(SDL_mutexP, iFp, SDL_LockMutex)
+GO2(SDL_mutexV, iFp, SDL_UnlockMutex)
+
+GO(SDL_doesntexist, IFpIi)
+
+GOM(SDL_IsJoystickPS4, iFEWW)
+GOM(SDL_IsJoystickNintendoSwitchPro, iFEWW)
+GOM(SDL_IsJoystickSteamController, iFEWW)
+GOM(SDL_IsJoystickXbox360, iFEWW)
+GOM(SDL_IsJoystickXboxOne, iFEWW)
+GOM(SDL_IsJoystickXInput, iFUU)
+GOM(SDL_IsJoystickHIDAPI, iFUU)