diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-07 20:19:58 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-07 20:19:58 +0100 |
| commit | 4c7cbe412835ee6a11df44eb2a324d32452047b7 (patch) | |
| tree | 26ba351c1aa89de78f390ccfb4be9ca9206de0d1 /src | |
| parent | 343174fd476dee93e9c29878c6398d5c9f72e265 (diff) | |
| download | box64-4c7cbe412835ee6a11df44eb2a324d32452047b7.tar.gz box64-4c7cbe412835ee6a11df44eb2a324d32452047b7.zip | |
Added wrapped libSDL1.2, libSDL2.0, libGL, libGLU and libopenal
Diffstat (limited to 'src')
| -rwxr-xr-x | src/box64context.c | 4 | ||||
| -rwxr-xr-x | src/include/sdl1rwops.h | 21 | ||||
| -rwxr-xr-x | src/include/sdl2rwops.h | 31 | ||||
| -rwxr-xr-x | src/library_list.h | 17 | ||||
| -rwxr-xr-x | src/libtools/sdl1rwops.c | 182 | ||||
| -rwxr-xr-x | src/libtools/sdl2rwops.c | 185 | ||||
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 503 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 1044 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 507 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 4 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc_private.h | 100 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibgl.c | 193 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibgl_private.h | 3005 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibglu.c | 174 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibglu_private.h | 63 | ||||
| -rwxr-xr-x | src/wrapped/wrappedopenal.c | 224 | ||||
| -rwxr-xr-x | src/wrapped/wrappedopenal_private.h | 167 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1.c | 574 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl1_private.h | 238 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl2.c | 994 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl2_private.h | 689 |
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) |