about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/box64context.c2
-rw-r--r--src/library_list_32.h5
-rw-r--r--src/wrapped32/generated/functions_list.txt24
-rw-r--r--src/wrapped32/generated/wrappedopenaldefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedopenaltypes32.h25
-rw-r--r--src/wrapped32/generated/wrappedopenalundefs32.h8
-rw-r--r--src/wrapped32/generated/wrapper32.c32
-rw-r--r--src/wrapped32/generated/wrapper32.h15
-rw-r--r--src/wrapped32/wrappedopenal.c180
-rw-r--r--src/wrapped32/wrappedopenal_private.h167
10 files changed, 466 insertions, 0 deletions
diff --git a/src/box64context.c b/src/box64context.c
index 27da6aca..928357f4 100644
--- a/src/box64context.c
+++ b/src/box64context.c
@@ -363,6 +363,8 @@ void FreeBox64Context(box64context_t** context)
     #ifndef STATICBUILD
     freeGLProcWrapper(ctx);
     freeALProcWrapper(ctx);
+    #ifdef BOX32
+    #endif
     #endif
 
     if(ctx->stack_clone)
diff --git a/src/library_list_32.h b/src/library_list_32.h
index d6046166..9e0a036a 100644
--- a/src/library_list_32.h
+++ b/src/library_list_32.h
@@ -22,4 +22,9 @@ GO("libXcursor.so.1", libxcursor)
 GO("libXrandr.so.2", libxrandr)
 GO("libxrandr.so.2", libxrandr)
 
+GO("libopenal.so.1", openal)
+GO("libopenal.so.0", openal)
+GO("libopenal.so", openal)
+GO("openal.so", openal)
+
 GO("crashhandler.so", crashhandler)
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
index d93a3c92..786c1b0b 100644
--- a/src/wrapped32/generated/functions_list.txt
+++ b/src/wrapped32/generated/functions_list.txt
@@ -13,6 +13,9 @@
 #() vFA -> vFA
 #() vFS -> vFS
 #() vFX -> vFX
+#() cFi -> cFi
+#() cFu -> cFu
+#() cFp -> cFp
 #() iFv -> iFv
 #() iFi -> iFi
 #() iFI -> iFI
@@ -42,8 +45,10 @@
 #() UFu -> UFu
 #() UFp -> UFp
 #() UFs -> UFs
+#() fFi -> fFi
 #() fFf -> fFf
 #() dFv -> dFv
+#() dFi -> dFi
 #() dFd -> dFd
 #() dFp -> dFp
 #() lFi -> lFi
@@ -107,6 +112,7 @@
 #() vFpp -> vFpp
 #() vFSp -> vFSp
 #() vFXp -> vFXp
+#() cFpp -> cFpp
 #() wFpi -> wFpi
 #() iFEv -> iFEv
 #() iFEi -> iFEi
@@ -176,6 +182,7 @@
 #() pFEu -> pFEu
 #() pFEp -> pFEp
 #() pFES -> pFES
+#() pFii -> pFii
 #() pFiu -> pFiu
 #() pFia -> pFia
 #() pFuu -> pFuu
@@ -398,6 +405,7 @@
 #() vFilpp -> vFilpp
 #() vFipup -> vFipup
 #() vFipll -> vFipll
+#() vFippp -> vFippp
 #() vFCCCC -> vFCCCC
 #() vFWWWW -> vFWWWW
 #() vFuccc -> vFuccc
@@ -452,6 +460,7 @@
 #() vFffff -> vFffff
 #() vFdddd -> vFdddd
 #() vFllii -> vFllii
+#() vFpiip -> vFpiip
 #() vFpipp -> vFpipp
 #() vFpdii -> vFpdii
 #() vFpddd -> vFpddd
@@ -460,6 +469,7 @@
 #() vFpppp -> vFpppp
 #() vFXiiL -> vFXiiL
 #() vFXpip -> vFXpip
+#() cFpiii -> cFpiii
 #() iFEiip -> iFEiip
 #() iFEiiN -> iFEiiN
 #() iFEipp -> iFEipp
@@ -515,6 +525,7 @@
 #() pFullu -> pFullu
 #() pFlfff -> pFlfff
 #() pFpiLL -> pFpiLL
+#() pFpuii -> pFpuii
 #() pFppLL -> pFppLL
 #() pFpppp -> pFpppp
 #() pFXiii -> pFXiii
@@ -572,6 +583,7 @@
 #() vFuiUUU -> vFuiUUU
 #() vFuifff -> vFuifff
 #() vFuiddd -> vFuiddd
+#() vFuipii -> vFuipii
 #() vFuipip -> vFuipip
 #() vFuipup -> vFuipup
 #() vFuippp -> vFuippp
@@ -658,6 +670,7 @@
 #() iFippprLL_ -> iFipppB
 #() LFLbp_bL_Bp_BL_ -> LFLBBBB
 #() LFpLpriiiiiiiiilt_a -> LFpLpBa
+#() vFEiiipp -> vFEiiipp
 #() vFiiiiii -> vFiiiiii
 #() vFiiiuil -> vFiiiuil
 #() vFiiilpi -> vFiiilpi
@@ -669,6 +682,7 @@
 #() vFipiplp -> vFipiplp
 #() vFCCCCff -> vFCCCCff
 #() vFuiiiii -> vFuiiiii
+#() vFuiiiip -> vFuiiiip
 #() vFuiiuii -> vFuiiuii
 #() vFuiiuup -> vFuiiuup
 #() vFuiIIII -> vFuiIIII
@@ -757,6 +771,7 @@
 #() vFuuiiiii -> vFuuiiiii
 #() vFuuiiiiC -> vFuuiiiiC
 #() vFuuiiiiu -> vFuuiiiiu
+#() vFuuiiiip -> vFuuiiiip
 #() vFuuiiuup -> vFuuiiuup
 #() vFuuiCiui -> vFuuiCiui
 #() vFuuiCiuu -> vFuuiCiuu
@@ -1321,6 +1336,15 @@ wrappedlibxcursor:
 wrappedlibxfixes:
 wrappedlibxrandr:
 wrappedlibxrender:
+wrappedopenal:
+- vFv:
+  - alRequestFoldbackStop
+- pFp:
+  - alGetProcAddress
+- pFpp:
+  - alcGetProcAddress
+- vFiiipp:
+  - alRequestFoldbackStart
 wrappedsdl1:
 - vFv:
   - SDL_Quit
diff --git a/src/wrapped32/generated/wrappedopenaldefs32.h b/src/wrapped32/generated/wrappedopenaldefs32.h
new file mode 100644
index 00000000..980abd98
--- /dev/null
+++ b/src/wrapped32/generated/wrappedopenaldefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedopenalDEFS32_H_
+#define __wrappedopenalDEFS32_H_
+
+
+#endif // __wrappedopenalDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedopenaltypes32.h b/src/wrapped32/generated/wrappedopenaltypes32.h
new file mode 100644
index 00000000..f93c2d8e
--- /dev/null
+++ b/src/wrapped32/generated/wrappedopenaltypes32.h
@@ -0,0 +1,25 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedopenalTYPES32_H_
+#define __wrappedopenalTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef void (*vFv_t)(void);
+typedef void* (*pFp_t)(void*);
+typedef void* (*pFpp_t)(void*, void*);
+typedef void (*vFiiipp_t)(int32_t, int32_t, int32_t, void*, void*);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(alRequestFoldbackStop, vFv_t) \
+	GO(alGetProcAddress, pFp_t) \
+	GO(alcGetProcAddress, pFpp_t) \
+	GO(alRequestFoldbackStart, vFiiipp_t)
+
+#endif // __wrappedopenalTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedopenalundefs32.h b/src/wrapped32/generated/wrappedopenalundefs32.h
new file mode 100644
index 00000000..600e6f9b
--- /dev/null
+++ b/src/wrapped32/generated/wrappedopenalundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedopenalUNDEFS32_H_
+#define __wrappedopenalUNDEFS32_H_
+
+
+#endif // __wrappedopenalUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
index a272598e..ae316b31 100644
--- a/src/wrapped32/generated/wrapper32.c
+++ b/src/wrapped32/generated/wrapper32.c
@@ -102,6 +102,9 @@ typedef void (*vFp_t)(void*);
 typedef void (*vFA_t)(void*);
 typedef void (*vFS_t)(void*);
 typedef void (*vFX_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 (*iFv_t)(void);
 typedef int32_t (*iFi_t)(int32_t);
 typedef int32_t (*iFI_t)(int64_t);
@@ -131,8 +134,10 @@ typedef uint32_t (*uFp_t)(void*);
 typedef uint64_t (*UFu_t)(uint32_t);
 typedef uint64_t (*UFp_t)(void*);
 typedef uint64_t (*UFs_t)(void*);
+typedef float (*fFi_t)(int32_t);
 typedef float (*fFf_t)(float);
 typedef double (*dFv_t)(void);
+typedef double (*dFi_t)(int32_t);
 typedef double (*dFd_t)(double);
 typedef double (*dFp_t)(void*);
 typedef intptr_t (*lFi_t)(int32_t);
@@ -196,6 +201,7 @@ typedef void (*vFpL_t)(void*, uintptr_t);
 typedef void (*vFpp_t)(void*, void*);
 typedef void (*vFSp_t)(void*, void*);
 typedef void (*vFXp_t)(void*, void*);
+typedef int8_t (*cFpp_t)(void*, void*);
 typedef int16_t (*wFpi_t)(void*, int32_t);
 typedef int32_t (*iFEv_t)(x64emu_t*);
 typedef int32_t (*iFEi_t)(x64emu_t*, int32_t);
@@ -265,6 +271,7 @@ typedef void* (*pFEv_t)(x64emu_t*);
 typedef void* (*pFEu_t)(x64emu_t*, uint32_t);
 typedef void* (*pFEp_t)(x64emu_t*, void*);
 typedef void* (*pFES_t)(x64emu_t*, void*);
+typedef void* (*pFii_t)(int32_t, int32_t);
 typedef void* (*pFiu_t)(int32_t, uint32_t);
 typedef void* (*pFia_t)(int32_t, void*);
 typedef void* (*pFuu_t)(uint32_t, uint32_t);
@@ -487,6 +494,7 @@ typedef void (*vFilpu_t)(int32_t, intptr_t, void*, uint32_t);
 typedef void (*vFilpp_t)(int32_t, intptr_t, void*, void*);
 typedef void (*vFipup_t)(int32_t, void*, uint32_t, void*);
 typedef void (*vFipll_t)(int32_t, void*, intptr_t, intptr_t);
+typedef void (*vFippp_t)(int32_t, void*, void*, void*);
 typedef void (*vFCCCC_t)(uint8_t, uint8_t, uint8_t, uint8_t);
 typedef void (*vFWWWW_t)(uint16_t, uint16_t, uint16_t, uint16_t);
 typedef void (*vFuccc_t)(uint32_t, int8_t, int8_t, int8_t);
@@ -541,6 +549,7 @@ typedef void (*vFuppu_t)(uint32_t, void*, void*, uint32_t);
 typedef void (*vFffff_t)(float, float, float, float);
 typedef void (*vFdddd_t)(double, double, double, double);
 typedef void (*vFllii_t)(intptr_t, intptr_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);
@@ -549,6 +558,7 @@ typedef void (*vFppip_t)(void*, void*, int32_t, void*);
 typedef void (*vFpppp_t)(void*, void*, void*, void*);
 typedef void (*vFXiiL_t)(void*, int32_t, int32_t, uintptr_t);
 typedef void (*vFXpip_t)(void*, void*, int32_t, void*);
+typedef int8_t (*cFpiii_t)(void*, int32_t, int32_t, int32_t);
 typedef int32_t (*iFEiip_t)(x64emu_t*, int32_t, int32_t, void*);
 typedef int32_t (*iFEiiN_t)(x64emu_t*, int32_t, int32_t, ...);
 typedef int32_t (*iFEipp_t)(x64emu_t*, int32_t, void*, void*);
@@ -604,6 +614,7 @@ typedef void* (*pFillu_t)(int32_t, intptr_t, intptr_t, uint32_t);
 typedef void* (*pFullu_t)(uint32_t, intptr_t, intptr_t, uint32_t);
 typedef void* (*pFlfff_t)(intptr_t, float, float, float);
 typedef void* (*pFpiLL_t)(void*, int32_t, uintptr_t, uintptr_t);
+typedef void* (*pFpuii_t)(void*, uint32_t, int32_t, int32_t);
 typedef void* (*pFppLL_t)(void*, void*, uintptr_t, uintptr_t);
 typedef void* (*pFpppp_t)(void*, void*, void*, void*);
 typedef void* (*pFXiii_t)(void*, int32_t, int32_t, int32_t);
@@ -661,6 +672,7 @@ typedef void (*vFuiupi_t)(uint32_t, int32_t, uint32_t, void*, int32_t);
 typedef void (*vFuiUUU_t)(uint32_t, int32_t, uint64_t, uint64_t, uint64_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*);
@@ -747,6 +759,7 @@ typedef uintptr_t (*LFpBp_LLp_t)(void*, struct_p_t*, uintptr_t, uintptr_t, void*
 typedef int32_t (*iFippprLL__t)(int32_t, void*, void*, void*, struct_LL_t*);
 typedef uintptr_t (*LFLbp_bL_Bp_BL__t)(uintptr_t, struct_p_t*, struct_L_t*, struct_p_t*, struct_L_t*);
 typedef uintptr_t (*LFpLpriiiiiiiiilt_a_t)(void*, uintptr_t, void*, struct_iiiiiiiiilt_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 (*vFiiilpi_t)(int32_t, int32_t, int32_t, intptr_t, void*, int32_t);
@@ -758,6 +771,7 @@ typedef void (*vFiliplu_t)(int32_t, intptr_t, int32_t, void*, intptr_t, uint32_t
 typedef void (*vFipiplp_t)(int32_t, void*, int32_t, void*, intptr_t, void*);
 typedef void (*vFCCCCff_t)(uint8_t, uint8_t, uint8_t, uint8_t, float, float);
 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 (*vFuiIIII_t)(uint32_t, int32_t, int64_t, int64_t, int64_t, int64_t);
@@ -846,6 +860,7 @@ typedef void (*vFuipdddd_t)(uint32_t, int32_t, void*, double, double, double, do
 typedef void (*vFuuiiiii_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, int32_t);
 typedef void (*vFuuiiiiC_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint8_t);
 typedef void (*vFuuiiiiu_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t);
+typedef void (*vFuuiiiip_t)(uint32_t, uint32_t, int32_t, int32_t, int32_t, int32_t, void*);
 typedef void (*vFuuiiuup_t)(uint32_t, uint32_t, int32_t, int32_t, uint32_t, uint32_t, void*);
 typedef void (*vFuuiCiui_t)(uint32_t, uint32_t, int32_t, uint8_t, int32_t, uint32_t, int32_t);
 typedef void (*vFuuiCiuu_t)(uint32_t, uint32_t, int32_t, uint8_t, int32_t, uint32_t, uint32_t);
@@ -1039,6 +1054,9 @@ void vFp_32(x64emu_t *emu, uintptr_t fcn) { vFp_t fn = (vFp_t)fcn; fn(from_ptriv
 void vFA_32(x64emu_t *emu, uintptr_t fcn) { vFA_t fn = (vFA_t)fcn; fn(from_locale_d(from_ptri(ptr_t, R_ESP + 4))); }
 void vFS_32(x64emu_t *emu, uintptr_t fcn) { vFS_t fn = (vFS_t)fcn; fn(io_convert32(from_ptriv(R_ESP + 4))); }
 void vFX_32(x64emu_t *emu, uintptr_t fcn) { vFX_t fn = (vFX_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4))); }
+void cFi_32(x64emu_t *emu, uintptr_t fcn) { cFi_t fn = (cFi_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4)); }
+void cFu_32(x64emu_t *emu, uintptr_t fcn) { cFu_t fn = (cFu_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4)); }
+void cFp_32(x64emu_t *emu, uintptr_t fcn) { cFp_t fn = (cFp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4)); }
 void iFv_32(x64emu_t *emu, uintptr_t fcn) { iFv_t fn = (iFv_t)fcn; R_EAX = fn(); }
 void iFi_32(x64emu_t *emu, uintptr_t fcn) { iFi_t fn = (iFi_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4)); }
 void iFI_32(x64emu_t *emu, uintptr_t fcn) { iFI_t fn = (iFI_t)fcn; R_EAX = fn(from_ptri(int64_t, R_ESP + 4)); }
@@ -1068,8 +1086,10 @@ void uFp_32(x64emu_t *emu, uintptr_t fcn) { uFp_t fn = (uFp_t)fcn; R_EAX = (uint
 void UFu_32(x64emu_t *emu, uintptr_t fcn) { UFu_t fn = (UFu_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptri(uint32_t, R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
 void UFp_32(x64emu_t *emu, uintptr_t fcn) { UFp_t fn = (UFp_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
 void UFs_32(x64emu_t *emu, uintptr_t fcn) { UFs_t fn = (UFs_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptrv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void fFi_32(x64emu_t *emu, uintptr_t fcn) { fFi_t fn = (fFi_t)fcn; float fl = fn(from_ptri(int32_t, R_ESP + 4)); fpu_do_push(emu); ST0val = fl; }
 void fFf_32(x64emu_t *emu, uintptr_t fcn) { fFf_t fn = (fFf_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4)); fpu_do_push(emu); ST0val = fl; }
 void dFv_32(x64emu_t *emu, uintptr_t fcn) { dFv_t fn = (dFv_t)fcn; double db = fn(); fpu_do_push(emu); ST0val = db; }
+void dFi_32(x64emu_t *emu, uintptr_t fcn) { dFi_t fn = (dFi_t)fcn; double db = fn(from_ptri(int32_t, R_ESP + 4)); fpu_do_push(emu); ST0val = db; }
 void dFd_32(x64emu_t *emu, uintptr_t fcn) { dFd_t fn = (dFd_t)fcn; double db = fn(from_ptri(double, R_ESP + 4)); fpu_do_push(emu); ST0val = db; }
 void dFp_32(x64emu_t *emu, uintptr_t fcn) { dFp_t fn = (dFp_t)fcn; double db = fn(from_ptriv(R_ESP + 4)); fpu_do_push(emu); ST0val = db; }
 void lFi_32(x64emu_t *emu, uintptr_t fcn) { lFi_t fn = (lFi_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4))); }
@@ -1133,6 +1153,7 @@ void vFpL_32(x64emu_t *emu, uintptr_t fcn) { vFpL_t fn = (vFpL_t)fcn; fn(from_pt
 void vFpp_32(x64emu_t *emu, uintptr_t fcn) { vFpp_t fn = (vFpp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); }
 void vFSp_32(x64emu_t *emu, uintptr_t fcn) { vFSp_t fn = (vFSp_t)fcn; fn(io_convert32(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8)); }
 void vFXp_32(x64emu_t *emu, uintptr_t fcn) { vFXp_t fn = (vFXp_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8)); }
+void cFpp_32(x64emu_t *emu, uintptr_t fcn) { cFpp_t fn = (cFpp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); }
 void wFpi_32(x64emu_t *emu, uintptr_t fcn) { wFpi_t fn = (wFpi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
 void iFEv_32(x64emu_t *emu, uintptr_t fcn) { iFEv_t fn = (iFEv_t)fcn; R_EAX = fn(emu); }
 void iFEi_32(x64emu_t *emu, uintptr_t fcn) { iFEi_t fn = (iFEi_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4)); }
@@ -1202,6 +1223,7 @@ void pFEv_32(x64emu_t *emu, uintptr_t fcn) { pFEv_t fn = (pFEv_t)fcn; R_EAX = to
 void pFEu_32(x64emu_t *emu, uintptr_t fcn) { pFEu_t fn = (pFEu_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptri(uint32_t, R_ESP + 4))); }
 void pFEp_32(x64emu_t *emu, uintptr_t fcn) { pFEp_t fn = (pFEp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4))); }
 void pFES_32(x64emu_t *emu, uintptr_t fcn) { pFES_t fn = (pFES_t)fcn; R_EAX = to_ptrv(fn(emu, io_convert32(from_ptriv(R_ESP + 4)))); }
+void pFii_32(x64emu_t *emu, uintptr_t fcn) { pFii_t fn = (pFii_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8))); }
 void pFiu_32(x64emu_t *emu, uintptr_t fcn) { pFiu_t fn = (pFiu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8))); }
 void pFia_32(x64emu_t *emu, uintptr_t fcn) { pFia_t fn = (pFia_t)fcn; R_EAX = to_ptrv(fn(from_ptri(int32_t, R_ESP + 4), from_locale(from_ptri(ptr_t, R_ESP + 8)))); }
 void pFuu_32(x64emu_t *emu, uintptr_t fcn) { pFuu_t fn = (pFuu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8))); }
@@ -1424,6 +1446,7 @@ void vFilpu_32(x64emu_t *emu, uintptr_t fcn) { vFilpu_t fn = (vFilpu_t)fcn; fn(f
 void vFilpp_32(x64emu_t *emu, uintptr_t fcn) { vFilpp_t fn = (vFilpp_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), to_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFipup_32(x64emu_t *emu, uintptr_t fcn) { vFipup_t fn = (vFipup_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFipll_32(x64emu_t *emu, uintptr_t fcn) { vFipll_t fn = (vFipll_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), to_long(from_ptri(long_t, R_ESP + 12)), to_long(from_ptri(long_t, R_ESP + 16))); }
+void vFippp_32(x64emu_t *emu, uintptr_t fcn) { vFippp_t fn = (vFippp_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFCCCC_32(x64emu_t *emu, uintptr_t fcn) { vFCCCC_t fn = (vFCCCC_t)fcn; fn(from_ptri(uint8_t, R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16)); }
 void vFWWWW_32(x64emu_t *emu, uintptr_t fcn) { vFWWWW_t fn = (vFWWWW_t)fcn; fn(from_ptri(uint16_t, R_ESP + 4), from_ptri(uint16_t, R_ESP + 8), from_ptri(uint16_t, R_ESP + 12), from_ptri(uint16_t, R_ESP + 16)); }
 void vFuccc_32(x64emu_t *emu, uintptr_t fcn) { vFuccc_t fn = (vFuccc_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int8_t, R_ESP + 8), from_ptri(int8_t, R_ESP + 12), from_ptri(int8_t, R_ESP + 16)); }
@@ -1478,6 +1501,7 @@ void vFuppu_32(x64emu_t *emu, uintptr_t fcn) { vFuppu_t fn = (vFuppu_t)fcn; fn(f
 void vFffff_32(x64emu_t *emu, uintptr_t fcn) { vFffff_t fn = (vFffff_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16)); }
 void vFdddd_32(x64emu_t *emu, uintptr_t fcn) { vFdddd_t fn = (vFdddd_t)fcn; fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28)); }
 void vFllii_32(x64emu_t *emu, uintptr_t fcn) { vFllii_t fn = (vFllii_t)fcn; fn(to_long(from_ptri(long_t, R_ESP + 4)), to_long(from_ptri(long_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
+void vFpiip_32(x64emu_t *emu, uintptr_t fcn) { vFpiip_t fn = (vFpiip_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFpipp_32(x64emu_t *emu, uintptr_t fcn) { vFpipp_t fn = (vFpipp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFpdii_32(x64emu_t *emu, uintptr_t fcn) { vFpdii_t fn = (vFpdii_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); }
 void vFpddd_32(x64emu_t *emu, uintptr_t fcn) { vFpddd_t fn = (vFpddd_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24)); }
@@ -1486,6 +1510,7 @@ void vFppip_32(x64emu_t *emu, uintptr_t fcn) { vFppip_t fn = (vFppip_t)fcn; fn(f
 void vFpppp_32(x64emu_t *emu, uintptr_t fcn) { vFpppp_t fn = (vFpppp_t)fcn; fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
 void vFXiiL_32(x64emu_t *emu, uintptr_t fcn) { vFXiiL_t fn = (vFXiiL_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16))); }
 void vFXpip_32(x64emu_t *emu, uintptr_t fcn) { vFXpip_t fn = (vFXpip_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void cFpiii_32(x64emu_t *emu, uintptr_t fcn) { cFpiii_t fn = (cFpiii_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
 void iFEiip_32(x64emu_t *emu, uintptr_t fcn) { iFEiip_t fn = (iFEiip_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
 void iFEiiN_32(x64emu_t *emu, uintptr_t fcn) { iFEiiN_t fn = (iFEiiN_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
 void iFEipp_32(x64emu_t *emu, uintptr_t fcn) { iFEipp_t fn = (iFEipp_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
@@ -1541,6 +1566,7 @@ void pFillu_32(x64emu_t *emu, uintptr_t fcn) { pFillu_t fn = (pFillu_t)fcn; R_EA
 void pFullu_32(x64emu_t *emu, uintptr_t fcn) { pFullu_t fn = (pFullu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), to_long(from_ptri(long_t, R_ESP + 8)), to_long(from_ptri(long_t, R_ESP + 12)), from_ptri(uint32_t, R_ESP + 16))); }
 void pFlfff_32(x64emu_t *emu, uintptr_t fcn) { pFlfff_t fn = (pFlfff_t)fcn; R_EAX = to_ptrv(fn(to_long(from_ptri(long_t, R_ESP + 4)), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16))); }
 void pFpiLL_32(x64emu_t *emu, uintptr_t fcn) { pFpiLL_t fn = (pFpiLL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)))); }
+void pFpuii_32(x64emu_t *emu, uintptr_t fcn) { pFpuii_t fn = (pFpuii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); }
 void pFppLL_32(x64emu_t *emu, uintptr_t fcn) { pFppLL_t fn = (pFppLL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)))); }
 void pFpppp_32(x64emu_t *emu, uintptr_t fcn) { pFpppp_t fn = (pFpppp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); }
 void pFXiii_32(x64emu_t *emu, uintptr_t fcn) { pFXiii_t fn = (pFXiii_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); }
@@ -1598,6 +1624,7 @@ void vFuiupi_32(x64emu_t *emu, uintptr_t fcn) { vFuiupi_t fn = (vFuiupi_t)fcn; f
 void vFuiUUU_32(x64emu_t *emu, uintptr_t fcn) { vFuiUUU_t fn = (vFuiUUU_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 12), from_ptri(uint64_t, R_ESP + 20), from_ptri(uint64_t, R_ESP + 28)); }
 void vFuifff_32(x64emu_t *emu, uintptr_t fcn) { vFuifff_t fn = (vFuifff_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20)); }
 void vFuiddd_32(x64emu_t *emu, uintptr_t fcn) { vFuiddd_t fn = (vFuiddd_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20), from_ptri(double, R_ESP + 28)); }
+void vFuipii_32(x64emu_t *emu, uintptr_t fcn) { vFuipii_t fn = (vFuipii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); }
 void vFuipip_32(x64emu_t *emu, uintptr_t fcn) { vFuipip_t fn = (vFuipip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void vFuipup_32(x64emu_t *emu, uintptr_t fcn) { vFuipup_t fn = (vFuipup_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void vFuippp_32(x64emu_t *emu, uintptr_t fcn) { vFuippp_t fn = (vFuippp_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
@@ -1684,6 +1711,7 @@ void LFpBp_LLp_32(x64emu_t *emu, uintptr_t fcn) { LFpBp_LLp_t fn = (LFpBp_LLp_t)
 void iFippprLL__32(x64emu_t *emu, uintptr_t fcn) { iFippprLL__t fn = (iFippprLL__t)fcn; struct_LL_t arg_20; from_struct_LL(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL); }
 void LFLbp_bL_Bp_BL__32(x64emu_t *emu, uintptr_t fcn) { LFLbp_bL_Bp_BL__t fn = (LFLbp_bL_Bp_BL__t)fcn; struct_p_t arg_8; from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); struct_L_t arg_12; from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); struct_p_t arg_16; struct_L_t arg_20; R_EAX = to_ulong(fn(to_ulong(from_ptri(ulong_t, R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); }
 void LFpLpriiiiiiiiilt_a_32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt_a_t fn = (LFpLpriiiiiiiiilt_a_t)fcn; struct_iiiiiiiiilt_t arg_16; from_struct_iiiiiiiiilt(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_locale(from_ptri(ptr_t, R_ESP + 20)))); }
+void vFEiiipp_32(x64emu_t *emu, uintptr_t fcn) { vFEiiipp_t fn = (vFEiiipp_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20)); }
 void vFiiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFiiiiii_t fn = (vFiiiiii_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); }
 void vFiiiuil_32(x64emu_t *emu, uintptr_t fcn) { vFiiiuil_t fn = (vFiiiuil_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), to_long(from_ptri(long_t, R_ESP + 24))); }
 void vFiiilpi_32(x64emu_t *emu, uintptr_t fcn) { vFiiilpi_t fn = (vFiiilpi_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), to_long(from_ptri(long_t, R_ESP + 16)), from_ptriv(R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); }
@@ -1695,6 +1723,7 @@ void vFiliplu_32(x64emu_t *emu, uintptr_t fcn) { vFiliplu_t fn = (vFiliplu_t)fcn
 void vFipiplp_32(x64emu_t *emu, uintptr_t fcn) { vFipiplp_t fn = (vFipiplp_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), to_long(from_ptri(long_t, R_ESP + 20)), from_ptriv(R_ESP + 24)); }
 void vFCCCCff_32(x64emu_t *emu, uintptr_t fcn) { vFCCCCff_t fn = (vFCCCCff_t)fcn; fn(from_ptri(uint8_t, R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint8_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24)); }
 void vFuiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuiiiii_t fn = (vFuiiiii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); }
+void vFuiiiip_32(x64emu_t *emu, uintptr_t fcn) { vFuiiiip_t fn = (vFuiiiip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24)); }
 void vFuiiuii_32(x64emu_t *emu, uintptr_t fcn) { vFuiiuii_t fn = (vFuiiuii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24)); }
 void vFuiiuup_32(x64emu_t *emu, uintptr_t fcn) { vFuiiuup_t fn = (vFuiiuup_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptriv(R_ESP + 24)); }
 void vFuiIIII_32(x64emu_t *emu, uintptr_t fcn) { vFuiIIII_t fn = (vFuiIIII_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 12), from_ptri(int64_t, R_ESP + 20), from_ptri(int64_t, R_ESP + 28), from_ptri(int64_t, R_ESP + 36)); }
@@ -1783,6 +1812,7 @@ void vFuipdddd_32(x64emu_t *emu, uintptr_t fcn) { vFuipdddd_t fn = (vFuipdddd_t)
 void vFuuiiiii_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiii_t fn = (vFuuiiiii_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); }
 void vFuuiiiiC_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiC_t fn = (vFuuiiiiC_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint8_t, R_ESP + 28)); }
 void vFuuiiiiu_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiiu_t fn = (vFuuiiiiu_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28)); }
+void vFuuiiiip_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiiip_t fn = (vFuuiiiip_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptriv(R_ESP + 28)); }
 void vFuuiiuup_32(x64emu_t *emu, uintptr_t fcn) { vFuuiiuup_t fn = (vFuuiiuup_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptriv(R_ESP + 28)); }
 void vFuuiCiui_32(x64emu_t *emu, uintptr_t fcn) { vFuuiCiui_t fn = (vFuuiCiui_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28)); }
 void vFuuiCiuu_32(x64emu_t *emu, uintptr_t fcn) { vFuuiCiuu_t fn = (vFuuiCiuu_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint8_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28)); }
@@ -1972,8 +2002,10 @@ void iFEpvvpV_32(x64emu_t *emu, uintptr_t fcn) { iFEppV_t fn = (iFEppV_t)fcn; R_
 void iFEpLvvpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); }
 
 int isRetX87Wrapper32(wrapper_t fun) {
+	if (fun == &fFi_32) return 1;
 	if (fun == &fFf_32) return 1;
 	if (fun == &dFv_32) return 1;
+	if (fun == &dFi_32) return 1;
 	if (fun == &dFd_32) return 1;
 	if (fun == &dFp_32) return 1;
 	if (fun == &fFif_32) return 1;
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
index 28d3260d..43f17687 100644
--- a/src/wrapped32/generated/wrapper32.h
+++ b/src/wrapped32/generated/wrapper32.h
@@ -54,6 +54,9 @@ void vFp_32(x64emu_t *emu, uintptr_t fnc);
 void vFA_32(x64emu_t *emu, uintptr_t fnc);
 void vFS_32(x64emu_t *emu, uintptr_t fnc);
 void vFX_32(x64emu_t *emu, uintptr_t fnc);
+void cFi_32(x64emu_t *emu, uintptr_t fnc);
+void cFu_32(x64emu_t *emu, uintptr_t fnc);
+void cFp_32(x64emu_t *emu, uintptr_t fnc);
 void iFv_32(x64emu_t *emu, uintptr_t fnc);
 void iFi_32(x64emu_t *emu, uintptr_t fnc);
 void iFI_32(x64emu_t *emu, uintptr_t fnc);
@@ -83,8 +86,10 @@ void uFp_32(x64emu_t *emu, uintptr_t fnc);
 void UFu_32(x64emu_t *emu, uintptr_t fnc);
 void UFp_32(x64emu_t *emu, uintptr_t fnc);
 void UFs_32(x64emu_t *emu, uintptr_t fnc);
+void fFi_32(x64emu_t *emu, uintptr_t fnc);
 void fFf_32(x64emu_t *emu, uintptr_t fnc);
 void dFv_32(x64emu_t *emu, uintptr_t fnc);
+void dFi_32(x64emu_t *emu, uintptr_t fnc);
 void dFd_32(x64emu_t *emu, uintptr_t fnc);
 void dFp_32(x64emu_t *emu, uintptr_t fnc);
 void lFi_32(x64emu_t *emu, uintptr_t fnc);
@@ -148,6 +153,7 @@ void vFpL_32(x64emu_t *emu, uintptr_t fnc);
 void vFpp_32(x64emu_t *emu, uintptr_t fnc);
 void vFSp_32(x64emu_t *emu, uintptr_t fnc);
 void vFXp_32(x64emu_t *emu, uintptr_t fnc);
+void cFpp_32(x64emu_t *emu, uintptr_t fnc);
 void wFpi_32(x64emu_t *emu, uintptr_t fnc);
 void iFEv_32(x64emu_t *emu, uintptr_t fnc);
 void iFEi_32(x64emu_t *emu, uintptr_t fnc);
@@ -217,6 +223,7 @@ void pFEv_32(x64emu_t *emu, uintptr_t fnc);
 void pFEu_32(x64emu_t *emu, uintptr_t fnc);
 void pFEp_32(x64emu_t *emu, uintptr_t fnc);
 void pFES_32(x64emu_t *emu, uintptr_t fnc);
+void pFii_32(x64emu_t *emu, uintptr_t fnc);
 void pFiu_32(x64emu_t *emu, uintptr_t fnc);
 void pFia_32(x64emu_t *emu, uintptr_t fnc);
 void pFuu_32(x64emu_t *emu, uintptr_t fnc);
@@ -439,6 +446,7 @@ void vFilpu_32(x64emu_t *emu, uintptr_t fnc);
 void vFilpp_32(x64emu_t *emu, uintptr_t fnc);
 void vFipup_32(x64emu_t *emu, uintptr_t fnc);
 void vFipll_32(x64emu_t *emu, uintptr_t fnc);
+void vFippp_32(x64emu_t *emu, uintptr_t fnc);
 void vFCCCC_32(x64emu_t *emu, uintptr_t fnc);
 void vFWWWW_32(x64emu_t *emu, uintptr_t fnc);
 void vFuccc_32(x64emu_t *emu, uintptr_t fnc);
@@ -493,6 +501,7 @@ void vFuppu_32(x64emu_t *emu, uintptr_t fnc);
 void vFffff_32(x64emu_t *emu, uintptr_t fnc);
 void vFdddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFllii_32(x64emu_t *emu, uintptr_t fnc);
+void vFpiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFpipp_32(x64emu_t *emu, uintptr_t fnc);
 void vFpdii_32(x64emu_t *emu, uintptr_t fnc);
 void vFpddd_32(x64emu_t *emu, uintptr_t fnc);
@@ -501,6 +510,7 @@ void vFppip_32(x64emu_t *emu, uintptr_t fnc);
 void vFpppp_32(x64emu_t *emu, uintptr_t fnc);
 void vFXiiL_32(x64emu_t *emu, uintptr_t fnc);
 void vFXpip_32(x64emu_t *emu, uintptr_t fnc);
+void cFpiii_32(x64emu_t *emu, uintptr_t fnc);
 void iFEiip_32(x64emu_t *emu, uintptr_t fnc);
 void iFEiiN_32(x64emu_t *emu, uintptr_t fnc);
 void iFEipp_32(x64emu_t *emu, uintptr_t fnc);
@@ -556,6 +566,7 @@ void pFillu_32(x64emu_t *emu, uintptr_t fnc);
 void pFullu_32(x64emu_t *emu, uintptr_t fnc);
 void pFlfff_32(x64emu_t *emu, uintptr_t fnc);
 void pFpiLL_32(x64emu_t *emu, uintptr_t fnc);
+void pFpuii_32(x64emu_t *emu, uintptr_t fnc);
 void pFppLL_32(x64emu_t *emu, uintptr_t fnc);
 void pFpppp_32(x64emu_t *emu, uintptr_t fnc);
 void pFXiii_32(x64emu_t *emu, uintptr_t fnc);
@@ -613,6 +624,7 @@ void vFuiupi_32(x64emu_t *emu, uintptr_t fnc);
 void vFuiUUU_32(x64emu_t *emu, uintptr_t fnc);
 void vFuifff_32(x64emu_t *emu, uintptr_t fnc);
 void vFuiddd_32(x64emu_t *emu, uintptr_t fnc);
+void vFuipii_32(x64emu_t *emu, uintptr_t fnc);
 void vFuipip_32(x64emu_t *emu, uintptr_t fnc);
 void vFuipup_32(x64emu_t *emu, uintptr_t fnc);
 void vFuippp_32(x64emu_t *emu, uintptr_t fnc);
@@ -699,6 +711,7 @@ void LFpBp_LLp_32(x64emu_t *emu, uintptr_t fnc);
 void iFippprLL__32(x64emu_t *emu, uintptr_t fnc);
 void LFLbp_bL_Bp_BL__32(x64emu_t *emu, uintptr_t fnc);
 void LFpLpriiiiiiiiilt_a_32(x64emu_t *emu, uintptr_t fnc);
+void vFEiiipp_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiiiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiiuil_32(x64emu_t *emu, uintptr_t fnc);
 void vFiiilpi_32(x64emu_t *emu, uintptr_t fnc);
@@ -710,6 +723,7 @@ void vFiliplu_32(x64emu_t *emu, uintptr_t fnc);
 void vFipiplp_32(x64emu_t *emu, uintptr_t fnc);
 void vFCCCCff_32(x64emu_t *emu, uintptr_t fnc);
 void vFuiiiii_32(x64emu_t *emu, uintptr_t fnc);
+void vFuiiiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFuiiuii_32(x64emu_t *emu, uintptr_t fnc);
 void vFuiiuup_32(x64emu_t *emu, uintptr_t fnc);
 void vFuiIIII_32(x64emu_t *emu, uintptr_t fnc);
@@ -798,6 +812,7 @@ void vFuipdddd_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuiiiii_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuiiiiC_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuiiiiu_32(x64emu_t *emu, uintptr_t fnc);
+void vFuuiiiip_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuiiuup_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuiCiui_32(x64emu_t *emu, uintptr_t fnc);
 void vFuuiCiuu_32(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped32/wrappedopenal.c b/src/wrapped32/wrappedopenal.c
new file mode 100644
index 00000000..1d53b894
--- /dev/null
+++ b/src/wrapped32/wrappedopenal.c
@@ -0,0 +1,180 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "box32context.h"
+#include "librarian.h"
+#include "myalign32.h"
+
+static const char* openalName = "libopenal.so.1";
+#define LIBNAME openal
+
+#include "generated/wrappedopenaltypes32.h"
+
+#include "wrappercallback32.h"
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)
+
+// Request ...
+#define GO(A)   \
+static uintptr_t my32_Request_fct_##A = 0;              \
+static void my32_Request_##A(int32_t a, int32_t b)      \
+{                                                       \
+    RunFunctionFmt(my32_Request_fct_##A, "ii", 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(my32_Request_fct_##A == (uintptr_t)fct) return my32_Request_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_Request_fct_##A == 0) {my32_Request_fct_##A = (uintptr_t)fct; return my32_Request_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for openal Request callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+void* my32_alGetProcAddress(x64emu_t* emu, void* name);
+void* my32_alcGetProcAddress(x64emu_t* emu, void* device, void* name);
+void my32_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb);
+void my32_alRequestFoldbackStop(x64emu_t* emu);
+
+#include "wrappedlib_init32.h"
+
+
+void fillALProcWrapper32()
+{
+    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).w = openalsymbolmap[i].w;
+        kh_value(symbolmap, k).resolved = 0;
+    }
+    // and the my32_ 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).w = openalmysymbolmap[i].w;
+        kh_value(symbolmap, k).resolved = 0;
+    }
+    my_context->alwrappers = symbolmap;
+    // fill my32_* 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).w = openalmysymbolmap[i].w;
+        kh_value(symbolmap, k).resolved = 0;
+    }
+    my_context->almymap = symbolmap;
+}
+
+EXPORT void* my32_alGetProcAddress(x64emu_t* emu, void* name)
+{
+    khint_t k;
+    const char* rname = (const char*)name;
+    printf_log(LOG_DEBUG, "Calling 32bits alGetProcAddress(%s)\n", rname);
+    if(!emu->context->alwrappers)   // could be moved in "my" structure...
+        fillALProcWrapper32(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 "my32_" now...
+        char tmp[200];
+        strcpy(tmp, "my32_");
+        strcat(tmp, rname);
+        symbol = dlsym(emu->context->box64lib, tmp);
+    } else
+        symbol = my->alGetProcAddress(name);
+    if(!symbol)
+        return NULL;    // easy
+    // 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;
+    }
+    symbol1_t *s = &kh_value(emu->context->alwrappers, k);
+    if(!s->resolved) {
+        const char* constname = kh_key(emu->context->alwrappers, k);
+        s->addr = AddCheckBridge(emu->context->system, s->w, symbol, 0, constname);
+        s->resolved = 1;
+    }
+    return (void*)s->addr;
+}
+
+EXPORT void* my32_alcGetProcAddress(x64emu_t* emu, void* device, void* name)
+{
+    khint_t k;
+    const char* rname = (const char*)name;
+    printf_log(LOG_DEBUG, "Calling 32bits alcGetProcAddress(%p, %s)\n", device, rname);
+    if(!emu->context->alwrappers)   // could be moved in "my" structure...
+        fillALProcWrapper32();
+    // 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 "my32_" now...
+        char tmp[200];
+        strcpy(tmp, "my32_");
+        strcat(tmp, rname);
+        symbol = dlsym(emu->context->box64lib, tmp);
+    } else
+        symbol = my->alcGetProcAddress(device, name);
+    if(!symbol)
+        return NULL;    // easy
+    // 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;
+    }
+    symbol1_t *s = &kh_value(emu->context->alwrappers, k);
+    if(!s->resolved) {
+        const char* constname = kh_key(emu->context->alwrappers, k);
+        s->addr = AddCheckBridge(emu->context->system, s->w, symbol, 0, constname);
+        s->resolved = 1;
+    }
+    return (void*)s->addr;
+}
+
+EXPORT void my32_alRequestFoldbackStart(x64emu_t *emu, int32_t mode, int32_t count, int32_t length, void* mem, void* cb)
+{
+    (void)emu;
+    my->alRequestFoldbackStart(mode, count, length, mem, find_Request_Fct(cb));
+}
+
+EXPORT void my32_alRequestFoldbackStop(x64emu_t* emu)
+{
+    (void)emu;
+    my->alRequestFoldbackStop();
+}
diff --git a/src/wrapped32/wrappedopenal_private.h b/src/wrapped32/wrappedopenal_private.h
new file mode 100644
index 00000000..60aa4c0d
--- /dev/null
+++ b/src/wrapped32/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, cFi)
+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, cFp)
+GO(alcProcessContext, vFp)
+GO(alcSuspendContext, vFp)
+GO(alcDestroyContext, vFp)
+GO(alcGetCurrentContext, pFv)
+GO(alcGetContextsDevice, pFp)
+GO(alcOpenDevice, pFp)
+GO(alcCloseDevice, cFp)
+GO(alcGetError, iFp)
+GO(alcIsExtensionPresent, cFpp)
+GOM(alcGetProcAddress, pFEpp)
+GO(alcGetEnumValue, iFpp)
+GO(alcGetString, pFpi)
+GO(alcGetIntegerv, vFpiip)
+GO(alcCaptureOpenDevice, pFpuii)
+GO(alcCaptureCloseDevice, cFp)
+GO(alcCaptureStart, vFp)
+GO(alcCaptureStop, vFp)
+GO(alcCaptureSamples, vFppi)
+
+GO(alcGetThreadContext, pFv)
+GO(alcSetThreadContext, cFp)
+GO(alcLoopbackOpenDeviceSOFT, pFp)
+GO(alcIsRenderFormatSupportedSOFT, cFpiii)
+GO(alcRenderSamplesSOFT, vFppi)
+GO(alcDevicePauseSOFT, vFp)
+GO(alcDeviceResumeSOFT, vFp)
+GO(alcGetStringiSOFT, pFpii)
+GO(alcResetDeviceSOFT, cFpp)
+GO(alcGetInteger64vSOFT, vFpiip)
+
+GO(alBufferDataStatic, vFuipii)
+GO(alBufferSubDataSOFT, vFuipii)
+GOM(alRequestFoldbackStart, vFEiiipp)
+GOM(alRequestFoldbackStop, vFEv)
+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)