diff --git a/src/libtools/my_x11_conv.c b/src/libtools/my_x11_conv.c index 00978504..6b5cd549 100644 --- a/src/libtools/my_x11_conv.c +++ b/src/libtools/my_x11_conv.c @@ -459,6 +459,31 @@ void unconvertXEvent(my_XEvent_t* dst, my_XEvent_32_t* src) } } +void convert_XErrorEvent_to_32(void* d, void* s) +{ + my_XErrorEvent_t* src = s; + my_XErrorEvent_32_t* dst = d; + dst->type = src->type; + dst->display = to_ptrv(FindDisplay(src->display)); + dst->resourceid = to_ulong(src->resourceid); + dst->serial = to_ulong(src->serial); + dst->error_code = src->error_code; + dst->request_code = src->request_code; + dst->minor_code = src->minor_code; +} +void convert_XErrorEvent_to_64(void* d, void* s) +{ + my_XErrorEvent_32_t* src = s; + my_XErrorEvent_t* dst = d; + dst->minor_code = src->minor_code; + dst->request_code = src->request_code; + dst->error_code = src->error_code; + dst->serial = from_ulong(src->serial); + dst->resourceid = from_ulong(src->resourceid); + dst->display = getDisplay(from_ptrv(src->display)); + dst->type = src->type; +} + #define N_DISPLAY 4 #define N_SCREENS 16 my_XDisplay_t* my32_Displays_64[N_DISPLAY] = {0}; diff --git a/src/libtools/my_x11_conv.h b/src/libtools/my_x11_conv.h index e17073a1..142c0566 100644 --- a/src/libtools/my_x11_conv.h +++ b/src/libtools/my_x11_conv.h @@ -9,10 +9,17 @@ void convertXEvent(my_XEvent_32_t* dst, my_XEvent_t* src); void unconvertXEvent(my_XEvent_t* dst, my_XEvent_32_t* src); -void* addDisplay(void* d); // Adde new Native Display*, return a 32bits one -void* FindDisplay(void* d); // Find a Native Diplay* and return the 32bits one -void* getDisplay(void* d); // return the Native Display from a 32bits one -void delDisplay(void* d); // removed a 32bits Display and associated ressources +void convert_XErrorEvent_to_32(void* d, void* s); +void convert_XErrorEvent_to_64(void* d, void* s); + +// Add a new Native Display*, return a 32bits one +void* addDisplay(void* d); +// Find a Native Diplay* and return the 32bits one +void* FindDisplay(void* d); +// return the Native Display from a 32bits one +void* getDisplay(void* d); +// removed a 32bits Display and associated ressources +void delDisplay(void* d); void convert_Screen_to_32(void* d, void* s); diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index c50e4a3f..53515b46 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -99,6 +99,7 @@ #() pFriiiiiiiiilt_ -> pFB #() vFEv -> vFEv #() vFEp -> vFEp +#() vFEX -> vFEX #() vFcc -> vFcc #() vFww -> vFww #() vFii -> vFii @@ -589,6 +590,7 @@ #() iFXbiip_i -> iFXBi #() iFXbLip_L -> iFXBL #() vFXLbpLiL_ -> vFXLB +#() vFXLrpLiL_ -> vFXLB #() iFXLbpLiL_ -> iFXLB #() iFXLbLLii_ -> iFXLB #() pFXrLiiuL_p -> pFXBp @@ -858,7 +860,7 @@ #() iFuirLL_BLL_ -> iFuiBB #() iFXLpbLWWWcc_ -> iFXLpB #() iFXLbLWWWcc_i -> iFXLBi -#() iFXLubiiiiiLi_ -> iFXLuB +#() iFXLuriiiiiLi_ -> iFXLuB #() vFXLbLLLLLLLLLL_L -> vFXLBL #() iFXLbLLLLLLLLLL_L -> iFXLBL #() LFpLpriiiiiiiiilt_ -> LFpLpB @@ -1055,8 +1057,7 @@ #() iFpppbp_bup_ -> iFpppBB #() LFXLrLiiuL_Lp -> LFXLBLp #() pFEXLrLiiuL_i -> pFEXLBi -#() iFXbp_iubpLiL_ -> iFXBiuB -#() iFXLiubiiiiiLi_ -> iFXLiuB +#() iFXLiuriiiiiLi_ -> iFXLiuB #() LFLbp_bL_bp_bL_ -> LFLBBBB #() vFXLbLLLLLLLLLL_iL -> vFXLBiL #() iFXiiiBpLiiiLLLii_ -> iFXiiiB @@ -1448,12 +1449,12 @@ #() iFXLpppppppppp -> iFXLpppppppppp #() pFEXLiiuuLipii -> pFEXLiiuuLipii #() vFXiLLrLiiuL_Liiiipi -> vFXiLLBLiiiipi -#() iFXLLlliLBL_pBL_BL_Bp_ -> iFXLLlliLBpBBB #() vFuiiiiiiiiiuup -> vFuiiiiiiiiiuup #() vFuuuuuuuuuuuuu -> vFuuuuuuuuuuuuu #() vFuUuuuuuuuuuuu -> vFuUuuuuuuuuuuu #() vFuffffffffffff -> vFuffffffffffff #() vFXiLLLiiiiiiuu -> vFXiLLLiiiiiiuu +#() iFEXLLlliLppppp -> iFEXLLlliLppppp #() iFddddpppddpppp -> iFddddpppddpppp #() iFXippuuuiipppp -> iFXippuuuiipppp #() uFippuuuulllipp -> uFippuuuulllipp @@ -1985,6 +1986,8 @@ wrappedlibuuid: wrappedlibx11: - vFp: - XFreeStringList +- vFX: + - XLockDisplay - iFp: - XDestroyImage - XFreeExtensionList @@ -2068,6 +2071,7 @@ wrappedlibx11: - iFXpiip: - XInternAtoms - iFXpiup: + - XmbTextListToTextProperty - Xutf8TextListToTextProperty - iFXpppp: - XQueryExtension @@ -2096,6 +2100,8 @@ wrappedlibx11: - XCreateImage - pFXLiiuuLipii: - XGetSubImage +- iFXLLlliLppppp: + - XGetWindowProperty - LFXLiiuuuiupLp: - XCreateWindow wrappedlibxcomposite: diff --git a/src/wrapped32/generated/wrappedlibx11types32.h b/src/wrapped32/generated/wrappedlibx11types32.h index f62571dc..866b9ed0 100644 --- a/src/wrapped32/generated/wrappedlibx11types32.h +++ b/src/wrapped32/generated/wrappedlibx11types32.h @@ -12,6 +12,7 @@ #endif typedef void (*vFp_t)(void*); +typedef void (*vFX_t)(void*); typedef int32_t (*iFp_t)(void*); typedef int32_t (*iFX_t)(void*); typedef void* (*pFp_t)(void*); @@ -57,10 +58,12 @@ typedef void (*vFXLpppippp_t)(void*, uintptr_t, void*, void*, void*, int32_t, vo typedef int32_t (*iFXLppiiiiuu_t)(void*, uintptr_t, void*, void*, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t); typedef void* (*pFXpuiipuuii_t)(void*, void*, uint32_t, int32_t, int32_t, void*, uint32_t, uint32_t, int32_t, int32_t); typedef void* (*pFXLiiuuLipii_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t, void*, int32_t, int32_t); +typedef int32_t (*iFXLLlliLppppp_t)(void*, uintptr_t, uintptr_t, intptr_t, intptr_t, int32_t, uintptr_t, void*, void*, void*, void*, void*); typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, int32_t, uint32_t, void*, uintptr_t, void*); #define SUPER() ADDED_FUNCTIONS() \ GO(XFreeStringList, vFp_t) \ + GO(XLockDisplay, vFX_t) \ GO(XDestroyImage, iFp_t) \ GO(XFreeExtensionList, iFp_t) \ GO(XFreeModifiermap, iFp_t) \ @@ -111,6 +114,7 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32 GO(XSendEvent, iFXLilp_t) \ GO(XFreeColors, iFXLpiL_t) \ GO(XInternAtoms, iFXpiip_t) \ + GO(XmbTextListToTextProperty, iFXpiup_t) \ GO(Xutf8TextListToTextProperty, iFXpiup_t) \ GO(XQueryExtension, iFXpppp_t) \ GO(XSubImage, pFpiiuu_t) \ @@ -127,6 +131,7 @@ typedef uintptr_t (*LFXLiiuuuiupLp_t)(void*, uintptr_t, int32_t, int32_t, uint32 GO(XPutImage, iFXLppiiiiuu_t) \ GO(XCreateImage, pFXpuiipuuii_t) \ GO(XGetSubImage, pFXLiiuuLipii_t) \ + GO(XGetWindowProperty, iFXLLlliLppppp_t) \ GO(XCreateWindow, LFXLiiuuuiupLp_t) #endif // __wrappedlibx11TYPES32_H_ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index 88fc6042..1406160d 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -189,6 +189,7 @@ typedef uintptr_t (*LFriiiiiiiiilt__t)(struct_iiiiiiiiilt_t*); typedef void* (*pFriiiiiiiiilt__t)(struct_iiiiiiiiilt_t*); typedef void (*vFEv_t)(x64emu_t*); typedef void (*vFEp_t)(x64emu_t*, void*); +typedef void (*vFEX_t)(x64emu_t*, void*); typedef void (*vFcc_t)(int8_t, int8_t); typedef void (*vFww_t)(int16_t, int16_t); typedef void (*vFii_t)(int32_t, int32_t); @@ -679,6 +680,7 @@ typedef int32_t (*iFbp_bp_p_t)(struct_p_t*, struct_p_t*, void*); typedef int32_t (*iFXbiip_i_t)(void*, struct_iip_t*, int32_t); typedef int32_t (*iFXbLip_L_t)(void*, struct_Lip_t*, uintptr_t); typedef void (*vFXLbpLiL__t)(void*, uintptr_t, struct_pLiL_t*); +typedef void (*vFXLrpLiL__t)(void*, uintptr_t, struct_pLiL_t*); typedef int32_t (*iFXLbpLiL__t)(void*, uintptr_t, struct_pLiL_t*); typedef int32_t (*iFXLbLLii__t)(void*, uintptr_t, struct_LLii_t*); typedef void* (*pFXrLiiuL_p_t)(void*, struct_LiiuL_t*, void*); @@ -948,7 +950,7 @@ typedef int32_t (*iFXLbpLiL_L_t)(void*, uintptr_t, struct_pLiL_t*, uintptr_t); typedef int32_t (*iFuirLL_BLL__t)(uint32_t, int32_t, struct_LL_t*, struct_LL_t*); typedef int32_t (*iFXLpbLWWWcc__t)(void*, uintptr_t, void*, struct_LWWWcc_t*); typedef int32_t (*iFXLbLWWWcc_i_t)(void*, uintptr_t, struct_LWWWcc_t*, int32_t); -typedef int32_t (*iFXLubiiiiiLi__t)(void*, uintptr_t, uint32_t, struct_iiiiiLi_t*); +typedef int32_t (*iFXLuriiiiiLi__t)(void*, uintptr_t, uint32_t, struct_iiiiiLi_t*); typedef void (*vFXLbLLLLLLLLLL_L_t)(void*, uintptr_t, struct_LLLLLLLLLL_t*, uintptr_t); typedef int32_t (*iFXLbLLLLLLLLLL_L_t)(void*, uintptr_t, struct_LLLLLLLLLL_t*, uintptr_t); typedef uintptr_t (*LFpLpriiiiiiiiilt__t)(void*, uintptr_t, void*, struct_iiiiiiiiilt_t*); @@ -1145,8 +1147,7 @@ typedef int32_t (*iFEXbpLiL_pp_t)(x64emu_t*, void*, struct_pLiL_t*, void*, void* typedef int32_t (*iFpppbp_bup__t)(void*, void*, void*, struct_p_t*, struct_up_t*); typedef uintptr_t (*LFXLrLiiuL_Lp_t)(void*, uintptr_t, struct_LiiuL_t*, uintptr_t, void*); typedef void* (*pFEXLrLiiuL_i_t)(x64emu_t*, void*, uintptr_t, struct_LiiuL_t*, int32_t); -typedef int32_t (*iFXbp_iubpLiL__t)(void*, struct_p_t*, int32_t, uint32_t, struct_pLiL_t*); -typedef int32_t (*iFXLiubiiiiiLi__t)(void*, uintptr_t, int32_t, uint32_t, struct_iiiiiLi_t*); +typedef int32_t (*iFXLiuriiiiiLi__t)(void*, uintptr_t, int32_t, uint32_t, struct_iiiiiLi_t*); typedef uintptr_t (*LFLbp_bL_bp_bL__t)(uintptr_t, struct_p_t*, struct_L_t*, struct_p_t*, struct_L_t*); typedef void (*vFXLbLLLLLLLLLL_iL_t)(void*, uintptr_t, struct_LLLLLLLLLL_t*, int32_t, uintptr_t); typedef int32_t (*iFXiiiBpLiiiLLLii__t)(void*, int32_t, int32_t, int32_t, struct_pLiiiLLLii_t*); @@ -1538,12 +1539,12 @@ typedef int32_t (*iFEXLppiiiiuui_t)(x64emu_t*, void*, uintptr_t, void*, void*, i typedef int32_t (*iFXLpppppppppp_t)(void*, uintptr_t, void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); typedef void* (*pFEXLiiuuLipii_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t, void*, int32_t, int32_t); typedef void (*vFXiLLrLiiuL_Liiiipi_t)(void*, int32_t, uintptr_t, uintptr_t, struct_LiiuL_t*, uintptr_t, int32_t, int32_t, int32_t, int32_t, void*, int32_t); -typedef int32_t (*iFXLLlliLBL_pBL_BL_Bp__t)(void*, uintptr_t, uintptr_t, intptr_t, intptr_t, int32_t, uintptr_t, struct_L_t*, void*, struct_L_t*, struct_L_t*, struct_p_t*); 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 (*vFuUuuuuuuuuuuu_t)(uint32_t, uint64_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 void (*vFXiLLLiiiiiiuu_t)(void*, int32_t, uintptr_t, uintptr_t, uintptr_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t); +typedef int32_t (*iFEXLLlliLppppp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, intptr_t, intptr_t, int32_t, uintptr_t, void*, void*, void*, void*, void*); typedef int32_t (*iFddddpppddpppp_t)(double, double, double, double, void*, void*, void*, double, double, void*, void*, void*, void*); typedef int32_t (*iFXippuuuiipppp_t)(void*, int32_t, void*, void*, uint32_t, uint32_t, uint32_t, int32_t, int32_t, void*, void*, void*, void*); typedef uint32_t (*uFippuuuulllipp_t)(int32_t, void*, void*, uint32_t, uint32_t, uint32_t, uint32_t, intptr_t, intptr_t, intptr_t, int32_t, void*, void*); @@ -1673,6 +1674,7 @@ void LFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { LFriiiiiiiiilt__t fn = ( void pFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { pFriiiiiiiiilt__t fn = (pFriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_4={0}; if (*(ptr_t*)(from_ptr((R_ESP + 4)))) from_struct_iiiiiiiiilt(&arg_4, *(ptr_t*)(from_ptr((R_ESP + 4)))); R_EAX = to_ptrv(fn(*(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL)); } void vFEv_32(x64emu_t *emu, uintptr_t fcn) { vFEv_t fn = (vFEv_t)fcn; fn(emu); } void vFEp_32(x64emu_t *emu, uintptr_t fcn) { vFEp_t fn = (vFEp_t)fcn; fn(emu, from_ptriv(R_ESP + 4)); } +void vFEX_32(x64emu_t *emu, uintptr_t fcn) { vFEX_t fn = (vFEX_t)fcn; fn(emu, getDisplay(from_ptriv(R_ESP + 4))); } void vFcc_32(x64emu_t *emu, uintptr_t fcn) { vFcc_t fn = (vFcc_t)fcn; fn(from_ptri(int8_t, R_ESP + 4), from_ptri(int8_t, R_ESP + 8)); } void vFww_32(x64emu_t *emu, uintptr_t fcn) { vFww_t fn = (vFww_t)fcn; fn(from_ptri(int16_t, R_ESP + 4), from_ptri(int16_t, R_ESP + 8)); } void vFii_32(x64emu_t *emu, uintptr_t fcn) { vFii_t fn = (vFii_t)fcn; fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); } @@ -2163,6 +2165,7 @@ void iFbp_bp_p_32(x64emu_t *emu, uintptr_t fcn) { iFbp_bp_p_t fn = (iFbp_bp_p_t) void iFXbiip_i_32(x64emu_t *emu, uintptr_t fcn) { iFXbiip_i_t fn = (iFXbiip_i_t)fcn; struct_iip_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_iip(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(getDisplay(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_iip(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void iFXbLip_L_32(x64emu_t *emu, uintptr_t fcn) { iFXbLip_L_t fn = (iFXbLip_L_t)fcn; struct_Lip_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_Lip(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = fn(getDisplay(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_Lip(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); } void vFXLbpLiL__32(x64emu_t *emu, uintptr_t fcn) { vFXLbpLiL__t fn = (vFXLbpLiL__t)fcn; struct_pLiL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_pLiL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_pLiL(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } +void vFXLrpLiL__32(x64emu_t *emu, uintptr_t fcn) { vFXLrpLiL__t fn = (vFXLrpLiL__t)fcn; struct_pLiL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_pLiL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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); } void iFXLbpLiL__32(x64emu_t *emu, uintptr_t fcn) { iFXLbpLiL__t fn = (iFXLbpLiL__t)fcn; struct_pLiL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_pLiL(&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); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_pLiL(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void iFXLbLLii__32(x64emu_t *emu, uintptr_t fcn) { iFXLbLLii__t fn = (iFXLbLLii__t)fcn; struct_LLii_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LLii(&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); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LLii(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void pFXrLiiuL_p_32(x64emu_t *emu, uintptr_t fcn) { pFXrLiiuL_p_t fn = (pFXrLiiuL_p_t)fcn; struct_LiiuL_t arg_8={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_LiiuL(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptriv(R_ESP + 12))); } @@ -2432,7 +2435,7 @@ void iFXLbpLiL_L_32(x64emu_t *emu, uintptr_t fcn) { iFXLbpLiL_L_t fn = (iFXLbpLi void iFuirLL_BLL__32(x64emu_t *emu, uintptr_t fcn) { iFuirLL_BLL__t fn = (iFuirLL_BLL__t)fcn; 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)))); struct_LL_t arg_16={0}; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), *(ptr_t*)(from_ptr((R_ESP + 12))) ? &arg_12 : NULL, *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_LL(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void iFXLpbLWWWcc__32(x64emu_t *emu, uintptr_t fcn) { iFXLpbLWWWcc__t fn = (iFXLpbLWWWcc__t)fcn; struct_LWWWcc_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_LWWWcc(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, 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_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } void iFXLbLWWWcc_i_32(x64emu_t *emu, uintptr_t fcn) { iFXLbLWWWcc_i_t fn = (iFXLbLWWWcc_i_t)fcn; struct_LWWWcc_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LWWWcc(&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)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LWWWcc(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } -void iFXLubiiiiiLi__32(x64emu_t *emu, uintptr_t fcn) { iFXLubiiiiiLi__t fn = (iFXLubiiiiiLi__t)fcn; struct_iiiiiLi_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iiiiiLi(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_iiiiiLi(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } +void iFXLuriiiiiLi__32(x64emu_t *emu, uintptr_t fcn) { iFXLuriiiiiLi__t fn = (iFXLuriiiiiLi__t)fcn; struct_iiiiiLi_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iiiiiLi(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL); } void vFXLbLLLLLLLLLL_L_32(x64emu_t *emu, uintptr_t fcn) { vFXLbLLLLLLLLLL_L_t fn = (vFXLbLLLLLLLLLL_L_t)fcn; struct_LLLLLLLLLL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LLLLLLLLLL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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_ulong(from_ptri(ulong_t, R_ESP + 16))); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LLLLLLLLLL(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void iFXLbLLLLLLLLLL_L_32(x64emu_t *emu, uintptr_t fcn) { iFXLbLLLLLLLLLL_L_t fn = (iFXLbLLLLLLLLLL_L_t)fcn; struct_LLLLLLLLLL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LLLLLLLLLL(&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_ulong(from_ptri(ulong_t, R_ESP + 16))); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LLLLLLLLLL(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fcn) { LFpLpriiiiiiiiilt__t fn = (LFpLpriiiiiiiiilt__t)fcn; struct_iiiiiiiiilt_t arg_16={0}; if (*(ptr_t*)(from_ptr((R_ESP + 16)))) from_struct_iiiiiiiiilt(&arg_16, *(ptr_t*)(from_ptr((R_ESP + 16)))); R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), *(ptr_t*)(from_ptr((R_ESP + 16))) ? &arg_16 : NULL)); } @@ -2629,8 +2632,7 @@ void iFEXbpLiL_pp_32(x64emu_t *emu, uintptr_t fcn) { iFEXbpLiL_pp_t fn = (iFEXbp void iFpppbp_bup__32(x64emu_t *emu, uintptr_t fcn) { iFpppbp_bup__t fn = (iFpppbp_bup__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)))); struct_up_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_up(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = 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, *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL); 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_up(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } void LFXLrLiiuL_Lp_32(x64emu_t *emu, uintptr_t fcn) { LFXLrLiiuL_Lp_t fn = (LFXLrLiiuL_Lp_t)fcn; struct_LiiuL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LiiuL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ulong(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_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); } void pFEXLrLiiuL_i_32(x64emu_t *emu, uintptr_t fcn) { pFEXLrLiiuL_i_t fn = (pFEXLrLiiuL_i_t)fcn; struct_LiiuL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LiiuL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); R_EAX = to_ptrv(fn(emu, 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))); } -void iFXbp_iubpLiL__32(x64emu_t *emu, uintptr_t fcn) { iFXbp_iubpLiL__t fn = (iFXbp_iubpLiL__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)))); struct_pLiL_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_pLiL(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), *(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 + 20)))) to_struct_pLiL(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } -void iFXLiubiiiiiLi__32(x64emu_t *emu, uintptr_t fcn) { iFXLiubiiiiiLi__t fn = (iFXLiubiiiiiLi__t)fcn; struct_iiiiiLi_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_iiiiiLi(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_iiiiiLi(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } +void iFXLiuriiiiiLi__32(x64emu_t *emu, uintptr_t fcn) { iFXLiuriiiiiLi__t fn = (iFXLiuriiiiiLi__t)fcn; struct_iiiiiLi_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_iiiiiLi(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptri(uint32_t, 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={0}; if (*(ptr_t*)(from_ptr((R_ESP + 8)))) from_struct_p(&arg_8, *(ptr_t*)(from_ptr((R_ESP + 8)))); 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)))); 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)))); 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_ulong(fn(from_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 vFXLbLLLLLLLLLL_iL_32(x64emu_t *emu, uintptr_t fcn) { vFXLbLLLLLLLLLL_iL_t fn = (vFXLbLLLLLLLLLL_iL_t)fcn; struct_LLLLLLLLLL_t arg_12={0}; if (*(ptr_t*)(from_ptr((R_ESP + 12)))) from_struct_LLLLLLLLLL(&arg_12, *(ptr_t*)(from_ptr((R_ESP + 12)))); 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_ulong(from_ptri(ulong_t, R_ESP + 20))); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_LLLLLLLLLL(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } void iFXiiiBpLiiiLLLii__32(x64emu_t *emu, uintptr_t fcn) { iFXiiiBpLiiiLLLii__t fn = (iFXiiiBpLiiiLLLii__t)fcn; struct_pLiiiLLLii_t arg_20={0}; R_EAX = 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), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_pLiiiLLLii(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } @@ -3022,12 +3024,12 @@ void iFEXLppiiiiuui_32(x64emu_t *emu, uintptr_t fcn) { iFEXLppiiiiuui_t fn = (iF void iFXLpppppppppp_32(x64emu_t *emu, uintptr_t fcn) { iFXLpppppppppp_t fn = (iFXLpppppppppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44), from_ptriv(R_ESP + 48)); } void pFEXLiiuuLipii_32(x64emu_t *emu, uintptr_t fcn) { pFEXLiiuuLipii_t fn = (pFEXLiiuuLipii_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_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_ulong(from_ptri(ulong_t, R_ESP + 28)), from_ptri(int32_t, R_ESP + 32), from_ptriv(R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44))); } void vFXiLLrLiiuL_Liiiipi_32(x64emu_t *emu, uintptr_t fcn) { vFXiLLrLiiuL_Liiiipi_t fn = (vFXiLLrLiiuL_Liiiipi_t)fcn; struct_LiiuL_t arg_20={0}; if (*(ptr_t*)(from_ptr((R_ESP + 20)))) from_struct_LiiuL(&arg_20, *(ptr_t*)(from_ptr((R_ESP + 20)))); fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), *(ptr_t*)(from_ptr((R_ESP + 20))) ? &arg_20 : NULL, from_ulong(from_ptri(ulong_t, R_ESP + 24)), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptriv(R_ESP + 44), from_ptri(int32_t, R_ESP + 48)); } -void iFXLLlliLBL_pBL_BL_Bp__32(x64emu_t *emu, uintptr_t fcn) { iFXLLlliLBL_pBL_BL_Bp__t fn = (iFXLLlliLBL_pBL_BL_Bp__t)fcn; struct_L_t arg_32={0}; struct_L_t arg_40={0}; struct_L_t arg_44={0}; struct_p_t arg_48={0}; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_long(from_ptri(long_t, R_ESP + 16)), from_long(from_ptri(long_t, R_ESP + 20)), from_ptri(int32_t, R_ESP + 24), from_ulong(from_ptri(ulong_t, R_ESP + 28)), *(ptr_t*)(from_ptr((R_ESP + 32))) ? &arg_32 : NULL, from_ptriv(R_ESP + 36), *(ptr_t*)(from_ptr((R_ESP + 40))) ? &arg_40 : NULL, *(ptr_t*)(from_ptr((R_ESP + 44))) ? &arg_44 : NULL, *(ptr_t*)(from_ptr((R_ESP + 48))) ? &arg_48 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 32)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 32))), &arg_32); if (*(ptr_t*)(from_ptr((R_ESP + 40)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 40))), &arg_40); if (*(ptr_t*)(from_ptr((R_ESP + 44)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 44))), &arg_44); if (*(ptr_t*)(from_ptr((R_ESP + 48)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 48))), &arg_48); } void vFuiiiiiiiiiuup_32(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiiiuup_t fn = (vFuiiiiiiiiiuup_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), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(uint32_t, R_ESP + 44), from_ptri(uint32_t, R_ESP + 48), from_ptriv(R_ESP + 52)); } void vFuuuuuuuuuuuuu_32(x64emu_t *emu, uintptr_t fcn) { vFuuuuuuuuuuuuu_t fn = (vFuuuuuuuuuuuuu_t)fcn; 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), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptri(uint32_t, R_ESP + 40), from_ptri(uint32_t, R_ESP + 44), from_ptri(uint32_t, R_ESP + 48), from_ptri(uint32_t, R_ESP + 52)); } void vFuUuuuuuuuuuuu_32(x64emu_t *emu, uintptr_t fcn) { vFuUuuuuuuuuuuu_t fn = (vFuUuuuuuuuuuuu_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint64_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptri(uint32_t, R_ESP + 40), from_ptri(uint32_t, R_ESP + 44), from_ptri(uint32_t, R_ESP + 48), from_ptri(uint32_t, R_ESP + 52), from_ptri(uint32_t, R_ESP + 56)); } void vFuffffffffffff_32(x64emu_t *emu, uintptr_t fcn) { vFuffffffffffff_t fn = (vFuffffffffffff_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12), from_ptri(float, R_ESP + 16), from_ptri(float, R_ESP + 20), from_ptri(float, R_ESP + 24), from_ptri(float, R_ESP + 28), from_ptri(float, R_ESP + 32), from_ptri(float, R_ESP + 36), from_ptri(float, R_ESP + 40), from_ptri(float, R_ESP + 44), from_ptri(float, R_ESP + 48), from_ptri(float, R_ESP + 52)); } void vFXiLLLiiiiiiuu_32(x64emu_t *emu, uintptr_t fcn) { vFXiLLLiiiiiiuu_t fn = (vFXiLLLiiiiiiuu_t)fcn; fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ulong(from_ptri(ulong_t, R_ESP + 20)), from_ptri(int32_t, R_ESP + 24), from_ptri(int32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ptri(int32_t, R_ESP + 44), from_ptri(uint32_t, R_ESP + 48), from_ptri(uint32_t, R_ESP + 52)); } +void iFEXLLlliLppppp_32(x64emu_t *emu, uintptr_t fcn) { iFEXLLlliLppppp_t fn = (iFEXLLlliLppppp_t)fcn; R_EAX = fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_long(from_ptri(long_t, R_ESP + 16)), from_long(from_ptri(long_t, R_ESP + 20)), from_ptri(int32_t, R_ESP + 24), from_ulong(from_ptri(ulong_t, R_ESP + 28)), from_ptriv(R_ESP + 32), from_ptriv(R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44), from_ptriv(R_ESP + 48)); } void iFddddpppddpppp_32(x64emu_t *emu, uintptr_t fcn) { iFddddpppddpppp_t fn = (iFddddpppddpppp_t)fcn; R_EAX = 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), from_ptriv(R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44), from_ptri(double, R_ESP + 48), from_ptri(double, R_ESP + 56), from_ptriv(R_ESP + 64), from_ptriv(R_ESP + 68), from_ptriv(R_ESP + 72), from_ptriv(R_ESP + 76)); } void iFXippuuuiipppp_32(x64emu_t *emu, uintptr_t fcn) { iFXippuuuiipppp_t fn = (iFXippuuuiipppp_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(int32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptriv(R_ESP + 40), from_ptriv(R_ESP + 44), from_ptriv(R_ESP + 48), from_ptriv(R_ESP + 52)); } void uFippuuuulllipp_32(x64emu_t *emu, uintptr_t fcn) { uFippuuuulllipp_t fn = (uFippuuuulllipp_t)fcn; R_EAX = (uint32_t)fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_long(from_ptri(long_t, R_ESP + 32)), from_long(from_ptri(long_t, R_ESP + 36)), from_long(from_ptri(long_t, R_ESP + 40)), from_ptri(int32_t, R_ESP + 44), from_ptriv(R_ESP + 48), from_ptriv(R_ESP + 52)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index fc925fec..359a79f4 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -140,6 +140,7 @@ void LFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc); void pFriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc); void vFEv_32(x64emu_t *emu, uintptr_t fnc); void vFEp_32(x64emu_t *emu, uintptr_t fnc); +void vFEX_32(x64emu_t *emu, uintptr_t fnc); void vFcc_32(x64emu_t *emu, uintptr_t fnc); void vFww_32(x64emu_t *emu, uintptr_t fnc); void vFii_32(x64emu_t *emu, uintptr_t fnc); @@ -630,6 +631,7 @@ void iFbp_bp_p_32(x64emu_t *emu, uintptr_t fnc); void iFXbiip_i_32(x64emu_t *emu, uintptr_t fnc); void iFXbLip_L_32(x64emu_t *emu, uintptr_t fnc); void vFXLbpLiL__32(x64emu_t *emu, uintptr_t fnc); +void vFXLrpLiL__32(x64emu_t *emu, uintptr_t fnc); void iFXLbpLiL__32(x64emu_t *emu, uintptr_t fnc); void iFXLbLLii__32(x64emu_t *emu, uintptr_t fnc); void pFXrLiiuL_p_32(x64emu_t *emu, uintptr_t fnc); @@ -899,7 +901,7 @@ void iFXLbpLiL_L_32(x64emu_t *emu, uintptr_t fnc); void iFuirLL_BLL__32(x64emu_t *emu, uintptr_t fnc); void iFXLpbLWWWcc__32(x64emu_t *emu, uintptr_t fnc); void iFXLbLWWWcc_i_32(x64emu_t *emu, uintptr_t fnc); -void iFXLubiiiiiLi__32(x64emu_t *emu, uintptr_t fnc); +void iFXLuriiiiiLi__32(x64emu_t *emu, uintptr_t fnc); void vFXLbLLLLLLLLLL_L_32(x64emu_t *emu, uintptr_t fnc); void iFXLbLLLLLLLLLL_L_32(x64emu_t *emu, uintptr_t fnc); void LFpLpriiiiiiiiilt__32(x64emu_t *emu, uintptr_t fnc); @@ -1096,8 +1098,7 @@ void iFEXbpLiL_pp_32(x64emu_t *emu, uintptr_t fnc); void iFpppbp_bup__32(x64emu_t *emu, uintptr_t fnc); void LFXLrLiiuL_Lp_32(x64emu_t *emu, uintptr_t fnc); void pFEXLrLiiuL_i_32(x64emu_t *emu, uintptr_t fnc); -void iFXbp_iubpLiL__32(x64emu_t *emu, uintptr_t fnc); -void iFXLiubiiiiiLi__32(x64emu_t *emu, uintptr_t fnc); +void iFXLiuriiiiiLi__32(x64emu_t *emu, uintptr_t fnc); void LFLbp_bL_bp_bL__32(x64emu_t *emu, uintptr_t fnc); void vFXLbLLLLLLLLLL_iL_32(x64emu_t *emu, uintptr_t fnc); void iFXiiiBpLiiiLLLii__32(x64emu_t *emu, uintptr_t fnc); @@ -1489,12 +1490,12 @@ void iFEXLppiiiiuui_32(x64emu_t *emu, uintptr_t fnc); void iFXLpppppppppp_32(x64emu_t *emu, uintptr_t fnc); void pFEXLiiuuLipii_32(x64emu_t *emu, uintptr_t fnc); void vFXiLLrLiiuL_Liiiipi_32(x64emu_t *emu, uintptr_t fnc); -void iFXLLlliLBL_pBL_BL_Bp__32(x64emu_t *emu, uintptr_t fnc); void vFuiiiiiiiiiuup_32(x64emu_t *emu, uintptr_t fnc); void vFuuuuuuuuuuuuu_32(x64emu_t *emu, uintptr_t fnc); void vFuUuuuuuuuuuuu_32(x64emu_t *emu, uintptr_t fnc); void vFuffffffffffff_32(x64emu_t *emu, uintptr_t fnc); void vFXiLLLiiiiiiuu_32(x64emu_t *emu, uintptr_t fnc); +void iFEXLLlliLppppp_32(x64emu_t *emu, uintptr_t fnc); void iFddddpppddpppp_32(x64emu_t *emu, uintptr_t fnc); void iFXippuuuiipppp_32(x64emu_t *emu, uintptr_t fnc); void uFippuuuulllipp_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibx11.c b/src/wrapped32/wrappedlibx11.c index 2efd4899..b83e6786 100644 --- a/src/wrapped32/wrappedlibx11.c +++ b/src/wrapped32/wrappedlibx11.c @@ -42,7 +42,9 @@ void UnwrapXImage(void* d, void* s); void WrapXImage(void* d, void* s); typedef void (*vFp_t)(void*); +typedef int (*iFp_t)(void*); typedef uint32_t (*uFv_t)(void); +typedef int (*iFpp_t)(void*, void*); typedef int32_t (*iFpl_t)(void*, intptr_t); typedef uintptr_t (*LFpii_t)(void*, int32_t, int32_t); typedef int32_t (*iFpiiL_t)(void*, int32_t, int32_t, uintptr_t); @@ -50,29 +52,12 @@ typedef void* (*pFpiiuu_t)(void*, int32_t, int32_t, uint32_t, uint32_t); #define ADDED_FUNCTIONS() \ GO(XInitThreads, uFv_t) \ - GO(XLockDisplay, vFp_t) \ GO(XUnlockDisplay, vFp_t) #include "generated/wrappedlibx11types32.h" #include "wrappercallback32.h" -void convert_Screen_to_32(void* d, void* s); -void* FindDisplay(void* d); -void* getDisplay(void* d); -void convert_XErrorEvent_to_32(void* d, void* s) -{ - my_XErrorEvent_t* src = s; - my_XErrorEvent_32_t* dst = d; - dst->type = src->type; - dst->display = to_ptrv(FindDisplay(src->display)); - dst->resourceid = to_ulong(src->resourceid); - dst->serial = to_ulong(src->serial); - dst->error_code = src->error_code; - dst->request_code = src->request_code; - dst->minor_code = src->minor_code; -} - #define SUPER() \ GO(0) \ GO(1) \ @@ -168,7 +153,17 @@ static int my32_error_handler_##A(void* dpy, void* error) { \ static my_XErrorEvent_32_t evt = {0}; \ convert_XErrorEvent_to_32(&evt, error); \ - return (int)RunFunctionFmt(my32_error_handler_fct_##A, "pp", getDisplay(dpy), &evt); \ + return (int)RunFunctionFmt(my32_error_handler_fct_##A, "pp", FindDisplay(dpy), &evt); \ +} +SUPER() +#undef GO +#define GO(A) \ +static iFpp_t my32_rev_error_handler_fct_##A = NULL; \ +static int my32_rev_error_handler_##A(void* dpy, void* error) \ +{ \ + my_XErrorEvent_t evt = {0}; \ + convert_XErrorEvent_to_64(&evt, error); \ + return my32_rev_error_handler_fct_##A (getDisplay(dpy), &evt); \ } SUPER() #undef GO @@ -185,15 +180,28 @@ static void* finderror_handlerFct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for libX11 error_handler callback\n"); return NULL; } -static void* reverse_error_handlerFct(library_t* lib, void* fct) +static void* reverse_error_handler_Fct(library_t* lib, void* fct) { + //Callsed from x86 world -> native world if(!fct) return fct; - if(CheckBridged(lib->w.bridge, fct)) - return (void*)CheckBridged(lib->w.bridge, fct); + // first check if it's a wrapped function, that could be easy #define GO(A) if(my32_error_handler_##A == fct) return (void*)my32_error_handler_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->w.bridge, iFpp_32, fct, 0, NULL); + if(FindElfAddress(my_context, (uintptr_t)fct)) + return fct; + // it's a naitve one... so bridge it, but need transform XImage32 to XImage + void* f = NULL; + #define GO(A) if(!f && my32_rev_error_handler_fct_##A == fct) f = (void*)my32_rev_error_handler_##A; + SUPER() + #undef GO + #define GO(A) if(!f && !my32_rev_error_handler_fct_##A) {my32_rev_error_handler_fct_##A = fct; f = my32_rev_error_handler_##A;} + SUPER() + #undef GO + if(f) + return (void*)AddCheckBridge(lib->w.bridge, iFpp_32, f, 0, "X11_error_handler"); + printf_log(LOG_NONE, "Warning, no more slot for reverse 32bits libX11 error_handler callback\n"); + return fct; } // ioerror_handler @@ -201,7 +209,15 @@ static void* reverse_error_handlerFct(library_t* lib, void* fct) static uintptr_t my32_ioerror_handler_fct_##A = 0; \ static int my32_ioerror_handler_##A(void* dpy) \ { \ - return (int)RunFunctionFmt(my32_ioerror_handler_fct_##A, "p", getDisplay(dpy)); \ + return (int)RunFunctionFmt(my32_ioerror_handler_fct_##A, "p", FindDisplay(dpy));\ +} +SUPER() +#undef GO +#define GO(A) \ +static iFp_t my32_rev_ioerror_handler_fct_##A = NULL; \ +static int my32_rev_ioerror_handler_##A(void* dpy) \ +{ \ + return my32_rev_ioerror_handler_fct_##A (getDisplay(dpy)); \ } SUPER() #undef GO @@ -218,16 +234,30 @@ static void* findioerror_handlerFct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for libX11 ioerror_handler callback\n"); return NULL; } -static void* reverse_ioerror_handlerFct(library_t* lib, void* fct) +static void* reverse_ioerror_handler_Fct(library_t* lib, void* fct) { + //Callsed from x86 world -> native world if(!fct) return fct; - if(CheckBridged(lib->w.bridge, fct)) - return (void*)CheckBridged(lib->w.bridge, fct); + // first check if it's a wrapped function, that could be easy #define GO(A) if(my32_ioerror_handler_##A == fct) return (void*)my32_ioerror_handler_fct_##A; SUPER() #undef GO - return (void*)AddBridge(lib->w.bridge, iFp_32, fct, 0, NULL); + if(FindElfAddress(my_context, (uintptr_t)fct)) + return fct; + // it's a naitve one... so bridge it, but need transform XImage32 to XImage + void* f = NULL; + #define GO(A) if(!f && my32_rev_ioerror_handler_fct_##A == fct) f = (void*)my32_rev_ioerror_handler_##A; + SUPER() + #undef GO + #define GO(A) if(!f && !my32_rev_ioerror_handler_fct_##A) {my32_rev_ioerror_handler_fct_##A = fct; f = my32_rev_ioerror_handler_##A;} + SUPER() + #undef GO + if(f) + return (void*)AddCheckBridge(lib->w.bridge, iFp_32, f, 0, "X11_ioerror_handler"); + printf_log(LOG_NONE, "Warning, no more slot for reverse 32bits libX11 ioerror_handler callback\n"); + return fct; } + #if 0 // exterror_handler #define GO(A) \ @@ -1310,13 +1340,13 @@ EXPORT void* my32_XSetIMValues(x64emu_t* emu, void* xim, ptr_t* va) { EXPORT void* my32_XSetErrorHandler(x64emu_t* emu, XErrorHandler handler) { void* ret = my->XSetErrorHandler(finderror_handlerFct(handler)); - return reverse_error_handlerFct(my_lib, ret); + return reverse_error_handler_Fct(my_lib, ret); } EXPORT void* my32_XSetIOErrorHandler(x64emu_t* emu, XIOErrorHandler handler) { void* ret = my->XSetIOErrorHandler(findioerror_handlerFct(handler)); - return reverse_ioerror_handlerFct(my_lib, ret); + return reverse_ioerror_handler_Fct(my_lib, ret); } #if 0 @@ -2070,6 +2100,34 @@ EXPORT int my32_XChangeWindowAttributes(x64emu_t* emu, void* dpy, XID window, un return my->XChangeWindowAttributes(dpy, window, mask, attrs_l); } +EXPORT int my32_XGetWindowProperty(x64emu_t* emu, void* dpy, XID window, XID prop, long offset, long length, int delete, XID req, XID* type_return, int* fmt_return, ulong_t* nitems_return, ulong_t* bytes, ptr_t*prop_return) +{ + unsigned long nitems_l = 0, bytes_l = 0; + void* prop_l = NULL; + int ret = my->XGetWindowProperty(dpy, window, prop, offset, length, delete, req, type_return, fmt_return, &nitems_l, &bytes_l, &prop_l); + *nitems_return = to_ulong(nitems_l); + *bytes = to_ulong(bytes_l); + *prop_return = to_ptrv(prop_l); + if(!ret && *fmt_return==32) { + // inplace shrink + unsigned long *src = prop_l; + ulong_t* dst = prop_l; + for(int i=0; i<*nitems_return; ++i) + dst[i] = to_ulong(src[i]); + } + return ret; +} + +EXPORT void my32_XLockDisplay(x64emu_t* emu, void* dpy) +{ + my->XLockDisplay(dpy); + // update some of the values now that the screen is locked + my_XDisplay_t* src = dpy; + my_XDisplay_32_t* dst = FindDisplay(dpy); + // should do a full sync? + dst->request = src->request; +} + #define CUSTOM_INIT \ AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XLockMutex_fn"), 0, "_XLockMutex_fn"); \ AddAutomaticBridge(lib->w.bridge, vFp_32, *(void**)dlsym(lib->w.lib, "_XUnlockMutex_fn"), 0, "_XUnlockMutex_fn"); \ diff --git a/src/wrapped32/wrappedlibx11_private.h b/src/wrapped32/wrappedlibx11_private.h index 76a117dc..f1c6f0cc 100644 --- a/src/wrapped32/wrappedlibx11_private.h +++ b/src/wrapped32/wrappedlibx11_private.h @@ -195,7 +195,7 @@ GO(XcmsPrefixOfFormat, pFL) //GO(_XcmsUnresolveColor, //GOM(XcmsVisualOfCCC, pFEp) //GO(_XColor_to_XcmsRGB, -GO(XConfigureWindow, iFXLubiiiiiLi_) +GO(XConfigureWindow, iFXLuriiiiiLi_) GO(XConnectionNumber, iFX) //GO(_XConnectXCB, GO(XContextDependentDrawing, iFp) @@ -413,7 +413,7 @@ GO(XGetTransientForHint, iFXLbL_) GOM(XGetVisualInfo, pFEXlpp) //GOM(_XGetWindowAttributes, iFEXLbiiiiiipLiiiiLLiLiilllibpXLiiiiipippLLLiiiil__) GOM(XGetWindowAttributes, iFEXLp) -GO(XGetWindowProperty, iFXLLlliLBL_pBL_BL_Bp_) +GOM(XGetWindowProperty, iFEXLLlliLppppp) GO(XGetWMClientMachine, iFXLbpLiL_) //GO(XGetWMColormapWindows, iFXLbbL__p) GOM(XGetWMHints, pFEXL) @@ -876,7 +876,7 @@ GO(xlocaledir, vFpi) GO(XLocaleOfFontSet, pFp) GO(XLocaleOfIM, pFp) GO(XLocaleOfOM, pFp) -GO(XLockDisplay, vFX) +GOM(XLockDisplay, vFEX) //DATAM(_XLockMutex_fn, 4) GO(XLookupColor, iFXLpBLWWWcc_BLWWWcc_) //GO(_XLookupKeysym, @@ -913,7 +913,7 @@ GO(XmbResetIC, pFp) GO(XmbTextEscapement, iFppi) GO(XmbTextExtents, iFppipp) //GO(_XmbTextListToTextProperty, -GOM(XmbTextListToTextProperty, iFXEpiup) +GOM(XmbTextListToTextProperty, iFEXpiup) GO(XmbTextPerCharExtents, iFppippippp) //GO(_XmbTextPropertyToTextList, GOM(XmbTextPropertyToTextList, iFEXbpLiL_pp)