diff --git a/CMakeLists.txt b/CMakeLists.txt index e81d85373..8870794a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -862,6 +862,7 @@ if(BOX32) "${BOX64_ROOT}/src/wrapped32/wrappednsl.c" "${BOX64_ROOT}/src/wrapped32/wrappedlibcups.c" "${BOX64_ROOT}/src/wrapped32/wrappedgbm.c" + "${BOX64_ROOT}/src/wrapped32/wrappedlibegl.c" ) endif() string(REPLACE ".c" "_private.h" MODROOT ${BOX64_ROOT}) diff --git a/rebuild_wrappers_32.py b/rebuild_wrappers_32.py index 2185940f4..803f31924 100755 --- a/rebuild_wrappers_32.py +++ b/rebuild_wrappers_32.py @@ -874,6 +874,7 @@ def readFiles(files: Iterable[str]) -> Tuple[JumbledFunctions, JumbledFunctions, or match("gstinterfaces010","gstaudio")\ or match("gstreamer010","gstreamer") \ or match("appindicator","appindicator3")\ + or match("libgl", "libegl") \ \ or match("libc", "tcmallocminimal") \ or match("libc", "ldlinux") \ diff --git a/src/library_list_32.h b/src/library_list_32.h index 0f40034fb..a085c164a 100644 --- a/src/library_list_32.h +++ b/src/library_list_32.h @@ -31,6 +31,8 @@ GO("libasound.so.2", libasound) GO("libasound.so", libasound) GO("libfreetype.so.6", freetype) GO("libfontconfig.so.1", fontconfig) +GO("libEGL.so", libegl) +GO("libEGL.so.1", libegl) GO("libX11.so", libx11) GO("libXdamage.so", libxdamage) diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 662b7be16..14a96b97e 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -629,8 +629,10 @@ #() uFpuU -> uFpuU #() uEpup -> uEpup #() uFpup -> uFpup +#() uFppi -> uFppi #() uFppu -> uFppu #() uEppL -> uEppL +#() uFppL -> uFppL #() uFppp -> uFppp #() uFXuu -> uFXuu #() UEppi -> UEppi @@ -765,7 +767,9 @@ #() lEpBp_i -> lEpBi #() lFpbp_L -> lFpBL #() LEpBp_i -> LEpBi +#() pFuXbl_ -> pFuXB #() pFpibp_ -> pFpiB +#() pFpubl_ -> pFpuB #() pEppbp_ -> pEppB #() pEppBp_ -> pEppB #() pFppbp_ -> pFppB @@ -1046,9 +1050,11 @@ #() uFuuuu -> uFuuuu #() uFuppd -> uFuppd #() uFpCCC -> uFpCCC +#() uFppii -> uFppii #() uFppip -> uFppip #() uFpppi -> uFpppi #() uFpppd -> uFpppd +#() uFpppp -> uFpppp #() lEEipi -> lEEipi #() lEEppL -> lEEppL #() lEiipL -> lEiipL @@ -1101,6 +1107,7 @@ #() pEpLpL -> pEpLpL #() pFpLpL -> pFpLpL #() pEppLL -> pEppLL +#() pFppLp -> pFppLp #() pFpppi -> pFpppi #() pFpppL -> pFpppL #() pFpppp -> pFpppp @@ -1138,11 +1145,14 @@ #() IEpBp_ii -> IEpBii #() IEpBp_ia -> IEpBia #() uFppibp_ -> uFppiB +#() uFppibl_ -> uFppiB +#() uFpbp_ip -> uFpBip #() UEpBp_ii -> UEpBii #() UEpBp_ia -> UEpBia #() lEiibl_L -> lEiiBL #() LEpBp_ii -> LEpBii #() LEpbp_Lp -> LEpBLp +#() pFpppbl_ -> pFpppB #() vFpibpp_i -> vFpiBi #() iEEpprLL_ -> iEEppB #() iFuubpu_u -> iFuuBu @@ -1423,6 +1433,7 @@ #() pFpuiii -> pFpuiii #() pFpuuip -> pFpuuip #() pFpuuuu -> pFpuuuu +#() pFpuppp -> pFpuppp #() pFpdddd -> pFpdddd #() pFppipi -> pFppipi #() pFppuup -> pFppuup @@ -1451,9 +1462,11 @@ #() iFXiibL_i -> iFXiiBi #() iFXCupbL_ -> iFXCupB #() iFXLbL_ii -> iFXLBii +#() uFppbp_ip -> uFppBip #() LEpbp_LLp -> LEpBLLp #() LEpBp_LLp -> LEpBLLp #() pFpipibp_ -> pFpipiB +#() pFppupbl_ -> pFppupB #() pFppLbp_p -> pFppLBp #() iEippprLL_ -> iEipppB #() iFpuibpu_p -> iFpuiBp @@ -2452,6 +2465,9 @@ wrappedlibdrm: - drmFreeVersion - pFi: - drmGetVersion +wrappedlibegl: +- pFp: + - eglGetProcAddress wrappedlibgl: - iFi: - glXSwapIntervalMESA diff --git a/src/wrapped32/generated/wrappedlibegldefs32.h b/src/wrapped32/generated/wrappedlibegldefs32.h new file mode 100644 index 000000000..aeae796ed --- /dev/null +++ b/src/wrapped32/generated/wrappedlibegldefs32.h @@ -0,0 +1,8 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedlibeglDEFS32_H_ +#define __wrappedlibeglDEFS32_H_ + + +#endif // __wrappedlibeglDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedlibegltypes32.h b/src/wrapped32/generated/wrappedlibegltypes32.h new file mode 100644 index 000000000..9822103b1 --- /dev/null +++ b/src/wrapped32/generated/wrappedlibegltypes32.h @@ -0,0 +1,19 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedlibeglTYPES32_H_ +#define __wrappedlibeglTYPES32_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + +typedef void* (*pFp_t)(void*); + +#define SUPER() ADDED_FUNCTIONS() \ + GO(eglGetProcAddress, pFp_t) + +#endif // __wrappedlibeglTYPES32_H_ diff --git a/src/wrapped32/generated/wrappedlibeglundefs32.h b/src/wrapped32/generated/wrappedlibeglundefs32.h new file mode 100644 index 000000000..1753f5d49 --- /dev/null +++ b/src/wrapped32/generated/wrappedlibeglundefs32.h @@ -0,0 +1,8 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedlibeglUNDEFS32_H_ +#define __wrappedlibeglUNDEFS32_H_ + + +#endif // __wrappedlibeglUNDEFS32_H_ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 01d889c9e..feaf91e71 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -723,8 +723,10 @@ typedef uint32_t (*uFpii_t)(void*, int32_t, int32_t); typedef uint32_t (*uFpuU_t)(void*, uint32_t, uint64_t); typedef uint32_t (*uEpup_t)(void*, uint32_t, void*); typedef uint32_t (*uFpup_t)(void*, uint32_t, void*); +typedef uint32_t (*uFppi_t)(void*, void*, int32_t); typedef uint32_t (*uFppu_t)(void*, void*, uint32_t); typedef uint32_t (*uEppL_t)(void*, void*, uintptr_t); +typedef uint32_t (*uFppL_t)(void*, void*, uintptr_t); typedef uint32_t (*uFppp_t)(void*, void*, void*); typedef uint32_t (*uFXuu_t)(void*, uint32_t, uint32_t); typedef uint64_t (*UEppi_t)(void*, void*, int32_t); @@ -859,7 +861,9 @@ typedef double (*dEpBp_a_t)(void*, struct_p_t*, void*); typedef intptr_t (*lEpBp_i_t)(void*, struct_p_t*, int32_t); typedef intptr_t (*lFpbp_L_t)(void*, struct_p_t*, uintptr_t); typedef uintptr_t (*LEpBp_i_t)(void*, struct_p_t*, int32_t); +typedef void* (*pFuXbl__t)(uint32_t, void*, struct_l_t*); typedef void* (*pFpibp__t)(void*, int32_t, struct_p_t*); +typedef void* (*pFpubl__t)(void*, uint32_t, struct_l_t*); typedef void* (*pEppbp__t)(void*, void*, struct_p_t*); typedef void* (*pEppBp__t)(void*, void*, struct_p_t*); typedef void* (*pFppbp__t)(void*, void*, struct_p_t*); @@ -1140,9 +1144,11 @@ typedef uint32_t (*uFEpii_t)(x64emu_t*, void*, int32_t, int32_t); typedef uint32_t (*uFuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t); typedef uint32_t (*uFuppd_t)(uint32_t, void*, void*, double); typedef uint32_t (*uFpCCC_t)(void*, uint8_t, uint8_t, uint8_t); +typedef uint32_t (*uFppii_t)(void*, void*, int32_t, int32_t); typedef uint32_t (*uFppip_t)(void*, void*, int32_t, void*); typedef uint32_t (*uFpppi_t)(void*, void*, void*, int32_t); typedef uint32_t (*uFpppd_t)(void*, void*, void*, double); +typedef uint32_t (*uFpppp_t)(void*, void*, void*, void*); typedef intptr_t (*lEEipi_t)(x64emu_t*, int32_t, void*, int32_t); typedef intptr_t (*lEEppL_t)(x64emu_t*, void*, void*, uintptr_t); typedef intptr_t (*lEiipL_t)(int32_t, int32_t, void*, uintptr_t); @@ -1195,6 +1201,7 @@ typedef void* (*pEpLiS_t)(void*, uintptr_t, int32_t, void*); typedef void* (*pEpLpL_t)(void*, uintptr_t, void*, uintptr_t); typedef void* (*pFpLpL_t)(void*, uintptr_t, void*, uintptr_t); typedef void* (*pEppLL_t)(void*, void*, uintptr_t, uintptr_t); +typedef void* (*pFppLp_t)(void*, void*, uintptr_t, void*); typedef void* (*pFpppi_t)(void*, void*, void*, int32_t); typedef void* (*pFpppL_t)(void*, void*, void*, uintptr_t); typedef void* (*pFpppp_t)(void*, void*, void*, void*); @@ -1232,11 +1239,14 @@ typedef int32_t (*iFXLbp_p_t)(void*, uintptr_t, struct_p_t*, void*); typedef int64_t (*IEpBp_ii_t)(void*, struct_p_t*, int32_t, int32_t); typedef int64_t (*IEpBp_ia_t)(void*, struct_p_t*, int32_t, void*); typedef uint32_t (*uFppibp__t)(void*, void*, int32_t, struct_p_t*); +typedef uint32_t (*uFppibl__t)(void*, void*, int32_t, struct_l_t*); +typedef uint32_t (*uFpbp_ip_t)(void*, struct_p_t*, int32_t, void*); typedef uint64_t (*UEpBp_ii_t)(void*, struct_p_t*, int32_t, int32_t); typedef uint64_t (*UEpBp_ia_t)(void*, struct_p_t*, int32_t, void*); typedef intptr_t (*lEiibl_L_t)(int32_t, int32_t, struct_l_t*, uintptr_t); typedef uintptr_t (*LEpBp_ii_t)(void*, struct_p_t*, int32_t, int32_t); typedef uintptr_t (*LEpbp_Lp_t)(void*, struct_p_t*, uintptr_t, void*); +typedef void* (*pFpppbl__t)(void*, void*, void*, struct_l_t*); typedef void (*vFpibpp_i_t)(void*, int32_t, struct_pp_t*, int32_t); typedef int32_t (*iEEpprLL__t)(x64emu_t*, void*, void*, struct_LL_t*); typedef int32_t (*iFuubpu_u_t)(uint32_t, uint32_t, struct_pu_t*, uint32_t); @@ -1517,6 +1527,7 @@ typedef void* (*pFpippp_t)(void*, int32_t, void*, void*, void*); typedef void* (*pFpuiii_t)(void*, uint32_t, int32_t, int32_t, int32_t); typedef void* (*pFpuuip_t)(void*, uint32_t, uint32_t, int32_t, void*); typedef void* (*pFpuuuu_t)(void*, uint32_t, uint32_t, uint32_t, uint32_t); +typedef void* (*pFpuppp_t)(void*, uint32_t, void*, void*, void*); typedef void* (*pFpdddd_t)(void*, double, double, double, double); typedef void* (*pFppipi_t)(void*, void*, int32_t, void*, int32_t); typedef void* (*pFppuup_t)(void*, void*, uint32_t, uint32_t, void*); @@ -1545,9 +1556,11 @@ typedef int32_t (*iFbp_pppi_t)(struct_p_t*, void*, void*, void*, int32_t); typedef int32_t (*iFXiibL_i_t)(void*, int32_t, int32_t, struct_L_t*, int32_t); typedef int32_t (*iFXCupbL__t)(void*, uint8_t, uint32_t, void*, struct_L_t*); typedef int32_t (*iFXLbL_ii_t)(void*, uintptr_t, struct_L_t*, int32_t, int32_t); +typedef uint32_t (*uFppbp_ip_t)(void*, void*, struct_p_t*, int32_t, void*); typedef uintptr_t (*LEpbp_LLp_t)(void*, struct_p_t*, uintptr_t, uintptr_t, void*); typedef uintptr_t (*LEpBp_LLp_t)(void*, struct_p_t*, uintptr_t, uintptr_t, void*); typedef void* (*pFpipibp__t)(void*, int32_t, void*, int32_t, struct_p_t*); +typedef void* (*pFppupbl__t)(void*, void*, uint32_t, void*, struct_l_t*); typedef void* (*pFppLbp_p_t)(void*, void*, uintptr_t, struct_p_t*, void*); typedef int32_t (*iEippprLL__t)(int32_t, void*, void*, void*, struct_LL_t*); typedef int32_t (*iFpuibpu_p_t)(void*, uint32_t, int32_t, struct_pu_t*, void*); @@ -2770,8 +2783,10 @@ void uFpii_32(x64emu_t *emu, uintptr_t fcn) { uFpii_t fn = (uFpii_t)fcn; R_EAX = void uFpuU_32(x64emu_t *emu, uintptr_t fcn) { uFpuU_t fn = (uFpuU_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint64_t, R_ESP + 12)); } void uEpup_32(x64emu_t *emu, uintptr_t fcn) { uEpup_t fn = (uEpup_t)fcn; errno = emu->libc_err; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); emu->libc_err = errno; } void uFpup_32(x64emu_t *emu, uintptr_t fcn) { uFpup_t fn = (uFpup_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); } +void uFppi_32(x64emu_t *emu, uintptr_t fcn) { uFppi_t fn = (uFppi_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); } void uFppu_32(x64emu_t *emu, uintptr_t fcn) { uFppu_t fn = (uFppu_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void uEppL_32(x64emu_t *emu, uintptr_t fcn) { uEppL_t fn = (uEppL_t)fcn; errno = emu->libc_err; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12))); emu->libc_err = errno; } +void uFppL_32(x64emu_t *emu, uintptr_t fcn) { uFppL_t fn = (uFppL_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12))); } void uFppp_32(x64emu_t *emu, uintptr_t fcn) { uFppp_t fn = (uFppp_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); } void uFXuu_32(x64emu_t *emu, uintptr_t fcn) { uFXuu_t fn = (uFXuu_t)fcn; R_EAX = (uint32_t)fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); } void UEppi_32(x64emu_t *emu, uintptr_t fcn) { UEppi_t fn = (UEppi_t)fcn; errno = emu->libc_err; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; emu->libc_err = errno; } @@ -2906,7 +2921,9 @@ void dEpBp_a_32(x64emu_t *emu, uintptr_t fcn) { dEpBp_a_t fn = (dEpBp_a_t)fcn; e void lEpBp_i_32(x64emu_t *emu, uintptr_t fcn) { lEpBp_i_t fn = (lEpBp_i_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void lFpbp_L_32(x64emu_t *emu, uintptr_t fcn) { lFpbp_L_t fn = (lFpbp_L_t)fcn; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_long(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 12)))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void LEpBp_i_32(x64emu_t *emu, uintptr_t fcn) { LEpBp_i_t fn = (LEpBp_i_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } +void pFuXbl__32(x64emu_t *emu, uintptr_t fcn) { pFuXbl__t fn = (pFuXbl__t)fcn; struct_l_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_l(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4), getDisplay(from_ptriv(R_ESP + 8)), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void pFpibp__32(x64emu_t *emu, uintptr_t fcn) { pFpibp__t fn = (pFpibp__t)fcn; struct_p_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } +void pFpubl__32(x64emu_t *emu, uintptr_t fcn) { pFpubl__t fn = (pFpubl__t)fcn; struct_l_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_l(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void pEppbp__32(x64emu_t *emu, uintptr_t fcn) { pEppbp__t fn = (pEppbp__t)fcn; errno = emu->libc_err; struct_p_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); emu->libc_err = errno; } void pEppBp__32(x64emu_t *emu, uintptr_t fcn) { pEppBp__t fn = (pEppBp__t)fcn; errno = emu->libc_err; struct_p_t arg_12={0}; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); emu->libc_err = errno; } void pFppbp__32(x64emu_t *emu, uintptr_t fcn) { pFppbp__t fn = (pFppbp__t)fcn; struct_p_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } @@ -3187,9 +3204,11 @@ void uFEpii_32(x64emu_t *emu, uintptr_t fcn) { uFEpii_t fn = (uFEpii_t)fcn; R_EA void uFuuuu_32(x64emu_t *emu, uintptr_t fcn) { uFuuuu_t fn = (uFuuuu_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16)); } void uFuppd_32(x64emu_t *emu, uintptr_t fcn) { uFuppd_t fn = (uFuppd_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(double, R_ESP + 16)); } void uFpCCC_32(x64emu_t *emu, uintptr_t fcn) { uFpCCC_t fn = (uFpCCC_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(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 uFppii_32(x64emu_t *emu, uintptr_t fcn) { uFppii_t fn = (uFppii_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void uFppip_32(x64emu_t *emu, uintptr_t fcn) { uFppip_t fn = (uFppip_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); } void uFpppi_32(x64emu_t *emu, uintptr_t fcn) { uFpppi_t fn = (uFpppi_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); } void uFpppd_32(x64emu_t *emu, uintptr_t fcn) { uFpppd_t fn = (uFpppd_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(double, R_ESP + 16)); } +void uFpppp_32(x64emu_t *emu, uintptr_t fcn) { uFpppp_t fn = (uFpppp_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); } void lEEipi_32(x64emu_t *emu, uintptr_t fcn) { lEEipi_t fn = (lEEipi_t)fcn; errno = emu->libc_err; R_EAX = to_long(fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12))); emu->libc_err = errno; } void lEEppL_32(x64emu_t *emu, uintptr_t fcn) { lEEppL_t fn = (lEEppL_t)fcn; errno = emu->libc_err; R_EAX = to_long(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)))); emu->libc_err = errno; } void lEiipL_32(x64emu_t *emu, uintptr_t fcn) { lEiipL_t fn = (lEiipL_t)fcn; errno = emu->libc_err; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)))); emu->libc_err = errno; } @@ -3242,6 +3261,7 @@ void pEpLiS_32(x64emu_t *emu, uintptr_t fcn) { pEpLiS_t fn = (pEpLiS_t)fcn; errn void pEpLpL_32(x64emu_t *emu, uintptr_t fcn) { pEpLpL_t fn = (pEpLpL_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)))); emu->libc_err = errno; } void pFpLpL_32(x64emu_t *emu, uintptr_t fcn) { pFpLpL_t fn = (pFpLpL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ulong(from_ptri(ulong_t, R_ESP + 16)))); } void pEppLL_32(x64emu_t *emu, uintptr_t fcn) { pEppLL_t fn = (pEppLL_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)))); emu->libc_err = errno; } +void pFppLp_32(x64emu_t *emu, uintptr_t fcn) { pFppLp_t fn = (pFppLp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16))); } void pFpppi_32(x64emu_t *emu, uintptr_t fcn) { pFpppi_t fn = (pFpppi_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); } void pFpppL_32(x64emu_t *emu, uintptr_t fcn) { pFpppL_t fn = (pFpppL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_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))); } @@ -3279,11 +3299,14 @@ void iFXLbp_p_32(x64emu_t *emu, uintptr_t fcn) { iFXLbp_p_t fn = (iFXLbp_p_t)fcn void IEpBp_ii_32(x64emu_t *emu, uintptr_t fcn) { IEpBp_ii_t fn = (IEpBp_ii_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; ui64_t r; r.i = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void IEpBp_ia_32(x64emu_t *emu, uintptr_t fcn) { IEpBp_ia_t fn = (IEpBp_ia_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; ui64_t r; r.i = fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_locale(from_ptri(ptr_t, R_ESP + 16))); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void uFppibp__32(x64emu_t *emu, uintptr_t fcn) { uFppibp__t fn = (uFppibp__t)fcn; struct_p_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_p(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } +void uFppibl__32(x64emu_t *emu, uintptr_t fcn) { uFppibl__t fn = (uFppibl__t)fcn; struct_l_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_l(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } +void uFpbp_ip_32(x64emu_t *emu, uintptr_t fcn) { uFpbp_ip_t fn = (uFpbp_ip_t)fcn; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void UEpBp_ii_32(x64emu_t *emu, uintptr_t fcn) { UEpBp_ii_t fn = (UEpBp_ii_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void UEpBp_ia_32(x64emu_t *emu, uintptr_t fcn) { UEpBp_ia_t fn = (UEpBp_ia_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; ui64_t r; r.u = (uint64_t)fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_locale(from_ptri(ptr_t, R_ESP + 16))); R_EAX = r.d[0]; R_EDX = r.d[1]; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void lEiibl_L_32(x64emu_t *emu, uintptr_t fcn) { lEiibl_L_t fn = (lEiibl_L_t)fcn; errno = emu->libc_err; struct_l_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_l(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 16)))); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); emu->libc_err = errno; } void LEpBp_ii_32(x64emu_t *emu, uintptr_t fcn) { LEpBp_ii_t fn = (LEpBp_ii_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void LEpbp_Lp_32(x64emu_t *emu, uintptr_t fcn) { LEpbp_Lp_t fn = (LEpbp_Lp_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptriv(R_ESP + 16))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } +void pFpppbl__32(x64emu_t *emu, uintptr_t fcn) { pFpppbl__t fn = (pFpppbl__t)fcn; struct_l_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_l(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void vFpibpp_i_32(x64emu_t *emu, uintptr_t fcn) { vFpibpp_i_t fn = (vFpibpp_i_t)fcn; struct_pp_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_pp(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptri(int32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_pp(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void iEEpprLL__32(x64emu_t *emu, uintptr_t fcn) { iEEpprLL__t fn = (iEEpprLL__t)fcn; errno = emu->libc_err; struct_LL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL); emu->libc_err = errno; } void iFuubpu_u_32(x64emu_t *emu, uintptr_t fcn) { iFuubpu_u_t fn = (iFuubpu_u_t)fcn; struct_pu_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_pu(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptri(uint32_t, R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_pu(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } @@ -3564,6 +3587,7 @@ void pFpippp_32(x64emu_t *emu, uintptr_t fcn) { pFpippp_t fn = (pFpippp_t)fcn; R void pFpuiii_32(x64emu_t *emu, uintptr_t fcn) { pFpuiii_t fn = (pFpuiii_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); } void pFpuuip_32(x64emu_t *emu, uintptr_t fcn) { pFpuuip_t fn = (pFpuuip_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); } void pFpuuuu_32(x64emu_t *emu, uintptr_t fcn) { pFpuuuu_t fn = (pFpuuuu_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20))); } +void pFpuppp_32(x64emu_t *emu, uintptr_t fcn) { pFpuppp_t fn = (pFpuppp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); } void pFpdddd_32(x64emu_t *emu, uintptr_t fcn) { pFpdddd_t fn = (pFpdddd_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(double, R_ESP + 8), from_ptri(double, R_ESP + 16), from_ptri(double, R_ESP + 24), from_ptri(double, R_ESP + 32))); } void pFppipi_32(x64emu_t *emu, uintptr_t fcn) { pFppipi_t fn = (pFppipi_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); } void pFppuup_32(x64emu_t *emu, uintptr_t fcn) { pFppuup_t fn = (pFppuup_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); } @@ -3592,9 +3616,11 @@ void iFbp_pppi_32(x64emu_t *emu, uintptr_t fcn) { iFbp_pppi_t fn = (iFbp_pppi_t) void iFXiibL_i_32(x64emu_t *emu, uintptr_t fcn) { iFXiibL_i_t fn = (iFXiibL_i_t)fcn; struct_L_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_L(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_ptri(int32_t, R_ESP + 20)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void iFXCupbL__32(x64emu_t *emu, uintptr_t fcn) { iFXCupbL__t fn = (iFXCupbL__t)fcn; struct_L_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_L(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint8_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } void iFXLbL_ii_32(x64emu_t *emu, uintptr_t fcn) { iFXLbL_ii_t fn = (iFXLbL_ii_t)fcn; struct_L_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_L(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } +void uFppbp_ip_32(x64emu_t *emu, uintptr_t fcn) { uFppbp_ip_t fn = (uFppbp_ip_t)fcn; struct_p_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_p(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void LEpbp_LLp_32(x64emu_t *emu, uintptr_t fcn) { LEpbp_LLp_t fn = (LEpbp_LLp_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void LEpBp_LLp_32(x64emu_t *emu, uintptr_t fcn) { LEpBp_LLp_t fn = (LEpBp_LLp_t)fcn; errno = emu->libc_err; struct_p_t arg_8={0}; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); emu->libc_err = errno; } void pFpipibp__32(x64emu_t *emu, uintptr_t fcn) { pFpipibp__t fn = (pFpipibp__t)fcn; struct_p_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_p(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } +void pFppupbl__32(x64emu_t *emu, uintptr_t fcn) { pFppupbl__t fn = (pFppupbl__t)fcn; struct_l_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_l(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL)); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_l(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } void pFppLbp_p_32(x64emu_t *emu, uintptr_t fcn) { pFppLbp_p_t fn = (pFppLbp_p_t)fcn; struct_p_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_p(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_ptriv(R_ESP + 20))); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void iEippprLL__32(x64emu_t *emu, uintptr_t fcn) { iEippprLL__t fn = (iEippprLL__t)fcn; errno = emu->libc_err; struct_LL_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 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); emu->libc_err = errno; } void iFpuibpu_p_32(x64emu_t *emu, uintptr_t fcn) { iFpuibpu_p_t fn = (iFpuibpu_p_t)fcn; struct_pu_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_pu(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL, from_ptriv(R_ESP + 20)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_pu(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 270c4478c..c885116d7 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -670,8 +670,10 @@ void uFpii_32(x64emu_t *emu, uintptr_t fnc); void uFpuU_32(x64emu_t *emu, uintptr_t fnc); void uEpup_32(x64emu_t *emu, uintptr_t fnc); void uFpup_32(x64emu_t *emu, uintptr_t fnc); +void uFppi_32(x64emu_t *emu, uintptr_t fnc); void uFppu_32(x64emu_t *emu, uintptr_t fnc); void uEppL_32(x64emu_t *emu, uintptr_t fnc); +void uFppL_32(x64emu_t *emu, uintptr_t fnc); void uFppp_32(x64emu_t *emu, uintptr_t fnc); void uFXuu_32(x64emu_t *emu, uintptr_t fnc); void UEppi_32(x64emu_t *emu, uintptr_t fnc); @@ -806,7 +808,9 @@ void dEpBp_a_32(x64emu_t *emu, uintptr_t fnc); void lEpBp_i_32(x64emu_t *emu, uintptr_t fnc); void lFpbp_L_32(x64emu_t *emu, uintptr_t fnc); void LEpBp_i_32(x64emu_t *emu, uintptr_t fnc); +void pFuXbl__32(x64emu_t *emu, uintptr_t fnc); void pFpibp__32(x64emu_t *emu, uintptr_t fnc); +void pFpubl__32(x64emu_t *emu, uintptr_t fnc); void pEppbp__32(x64emu_t *emu, uintptr_t fnc); void pEppBp__32(x64emu_t *emu, uintptr_t fnc); void pFppbp__32(x64emu_t *emu, uintptr_t fnc); @@ -1087,9 +1091,11 @@ void uFEpii_32(x64emu_t *emu, uintptr_t fnc); void uFuuuu_32(x64emu_t *emu, uintptr_t fnc); void uFuppd_32(x64emu_t *emu, uintptr_t fnc); void uFpCCC_32(x64emu_t *emu, uintptr_t fnc); +void uFppii_32(x64emu_t *emu, uintptr_t fnc); void uFppip_32(x64emu_t *emu, uintptr_t fnc); void uFpppi_32(x64emu_t *emu, uintptr_t fnc); void uFpppd_32(x64emu_t *emu, uintptr_t fnc); +void uFpppp_32(x64emu_t *emu, uintptr_t fnc); void lEEipi_32(x64emu_t *emu, uintptr_t fnc); void lEEppL_32(x64emu_t *emu, uintptr_t fnc); void lEiipL_32(x64emu_t *emu, uintptr_t fnc); @@ -1142,6 +1148,7 @@ void pEpLiS_32(x64emu_t *emu, uintptr_t fnc); void pEpLpL_32(x64emu_t *emu, uintptr_t fnc); void pFpLpL_32(x64emu_t *emu, uintptr_t fnc); void pEppLL_32(x64emu_t *emu, uintptr_t fnc); +void pFppLp_32(x64emu_t *emu, uintptr_t fnc); void pFpppi_32(x64emu_t *emu, uintptr_t fnc); void pFpppL_32(x64emu_t *emu, uintptr_t fnc); void pFpppp_32(x64emu_t *emu, uintptr_t fnc); @@ -1179,11 +1186,14 @@ void iFXLbp_p_32(x64emu_t *emu, uintptr_t fnc); void IEpBp_ii_32(x64emu_t *emu, uintptr_t fnc); void IEpBp_ia_32(x64emu_t *emu, uintptr_t fnc); void uFppibp__32(x64emu_t *emu, uintptr_t fnc); +void uFppibl__32(x64emu_t *emu, uintptr_t fnc); +void uFpbp_ip_32(x64emu_t *emu, uintptr_t fnc); void UEpBp_ii_32(x64emu_t *emu, uintptr_t fnc); void UEpBp_ia_32(x64emu_t *emu, uintptr_t fnc); void lEiibl_L_32(x64emu_t *emu, uintptr_t fnc); void LEpBp_ii_32(x64emu_t *emu, uintptr_t fnc); void LEpbp_Lp_32(x64emu_t *emu, uintptr_t fnc); +void pFpppbl__32(x64emu_t *emu, uintptr_t fnc); void vFpibpp_i_32(x64emu_t *emu, uintptr_t fnc); void iEEpprLL__32(x64emu_t *emu, uintptr_t fnc); void iFuubpu_u_32(x64emu_t *emu, uintptr_t fnc); @@ -1464,6 +1474,7 @@ void pFpippp_32(x64emu_t *emu, uintptr_t fnc); void pFpuiii_32(x64emu_t *emu, uintptr_t fnc); void pFpuuip_32(x64emu_t *emu, uintptr_t fnc); void pFpuuuu_32(x64emu_t *emu, uintptr_t fnc); +void pFpuppp_32(x64emu_t *emu, uintptr_t fnc); void pFpdddd_32(x64emu_t *emu, uintptr_t fnc); void pFppipi_32(x64emu_t *emu, uintptr_t fnc); void pFppuup_32(x64emu_t *emu, uintptr_t fnc); @@ -1492,9 +1503,11 @@ void iFbp_pppi_32(x64emu_t *emu, uintptr_t fnc); void iFXiibL_i_32(x64emu_t *emu, uintptr_t fnc); void iFXCupbL__32(x64emu_t *emu, uintptr_t fnc); void iFXLbL_ii_32(x64emu_t *emu, uintptr_t fnc); +void uFppbp_ip_32(x64emu_t *emu, uintptr_t fnc); void LEpbp_LLp_32(x64emu_t *emu, uintptr_t fnc); void LEpBp_LLp_32(x64emu_t *emu, uintptr_t fnc); void pFpipibp__32(x64emu_t *emu, uintptr_t fnc); +void pFppupbl__32(x64emu_t *emu, uintptr_t fnc); void pFppLbp_p_32(x64emu_t *emu, uintptr_t fnc); void iEippprLL__32(x64emu_t *emu, uintptr_t fnc); void iFpuibpu_p_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibegl.c b/src/wrapped32/wrappedlibegl.c new file mode 100644 index 000000000..f0e8eb47b --- /dev/null +++ b/src/wrapped32/wrappedlibegl.c @@ -0,0 +1,35 @@ +#include +#include +#include +#define _GNU_SOURCE /* See feature_test_macros(7) */ +#include + +#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 "box32context.h" +#include "librarian.h" +#include "callback.h" +#include "gltools.h" + +static const char* libeglName = "libEGL.so.1"; +#define LIBNAME libegl + +#include "generated/wrappedlibegltypes32.h" + +#include "wrappercallback32.h" + +void* getGLProcAddress32(x64emu_t* emu, glprocaddress_t procaddr, const char* rname); +EXPORT void* my32_eglGetProcAddress(x64emu_t* emu, void* name) +{ + khint_t k; + const char* rname = (const char*)name; + return getGLProcAddress32(emu, (glprocaddress_t)my->eglGetProcAddress, rname); +} + +#include "wrappedlib_init32.h" diff --git a/src/wrapped32/wrappedlibegl_private.h b/src/wrapped32/wrappedlibegl_private.h new file mode 100644 index 000000000..f6344c41a --- /dev/null +++ b/src/wrapped32/wrappedlibegl_private.h @@ -0,0 +1,49 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh... +#endif + +GO(eglBindAPI, uFu) +GO(eglBindTexImage, uFppi) +GO(eglChooseConfig, uFppbp_ip) +GO(eglClientWaitSync, iFppiU) +GO(eglCopyBuffers, uFppL) +GO(eglCreateContext, pFpppp) +GO(eglCreateImage, pFppupbl_) +GO(eglCreatePbufferFromClientBuffer, pFpuppp) +GO(eglCreatePbufferSurface, pFppp) +GO(eglCreatePixmapSurface, pFppLp) +GO(eglCreatePlatformPixmapSurface, pFpppbl_) +GO(eglCreatePlatformWindowSurface, pFpppbl_) +GO(eglCreateSync, pFpubl_) +GO(eglCreateWindowSurface, pFppLp) +GO(eglDestroyContext, uFpp) +GO(eglDestroyImage, uFpp) +GO(eglDestroySurface, uFpp) +GO(eglDestroySync, uFpp) +GO(eglGetConfigAttrib, uFppip) +GO(eglGetConfigs, uFpbp_ip) +GO(eglGetCurrentContext, pFv) +GO(eglGetCurrentDisplay, pFv) +GO(eglGetCurrentSurface, pFi) +GO(eglGetDisplay, pFX) +GO(eglGetError, iFv) +GO(eglGetPlatformDisplay, pFuXbl_) +GOM(eglGetProcAddress, pFEp) +GO(eglGetSyncAttrib, uFppibl_) +GO(eglInitialize, uFppp) +GO(eglMakeCurrent, uFpppp) +GO(eglQueryAPI, uFv) +GO(eglQueryContext, uFppip) +GO(eglQueryString, pFpi) +GO(eglQuerySurface, uFppip) +GO(eglReleaseTexImage, uFppi) +GO(eglReleaseThread, uFv) +GO(eglSurfaceAttrib, uFppii) +GO(eglSwapBuffers, uFpp) +GO(eglSwapInterval, uFpi) +GO(eglTerminate, uFp) +GO(eglWaitClient, uFv) +GO(eglWaitGL, uFv) +GO(eglWaitNative, uFi) +GO(eglWaitSync, uFppi) +