diff options
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/library_list_32.h | 2 | ||||
| -rw-r--r-- | src/wrapped32/generated/functions_list.txt | 32 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibxcbdefs32.h | 16 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibxcbresdefs32.h | 12 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibxcbrestypes32.h | 19 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibxcbresundefs32.h | 12 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibxcbtypes32.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrappedlibxcbundefs32.h | 16 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.c | 18 | ||||
| -rw-r--r-- | src/wrapped32/generated/wrapper32.h | 9 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibxcb.c | 16 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibxcb_private.h | 8 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibxcbres.c | 83 | ||||
| -rw-r--r-- | src/wrapped32/wrappedlibxcbres_private.h | 62 | ||||
| -rw-r--r-- | src/wrapped32/wrappedxcbres.c | 28 | ||||
| -rw-r--r-- | src/wrapped32/wrappedxcbres_private.h | 59 |
17 files changed, 261 insertions, 141 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 40b606b5..6903beb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -837,7 +837,7 @@ if(BOX32) "${BOX64_ROOT}/src/wrapped32/wrappedexpat.c" "${BOX64_ROOT}/src/wrapped32/wrappedlibx11xcb.c" "${BOX64_ROOT}/src/wrapped32/wrappedlibxcb.c" - #"${BOX64_ROOT}/src/wrapped32/wrappedlibxcbres.c" + "${BOX64_ROOT}/src/wrapped32/wrappedlibxcbres.c" "${BOX64_ROOT}/src/wrapped32/wrappedudev0.c" "${BOX64_ROOT}/src/wrapped32/wrappedudev1.c" "${BOX64_ROOT}/src/wrapped32/wrappedlibuuid.c" diff --git a/src/library_list_32.h b/src/library_list_32.h index 0c713ae0..2af7342c 100644 --- a/src/library_list_32.h +++ b/src/library_list_32.h @@ -63,6 +63,8 @@ GO("libX11-xcb.so.1", libx11xcb) GO("libX11-xcb.so", libx11xcb) GO("libxcb.so.1", libxcb) GO("libxcb.so", libxcb) +GO("libxcb-res.so.0", libxcbres) +GO("libxcb-res.so", libxcbres) GO("libopenal.so.1", openal) GO("libopenal.so.0", openal) diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt index 25453a13..856e0f96 100644 --- a/src/wrapped32/generated/functions_list.txt +++ b/src/wrapped32/generated/functions_list.txt @@ -1278,6 +1278,8 @@ #() LFXpppi -> LFXpppi #() pFEppip -> pFEppip #() pFEppdd -> pFEppdd +#() pFEpnuu -> pFEpnuu +#() pFEpnup -> pFEpnup #() pFEXipp -> pFEXipp #() pFEXlpp -> pFEXlpp #() pFEXpip -> pFEXpip @@ -1291,7 +1293,6 @@ #() pFpdddd -> pFpdddd #() pFppuup -> pFppuup #() pFppupp -> pFppupp -#() pFppnuu -> pFppnuu #() pFXLipp -> pFXLipp #() pFXpipi -> pFXpipi #() pFXppip -> pFXppip @@ -1456,13 +1457,13 @@ #() pFEpiiuu -> pFEpiiuu #() pEEpLLiN -> pEEpLLiN #() pEEppLLp -> pEEppLLp +#() pFEpnCWp -> pFEpnCWp #() pFEXLLLp -> pFEXLLLp #() pFEXLpii -> pFEXLpii #() pFEXpppp -> pFEXpppp #() pFWCiWCi -> pFWCiWCi #() pFdddddd -> pFdddddd #() pFpiiiiu -> pFpiiiiu -#() pFppnCWp -> pFppnCWp #() XFpppppp -> XFpppppp #() iFpppibp_p -> iFpppiBp #() iFpppbp_pp -> iFpppBpp @@ -1683,6 +1684,7 @@ #() LFXLiiiiiip -> LFXLiiiiiip #() LFXLiiuuuLL -> LFXLiiuuuLL #() pFEuiiiuuuu -> pFEuiiiuuuu +#() pFEpnCuuuuu -> pFEpnCuuuuu #() pFEXLiiuuLi -> pFEXLiiuuLi #() pFpiiiiuuuu -> pFpiiiiuuuu #() iFXLbL_pppppp -> iFXLBpppppp @@ -1719,7 +1721,7 @@ #() iFXuuLiuiiLL -> iFXuuLiuiiLL #() iFXLLpiiuuii -> iFXLLpiiuuii #() pFEpiiiiuuuu -> pFEpiiiiuuuu -#() pFEppnCuuuuu -> pFEppnCuuuuu +#() pFEpnCuuuCup -> pFEpnCuuuCup #() pFpppppppppp -> pFpppppppppp #() pFXpuiipuuii -> pFXpuiipuuii #() iFXiiLiiibiip_ip -> iFXiiLiiiBip @@ -1744,7 +1746,6 @@ #() iFEXpLLiiLWpi -> iFEXpLLiiLWpi #() iFuiiiiuuiiip -> iFuiiiiuuiiip #() iFXLLpiiuuiiL -> iFXLLpiiuuiiL -#() pFEppnCuuuCup -> pFEppnCuuuCup #() pFEXpuiipuuii -> pFEXpuiipuuii #() iFXiiLLiiibiip_ip -> iFXiiLLiiiBip #() vFXiLLrLiiuL_iiiipi -> vFXiLLBiiiipi @@ -2655,15 +2656,22 @@ wrappedlibxcb: - pFpp: - xcb_connect - ZFpp: -- zFpnuu: -- zFpnCWp: -- zFpnCuuuuu: -- zFpnCuuuCup: +- zFnuu: +- zFnCWp: +- zFnCuuuuu: +- zFnCuuuCup: % ZFEpp -> pFEppp -% zFpnuu -> pFppnuu -% zFpnCWp -> pFppnCWp -% zFEpnCuuuuu -> pFEppnCuuuuu -% zFEpnCuuuCup -> pFEppnCuuuCup +% zFEnuu -> pFEpnuu +% zFEnCWp -> pFEpnCWp +% zFEnCuuuuu -> pFEpnCuuuuu +% zFEnCuuuCup -> pFEpnCuuuCup +wrappedlibxcbres: +% Z my_xcb_XXX_iterator_t pii +% z my_xcb_cookie_t u +- ZFp: +- zFnup: +% ZFEp -> pFEpp +% zFEnup -> pFEpnup wrappedlibxcomposite: wrappedlibxcursor: - vFp: diff --git a/src/wrapped32/generated/wrappedlibxcbdefs32.h b/src/wrapped32/generated/wrappedlibxcbdefs32.h index 09822d48..63160575 100644 --- a/src/wrapped32/generated/wrappedlibxcbdefs32.h +++ b/src/wrapped32/generated/wrappedlibxcbdefs32.h @@ -6,13 +6,13 @@ #define ZFEpp pFEppp #define ZFEpp_32 pFEppp_32 -#define zFpnuu pFppnuu -#define zFpnuu_32 pFppnuu_32 -#define zFpnCWp pFppnCWp -#define zFpnCWp_32 pFppnCWp_32 -#define zFEpnCuuuuu pFEppnCuuuuu -#define zFEpnCuuuuu_32 pFEppnCuuuuu_32 -#define zFEpnCuuuCup pFEppnCuuuCup -#define zFEpnCuuuCup_32 pFEppnCuuuCup_32 +#define zFEnuu pFEpnuu +#define zFEnuu_32 pFEpnuu_32 +#define zFEnCWp pFEpnCWp +#define zFEnCWp_32 pFEpnCWp_32 +#define zFEnCuuuuu pFEpnCuuuuu +#define zFEnCuuuuu_32 pFEpnCuuuuu_32 +#define zFEnCuuuCup pFEpnCuuuCup +#define zFEnCuuuCup_32 pFEpnCuuuCup_32 #endif // __wrappedlibxcbDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedlibxcbresdefs32.h b/src/wrapped32/generated/wrappedlibxcbresdefs32.h new file mode 100644 index 00000000..c73534cb --- /dev/null +++ b/src/wrapped32/generated/wrappedlibxcbresdefs32.h @@ -0,0 +1,12 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedlibxcbresDEFS32_H_ +#define __wrappedlibxcbresDEFS32_H_ + +#define ZFEp pFEpp +#define ZFEp_32 pFEpp_32 +#define zFEnup pFEpnup +#define zFEnup_32 pFEpnup_32 + +#endif // __wrappedlibxcbresDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedlibxcbrestypes32.h b/src/wrapped32/generated/wrappedlibxcbrestypes32.h new file mode 100644 index 00000000..024594d3 --- /dev/null +++ b/src/wrapped32/generated/wrappedlibxcbrestypes32.h @@ -0,0 +1,19 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedlibxcbresTYPES32_H_ +#define __wrappedlibxcbresTYPES32_H_ + +#ifndef LIBNAME +#error You should only #include this file inside a wrapped*.c file +#endif +#ifndef ADDED_FUNCTIONS +#define ADDED_FUNCTIONS() +#endif + +typedef my_xcb_XXX_iterator_t (*ZFp_t)(void*); +typedef my_xcb_cookie_t (*zFnup_t)(void*, uint32_t, void*); + +#define SUPER() ADDED_FUNCTIONS() + +#endif // __wrappedlibxcbresTYPES32_H_ diff --git a/src/wrapped32/generated/wrappedlibxcbresundefs32.h b/src/wrapped32/generated/wrappedlibxcbresundefs32.h new file mode 100644 index 00000000..d82e56ea --- /dev/null +++ b/src/wrapped32/generated/wrappedlibxcbresundefs32.h @@ -0,0 +1,12 @@ +/********************************************************************* + * File automatically generated by rebuild_wrappers_32.py (v0.0.2.2) * + *********************************************************************/ +#ifndef __wrappedlibxcbresUNDEFS32_H_ +#define __wrappedlibxcbresUNDEFS32_H_ + +#undef ZFEp +#undef ZFEp_32 +#undef zFEnup +#undef zFEnup_32 + +#endif // __wrappedlibxcbresUNDEFS32_H_ diff --git a/src/wrapped32/generated/wrappedlibxcbtypes32.h b/src/wrapped32/generated/wrappedlibxcbtypes32.h index e4231f65..7da67c9a 100644 --- a/src/wrapped32/generated/wrappedlibxcbtypes32.h +++ b/src/wrapped32/generated/wrappedlibxcbtypes32.h @@ -14,10 +14,10 @@ typedef void (*vFp_t)(void*); typedef void* (*pFpp_t)(void*, void*); typedef my_xcb_XXX_iterator_t (*ZFpp_t)(void*, void*); -typedef my_xcb_cookie_t (*zFpnuu_t)(void*, void*, uint32_t, uint32_t); -typedef my_xcb_cookie_t (*zFpnCWp_t)(void*, void*, uint8_t, uint16_t, void*); -typedef my_xcb_cookie_t (*zFpnCuuuuu_t)(void*, void*, uint8_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); -typedef my_xcb_cookie_t (*zFpnCuuuCup_t)(void*, void*, uint8_t, uint32_t, uint32_t, uint32_t, uint8_t, uint32_t, void*); +typedef my_xcb_cookie_t (*zFnuu_t)(void*, uint32_t, uint32_t); +typedef my_xcb_cookie_t (*zFnCWp_t)(void*, uint8_t, uint16_t, void*); +typedef my_xcb_cookie_t (*zFnCuuuuu_t)(void*, uint8_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); +typedef my_xcb_cookie_t (*zFnCuuuCup_t)(void*, uint8_t, uint32_t, uint32_t, uint32_t, uint8_t, uint32_t, void*); #define SUPER() ADDED_FUNCTIONS() \ GO(xcb_disconnect, vFp_t) \ diff --git a/src/wrapped32/generated/wrappedlibxcbundefs32.h b/src/wrapped32/generated/wrappedlibxcbundefs32.h index 11c765c1..3ac3f549 100644 --- a/src/wrapped32/generated/wrappedlibxcbundefs32.h +++ b/src/wrapped32/generated/wrappedlibxcbundefs32.h @@ -6,13 +6,13 @@ #undef ZFEpp #undef ZFEpp_32 -#undef zFpnuu -#undef zFpnuu_32 -#undef zFpnCWp -#undef zFpnCWp_32 -#undef zFEpnCuuuuu -#undef zFEpnCuuuuu_32 -#undef zFEpnCuuuCup -#undef zFEpnCuuuCup_32 +#undef zFEnuu +#undef zFEnuu_32 +#undef zFEnCWp +#undef zFEnCWp_32 +#undef zFEnCuuuuu +#undef zFEnCuuuuu_32 +#undef zFEnCuuuCup +#undef zFEnCuuuCup_32 #endif // __wrappedlibxcbUNDEFS32_H_ diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c index b23687aa..0ef9949f 100644 --- a/src/wrapped32/generated/wrapper32.c +++ b/src/wrapped32/generated/wrapper32.c @@ -1372,6 +1372,8 @@ typedef uintptr_t (*LFXLpuu_t)(void*, uintptr_t, void*, uint32_t, uint32_t); typedef uintptr_t (*LFXpppi_t)(void*, void*, void*, void*, int32_t); typedef void* (*pFEppip_t)(x64emu_t*, void*, void*, int32_t, void*); typedef void* (*pFEppdd_t)(x64emu_t*, void*, void*, double, double); +typedef void* (*pFEpnuu_t)(x64emu_t*, void*, void*, uint32_t, uint32_t); +typedef void* (*pFEpnup_t)(x64emu_t*, void*, void*, uint32_t, void*); typedef void* (*pFEXipp_t)(x64emu_t*, void*, int32_t, void*, void*); typedef void* (*pFEXlpp_t)(x64emu_t*, void*, intptr_t, void*, void*); typedef void* (*pFEXpip_t)(x64emu_t*, void*, void*, int32_t, void*); @@ -1385,7 +1387,6 @@ typedef void* (*pFpuuip_t)(void*, uint32_t, uint32_t, int32_t, void*); typedef void* (*pFpdddd_t)(void*, double, double, double, double); typedef void* (*pFppuup_t)(void*, void*, uint32_t, uint32_t, void*); typedef void* (*pFppupp_t)(void*, void*, uint32_t, void*, void*); -typedef void* (*pFppnuu_t)(void*, void*, void*, uint32_t, uint32_t); typedef void* (*pFXLipp_t)(void*, uintptr_t, int32_t, void*, void*); typedef void* (*pFXpipi_t)(void*, void*, int32_t, void*, int32_t); typedef void* (*pFXppip_t)(void*, void*, void*, int32_t, void*); @@ -1550,13 +1551,13 @@ typedef intptr_t (*lEipLipp_t)(int32_t, void*, uintptr_t, int32_t, void*, void*) typedef void* (*pFEpiiuu_t)(x64emu_t*, void*, int32_t, int32_t, uint32_t, uint32_t); typedef void* (*pEEpLLiN_t)(x64emu_t*, void*, uintptr_t, uintptr_t, int32_t, ...); typedef void* (*pEEppLLp_t)(x64emu_t*, void*, void*, uintptr_t, uintptr_t, void*); +typedef void* (*pFEpnCWp_t)(x64emu_t*, void*, void*, uint8_t, uint16_t, void*); typedef void* (*pFEXLLLp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, uintptr_t, void*); typedef void* (*pFEXLpii_t)(x64emu_t*, void*, uintptr_t, void*, int32_t, int32_t); typedef void* (*pFEXpppp_t)(x64emu_t*, void*, void*, void*, void*, void*); typedef void* (*pFWCiWCi_t)(uint16_t, uint8_t, int32_t, uint16_t, uint8_t, int32_t); typedef void* (*pFdddddd_t)(double, double, double, double, double, double); typedef void* (*pFpiiiiu_t)(void*, int32_t, int32_t, int32_t, int32_t, uint32_t); -typedef void* (*pFppnCWp_t)(void*, void*, void*, uint8_t, uint16_t, void*); typedef void* (*XFpppppp_t)(void*, void*, void*, void*, void*, void*); typedef int32_t (*iFpppibp_p_t)(void*, void*, void*, int32_t, struct_p_t*, void*); typedef int32_t (*iFpppbp_pp_t)(void*, void*, void*, struct_p_t*, void*, void*); @@ -1777,6 +1778,7 @@ typedef uint32_t (*uFuulpiuiuf_t)(uint32_t, uint32_t, intptr_t, void*, int32_t, typedef uintptr_t (*LFXLiiiiiip_t)(void*, uintptr_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, void*); typedef uintptr_t (*LFXLiiuuuLL_t)(void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uintptr_t, uintptr_t); typedef void* (*pFEuiiiuuuu_t)(x64emu_t*, uint32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t); +typedef void* (*pFEpnCuuuuu_t)(x64emu_t*, void*, void*, uint8_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); typedef void* (*pFEXLiiuuLi_t)(x64emu_t*, void*, uintptr_t, int32_t, int32_t, uint32_t, uint32_t, uintptr_t, int32_t); typedef void* (*pFpiiiiuuuu_t)(void*, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t); typedef int32_t (*iFXLbL_pppppp_t)(void*, uintptr_t, struct_L_t*, void*, void*, void*, void*, void*, void*); @@ -1813,7 +1815,7 @@ typedef int32_t (*iFXiLLdduudd_t)(void*, int32_t, uintptr_t, uintptr_t, double, typedef int32_t (*iFXuuLiuiiLL_t)(void*, uint32_t, uint32_t, uintptr_t, int32_t, uint32_t, int32_t, int32_t, uintptr_t, uintptr_t); typedef int32_t (*iFXLLpiiuuii_t)(void*, uintptr_t, uintptr_t, void*, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t); typedef void* (*pFEpiiiiuuuu_t)(x64emu_t*, void*, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, uint32_t, uint32_t); -typedef void* (*pFEppnCuuuuu_t)(x64emu_t*, void*, void*, void*, uint8_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); +typedef void* (*pFEpnCuuuCup_t)(x64emu_t*, void*, void*, uint8_t, uint32_t, uint32_t, uint32_t, uint8_t, uint32_t, void*); typedef void* (*pFpppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*); typedef void* (*pFXpuiipuuii_t)(void*, void*, uint32_t, int32_t, int32_t, void*, uint32_t, uint32_t, int32_t, int32_t); typedef int32_t (*iFXiiLiiibiip_ip_t)(void*, int32_t, int32_t, uintptr_t, int32_t, int32_t, int32_t, struct_iip_t*, int32_t, void*); @@ -1838,7 +1840,6 @@ typedef int32_t (*iFEXLppiiiiuu_t)(x64emu_t*, void*, uintptr_t, void*, void*, in typedef int32_t (*iFEXpLLiiLWpi_t)(x64emu_t*, void*, void*, uintptr_t, uintptr_t, int32_t, int32_t, uintptr_t, uint16_t, void*, int32_t); typedef int32_t (*iFuiiiiuuiiip_t)(uint32_t, int32_t, int32_t, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, int32_t, void*); typedef int32_t (*iFXLLpiiuuiiL_t)(void*, uintptr_t, uintptr_t, void*, int32_t, int32_t, uint32_t, uint32_t, int32_t, int32_t, uintptr_t); -typedef void* (*pFEppnCuuuCup_t)(x64emu_t*, void*, void*, void*, uint8_t, uint32_t, uint32_t, uint32_t, uint8_t, uint32_t, void*); typedef void* (*pFEXpuiipuuii_t)(x64emu_t*, void*, void*, uint32_t, int32_t, int32_t, void*, uint32_t, uint32_t, int32_t, int32_t); typedef int32_t (*iFXiiLLiiibiip_ip_t)(void*, int32_t, int32_t, uintptr_t, uintptr_t, int32_t, int32_t, int32_t, struct_iip_t*, int32_t, void*); typedef void (*vFXiLLrLiiuL_iiiipi_t)(void*, int32_t, uintptr_t, uintptr_t, struct_LiiuL_t*, int32_t, int32_t, int32_t, int32_t, void*, int32_t); @@ -3175,6 +3176,8 @@ void LFXLpuu_32(x64emu_t *emu, uintptr_t fcn) { LFXLpuu_t fn = (LFXLpuu_t)fcn; R void LFXpppi_32(x64emu_t *emu, uintptr_t fcn) { LFXpppi_t fn = (LFXpppi_t)fcn; R_EAX = to_ulong(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); } void pFEppip_32(x64emu_t *emu, uintptr_t fcn) { pFEppip_t fn = (pFEppip_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); } void pFEppdd_32(x64emu_t *emu, uintptr_t fcn) { pFEppdd_t fn = (pFEppdd_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20))); } +void pFEpnuu_32(x64emu_t *emu, uintptr_t fcn) { pFEpnuu_t fn = (pFEpnuu_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 8)); R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), aligned_xcb, from_ptri(uint32_t, R_ESP + 12), from_ptri(uint32_t, R_ESP + 16))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 8)); } +void pFEpnup_32(x64emu_t *emu, uintptr_t fcn) { pFEpnup_t fn = (pFEpnup_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 8)); R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), aligned_xcb, from_ptri(uint32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 8)); } void pFEXipp_32(x64emu_t *emu, uintptr_t fcn) { pFEXipp_t fn = (pFEXipp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); } void pFEXlpp_32(x64emu_t *emu, uintptr_t fcn) { pFEXlpp_t fn = (pFEXlpp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_long(from_ptri(long_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16))); } void pFEXpip_32(x64emu_t *emu, uintptr_t fcn) { pFEXpip_t fn = (pFEXpip_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16))); } @@ -3188,7 +3191,6 @@ void pFpuuip_32(x64emu_t *emu, uintptr_t fcn) { pFpuuip_t fn = (pFpuuip_t)fcn; R 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 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))); } void pFppupp_32(x64emu_t *emu, uintptr_t fcn) { pFppupp_t fn = (pFppupp_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_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); } -void pFppnuu_32(x64emu_t *emu, uintptr_t fcn) { pFppnuu_t fn = (pFppnuu_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 12)); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), aligned_xcb, from_ptri(uint32_t, R_ESP + 16), from_ptri(uint32_t, R_ESP + 20))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 12)); } void pFXLipp_32(x64emu_t *emu, uintptr_t fcn) { pFXLipp_t fn = (pFXLipp_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptri(int32_t, R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); } void pFXpipi_32(x64emu_t *emu, uintptr_t fcn) { pFXpipi_t fn = (pFXpipi_t)fcn; R_EAX = to_ptrv(fn(getDisplay(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 pFXppip_32(x64emu_t *emu, uintptr_t fcn) { pFXppip_t fn = (pFXppip_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); } @@ -3353,13 +3355,13 @@ void lEipLipp_32(x64emu_t *emu, uintptr_t fcn) { lEipLipp_t fn = (lEipLipp_t)fcn void pFEpiiuu_32(x64emu_t *emu, uintptr_t fcn) { pFEpiiuu_t fn = (pFEpiiuu_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(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))); } void pEEpLLiN_32(x64emu_t *emu, uintptr_t fcn) { pEEpLLiN_t fn = (pEEpLLiN_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ulong(from_ptri(ulong_t, R_ESP + 12)), from_ptri(int32_t, R_ESP + 16), from_ptriv(R_ESP + 20))); emu->libc_err = errno; } void pEEppLLp_32(x64emu_t *emu, uintptr_t fcn) { pEEppLLp_t fn = (pEEppLLp_t)fcn; errno = emu->libc_err; R_EAX = to_ptrv(fn(emu, 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)), from_ptriv(R_ESP + 20))); emu->libc_err = errno; } +void pFEpnCWp_32(x64emu_t *emu, uintptr_t fcn) { pFEpnCWp_t fn = (pFEpnCWp_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 8)); R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), aligned_xcb, from_ptri(uint8_t, R_ESP + 12), from_ptri(uint16_t, R_ESP + 16), from_ptriv(R_ESP + 20))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 8)); } void pFEXLLLp_32(x64emu_t *emu, uintptr_t fcn) { pFEXLLLp_t fn = (pFEXLLLp_t)fcn; R_EAX = to_ptrv(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_ulong(from_ptri(ulong_t, R_ESP + 16)), from_ptriv(R_ESP + 20))); } void pFEXLpii_32(x64emu_t *emu, uintptr_t fcn) { pFEXLpii_t fn = (pFEXLpii_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20))); } void pFEXpppp_32(x64emu_t *emu, uintptr_t fcn) { pFEXpppp_t fn = (pFEXpppp_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20))); } void pFWCiWCi_32(x64emu_t *emu, uintptr_t fcn) { pFWCiWCi_t fn = (pFWCiWCi_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint16_t, R_ESP + 4), from_ptri(uint8_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptri(uint16_t, R_ESP + 16), from_ptri(uint8_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24))); } void pFdddddd_32(x64emu_t *emu, uintptr_t fcn) { pFdddddd_t fn = (pFdddddd_t)fcn; R_EAX = to_ptrv(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_ptri(double, R_ESP + 36), from_ptri(double, R_ESP + 44))); } void pFpiiiiu_32(x64emu_t *emu, uintptr_t fcn) { pFpiiiiu_t fn = (pFpiiiiu_t)fcn; R_EAX = to_ptrv(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), from_ptri(int32_t, R_ESP + 20), from_ptri(uint32_t, R_ESP + 24))); } -void pFppnCWp_32(x64emu_t *emu, uintptr_t fcn) { pFppnCWp_t fn = (pFppnCWp_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 12)); R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), aligned_xcb, from_ptri(uint8_t, R_ESP + 16), from_ptri(uint16_t, R_ESP + 20), from_ptriv(R_ESP + 24))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 12)); } void XFpppppp_32(x64emu_t *emu, uintptr_t fcn) { XFpppppp_t fn = (XFpppppp_t)fcn; R_EAX = to_ptrv(addDisplay(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)))); } void iFpppibp_p_32(x64emu_t *emu, uintptr_t fcn) { iFpppibp_p_t fn = (iFpppibp_p_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 = fn(from_ptriv(R_ESP + 4), from_ptriv(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, from_ptriv(R_ESP + 24)); if (*(ptr_t*)(from_ptr((R_ESP + 20)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 20))), &arg_20); } void iFpppbp_pp_32(x64emu_t *emu, uintptr_t fcn) { iFpppbp_pp_t fn = (iFpppbp_pp_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 = 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, from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24)); if (*(ptr_t*)(from_ptr((R_ESP + 16)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 16))), &arg_16); } @@ -3580,6 +3582,7 @@ void uFuulpiuiuf_32(x64emu_t *emu, uintptr_t fcn) { uFuulpiuiuf_t fn = (uFuulpiu void LFXLiiiiiip_32(x64emu_t *emu, uintptr_t fcn) { LFXLiiiiiip_t fn = (LFXLiiiiiip_t)fcn; R_EAX = to_ulong(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(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_ptriv(R_ESP + 36))); } void LFXLiiuuuLL_32(x64emu_t *emu, uintptr_t fcn) { LFXLiiuuuLL_t fn = (LFXLiiuuuLL_t)fcn; R_EAX = to_ulong(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(int32_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_ulong(from_ptri(ulong_t, R_ESP + 32)), from_ulong(from_ptri(ulong_t, R_ESP + 36)))); } void pFEuiiiuuuu_32(x64emu_t *emu, uintptr_t fcn) { pFEuiiiuuuu_t fn = (pFEuiiiuuuu_t)fcn; R_EAX = to_ptrv(fn(emu, 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(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))); } +void pFEpnCuuuuu_32(x64emu_t *emu, uintptr_t fcn) { pFEpnCuuuuu_t fn = (pFEpnCuuuuu_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 8)); R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), aligned_xcb, from_ptri(uint8_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))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 8)); } void pFEXLiiuuLi_32(x64emu_t *emu, uintptr_t fcn) { pFEXLiiuuLi_t fn = (pFEXLiiuuLi_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))); } void pFpiiiiuuuu_32(x64emu_t *emu, uintptr_t fcn) { pFpiiiiuuuu_t fn = (pFpiiiiuuuu_t)fcn; R_EAX = to_ptrv(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), from_ptri(int32_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))); } void iFXLbL_pppppp_32(x64emu_t *emu, uintptr_t fcn) { iFXLbL_pppppp_t fn = (iFXLbL_pppppp_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_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)); if (*(ptr_t*)(from_ptr((R_ESP + 12)))) to_struct_L(*(ptr_t*)(from_ptr((R_ESP + 12))), &arg_12); } @@ -3616,7 +3619,7 @@ void iFXiLLdduudd_32(x64emu_t *emu, uintptr_t fcn) { iFXiLLdduudd_t fn = (iFXiLL void iFXuuLiuiiLL_32(x64emu_t *emu, uintptr_t fcn) { iFXuuLiuiiLL_t fn = (iFXuuLiuiiLL_t)fcn; R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ulong(from_ptri(ulong_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), from_ptri(int32_t, R_ESP + 32), from_ulong(from_ptri(ulong_t, R_ESP + 36)), from_ulong(from_ptri(ulong_t, R_ESP + 40))); } void iFXLLpiiuuii_32(x64emu_t *emu, uintptr_t fcn) { iFXLLpiiuuii_t fn = (iFXLLpiiuuii_t)fcn; 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_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40)); } void pFEpiiiiuuuu_32(x64emu_t *emu, uintptr_t fcn) { pFEpiiiiuuuu_t fn = (pFEpiiiiuuuu_t)fcn; R_EAX = to_ptrv(fn(emu, 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), from_ptri(int32_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))); } -void pFEppnCuuuuu_32(x64emu_t *emu, uintptr_t fcn) { pFEppnCuuuuu_t fn = (pFEppnCuuuuu_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 12)); R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), aligned_xcb, from_ptri(uint8_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))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 12)); } +void pFEpnCuuuCup_32(x64emu_t *emu, uintptr_t fcn) { pFEpnCuuuCup_t fn = (pFEpnCuuuCup_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 8)); R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), aligned_xcb, from_ptri(uint8_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(uint8_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptriv(R_ESP + 36))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 8)); } void pFpppppppppp_32(x64emu_t *emu, uintptr_t fcn) { pFpppppppppp_t fn = (pFpppppppppp_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), 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))); } void pFXpuiipuuii_32(x64emu_t *emu, uintptr_t fcn) { pFXpuiipuuii_t fn = (pFXpuiipuuii_t)fcn; R_EAX = to_ptrv(fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40))); } void iFXiiLiiibiip_ip_32(x64emu_t *emu, uintptr_t fcn) { iFXiiLiiibiip_ip_t fn = (iFXiiLiiibiip_ip_t)fcn; struct_iip_t arg_32={0}; if (*(ptr_t*)(from_ptr((R_ESP + 32)))) from_struct_iip(&arg_32, *(ptr_t*)(from_ptr((R_ESP + 32)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ulong(from_ptri(ulong_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), *(ptr_t*)(from_ptr((R_ESP + 32))) ? &arg_32 : NULL, from_ptri(int32_t, R_ESP + 36), from_ptriv(R_ESP + 40)); if (*(ptr_t*)(from_ptr((R_ESP + 32)))) to_struct_iip(*(ptr_t*)(from_ptr((R_ESP + 32))), &arg_32); } @@ -3641,7 +3644,6 @@ void iFEXLppiiiiuu_32(x64emu_t *emu, uintptr_t fcn) { iFEXLppiiiiuu_t fn = (iFEX void iFEXpLLiiLWpi_32(x64emu_t *emu, uintptr_t fcn) { iFEXpLLiiLWpi_t fn = (iFEXpLLiiLWpi_t)fcn; R_EAX = fn(emu, getDisplay(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)), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ulong(from_ptri(ulong_t, R_ESP + 28)), from_ptri(uint16_t, R_ESP + 32), from_ptriv(R_ESP + 36), from_ptri(int32_t, R_ESP + 40)); } void iFuiiiiuuiiip_32(x64emu_t *emu, uintptr_t fcn) { iFuiiiiuuiiip_t fn = (iFuiiiiuuiiip_t)fcn; R_EAX = 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(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_ptri(int32_t, R_ESP + 40), from_ptriv(R_ESP + 44)); } void iFXLLpiiuuiiL_32(x64emu_t *emu, uintptr_t fcn) { iFXLLpiiuuiiL_t fn = (iFXLLpiiuuiiL_t)fcn; 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_ptriv(R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptri(int32_t, R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40), from_ulong(from_ptri(ulong_t, R_ESP + 44))); } -void pFEppnCuuuCup_32(x64emu_t *emu, uintptr_t fcn) { pFEppnCuuuCup_t fn = (pFEppnCuuuCup_t)fcn; void *aligned_xcb = align_xcb_connection32(from_ptriv(R_ESP + 12)); R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), aligned_xcb, from_ptri(uint8_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(uint8_t, R_ESP + 32), from_ptri(uint32_t, R_ESP + 36), from_ptriv(R_ESP + 40))); unalign_xcb_connection32(aligned_xcb, from_ptriv(R_ESP + 12)); } void pFEXpuiipuuii_32(x64emu_t *emu, uintptr_t fcn) { pFEXpuiipuuii_t fn = (pFEXpuiipuuii_t)fcn; R_EAX = to_ptrv(fn(emu, getDisplay(from_ptriv(R_ESP + 4)), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16), from_ptri(int32_t, R_ESP + 20), from_ptriv(R_ESP + 24), from_ptri(uint32_t, R_ESP + 28), from_ptri(uint32_t, R_ESP + 32), from_ptri(int32_t, R_ESP + 36), from_ptri(int32_t, R_ESP + 40))); } void iFXiiLLiiibiip_ip_32(x64emu_t *emu, uintptr_t fcn) { iFXiiLLiiibiip_ip_t fn = (iFXiiLLiiibiip_ip_t)fcn; struct_iip_t arg_36={0}; if (*(ptr_t*)(from_ptr((R_ESP + 36)))) from_struct_iip(&arg_36, *(ptr_t*)(from_ptr((R_ESP + 36)))); R_EAX = fn(getDisplay(from_ptriv(R_ESP + 4)), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_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), *(ptr_t*)(from_ptr((R_ESP + 36))) ? &arg_36 : NULL, from_ptri(int32_t, R_ESP + 40), from_ptriv(R_ESP + 44)); if (*(ptr_t*)(from_ptr((R_ESP + 36)))) to_struct_iip(*(ptr_t*)(from_ptr((R_ESP + 36))), &arg_36); } void vFXiLLrLiiuL_iiiipi_32(x64emu_t *emu, uintptr_t fcn) { vFXiLLrLiiuL_iiiipi_t fn = (vFXiLLrLiiuL_iiiipi_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_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_ptriv(R_ESP + 40), from_ptri(int32_t, R_ESP + 44)); } diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h index 746c2d6b..49a2cce5 100644 --- a/src/wrapped32/generated/wrapper32.h +++ b/src/wrapped32/generated/wrapper32.h @@ -1319,6 +1319,8 @@ void LFXLpuu_32(x64emu_t *emu, uintptr_t fnc); void LFXpppi_32(x64emu_t *emu, uintptr_t fnc); void pFEppip_32(x64emu_t *emu, uintptr_t fnc); void pFEppdd_32(x64emu_t *emu, uintptr_t fnc); +void pFEpnuu_32(x64emu_t *emu, uintptr_t fnc); +void pFEpnup_32(x64emu_t *emu, uintptr_t fnc); void pFEXipp_32(x64emu_t *emu, uintptr_t fnc); void pFEXlpp_32(x64emu_t *emu, uintptr_t fnc); void pFEXpip_32(x64emu_t *emu, uintptr_t fnc); @@ -1332,7 +1334,6 @@ void pFpuuip_32(x64emu_t *emu, uintptr_t fnc); void pFpdddd_32(x64emu_t *emu, uintptr_t fnc); void pFppuup_32(x64emu_t *emu, uintptr_t fnc); void pFppupp_32(x64emu_t *emu, uintptr_t fnc); -void pFppnuu_32(x64emu_t *emu, uintptr_t fnc); void pFXLipp_32(x64emu_t *emu, uintptr_t fnc); void pFXpipi_32(x64emu_t *emu, uintptr_t fnc); void pFXppip_32(x64emu_t *emu, uintptr_t fnc); @@ -1497,13 +1498,13 @@ void lEipLipp_32(x64emu_t *emu, uintptr_t fnc); void pFEpiiuu_32(x64emu_t *emu, uintptr_t fnc); void pEEpLLiN_32(x64emu_t *emu, uintptr_t fnc); void pEEppLLp_32(x64emu_t *emu, uintptr_t fnc); +void pFEpnCWp_32(x64emu_t *emu, uintptr_t fnc); void pFEXLLLp_32(x64emu_t *emu, uintptr_t fnc); void pFEXLpii_32(x64emu_t *emu, uintptr_t fnc); void pFEXpppp_32(x64emu_t *emu, uintptr_t fnc); void pFWCiWCi_32(x64emu_t *emu, uintptr_t fnc); void pFdddddd_32(x64emu_t *emu, uintptr_t fnc); void pFpiiiiu_32(x64emu_t *emu, uintptr_t fnc); -void pFppnCWp_32(x64emu_t *emu, uintptr_t fnc); void XFpppppp_32(x64emu_t *emu, uintptr_t fnc); void iFpppibp_p_32(x64emu_t *emu, uintptr_t fnc); void iFpppbp_pp_32(x64emu_t *emu, uintptr_t fnc); @@ -1724,6 +1725,7 @@ void uFuulpiuiuf_32(x64emu_t *emu, uintptr_t fnc); void LFXLiiiiiip_32(x64emu_t *emu, uintptr_t fnc); void LFXLiiuuuLL_32(x64emu_t *emu, uintptr_t fnc); void pFEuiiiuuuu_32(x64emu_t *emu, uintptr_t fnc); +void pFEpnCuuuuu_32(x64emu_t *emu, uintptr_t fnc); void pFEXLiiuuLi_32(x64emu_t *emu, uintptr_t fnc); void pFpiiiiuuuu_32(x64emu_t *emu, uintptr_t fnc); void iFXLbL_pppppp_32(x64emu_t *emu, uintptr_t fnc); @@ -1760,7 +1762,7 @@ void iFXiLLdduudd_32(x64emu_t *emu, uintptr_t fnc); void iFXuuLiuiiLL_32(x64emu_t *emu, uintptr_t fnc); void iFXLLpiiuuii_32(x64emu_t *emu, uintptr_t fnc); void pFEpiiiiuuuu_32(x64emu_t *emu, uintptr_t fnc); -void pFEppnCuuuuu_32(x64emu_t *emu, uintptr_t fnc); +void pFEpnCuuuCup_32(x64emu_t *emu, uintptr_t fnc); void pFpppppppppp_32(x64emu_t *emu, uintptr_t fnc); void pFXpuiipuuii_32(x64emu_t *emu, uintptr_t fnc); void iFXiiLiiibiip_ip_32(x64emu_t *emu, uintptr_t fnc); @@ -1785,7 +1787,6 @@ void iFEXLppiiiiuu_32(x64emu_t *emu, uintptr_t fnc); void iFEXpLLiiLWpi_32(x64emu_t *emu, uintptr_t fnc); void iFuiiiiuuiiip_32(x64emu_t *emu, uintptr_t fnc); void iFXLLpiiuuiiL_32(x64emu_t *emu, uintptr_t fnc); -void pFEppnCuuuCup_32(x64emu_t *emu, uintptr_t fnc); void pFEXpuiipuuii_32(x64emu_t *emu, uintptr_t fnc); void iFXiiLLiiibiip_ip_32(x64emu_t *emu, uintptr_t fnc); void vFXiLLrLiiuL_iiiipi_32(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped32/wrappedlibxcb.c b/src/wrapped32/wrappedlibxcb.c index a2d8171d..47bc12e1 100644 --- a/src/wrapped32/wrappedlibxcb.c +++ b/src/wrapped32/wrappedlibxcb.c @@ -28,9 +28,12 @@ typedef struct my_xcb_XXX_iterator_s { int rem; int index; } my_xcb_XXX_iterator_t; -// xcb_visualtype_iterator_t is like my_xcb_XXX_iterator_t -// xcb_depth_iterator_t is similar to my_xcb_XXX_iterator_t -// xcb_format_iterator_t is similar to my_xcb_XXX_iterator_t + +typedef struct my_xcb_XXX_iterator_32_s { + ptr_t data; + int rem; + int index; +} my_xcb_XXX_iterator_32_t; typedef struct my_xcb_cookie_s { uint32_t data; @@ -80,10 +83,13 @@ SUPER(xcb_intern_atom, (x64emu_t* emu, my_xcb_cookie_t* ret, void* c, uint8_t on #undef SUPER #define SUPER(F) \ - EXPORT void* my32_##F(x64emu_t* emu, my_xcb_XXX_iterator_t* ret, void* R) \ + EXPORT void* my32_##F(x64emu_t* emu, my_xcb_XXX_iterator_32_t* ret, void* R)\ { \ (void)emu; \ - *ret = my->F(R); \ + my_xcb_XXX_iterator_t ret_l = my->F(R); \ + ret->data = to_ptrv(ret_l.data); \ + ret->rem = ret_l.rem; \ + ret->index = ret_l.index; \ return ret; \ } diff --git a/src/wrapped32/wrappedlibxcb_private.h b/src/wrapped32/wrappedlibxcb_private.h index a2fef5ca..121d806f 100644 --- a/src/wrapped32/wrappedlibxcb_private.h +++ b/src/wrapped32/wrappedlibxcb_private.h @@ -79,7 +79,7 @@ GO(xcb_change_keyboard_mapping_keysyms_length, iFp) GO(xcb_change_keyboard_mapping_sizeof, iFp) //GOS(xcb_change_pointer_control, pFpnwwwCC) //GOS(xcb_change_pointer_control_checked, pFpnwwwCC) -GOS(xcb_change_property, zFEpnCuuuCup) //%% +GOS(xcb_change_property, zFEnCuuuCup) //%% //GOS(xcb_change_property_checked, pFpnCuuuCup) GO(xcb_change_property_data, pFp) //GOS(xcb_change_property_data_end, pFpp) @@ -163,7 +163,7 @@ GO(xcb_create_window_value_list_sizeof, iFpu) GO(xcb_create_window_value_list_unpack, iFpup) //GO(xcb_cursor_end, GO(xcb_cursor_next, vFbpii_) -GOS(xcb_delete_property, zFpnuu) //%% +GOS(xcb_delete_property, zFEnuu) //%% //GOS(xcb_delete_property_checked, pFpnuu) //GO(xcb_depth_end, GO(xcb_depth_next, vFbpii_) @@ -277,7 +277,7 @@ GO(xcb_get_pointer_mapping_map_length, iFp) GO(xcb_get_pointer_mapping_reply, pFnubp_) GO(xcb_get_pointer_mapping_sizeof, iFp) //GOS(xcb_get_pointer_mapping_unchecked, pFpn) -GOS(xcb_get_property, zFEpnCuuuuu) //%% +GOS(xcb_get_property, zFEnCuuuuu) //%% GO(xcb_get_property_reply, pFnubp_) GO(xcb_get_property_sizeof, iFp) //GOS(xcb_get_property_unchecked, pFpnCuuuuu) @@ -327,7 +327,7 @@ GO(xcb_image_text_8_string, pFp) GO(xcb_image_text_8_string_length, iFp) //GOS(xcb_install_colormap, pFpnu) //GOS(xcb_install_colormap_checked, pFpnu) -GOS(xcb_intern_atom, zFpnCWp) //%% +GOS(xcb_intern_atom, zFEnCWp) //%% GO(xcb_intern_atom_reply, pFnubp_) GO(xcb_intern_atom_sizeof, iFp) //GOS(xcb_intern_atom_unchecked, pFpnCWp) diff --git a/src/wrapped32/wrappedlibxcbres.c b/src/wrapped32/wrappedlibxcbres.c new file mode 100644 index 00000000..fda4dae8 --- /dev/null +++ b/src/wrapped32/wrappedlibxcbres.c @@ -0,0 +1,83 @@ +#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 "callback.h" +#include "librarian.h" +#include "box32context.h" +#include "emu/x64emu_private.h" +#include "myalign32.h" +#include "converter32.h" + +#ifdef ANDROID + static const char* libxcbresName = "libxcb-res.so"; +#else + static const char* libxcbresName = "libxcb-res.so.0"; +#endif + +#define LIBNAME libxcbres + +typedef struct my_xcb_XXX_iterator_s { + void* data; + int rem; + int index; +} my_xcb_XXX_iterator_t; + +typedef struct my_xcb_XXX_iterator_32_s { + ptr_t data; + int rem; + int index; +} my_xcb_XXX_iterator_32_t; + +typedef struct my_xcb_cookie_s { + uint32_t data; +} my_xcb_cookie_t; + +typedef my_xcb_cookie_t (*zFpup)(void*, uint32_t, void*); +typedef my_xcb_XXX_iterator_t (*ZFp_t)(void*); + +#define ADDED_FUNCTIONS() \ +GO(xcb_res_query_client_ids, zFpup) \ +GO(xcb_res_query_client_ids_ids_iterator, ZFp_t)\ + +#include "generated/wrappedlibxcbrestypes32.h" + +#include "wrappercallback32.h" + +#define SUPER(F, P, ...) \ + EXPORT void* my32_##F P \ + { \ + (void)emu; \ + *ret = my->F(__VA_ARGS__); \ + return ret; \ + } + +SUPER(xcb_res_query_client_ids, (x64emu_t* emu, my_xcb_cookie_t* ret, void* c, uint32_t count, void* specs), c, count, specs) + +#undef SUPER + +#define SUPER(F) \ + EXPORT void* my32_##F(x64emu_t* emu, my_xcb_XXX_iterator_32_t* ret, void* R)\ + { \ + (void)emu; \ + my_xcb_XXX_iterator_t ret_l = my->F(R); \ + ret->data = to_ptrv(ret_l.data); \ + ret->rem = ret_l.rem; \ + ret->index = ret_l.index; \ + return ret; \ + } + +SUPER(xcb_res_query_client_ids_ids_iterator) + +#undef SUPER + +#include "wrappedlib_init32.h" diff --git a/src/wrapped32/wrappedlibxcbres_private.h b/src/wrapped32/wrappedlibxcbres_private.h new file mode 100644 index 00000000..e4b57737 --- /dev/null +++ b/src/wrapped32/wrappedlibxcbres_private.h @@ -0,0 +1,62 @@ +#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) +#error Meh... +#endif + +//%S z my_xcb_cookie_t u +//%S Z my_xcb_XXX_iterator_t pii + +//GO(xcb_res_client_end, +//GO(xcb_res_client_id_spec_end, +GO(xcb_res_client_id_spec_next, vFbpii_) +//GO(xcb_res_client_id_value_end, +GO(xcb_res_client_id_value_next, vFbpii_) +GO(xcb_res_client_id_value_sizeof, iFp) +GO(xcb_res_client_id_value_value, pFp) +//GOS(xcb_res_client_id_value_value_end, pFpp) +GO(xcb_res_client_id_value_value_length, iFp) +GO(xcb_res_client_next, vFbpii_) +//DATA(xcb_res_id, +GOS(xcb_res_query_client_ids, zFEnup) //%% +GOS(xcb_res_query_client_ids_ids_iterator, ZFEp) //%% +GO(xcb_res_query_client_ids_ids_length, iFp) +GO(xcb_res_query_client_ids_reply, pFnubp_) +GO(xcb_res_query_client_ids_sizeof, iFp) +//GOS(xcb_res_query_client_ids_unchecked, pFpnup) +//GOS(xcb_res_query_client_pixmap_bytes, pFpnu) +GO(xcb_res_query_client_pixmap_bytes_reply, pFnubp_) +//GOS(xcb_res_query_client_pixmap_bytes_unchecked, pFpnu) +//GOS(xcb_res_query_client_resources, pFpnu) +GO(xcb_res_query_client_resources_reply, pFnubp_) +GO(xcb_res_query_client_resources_sizeof, iFp) +GO(xcb_res_query_client_resources_types, pFp) +//GOS(xcb_res_query_client_resources_types_iterator, pFpp) +GO(xcb_res_query_client_resources_types_length, iFp) +//GOS(xcb_res_query_client_resources_unchecked, pFpnu) +//GOS(xcb_res_query_clients, pFpn) +GO(xcb_res_query_clients_clients, pFp) +//GOS(xcb_res_query_clients_clients_iterator, pFpp) +GO(xcb_res_query_clients_clients_length, iFp) +GO(xcb_res_query_clients_reply, pFnubp_) +GO(xcb_res_query_clients_sizeof, iFp) +//GOS(xcb_res_query_clients_unchecked, pFpn) +//GOS(xcb_res_query_resource_bytes, pFpnuup) +GO(xcb_res_query_resource_bytes_reply, pFnubp_) +GO(xcb_res_query_resource_bytes_sizeof, iFp) +//GOS(xcb_res_query_resource_bytes_sizes_iterator, pFpp) +GO(xcb_res_query_resource_bytes_sizes_length, iFp) +//GOS(xcb_res_query_resource_bytes_unchecked, pFpnuup) +//GOS(xcb_res_query_version, pFpnCC) +GO(xcb_res_query_version_reply, pFnubp_) +//GOS(xcb_res_query_version_unchecked, pFpnCC) +//GO(xcb_res_resource_id_spec_end, +GO(xcb_res_resource_id_spec_next, vFbpii_) +//GO(xcb_res_resource_size_spec_end, +GO(xcb_res_resource_size_spec_next, vFbpii_) +GO(xcb_res_resource_size_value_cross_references, pFp) +//GOS(xcb_res_resource_size_value_cross_references_iterator, pFpp) +GO(xcb_res_resource_size_value_cross_references_length, iFp) +//GO(xcb_res_resource_size_value_end, +GO(xcb_res_resource_size_value_next, vFbpii_) +GO(xcb_res_resource_size_value_sizeof, iFp) +//GO(xcb_res_type_end, +GO(xcb_res_type_next, vFbpii_) diff --git a/src/wrapped32/wrappedxcbres.c b/src/wrapped32/wrappedxcbres.c deleted file mode 100644 index 52aa0596..00000000 --- a/src/wrapped32/wrappedxcbres.c +++ /dev/null @@ -1,28 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#define _GNU_SOURCE /* See feature_test_macros(7) */ -#include <dlfcn.h> - -#include "wrappedlibs.h" - -#include "debug.h" -#include "wrapper.h" -#include "bridge.h" -#include "librarian/library_private.h" -#include "x64emu.h" -#include "emu/x64emu_private.h" -#include "callback.h" -#include "librarian.h" -#include "box64context.h" -#include "emu/x64emu_private.h" - -#ifdef ANDROID - const char* libxcbresName = "libxcb-res.so"; -#else - const char* libxcbresName = "libxcb-res.so.0"; -#endif - -#define LIBNAME libxcbres - -#include "wrappedlib_init.h" diff --git a/src/wrapped32/wrappedxcbres_private.h b/src/wrapped32/wrappedxcbres_private.h deleted file mode 100644 index 31af8040..00000000 --- a/src/wrapped32/wrappedxcbres_private.h +++ /dev/null @@ -1,59 +0,0 @@ -#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA)) -#error Meh... -#endif - -//GO(xcb_res_client_end, -//GO(xcb_res_client_id_spec_end, -//GO(xcb_res_client_id_spec_next, -//GO(xcb_res_client_id_value_end, -//GO(xcb_res_client_id_value_next, -//GO(xcb_res_client_id_value_sizeof, -//GO(xcb_res_client_id_value_value, -//GO(xcb_res_client_id_value_value_end, -//GO(xcb_res_client_id_value_value_length, -//GO(xcb_res_client_next, -//DATA(xcb_res_id, -//GO(xcb_res_query_client_ids, -//GO(xcb_res_query_client_ids_ids_iterator, -//GO(xcb_res_query_client_ids_ids_length, -//GO(xcb_res_query_client_ids_reply, -//GO(xcb_res_query_client_ids_sizeof, -//GO(xcb_res_query_client_ids_unchecked, -//GO(xcb_res_query_client_pixmap_bytes, -//GO(xcb_res_query_client_pixmap_bytes_reply, -//GO(xcb_res_query_client_pixmap_bytes_unchecked, -//GO(xcb_res_query_client_resources, -//GO(xcb_res_query_client_resources_reply, -//GO(xcb_res_query_client_resources_sizeof, -//GO(xcb_res_query_client_resources_types, -//GO(xcb_res_query_client_resources_types_iterator, -//GO(xcb_res_query_client_resources_types_length, -//GO(xcb_res_query_client_resources_unchecked, -//GO(xcb_res_query_clients, -//GO(xcb_res_query_clients_clients, -//GO(xcb_res_query_clients_clients_iterator, -//GO(xcb_res_query_clients_clients_length, -//GO(xcb_res_query_clients_reply, -//GO(xcb_res_query_clients_sizeof, -//GO(xcb_res_query_clients_unchecked, -//GO(xcb_res_query_resource_bytes, -//GO(xcb_res_query_resource_bytes_reply, -//GO(xcb_res_query_resource_bytes_sizeof, -//GO(xcb_res_query_resource_bytes_sizes_iterator, -//GO(xcb_res_query_resource_bytes_sizes_length, -//GO(xcb_res_query_resource_bytes_unchecked, -//GO(xcb_res_query_version, -//GO(xcb_res_query_version_reply, -//GO(xcb_res_query_version_unchecked, -//GO(xcb_res_resource_id_spec_end, -//GO(xcb_res_resource_id_spec_next, -//GO(xcb_res_resource_size_spec_end, -//GO(xcb_res_resource_size_spec_next, -//GO(xcb_res_resource_size_value_cross_references, -//GO(xcb_res_resource_size_value_cross_references_iterator, -//GO(xcb_res_resource_size_value_cross_references_length, -//GO(xcb_res_resource_size_value_end, -//GO(xcb_res_resource_size_value_next, -//GO(xcb_res_resource_size_value_sizeof, -//GO(xcb_res_type_end, -//GO(xcb_res_type_next, |