about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/box32.c283
-rw-r--r--src/box64context.c32
-rw-r--r--src/core.c105
-rw-r--r--src/custommem.c55
-rw-r--r--src/dynarec/arm64/arm64_emitter.h19
-rw-r--r--src/dynarec/arm64/dynarec_arm64_64.c92
-rw-r--r--src/dynarec/arm64/dynarec_arm64_6664.c30
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.h26
-rw-r--r--src/dynarec/dynarec.c19
-rw-r--r--src/dynarec/dynarec_native_pass.c2
-rw-r--r--src/elfs/elfhash.c14
-rw-r--r--src/elfs/elfhash32.c46
-rw-r--r--src/elfs/elfload_dump.c4
-rw-r--r--src/elfs/elfloader.c101
-rw-r--r--src/elfs/elfloader32.c264
-rw-r--r--src/elfs/elfloader_private.h6
-rwxr-xr-xsrc/elfs/elfparser32.c6
-rw-r--r--src/emu/x64emu.c57
-rw-r--r--src/emu/x64emu_private.h6
-rw-r--r--src/emu/x64int3.c14
-rw-r--r--src/emu/x64run.c10
-rw-r--r--src/emu/x64run64.c10
-rw-r--r--src/emu/x64run_private.c53
-rw-r--r--src/emu/x64run_private.h21
-rw-r--r--src/emu/x64tls.c81
-rwxr-xr-xsrc/emu/x86int3.c347
-rwxr-xr-xsrc/emu/x86syscall.c2
-rw-r--r--src/emu/x86syscall_32.c447
-rw-r--r--src/emu/x87emu_private.c18
-rw-r--r--src/include/box32.h5
-rw-r--r--src/include/box32context.h7
-rw-r--r--src/include/box64context.h11
-rw-r--r--src/include/debug.h2
-rw-r--r--src/include/elfload_dump.h4
-rwxr-xr-xsrc/include/myalign32.h409
-rw-r--r--src/include/regs.h1
-rw-r--r--src/include/threads.h15
-rw-r--r--src/include/x64emu.h7
-rw-r--r--src/include/x64run.h3
-rw-r--r--src/librarian/librarian.c35
-rw-r--r--src/librarian/library.c108
-rw-r--r--src/librarian/library_private.h18
-rw-r--r--src/library_list_32.h12
-rw-r--r--src/library_list_static_32.h10
-rwxr-xr-xsrc/libtools/myalign32.c935
-rwxr-xr-xsrc/libtools/myalign64_32.c104
-rw-r--r--src/libtools/signal32.c842
-rw-r--r--src/libtools/signals.c15
-rw-r--r--src/libtools/threads.c35
-rwxr-xr-xsrc/libtools/threads32.c854
-rw-r--r--src/tools/box32stack.c137
-rw-r--r--src/tools/box64stack.c10
-rw-r--r--src/tools/callback.c306
-rw-r--r--src/wrapped/generated/wrappedaluredefs.h2
-rw-r--r--src/wrapped/generated/wrappedaluretypes.h2
-rw-r--r--src/wrapped/generated/wrappedalureundefs.h2
-rw-r--r--src/wrapped/generated/wrappedalutdefs.h2
-rw-r--r--src/wrapped/generated/wrappedaluttypes.h2
-rw-r--r--src/wrapped/generated/wrappedalutundefs.h2
-rw-r--r--src/wrapped/generated/wrappedanldefs.h2
-rw-r--r--src/wrapped/generated/wrappedanltypes.h2
-rw-r--r--src/wrapped/generated/wrappedanlundefs.h2
-rw-r--r--src/wrapped/generated/wrappedatkbridgedefs.h2
-rw-r--r--src/wrapped/generated/wrappedatkbridgetypes.h2
-rw-r--r--src/wrapped/generated/wrappedatkbridgeundefs.h2
-rw-r--r--src/wrapped/generated/wrappedatkdefs.h2
-rw-r--r--src/wrapped/generated/wrappedatktypes.h2
-rw-r--r--src/wrapped/generated/wrappedatkundefs.h2
-rw-r--r--src/wrapped/generated/wrappedatomicdefs.h2
-rw-r--r--src/wrapped/generated/wrappedatomictypes.h2
-rw-r--r--src/wrapped/generated/wrappedatomicundefs.h2
-rw-r--r--src/wrapped/generated/wrappedatspidefs.h2
-rw-r--r--src/wrapped/generated/wrappedatspitypes.h2
-rw-r--r--src/wrapped/generated/wrappedatspiundefs.h2
-rw-r--r--src/wrapped/generated/wrappedayatanaappindicator3defs.h2
-rw-r--r--src/wrapped/generated/wrappedayatanaappindicator3types.h2
-rw-r--r--src/wrapped/generated/wrappedayatanaappindicator3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedbz2defs.h2
-rw-r--r--src/wrapped/generated/wrappedbz2types.h2
-rw-r--r--src/wrapped/generated/wrappedbz2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedcairodefs.h2
-rw-r--r--src/wrapped/generated/wrappedcairogobjectdefs.h2
-rw-r--r--src/wrapped/generated/wrappedcairogobjecttypes.h2
-rw-r--r--src/wrapped/generated/wrappedcairogobjectundefs.h2
-rw-r--r--src/wrapped/generated/wrappedcairotypes.h2
-rw-r--r--src/wrapped/generated/wrappedcairoundefs.h2
-rw-r--r--src/wrapped/generated/wrappedcapdefs.h2
-rw-r--r--src/wrapped/generated/wrappedcaptypes.h2
-rw-r--r--src/wrapped/generated/wrappedcapundefs.h2
-rw-r--r--src/wrapped/generated/wrappedcrashhandlerdefs.h2
-rw-r--r--src/wrapped/generated/wrappedcrashhandlertypes.h2
-rw-r--r--src/wrapped/generated/wrappedcrashhandlerundefs.h2
-rw-r--r--src/wrapped/generated/wrappedcrypto3defs.h2
-rw-r--r--src/wrapped/generated/wrappedcrypto3types.h2
-rw-r--r--src/wrapped/generated/wrappedcrypto3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedcryptodefs.h2
-rw-r--r--src/wrapped/generated/wrappedcryptotypes.h2
-rw-r--r--src/wrapped/generated/wrappedcryptoundefs.h2
-rw-r--r--src/wrapped/generated/wrappedcurldefs.h2
-rw-r--r--src/wrapped/generated/wrappedcurltypes.h2
-rw-r--r--src/wrapped/generated/wrappedcurlundefs.h2
-rw-r--r--src/wrapped/generated/wrappedd3dadapter9defs.h2
-rw-r--r--src/wrapped/generated/wrappedd3dadapter9types.h2
-rw-r--r--src/wrapped/generated/wrappedd3dadapter9undefs.h2
-rw-r--r--src/wrapped/generated/wrappeddbusdefs.h2
-rw-r--r--src/wrapped/generated/wrappeddbusglib1defs.h2
-rw-r--r--src/wrapped/generated/wrappeddbusglib1types.h2
-rw-r--r--src/wrapped/generated/wrappeddbusglib1undefs.h2
-rw-r--r--src/wrapped/generated/wrappeddbusmenuglibdefs.h2
-rw-r--r--src/wrapped/generated/wrappeddbusmenuglibtypes.h2
-rw-r--r--src/wrapped/generated/wrappeddbusmenuglibundefs.h2
-rw-r--r--src/wrapped/generated/wrappeddbustypes.h2
-rw-r--r--src/wrapped/generated/wrappeddbusundefs.h2
-rw-r--r--src/wrapped/generated/wrappeddecor0defs.h2
-rw-r--r--src/wrapped/generated/wrappeddecor0types.h2
-rw-r--r--src/wrapped/generated/wrappeddecor0undefs.h2
-rw-r--r--src/wrapped/generated/wrappedevent21defs.h2
-rw-r--r--src/wrapped/generated/wrappedevent21types.h2
-rw-r--r--src/wrapped/generated/wrappedevent21undefs.h2
-rw-r--r--src/wrapped/generated/wrappedexpatdefs.h2
-rw-r--r--src/wrapped/generated/wrappedexpattypes.h2
-rw-r--r--src/wrapped/generated/wrappedexpatundefs.h2
-rw-r--r--src/wrapped/generated/wrappedfaudiodefs.h2
-rw-r--r--src/wrapped/generated/wrappedfaudiotypes.h2
-rw-r--r--src/wrapped/generated/wrappedfaudioundefs.h2
-rw-r--r--src/wrapped/generated/wrappedflacdefs.h2
-rw-r--r--src/wrapped/generated/wrappedflactypes.h2
-rw-r--r--src/wrapped/generated/wrappedflacundefs.h2
-rw-r--r--src/wrapped/generated/wrappedfontconfigdefs.h2
-rw-r--r--src/wrapped/generated/wrappedfontconfigtypes.h2
-rw-r--r--src/wrapped/generated/wrappedfontconfigundefs.h2
-rw-r--r--src/wrapped/generated/wrappedfreebl3defs.h2
-rw-r--r--src/wrapped/generated/wrappedfreebl3types.h2
-rw-r--r--src/wrapped/generated/wrappedfreebl3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedfreetypedefs.h2
-rw-r--r--src/wrapped/generated/wrappedfreetypetypes.h2
-rw-r--r--src/wrapped/generated/wrappedfreetypeundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgbmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgbmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedgbmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgconf2defs.h2
-rw-r--r--src/wrapped/generated/wrappedgconf2types.h2
-rw-r--r--src/wrapped/generated/wrappedgconf2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgcryptdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgcrypttypes.h2
-rw-r--r--src/wrapped/generated/wrappedgcryptundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgdk3defs.h2
-rw-r--r--src/wrapped/generated/wrappedgdk3types.h2
-rw-r--r--src/wrapped/generated/wrappedgdk3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgdkpixbuf2defs.h2
-rw-r--r--src/wrapped/generated/wrappedgdkpixbuf2types.h2
-rw-r--r--src/wrapped/generated/wrappedgdkpixbuf2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgdkx112defs.h2
-rw-r--r--src/wrapped/generated/wrappedgdkx112types.h2
-rw-r--r--src/wrapped/generated/wrappedgdkx112undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgio2defs.h2
-rw-r--r--src/wrapped/generated/wrappedgio2types.h2
-rw-r--r--src/wrapped/generated/wrappedgio2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedglesv2defs.h2
-rw-r--r--src/wrapped/generated/wrappedglesv2types.h2
-rw-r--r--src/wrapped/generated/wrappedglesv2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedglib2defs.h2
-rw-r--r--src/wrapped/generated/wrappedglib2types.h2
-rw-r--r--src/wrapped/generated/wrappedglib2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgmodule2defs.h2
-rw-r--r--src/wrapped/generated/wrappedgmodule2types.h2
-rw-r--r--src/wrapped/generated/wrappedgmodule2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgmpdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgmptypes.h2
-rw-r--r--src/wrapped/generated/wrappedgmpundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgnutlsdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgnutlstypes.h2
-rw-r--r--src/wrapped/generated/wrappedgnutlsundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgobject2defs.h2
-rw-r--r--src/wrapped/generated/wrappedgobject2types.h2
-rw-r--r--src/wrapped/generated/wrappedgobject2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgompdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgomptypes.h2
-rw-r--r--src/wrapped/generated/wrappedgompundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgssapidefs.h2
-rw-r--r--src/wrapped/generated/wrappedgssapikrb5defs.h2
-rw-r--r--src/wrapped/generated/wrappedgssapikrb5types.h2
-rw-r--r--src/wrapped/generated/wrappedgssapikrb5undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgssapitypes.h2
-rw-r--r--src/wrapped/generated/wrappedgssapiundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstallocatorsdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstallocatorstypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstallocatorsundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstappdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstapptypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstappundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstaudiodefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstaudiotypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstaudioundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstbasedefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstbasetypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstbaseundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstcheckdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstchecktypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstcheckundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstcontrollerdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstcontrollertypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstcontrollerundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstfftdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstffttypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstfftundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstgldefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstgltypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstglundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstnetdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstnettypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstnetundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstpbutilsdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstpbutilstypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstpbutilsundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstreamerdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstreamertypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstreamerundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstriffdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstrifftypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstriffundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstrtpdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstrtptypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstrtpundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstrtspdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstrtsptypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstrtspundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstsdpdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstsdptypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstsdpundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgsttagdefs.h2
-rw-r--r--src/wrapped/generated/wrappedgsttagtypes.h2
-rw-r--r--src/wrapped/generated/wrappedgsttagundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstvideodefs.h2
-rw-r--r--src/wrapped/generated/wrappedgstvideotypes.h2
-rw-r--r--src/wrapped/generated/wrappedgstvideoundefs.h2
-rw-r--r--src/wrapped/generated/wrappedgthread2defs.h2
-rw-r--r--src/wrapped/generated/wrappedgthread2types.h2
-rw-r--r--src/wrapped/generated/wrappedgthread2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgtk3defs.h2
-rw-r--r--src/wrapped/generated/wrappedgtk3types.h2
-rw-r--r--src/wrapped/generated/wrappedgtk3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedgtkx112defs.h2
-rw-r--r--src/wrapped/generated/wrappedgtkx112types.h2
-rw-r--r--src/wrapped/generated/wrappedgtkx112undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n64defs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n64types.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n64undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n66defs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n66types.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n66undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n67defs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n67types.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n67undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n72defs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n72types.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n72undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n73defs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n73types.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n73undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n74defs.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n74types.h2
-rw-r--r--src/wrapped/generated/wrappedicui18n74undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc64defs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc64types.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc64undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc66defs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc66types.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc66undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc67defs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc67types.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc67undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc72defs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc72types.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc72undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc73defs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc73types.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc73undefs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc74defs.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc74types.h2
-rw-r--r--src/wrapped/generated/wrappedicuuc74undefs.h2
-rw-r--r--src/wrapped/generated/wrappedidn2defs.h2
-rw-r--r--src/wrapped/generated/wrappedidn2types.h2
-rw-r--r--src/wrapped/generated/wrappedidn2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedkrb5defs.h2
-rw-r--r--src/wrapped/generated/wrappedkrb5types.h2
-rw-r--r--src/wrapped/generated/wrappedkrb5undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlberdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlbertypes.h2
-rw-r--r--src/wrapped/generated/wrappedlberundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlcms2defs.h2
-rw-r--r--src/wrapped/generated/wrappedlcms2types.h2
-rw-r--r--src/wrapped/generated/wrappedlcms2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedldaprdefs.h2
-rw-r--r--src/wrapped/generated/wrappedldaprtypes.h2
-rw-r--r--src/wrapped/generated/wrappedldaprundefs.h2
-rw-r--r--src/wrapped/generated/wrappedldlinuxdefs.h2
-rw-r--r--src/wrapped/generated/wrappedldlinuxtypes.h2
-rw-r--r--src/wrapped/generated/wrappedldlinuxundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibasounddefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibasoundtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibasoundundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibbsddefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibbsdtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibbsdundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibcdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibcmusldefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibcmusltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibcmuslundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibcryptdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibcrypttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibcryptundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibctypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibcundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibcupsdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibcupstypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibcupsundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibdldefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibdltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibdlundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibdrmamdgpudefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibdrmamdgputypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibdrmamdgpuundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibdrmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibdrmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibdrmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibegldefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibegltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibeglundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibformdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibformtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibformundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibformw6defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibformw6types.h2
-rw-r--r--src/wrapped/generated/wrappedlibformw6undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibformwdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibformwtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibformwundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibfusedefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibfusetypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibfuseundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibgldefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibgltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibgludefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibglundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibglutypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibgluundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibglxdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibglxtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibglxundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibharfbuzzdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibharfbuzztypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibharfbuzzundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibhogweed6defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibhogweed6types.h2
-rw-r--r--src/wrapped/generated/wrappedlibhogweed6undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibibusdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibibustypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibibusundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibicedefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibicetypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibiceundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurses6defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurses6types.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurses6undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncursesdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncursestypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibncursesundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncursesw6defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncursesw6types.h2
-rw-r--r--src/wrapped/generated/wrappedlibncursesw6undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurseswdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurseswtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibncurseswundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibnettle8defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibnettle8types.h2
-rw-r--r--src/wrapped/generated/wrappedlibnettle8undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibnumadefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibnumatypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibnumaundefs.h2
-rw-r--r--src/wrapped/generated/wrappedliboggdefs.h2
-rw-r--r--src/wrapped/generated/wrappedliboggtypes.h2
-rw-r--r--src/wrapped/generated/wrappedliboggundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpaneldefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpaneltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibpanelundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpcidefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpcitypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibpciundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpcredefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpcretypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibpcreundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpthreaddefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibpthreadtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibpthreadundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibresolvdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibresolvtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibresolvundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibrtdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibrttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibrtundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibsmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibsmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibsmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibsndfiledefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibsndfiletypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibsndfileundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibsqlite3defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibsqlite3types.h2
-rw-r--r--src/wrapped/generated/wrappedlibsqlite3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibssh2defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibssh2types.h2
-rw-r--r--src/wrapped/generated/wrappedlibssh2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibssl3defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibssl3types.h2
-rw-r--r--src/wrapped/generated/wrappedlibssl3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibssldefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibssltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibsslundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtasn1defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtasn1types.h2
-rw-r--r--src/wrapped/generated/wrappedlibtasn1undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtiff5defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtiff5types.h2
-rw-r--r--src/wrapped/generated/wrappedlibtiff5undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfo6defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfo6types.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfo6undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfodefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfotypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibtinfoundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibunistring2defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibunistring2types.h2
-rw-r--r--src/wrapped/generated/wrappedlibunistring2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibusb1defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibusb1types.h2
-rw-r--r--src/wrapped/generated/wrappedlibusb1undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibuuiddefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibuuidtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibuuidundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvadefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvadrmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvadrmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibvadrmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvatypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibvaundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvawaylanddefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvawaylandtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibvawaylandundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvax11defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvax11types.h2
-rw-r--r--src/wrapped/generated/wrappedlibvax11undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvdpaudefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvdpautypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibvdpauundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvorbisdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibvorbistypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibvorbisundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibx11defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibx11types.h2
-rw-r--r--src/wrapped/generated/wrappedlibx11undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibx11xcbdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibx11xcbtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibx11xcbundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxaudefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxautypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxauundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbcursordefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbcursortypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbcursorundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbdri2defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbdri2types.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbdri2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbdri3defs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbdri3types.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbdri3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbglxdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbglxtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbglxundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbicccmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbicccmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbicccmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbimagedefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbimagetypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbimageundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbkeysymsdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbkeysymstypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbkeysymsundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbpresentdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbpresenttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbpresentundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrandrdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrandrtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrandrundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrenderdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrendertypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrenderundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrenderutildefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrenderutiltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbrenderutilundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbshapedefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbshapetypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbshapeundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbshmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbshmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbshmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbsyncdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbsynctypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbsyncundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbutildefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbutiltypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbutilundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxfixesdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxfixestypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxfixesundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxineramadefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxineramatypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxineramaundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxinputdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxinputtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxinputundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxkbdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxkbtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxkbundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxtestdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxtesttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcbxtestundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcompositedefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcompositetypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcompositeundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcursordefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcursortypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxcursorundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxdamagedefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxdamagetypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxdamageundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxdmcpdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxdmcptypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxdmcpundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxextdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxexttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxextundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxfixesdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxfixestypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxfixesundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxftdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxfttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxftundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxidefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxitypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxiundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxmudefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxmutypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxmuundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxpmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxpmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxpmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxpresentdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxpresenttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxpresentundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxrandrdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxrandrtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxrandrundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxrenderdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxrendertypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxrenderundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxssdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxsstypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxssundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxtdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxtstdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxtsttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxtstundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxttypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxtundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxxf86vmdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibxxf86vmtypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibxxf86vmundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibzdefs.h2
-rw-r--r--src/wrapped/generated/wrappedlibztypes.h2
-rw-r--r--src/wrapped/generated/wrappedlibzundefs.h2
-rw-r--r--src/wrapped/generated/wrappedlzmadefs.h2
-rw-r--r--src/wrapped/generated/wrappedlzmatypes.h2
-rw-r--r--src/wrapped/generated/wrappedlzmaundefs.h2
-rw-r--r--src/wrapped/generated/wrappedmpg123defs.h2
-rw-r--r--src/wrapped/generated/wrappedmpg123types.h2
-rw-r--r--src/wrapped/generated/wrappedmpg123undefs.h2
-rw-r--r--src/wrapped/generated/wrappednotifydefs.h2
-rw-r--r--src/wrapped/generated/wrappednotifytypes.h2
-rw-r--r--src/wrapped/generated/wrappednotifyundefs.h2
-rw-r--r--src/wrapped/generated/wrappednsldefs.h2
-rw-r--r--src/wrapped/generated/wrappednsltypes.h2
-rw-r--r--src/wrapped/generated/wrappednslundefs.h2
-rw-r--r--src/wrapped/generated/wrappednspr4defs.h2
-rw-r--r--src/wrapped/generated/wrappednspr4types.h2
-rw-r--r--src/wrapped/generated/wrappednspr4undefs.h2
-rw-r--r--src/wrapped/generated/wrappednss3defs.h2
-rw-r--r--src/wrapped/generated/wrappednss3types.h2
-rw-r--r--src/wrapped/generated/wrappednss3undefs.h2
-rw-r--r--src/wrapped/generated/wrappednssutil3defs.h2
-rw-r--r--src/wrapped/generated/wrappednssutil3types.h2
-rw-r--r--src/wrapped/generated/wrappednssutil3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedopenaldefs.h2
-rw-r--r--src/wrapped/generated/wrappedopenaltypes.h2
-rw-r--r--src/wrapped/generated/wrappedopenalundefs.h2
-rw-r--r--src/wrapped/generated/wrappedopencldefs.h2
-rw-r--r--src/wrapped/generated/wrappedopencltypes.h2
-rw-r--r--src/wrapped/generated/wrappedopenclundefs.h2
-rw-r--r--src/wrapped/generated/wrappedp11kitdefs.h2
-rw-r--r--src/wrapped/generated/wrappedp11kittypes.h2
-rw-r--r--src/wrapped/generated/wrappedp11kitundefs.h2
-rw-r--r--src/wrapped/generated/wrappedpamdefs.h2
-rw-r--r--src/wrapped/generated/wrappedpamtypes.h2
-rw-r--r--src/wrapped/generated/wrappedpamundefs.h2
-rw-r--r--src/wrapped/generated/wrappedpangocairodefs.h2
-rw-r--r--src/wrapped/generated/wrappedpangocairotypes.h2
-rw-r--r--src/wrapped/generated/wrappedpangocairoundefs.h2
-rw-r--r--src/wrapped/generated/wrappedpangodefs.h2
-rw-r--r--src/wrapped/generated/wrappedpangoft2defs.h2
-rw-r--r--src/wrapped/generated/wrappedpangoft2types.h2
-rw-r--r--src/wrapped/generated/wrappedpangoft2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedpangotypes.h2
-rw-r--r--src/wrapped/generated/wrappedpangoundefs.h2
-rw-r--r--src/wrapped/generated/wrappedplc4defs.h2
-rw-r--r--src/wrapped/generated/wrappedplc4types.h2
-rw-r--r--src/wrapped/generated/wrappedplc4undefs.h2
-rw-r--r--src/wrapped/generated/wrappedplds4defs.h2
-rw-r--r--src/wrapped/generated/wrappedplds4types.h2
-rw-r--r--src/wrapped/generated/wrappedplds4undefs.h2
-rw-r--r--src/wrapped/generated/wrappedpng16defs.h2
-rw-r--r--src/wrapped/generated/wrappedpng16types.h2
-rw-r--r--src/wrapped/generated/wrappedpng16undefs.h2
-rw-r--r--src/wrapped/generated/wrappedpsl5defs.h2
-rw-r--r--src/wrapped/generated/wrappedpsl5types.h2
-rw-r--r--src/wrapped/generated/wrappedpsl5undefs.h2
-rw-r--r--src/wrapped/generated/wrappedpulsedefs.h2
-rw-r--r--src/wrapped/generated/wrappedpulsemainloopglibdefs.h2
-rw-r--r--src/wrapped/generated/wrappedpulsemainloopglibtypes.h2
-rw-r--r--src/wrapped/generated/wrappedpulsemainloopglibundefs.h2
-rw-r--r--src/wrapped/generated/wrappedpulsesimpledefs.h2
-rw-r--r--src/wrapped/generated/wrappedpulsesimpletypes.h2
-rw-r--r--src/wrapped/generated/wrappedpulsesimpleundefs.h2
-rw-r--r--src/wrapped/generated/wrappedpulsetypes.h2
-rw-r--r--src/wrapped/generated/wrappedpulseundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1defs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1imagedefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1imagetypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1imageundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1mixerdefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1mixertypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1mixerundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1netdefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1nettypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1netundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1sounddefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1soundtypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1soundundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1ttfdefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1ttftypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1ttfundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1types.h2
-rw-r--r--src/wrapped/generated/wrappedsdl1undefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2defs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2imagedefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2imagetypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2imageundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2mixerdefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2mixertypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2mixerundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2netdefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2nettypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2netundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2ttfdefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2ttftypes.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2ttfundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2types.h2
-rw-r--r--src/wrapped/generated/wrappedsdl2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedsecret1defs.h2
-rw-r--r--src/wrapped/generated/wrappedsecret1types.h2
-rw-r--r--src/wrapped/generated/wrappedsecret1undefs.h2
-rw-r--r--src/wrapped/generated/wrappedselinuxdefs.h2
-rw-r--r--src/wrapped/generated/wrappedselinuxtypes.h2
-rw-r--r--src/wrapped/generated/wrappedselinuxundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsmime3defs.h2
-rw-r--r--src/wrapped/generated/wrappedsmime3types.h2
-rw-r--r--src/wrapped/generated/wrappedsmime3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedsmpeg2defs.h2
-rw-r--r--src/wrapped/generated/wrappedsmpeg2types.h2
-rw-r--r--src/wrapped/generated/wrappedsmpeg2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedsmpegdefs.h2
-rw-r--r--src/wrapped/generated/wrappedsmpegtypes.h2
-rw-r--r--src/wrapped/generated/wrappedsmpegundefs.h2
-rw-r--r--src/wrapped/generated/wrappedsoftokn3defs.h2
-rw-r--r--src/wrapped/generated/wrappedsoftokn3types.h2
-rw-r--r--src/wrapped/generated/wrappedsoftokn3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedssl3defs.h2
-rw-r--r--src/wrapped/generated/wrappedssl3types.h2
-rw-r--r--src/wrapped/generated/wrappedssl3undefs.h2
-rw-r--r--src/wrapped/generated/wrappedtbbbinddefs.h2
-rw-r--r--src/wrapped/generated/wrappedtbbbindtypes.h2
-rw-r--r--src/wrapped/generated/wrappedtbbbindundefs.h2
-rw-r--r--src/wrapped/generated/wrappedtbbmallocdefs.h2
-rw-r--r--src/wrapped/generated/wrappedtbbmallocproxydefs.h2
-rw-r--r--src/wrapped/generated/wrappedtbbmallocproxytypes.h2
-rw-r--r--src/wrapped/generated/wrappedtbbmallocproxyundefs.h2
-rw-r--r--src/wrapped/generated/wrappedtbbmalloctypes.h2
-rw-r--r--src/wrapped/generated/wrappedtbbmallocundefs.h2
-rw-r--r--src/wrapped/generated/wrappedtcmallocminimaldefs.h2
-rw-r--r--src/wrapped/generated/wrappedtcmallocminimaltypes.h2
-rw-r--r--src/wrapped/generated/wrappedtcmallocminimalundefs.h2
-rw-r--r--src/wrapped/generated/wrappedudev0defs.h2
-rw-r--r--src/wrapped/generated/wrappedudev0types.h2
-rw-r--r--src/wrapped/generated/wrappedudev0undefs.h2
-rw-r--r--src/wrapped/generated/wrappedudev1defs.h2
-rw-r--r--src/wrapped/generated/wrappedudev1types.h2
-rw-r--r--src/wrapped/generated/wrappedudev1undefs.h2
-rw-r--r--src/wrapped/generated/wrappedunwinddefs.h2
-rw-r--r--src/wrapped/generated/wrappedunwindtypes.h2
-rw-r--r--src/wrapped/generated/wrappedunwindundefs.h2
-rw-r--r--src/wrapped/generated/wrappedutildefs.h2
-rw-r--r--src/wrapped/generated/wrappedutiltypes.h2
-rw-r--r--src/wrapped/generated/wrappedutilundefs.h2
-rw-r--r--src/wrapped/generated/wrappedvorbisfiledefs.h2
-rw-r--r--src/wrapped/generated/wrappedvorbisfiletypes.h2
-rw-r--r--src/wrapped/generated/wrappedvorbisfileundefs.h2
-rw-r--r--src/wrapped/generated/wrappedvulkandefs.h2
-rw-r--r--src/wrapped/generated/wrappedvulkantypes.h2
-rw-r--r--src/wrapped/generated/wrappedvulkanundefs.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandclientdefs.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandclienttypes.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandclientundefs.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandcursordefs.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandcursortypes.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandcursorundefs.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandegldefs.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandegltypes.h2
-rw-r--r--src/wrapped/generated/wrappedwaylandeglundefs.h2
-rw-r--r--src/wrapped/generated/wrappedxineramadefs.h2
-rw-r--r--src/wrapped/generated/wrappedxineramatypes.h2
-rw-r--r--src/wrapped/generated/wrappedxineramaundefs.h2
-rw-r--r--src/wrapped/generated/wrappedxkbcommondefs.h2
-rw-r--r--src/wrapped/generated/wrappedxkbcommontypes.h2
-rw-r--r--src/wrapped/generated/wrappedxkbcommonundefs.h2
-rw-r--r--src/wrapped/generated/wrappedxkbcommonx11defs.h2
-rw-r--r--src/wrapped/generated/wrappedxkbcommonx11types.h2
-rw-r--r--src/wrapped/generated/wrappedxkbcommonx11undefs.h2
-rw-r--r--src/wrapped/generated/wrappedxkbregistrydefs.h2
-rw-r--r--src/wrapped/generated/wrappedxkbregistrytypes.h2
-rw-r--r--src/wrapped/generated/wrappedxkbregistryundefs.h2
-rw-r--r--src/wrapped/generated/wrappedxml2defs.h2
-rw-r--r--src/wrapped/generated/wrappedxml2types.h2
-rw-r--r--src/wrapped/generated/wrappedxml2undefs.h2
-rw-r--r--src/wrapped/generated/wrappedxshmfencedefs.h2
-rw-r--r--src/wrapped/generated/wrappedxshmfencetypes.h2
-rw-r--r--src/wrapped/generated/wrappedxshmfenceundefs.h2
-rw-r--r--src/wrapped/generated/wrappedxsltdefs.h2
-rw-r--r--src/wrapped/generated/wrappedxslttypes.h2
-rw-r--r--src/wrapped/generated/wrappedxsltundefs.h2
-rw-r--r--src/wrapped/generated/wrapper.c12
-rw-r--r--src/wrapped/generated/wrapper.h2
-rw-r--r--src/wrapped/wrappedlibdl.c46
-rw-r--r--src/wrapped/wrappedlibrt.c5
-rw-r--r--src/wrapped32/generated/converter32.c61
-rw-r--r--src/wrapped32/generated/converter32.h37
-rw-r--r--src/wrapped32/generated/functions_list.txt365
-rw-r--r--src/wrapped32/generated/wrappedcrashhandlerdefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedcrashhandlertypes32.h17
-rw-r--r--src/wrapped32/generated/wrappedcrashhandlerundefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedldlinuxdefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedldlinuxtypes32.h21
-rw-r--r--src/wrapped32/generated/wrappedldlinuxundefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibcdefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibctypes32.h49
-rw-r--r--src/wrapped32/generated/wrappedlibcundefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibdldefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibdltypes32.h36
-rw-r--r--src/wrapped32/generated/wrappedlibdlundefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibmdefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibmtypes32.h90
-rw-r--r--src/wrapped32/generated/wrappedlibmundefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibpthreaddefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibpthreadtypes32.h97
-rw-r--r--src/wrapped32/generated/wrappedlibpthreadundefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibrtdefs32.h8
-rw-r--r--src/wrapped32/generated/wrappedlibrttypes32.h17
-rw-r--r--src/wrapped32/generated/wrappedlibrtundefs32.h8
-rw-r--r--src/wrapped32/generated/wrapper32.c423
-rw-r--r--src/wrapped32/generated/wrapper32.h200
-rwxr-xr-xsrc/wrapped32/wrappedcrashhandler.c32
-rwxr-xr-xsrc/wrapped32/wrappedcrashhandler_private.h49
-rwxr-xr-xsrc/wrapped32/wrappedldlinux.c58
-rwxr-xr-xsrc/wrapped32/wrappedldlinux_private.h25
-rw-r--r--src/wrapped32/wrappedlib_init32.h325
-rwxr-xr-xsrc/wrapped32/wrappedlibc.c2867
-rwxr-xr-xsrc/wrapped32/wrappedlibc_private.h2178
-rwxr-xr-xsrc/wrapped32/wrappedlibdl.c165
-rwxr-xr-xsrc/wrapped32/wrappedlibdl_private.h15
-rwxr-xr-xsrc/wrapped32/wrappedlibm.c154
-rwxr-xr-xsrc/wrapped32/wrappedlibm_private.h446
-rwxr-xr-xsrc/wrapped32/wrappedlibpthread.c97
-rwxr-xr-xsrc/wrapped32/wrappedlibpthread_private.h187
-rwxr-xr-xsrc/wrapped32/wrappedlibrt.c80
-rwxr-xr-xsrc/wrapped32/wrappedlibrt_private.h50
809 files changed, 14784 insertions, 1011 deletions
diff --git a/src/box32.c b/src/box32.c
new file mode 100644
index 00000000..85a647a6
--- /dev/null
+++ b/src/box32.c
@@ -0,0 +1,283 @@
+#include <stdint.h>
+#include <stdlib.h>
+#include <pthread.h>
+
+#include "debug.h"
+#include "box32.h"
+#include "custommem.h"
+#include "converter32.h"
+
+#include "khash.h"
+
+KHASH_MAP_INIT_INT64(to, ulong_t);
+KHASH_MAP_INIT_INT(from, uintptr_t);
+
+static kh_from_t*   hash_from;
+static kh_to_t*     hash_to;
+#define CNT_INIT 0x80000001
+#define HASH_MASK 0x7fffffff
+static uint32_t     hash_cnt = CNT_INIT;
+static pthread_rwlock_t hash_lock = {0};
+static int          hash_running = 0;
+// locale
+static kh_from_t*   locale_from;
+static kh_to_t*     locale_to;
+
+
+void init_hash_helper() {
+    hash_from = kh_init(from);
+    hash_to = kh_init(to);
+    locale_from = kh_init(from);
+    locale_to = kh_init(to);
+    pthread_rwlock_init(&hash_lock, NULL);
+    hash_running = 1;
+}
+void fini_hash_helper() {
+    hash_running = 0;
+    kh_destroy(from, hash_from);
+    hash_from = NULL;
+    kh_destroy(to, hash_to);
+    hash_to = NULL;
+    hash_cnt = CNT_INIT;
+    kh_destroy(from, locale_from);
+    locale_from = NULL;
+    kh_destroy(to, locale_to);
+    locale_to = NULL;
+    pthread_rwlock_destroy(&hash_lock);
+}
+
+// Convert from hash key to original 64bits value
+uintptr_t from_hash(ulong_t l) {
+    // easy case first
+    if((l&HASH_MASK)==l) {
+        return (uintptr_t)l;
+    }
+    if(l==0xffffffff) {
+        return 0xffffffffffffffffll;
+    }
+    // get value from hash table second
+    uintptr_t ret = 0;
+    if(!hash_running) {
+        //printf_log(LOG_INFO, "Warning, from_hash used but hash not running\n");
+        return ret;
+    }
+    pthread_rwlock_rdlock(&hash_lock);
+    khint_t k = kh_get(from, hash_from, l);
+    if (k==kh_end(hash_from)) {
+        ret = (uintptr_t)l;
+    } else {
+        ret = kh_value(hash_from, k);
+    }
+    pthread_rwlock_unlock(&hash_lock);
+    return ret;
+}
+// same as from_hash
+uintptr_t from_hash_d(ulong_t l) {
+    return from_hash(l);
+}
+
+// Convert from 64bits to hash key, creating it if needed
+ulong_t to_hash(uintptr_t p) {
+    if((p&(uintptr_t)HASH_MASK)==p) {
+        return (ulong_t)p;
+    }
+    if(p==0xffffffffffffffffll) {
+        return 0xffffffff;
+    }
+    ulong_t ret = 0;
+    if(!hash_running) {
+        //printf_log(LOG_INFO, "Warning, to_hash used but hash not running\n");
+        return ret;
+    }
+    khint_t k;
+    pthread_rwlock_rdlock(&hash_lock);
+    k = kh_get(to, hash_to, p);
+    if(k==kh_end(hash_to)) {
+        // create a new key, but need write lock!
+        pthread_rwlock_unlock(&hash_lock);
+        pthread_rwlock_wrlock(&hash_lock);
+        ret = hash_cnt++;
+        if(hash_cnt==0xffffffff)
+            hash_cnt = CNT_INIT;
+        int r;
+        k = kh_put(to, hash_to, p, &r);
+        kh_value(hash_to, k) = ret;
+        k = kh_put(from, hash_from, ret, &r);
+        kh_value(hash_from, k) = p;
+    } else {
+        ret = kh_value(hash_to, k);
+    }
+    pthread_rwlock_unlock(&hash_lock);
+    return ret;
+}
+
+// Convert from 64bits to hash key and delete the entry from both hash table
+ulong_t to_hash_d(uintptr_t p) {
+    if((p&(uintptr_t)HASH_MASK)==p)
+        return (ulong_t)p;
+    if(p==0xffffffffffffffffll)
+        return 0xffffffff;
+    ulong_t ret = 0;
+    if(!hash_running) {
+        //printf_log(LOG_INFO, "Warning, to_hash_d used but hash not running\n");
+        return ret;
+    }
+    khint_t k;
+    pthread_rwlock_wrlock(&hash_lock);
+    k = kh_get(to, hash_to, p);
+    if(k==kh_end(hash_to)) {
+        /// should this be an assert?
+    } else {
+        ret = kh_value(hash_to, k);
+        // delete both entries
+        k = kh_get(to, hash_to, p);
+        kh_del(to, hash_to, k);
+        k = kh_get(from, hash_from, ret);
+        kh_del(from, hash_from, k);
+    }
+    pthread_rwlock_unlock(&hash_lock);
+    return ret;
+}
+
+typedef struct struct_locale_s {
+	void* p0[13];
+	void* p1;
+	void* p2;
+	void* p3;
+	void* p4[13];
+} struct_locale_t;
+void from_struct_locale(struct_locale_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+    for(int i=0; i<13; ++i) {
+	    dest->p0[i] = (void*)from_hash(*(ptr_t*)src); src += 4;
+    }
+	dest->p1 = from_ptrv(*(ptr_t*)src); src += 4;
+	dest->p2 = from_ptrv(*(ptr_t*)src); src += 4;
+	dest->p3 = from_ptrv(*(ptr_t*)src); src += 4;
+    for(int i=0; i<13; ++i) {
+	    dest->p4[i] = (void*)from_hash(*(ptr_t*)src); src += 4;
+    }
+}
+void to_struct_locale(ptr_t d, const struct_locale_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+    for(int i=0; i<13; ++i) {
+	    *(ptr_t*)dest = to_hashv(src->p0[i]); dest += 4;
+    }
+    // copy the 3 ctype int (1st is short int, but int will do)
+    *(unsigned short int*)(d+(13+3+13)*sizeof(ptr_t)) = *(unsigned short int*)src->p1;
+	*(ptr_t*)dest = d+(13+3+13)*sizeof(ptr_t); dest += 4;
+    *(int*)(d+(13+3+13+1)*sizeof(ptr_t)) = *(int*)src->p2;
+	*(ptr_t*)dest = d+(13+3+13+1)*sizeof(ptr_t); dest += 4;
+    *(int*)(d+(13+3+13+3)*sizeof(ptr_t)) = *(int*)src->p3;
+	*(ptr_t*)dest = d+(13+3+13+2)*sizeof(ptr_t); dest += 4;
+    for(int i=0; i<13; ++i) {
+	    *(ptr_t*)dest = to_hashv(src->p4[i]); dest += 4;
+    }
+}
+void free_struct_locale(const struct_locale_t *src) {
+    for(int i=0; i<13; ++i) {
+	    to_hash_d((uintptr_t)src->p0[i]);
+    }
+    for(int i=0; i<13; ++i) {
+	    to_hash_d((uintptr_t)src->p4[i]);
+    }
+}
+
+// Convert from locale key to original 64bits value
+void* from_locale(ptr_t l) {
+    // easy case first
+    if(l < 0x100) {
+        return from_ptrv(l);
+    }
+    if(l == 0xffffffff) {
+        return (void*)-1;
+    }
+    // get value from hash table second
+    void* ret = 0;
+    if(!hash_running) {
+        //printf_log(LOG_INFO, "Warning, from_locale used but hash not running\n");
+        return ret;
+    }
+    pthread_rwlock_rdlock(&hash_lock);
+    khint_t k = kh_get(from, locale_from, l);
+    if (k==kh_end(locale_from)) {
+        ret = from_ptrv(l);
+    } else {
+        ret = (void*)kh_value(locale_from, k);
+    }
+    pthread_rwlock_unlock(&hash_lock);
+    //from_struct_locale((struct_locale_t*)ret, l);
+    return ret;
+}
+// same as from_locale
+void* from_locale_d(ptr_t l) {
+    return from_locale(l);
+}
+
+// Convert from 64bits to locale key, creating it if needed
+ptr_t to_locale(void* p) {
+    if((uintptr_t)p < 0x100) {
+        return to_ptrv(p);
+    }
+    if(p == (void*)-1) {
+        return 0xffffffff;
+    }
+    ptr_t ret = 0;
+    if(!hash_running) {
+        //printf_log(LOG_INFO, "Warning, to_locale used but hash not running\n");
+        return ret;
+    }
+    khint_t k;
+    pthread_rwlock_rdlock(&hash_lock);
+    k = kh_get(to, locale_to, (uintptr_t)p);
+    int conv = 0;
+    if(k==kh_end(locale_to)) {
+        // create a new key, but need write lock!
+        pthread_rwlock_unlock(&hash_lock);
+        pthread_rwlock_wrlock(&hash_lock);
+        // a locale_t is 5 pointer!
+        void* m = calloc(13+3+13+3, sizeof(ptr_t)); // the 3 ctype value are also inside the locale struct
+        ret = to_ptrv(m);
+        // add to hash maps
+        int r;
+        k = kh_put(to, locale_to, (uintptr_t)p, &r);
+        kh_value(locale_to, k) = ret;
+        k = kh_put(from, locale_from, ret, &r);
+        kh_value(locale_from, k) = (uintptr_t)p;
+        conv = 1;
+    } else {
+        ret = kh_value(locale_to, k);
+    }
+    pthread_rwlock_unlock(&hash_lock);
+    if(conv)
+        to_struct_locale(ret, (struct_locale_t*)p);
+    return ret;
+}
+
+// Convert from 64bits to hash key and delete the entry from both hash table
+ptr_t to_locale_d(void* p) {
+    if((uintptr_t)p < 0x100)
+        return to_ptrv(p);
+    ptr_t ret = 0;
+    if(!hash_running)
+        return ret;
+    khint_t k;
+    pthread_rwlock_wrlock(&hash_lock);
+    k = kh_get(to, locale_to, (uintptr_t)p);
+    if(k==kh_end(locale_to)) {
+        /// should this be an assert?
+    } else {
+        ret = kh_value(locale_to, k);
+        // free the memory
+        free_struct_locale(p);
+        free(from_ptrv(ret));
+        // delete both entries
+        k = kh_get(to, locale_to, (uintptr_t)p);
+        kh_del(to, locale_to, k);
+        k = kh_get(from, locale_from, ret);
+        kh_del(from, locale_from, k);
+    }
+    pthread_rwlock_unlock(&hash_lock);
+    return ret;
+}
\ No newline at end of file
diff --git a/src/box64context.c b/src/box64context.c
index 5d5155fa..b52e41e3 100644
--- a/src/box64context.c
+++ b/src/box64context.c
@@ -23,6 +23,9 @@
 #include "gltools.h"
 #include "rbtree.h"
 #include "dynarec.h"
+#ifdef BOX32
+#include "box32.h"
+#endif
 
 EXPORTDYN
 void initAllHelpers(box64context_t* context)
@@ -31,6 +34,9 @@ void initAllHelpers(box64context_t* context)
     if(inited)
         return;
     my_context = context;
+    #ifdef BOX32
+    init_hash_helper();
+    #endif
     init_pthread_helper();
     init_bridge_helper();
     init_signal_helper(context);
@@ -47,6 +53,9 @@ void finiAllHelpers(box64context_t* context)
     fini_pthread_helper(context);
     fini_signal_helper();
     fini_bridge_helper();
+    #ifdef BOX32
+    fini_hash_helper();
+    #endif
     fini_custommem_helper(context);
     finied = 1;
 }
@@ -75,6 +84,7 @@ void free_tlsdatasize(void* p)
 }
 
 void x64Syscall(x64emu_t *emu);
+void x86Syscall(x64emu_t *emu);
 
 int unlockMutex()
 {
@@ -223,15 +233,21 @@ box64context_t *NewBox64Context(int argc)
     context->system = NewBridge();
     // Cannot use Bridge name as the map is not initialized yet
     // create vsyscall
-    context->vsyscall = AddBridge(context->system, vFEv, x64Syscall, 0, NULL);
+    context->vsyscall = AddBridge(context->system, vFEv, box64_is32bits?x86Syscall:x64Syscall, 0, NULL);
     // create the vsyscalls
-    context->vsyscalls[0] = AddVSyscall(context->system, 96);
-    context->vsyscalls[1] = AddVSyscall(context->system, 201);
-    context->vsyscalls[2] = AddVSyscall(context->system, 309);
-    // create the alternate to map at address
-    addAlternate((void*)0xffffffffff600000, (void*)context->vsyscalls[0]);
-    addAlternate((void*)0xffffffffff600400, (void*)context->vsyscalls[1]);
-    addAlternate((void*)0xffffffffff600800, (void*)context->vsyscalls[2]);
+    if(box64_is32bits) {
+        #ifdef BOX32
+        addAlternate((void*)0xffffe400, from_ptrv(context->vsyscall));
+        #endif
+    } else {
+        context->vsyscalls[0] = AddVSyscall(context->system, 96);
+        context->vsyscalls[1] = AddVSyscall(context->system, 201);
+        context->vsyscalls[2] = AddVSyscall(context->system, 309);
+        // create the alternate to map at address
+        addAlternate((void*)0xffffffffff600000, (void*)context->vsyscalls[0]);
+        addAlternate((void*)0xffffffffff600400, (void*)context->vsyscalls[1]);
+        addAlternate((void*)0xffffffffff600800, (void*)context->vsyscalls[2]);
+    }
     // create exit bridge
     context->exit_bridge = AddBridge(context->system, NULL, NULL, 0, NULL);
     // get handle to box64 itself
diff --git a/src/core.c b/src/core.c
index 03859f12..5d85d08c 100644
--- a/src/core.c
+++ b/src/core.c
@@ -189,6 +189,7 @@ char* box64_custom_gstreamer = NULL;
 uintptr_t fmod_smc_start = 0;
 uintptr_t fmod_smc_end = 0;
 uint32_t default_gs = 0x53;
+uint32_t default_fs = 0x53;
 int jit_gdb = 0;
 int box64_tcmalloc_minimal = 0;
 
@@ -1269,7 +1270,11 @@ int GatherEnv(char*** dest, char** env, char* prog)
         (*dest)[idx++] = box_strdup("BOX64_PATH=.:bin");
     }
     if(!ld_path) {
+        #ifdef BOX32
+        (*dest)[idx++] = box_strdup("BOX64_LD_LIBRARY_PATH=.:lib:lib64:x86_64:bin64:libs64:i386:libs:bin");
+        #else
         (*dest)[idx++] = box_strdup("BOX64_LD_LIBRARY_PATH=.:lib:lib64:x86_64:bin64:libs64");
+        #endif
     }
     // add "_=prog" at the end...
     if(prog) {
@@ -1382,24 +1387,7 @@ void LoadEnvVars(box64context_t *context)
             }
         } while(p);
     }
-    // check BOX64_LD_LIBRARY_PATH and load it
-    LoadEnvPath(&context->box64_ld_lib, ".:lib:lib64:x86_64:bin64:libs64", "BOX64_LD_LIBRARY_PATH");
-    #ifndef TERMUX
-    if(FileExist("/lib/x86_64-linux-gnu", 0))
-        AddPath("/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
-    if(FileExist("/usr/lib/x86_64-linux-gnu", 0))
-        AddPath("/usr/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
-    if(FileExist("/usr/x86_64-linux-gnu/lib", 0))
-        AddPath("/usr/x86_64-linux-gnu/lib", &context->box64_ld_lib, 1);
-    if(FileExist("/data/data/com.termux/files/usr/glibc/lib/x86_64-linux-gnu", 0))
-        AddPath("/data/data/com.termux/files/usr/glibc/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
-    #else
-    //TODO: Add Termux Library Path - Lily
-    if(FileExist("/data/data/com.termux/files/usr/lib/x86_64-linux-gnu", 0))
-        AddPath("/data/data/com.termux/files/usr/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
-    #endif
-    if(getenv("LD_LIBRARY_PATH"))
-        PrependList(&context->box64_ld_lib, getenv("LD_LIBRARY_PATH"), 1);   // in case some of the path are for x86 world
+
     if(getenv("BOX64_EMULATED_LIBS")) {
         char* p = getenv("BOX64_EMULATED_LIBS");
         ParseList(p, &context->box64_emulated_libs, 0);
@@ -1498,6 +1486,54 @@ void LoadEnvVars(box64context_t *context)
 }
 
 EXPORTDYN
+void LoadLDPath(box64context_t *context)
+{
+    // check BOX64_LD_LIBRARY_PATH and load it
+    #ifdef BOX32
+    if(box64_is32bits)
+        LoadEnvPath(&context->box64_ld_lib, ".:lib:i386:bin:libs", "BOX64_LD_LIBRARY_PATH");
+    else
+    #endif
+    LoadEnvPath(&context->box64_ld_lib, ".:lib:lib64:x86_64:bin64:libs64", "BOX64_LD_LIBRARY_PATH");
+    #ifndef TERMUX
+    if(box64_is32bits) {
+        #ifdef BOX32
+        if(FileExist("/lib/i386-linux-gnu", 0))
+            AddPath("/lib/i386-linux-gnu", &context->box64_ld_lib, 1);
+        if(FileExist("/usr/lib/i386-linux-gnu", 0))
+            AddPath("/usr/lib/i386-linux-gnu", &context->box64_ld_lib, 1);
+        if(FileExist("/usr/i386-linux-gnu/lib", 0))
+            AddPath("/usr/i386-linux-gnu/lib", &context->box64_ld_lib, 1);
+        if(FileExist("/data/data/com.termux/files/usr/glibc/lib/i386-linux-gnu", 0))
+            AddPath("/data/data/com.termux/files/usr/glibc/lib/i386-linux-gnu", &context->box64_ld_lib, 1);
+        #endif
+    } else {
+        if(FileExist("/lib/x86_64-linux-gnu", 0))
+            AddPath("/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
+        if(FileExist("/usr/lib/x86_64-linux-gnu", 0))
+            AddPath("/usr/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
+        if(FileExist("/usr/x86_64-linux-gnu/lib", 0))
+            AddPath("/usr/x86_64-linux-gnu/lib", &context->box64_ld_lib, 1);
+        if(FileExist("/data/data/com.termux/files/usr/glibc/lib/x86_64-linux-gnu", 0))
+            AddPath("/data/data/com.termux/files/usr/glibc/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
+    }
+    #else
+    //TODO: Add Termux Library Path - Lily
+    if(box64_is32bits) {
+        #ifdef BOX32
+        if(FileExist("/data/data/com.termux/files/usr/lib/i386-linux-gnu", 0))
+            AddPath("/data/data/com.termux/files/usr/lib/i386-linux-gnu", &context->box64_ld_lib, 1);
+        #endif
+    } else {
+        if(FileExist("/data/data/com.termux/files/usr/lib/x86_64-linux-gnu", 0))
+            AddPath("/data/data/com.termux/files/usr/lib/x86_64-linux-gnu", &context->box64_ld_lib, 1);
+    }
+    #endif
+    if(getenv("LD_LIBRARY_PATH"))
+        PrependList(&context->box64_ld_lib, getenv("LD_LIBRARY_PATH"), 1);   // in case some of the path are for x86 world
+}
+
+EXPORTDYN
 void setupTraceInit()
 {
 #ifdef HAVE_TRACE
@@ -1957,12 +1993,14 @@ int initialize(int argc, const char **argv, char** env, x64emu_t** emulator, elf
     // check if box86 is present
     {
         my_context->box86path = box_strdup(my_context->box64path);
+        #ifndef BOX32
         char* p = strrchr(my_context->box86path, '6');  // get the 6 of box64
         p[0] = '8'; p[1] = '6'; // change 64 to 86
         if(!FileExist(my_context->box86path, IS_FILE)) {
             box_free(my_context->box86path);
             my_context->box86path = NULL;
         }
+        #endif
     }
     const char* prgname = strrchr(prog, '/');
     if(!prgname)
@@ -2089,9 +2127,12 @@ int initialize(int argc, const char **argv, char** env, x64emu_t** emulator, elf
     box64_is32bits = FileIsX86ELF(my_context->fullpath);
     if(box64_is32bits) {
         printf_log(LOG_INFO, "BOX64: Using Box32 to load 32bits elf\n");
+        loadProtectionFromMap();
         reserveHighMem();
+        init_pthread_helper_32();
     }
     #endif
+    LoadLDPath(my_context);
     elfheader_t *elf_header = LoadAndCheckElfHeader(f, my_context->fullpath, 1);
     if(!elf_header) {
         int x86 = my_context->box86path?FileIsX86ELF(my_context->fullpath):0;
@@ -2252,10 +2293,15 @@ int initialize(int argc, const char **argv, char** env, x64emu_t** emulator, elf
     // stack setup is much more complicated then just that!
     SetupInitialStack(emu); // starting here, the argv[] don't need free anymore
     SetupX64Emu(emu, NULL);
-    SetRSI(emu, my_context->argc);
-    SetRDX(emu, (uint64_t)my_context->argv);
-    SetRCX(emu, (uint64_t)my_context->envv);
-    SetRBP(emu, 0); // Frame pointer so to "No more frame pointer"
+    if(box64_is32bits) {
+        SetEAX(emu, my_context->argc);
+        SetEBX(emu, my_context->argv32);
+    } else {
+        SetRSI(emu, my_context->argc);
+        SetRDX(emu, (uint64_t)my_context->argv);
+        SetRCX(emu, (uint64_t)my_context->envv);
+        SetRBP(emu, 0); // Frame pointer so to "No more frame pointer"
+    }
 
     // child fork to handle traces
     pthread_atfork(NULL, NULL, my_child_fork);
@@ -2339,10 +2385,19 @@ int emulate(x64emu_t* emu, elfheader_t* elf_header)
     // emulate!
     printf_log(LOG_DEBUG, "Start x64emu on Main\n");
     // Stack is ready, with stacked: NULL env NULL argv argc
-    SetRIP(emu, my_context->ep);
     ResetFlags(emu);
-    Push64(emu, my_context->exit_bridge);  // push to pop it just after
-    SetRDX(emu, Pop64(emu));    // RDX is exit function
+    #ifdef BOX32
+    if(box64_is32bits) {
+        SetEIP(emu, my_context->ep);
+        Push32(emu, my_context->exit_bridge);  // push to pop it just after
+        SetEDX(emu, Pop32(emu));    // RDX is exit function
+    } else
+    #endif
+    {
+        SetRIP(emu, my_context->ep);
+        Push64(emu, my_context->exit_bridge);  // push to pop it just after
+        SetRDX(emu, Pop64(emu));    // RDX is exit function
+    }
     Run(emu, 0);
     // Get EAX
     int ret = GetEAX(emu);
diff --git a/src/custommem.c b/src/custommem.c
index 06b48328..5862ed13 100644
--- a/src/custommem.c
+++ b/src/custommem.c
@@ -1521,21 +1521,68 @@ static void atfork_child_custommem(void)
     // (re)init mutex if it was lock before the fork
     init_mutexes();
 }
-
+#ifdef BOX32
+void reverveHigMem32(void)
+{
+    loadProtectionFromMap();
+    uintptr_t cur_size = 1024LL*1024*1024*1024; // start with 1TB check
+    void* cur;
+    while(cur_size>=65536) {
+        cur = internal_mmap(NULL, cur_size, 0, MAP_ANONYMOUS|MAP_PRIVATE|MAP_NORESERVE, -1, 0);
+        if((cur==MAP_FAILED) || (cur<(void*)0x100000000LL)) {
+            if(cur!=MAP_FAILED) {
+                //printf_log(LOG_DEBUG, " Failed to reserve high %p (%zx)\n", cur, cur_size);
+                internal_munmap(cur, cur_size);
+            } //else 
+              //  printf_log(LOG_DEBUG, " Failed to reserve %zx sized block\n", cur_size);
+            cur_size>>=1;
+        } else {
+            rb_set(mapallmem, (uintptr_t)cur, (uintptr_t)cur+cur_size, 1);
+            //printf_log(LOG_DEBUG, "Reserved high %p (%zx)\n", cur, cur_size);
+        }
+    }
+    printf_log(LOG_INFO, "Memory higher than 32bits reserved\n");
+    if(box64_log>=LOG_DEBUG) {
+        uintptr_t start=0x100000000LL;
+        int prot;
+        uintptr_t bend;
+        while (bend!=0xffffffffffffffffLL) {
+            if(rb_get_end(mapallmem, start, &prot, &bend)) {
+                    printf_log(LOG_DEBUG, " Reserved: %p - %p (%d)\n", (void*)start, (void*)bend, prot);
+            }
+            start = bend;
+        }
+    }
+}
+#endif
 void my_reserveHighMem()
 {
     static int reserved = 0;
     if(reserved || (!have48bits && !box64_is32bits))
         return;
     reserved = 1;
+    #ifdef BOX32
+    if(box64_is32bits) {
+        reverveHigMem32();
+        return;
+    }
+    #endif
     uintptr_t cur = box64_is32bits?(1ULL<<32):(1ULL<<47);
     uintptr_t bend = 0;
     uint32_t prot;
     while (bend!=0xffffffffffffffffLL) {
         if(!rb_get_end(mapallmem, cur, &prot, &bend)) {
-            void* ret = internal_mmap((void*)cur, bend-cur, 0, MAP_ANONYMOUS|MAP_FIXED|MAP_PRIVATE|MAP_NORESERVE, -1, 0);
-            printf_log(LOG_DEBUG, "Reserve %p-%p => %p (%s)\n", (void*)cur, bend, ret, strerror(errno));
-            printf_log(LOG_DEBUG, "mmap %p-%p\n", cur, bend);
+            // create a border at 39bits...
+            if(cur<(1ULL<<39) && bend>(1ULL<<39))
+                bend = 1ULL<<39;
+            // create a border at 47bits
+            if(cur<(1ULL<<47) && bend>(1ULL<<47))
+                bend = 1ULL<<47;
+            // create a border at 48bits
+            if(cur<(1ULL<<48) && bend>(1ULL<<48))
+                bend = 1ULL<<48;
+            void* ret = internal_mmap((void*)cur, bend-cur, 0, MAP_ANONYMOUS|MAP_PRIVATE|MAP_NORESERVE, -1, 0);
+            printf_log(LOG_DEBUG, "Reserve %p-%p => %p (%s)\n", (void*)cur, bend, ret, (ret==MAP_FAILED)?strerror(errno):"ok");
             if(ret!=(void*)-1) {
                 rb_set(mapallmem, cur, bend, 1);
             }
diff --git a/src/dynarec/arm64/arm64_emitter.h b/src/dynarec/arm64/arm64_emitter.h
index 0070af36..781e7980 100644
--- a/src/dynarec/arm64/arm64_emitter.h
+++ b/src/dynarec/arm64/arm64_emitter.h
@@ -283,13 +283,19 @@ int convert_bitmask(uint64_t bitmask);
 #define LDRx_REG(Rt, Rn, Rm)            EMIT(LDR_REG_gen(0b11, Rm, 0b011, 0, Rn, Rt))
 #define LDRx_REG_LSL3(Rt, Rn, Rm)       EMIT(LDR_REG_gen(0b11, Rm, 0b011, 1, Rn, Rt))
 #define LDRx_REG_UXTW3(Rt, Rn, Rm)      EMIT(LDR_REG_gen(0b11, Rm, 0b010, 1, Rn, Rt))
+#define LDRx_REG_SXTW(Rt, Rn, Rm)       EMIT(LDR_REG_gen(0b11, Rm, 0b110, 0, Rn, Rt))
 #define LDRw_REG(Rt, Rn, Rm)            EMIT(LDR_REG_gen(0b10, Rm, 0b011, 0, Rn, Rt))
 #define LDRw_REG_LSL2(Rt, Rn, Rm)       EMIT(LDR_REG_gen(0b10, Rm, 0b011, 1, Rn, Rt))
+#define LDRw_REG_SXTW(Rt, Rn, Rm)       EMIT(LDR_REG_gen(0b10, Rm, 0b110, 0, Rn, Rt))
 #define LDRxw_REG(Rt, Rn, Rm)           EMIT(LDR_REG_gen(0b10+rex.w, Rm, 0b011, 0, Rn, Rt))
 #define LDRz_REG(Rt, Rn, Rm)            EMIT(LDR_REG_gen(rex.is32bits?0b10:0b11, Rm, 0b011, 0, Rn, Rt))
+#define LDRxw_REG_SXTW(Rt, Rn, Rm)      EMIT(LDR_REG_gen(0b10+rex.w, Rm, 0b110, 0, Rn, Rt))
+#define LDRz_REG_SXTW(Rt, Rn, Rm)       EMIT(LDR_REG_gen(rex.is32bits?0b10:0b11, Rm, 0b110, 0, Rn, Rt))
 #define LDRB_REG(Rt, Rn, Rm)            EMIT(LDR_REG_gen(0b00, Rm, 0b011, 0, Rn, Rt))
 #define LDRB_REG_UXTW(Rt, Rn, Rm)       EMIT(LDR_REG_gen(0b00, Rm, 0b010, 0, Rn, Rt))
+#define LDRB_REG_SXTW(Rt, Rn, Rm)       EMIT(LDR_REG_gen(0b00, Rm, 0b110, 0, Rn, Rt))
 #define LDRH_REG(Rt, Rn, Rm)            EMIT(LDR_REG_gen(0b01, Rm, 0b011, 0, Rn, Rt))
+#define LDRH_REG_SXTW(Rt, Rn, Rm)       EMIT(LDR_REG_gen(0b01, Rm, 0b110, 0, Rn, Rt))
 
 #define LDRS_U12_gen(size, op1, opc, imm12, Rn, Rt)    ((size)<<30 | 0b111<<27 | (op1)<<24 | (opc)<<22 | (imm12)<<10 | (Rn)<<5 | (Rt))
 #define LDRSHx_U12(Rt, Rn, imm12)           EMIT(LDRS_U12_gen(0b01, 0b01, 0b10, ((uint32_t)(imm12>>1))&0xfff, Rn, Rt))
@@ -301,6 +307,7 @@ int convert_bitmask(uint64_t bitmask);
 
 #define LDRS_REG_gen(size, Rm, option, S, Rn, Rt)    ((size)<<30 | 0b111<<27 | 0b10<<22 | 1<<21 | (Rm)<<16 | (option)<<13 | (S)<<12 | (0b10)<<10 | (Rn)<<5 | (Rt))
 #define LDRSW_REG(Rt, Rn, Rm)           EMIT(LDRS_REG_gen(0b10, Rm, 0b011, 0, Rn, Rt))
+#define LDRSW_REG_SXTW(Rt, Rn, Rm)      EMIT(LDRS_REG_gen(0b10, Rm, 0b110, 0, Rn, Rt))
 
 #define LDR_PC_gen(opc, imm19, Rt)      ((opc)<<30 | 0b011<<27 | (imm19)<<5 | (Rt))
 #define LDRx_literal(Rt, imm19)         EMIT(LDR_PC_gen(0b01, ((imm19)>>2)&0x7FFFF, Rt))
@@ -371,12 +378,18 @@ int convert_bitmask(uint64_t bitmask);
 #define STRx_REG(Rt, Rn, Rm)            EMIT(STR_REG_gen(0b11, Rm, 0b011, 0, Rn, Rt))
 #define STRx_REG_LSL3(Rt, Rn, Rm)       EMIT(STR_REG_gen(0b11, Rm, 0b011, 1, Rn, Rt))
 #define STRx_REG_UXTW(Rt, Rn, Rm)       EMIT(STR_REG_gen(0b11, Rm, 0b010, 0, Rn, Rt))
+#define STRx_REG_SXTW(Rt, Rn, Rm)       EMIT(STR_REG_gen(0b11, Rm, 0b110, 0, Rn, Rt))
 #define STRw_REG(Rt, Rn, Rm)            EMIT(STR_REG_gen(0b10, Rm, 0b011, 0, Rn, Rt))
 #define STRw_REG_LSL2(Rt, Rn, Rm)       EMIT(STR_REG_gen(0b10, Rm, 0b011, 1, Rn, Rt))
+#define STRw_REG_SXTW(Rt, Rn, Rm)       EMIT(STR_REG_gen(0b10, Rm, 0b110, 0, Rn, Rt))
 #define STRB_REG(Rt, Rn, Rm)            EMIT(STR_REG_gen(0b00, Rm, 0b011, 0, Rn, Rt))
+#define STRB_REG_SXTW(Rt, Rn, Rm)       EMIT(STR_REG_gen(0b00, Rm, 0b110, 0, Rn, Rt))
 #define STRH_REG(Rt, Rn, Rm)            EMIT(STR_REG_gen(0b01, Rm, 0b011, 0, Rn, Rt))
+#define STRH_REG_SXTW(Rt, Rn, Rm)       EMIT(STR_REG_gen(0b01, Rm, 0b110, 0, Rn, Rt))
 #define STRxw_REG(Rt, Rn, Rm)           EMIT(STR_REG_gen(rex.w?0b11:0b10, Rm, 0b011, 0, Rn, Rt))
+#define STRxw_REG_SXTW(Rt, Rn, Rm)      EMIT(STR_REG_gen(rex.w?0b11:0b10, Rm, 0b110, 0, Rn, Rt))
 #define STRz_REG(Rt, Rn, Rm)            EMIT(STR_REG_gen(rex.is32bits?0b10:0b11, Rm, 0b011, 0, Rn, Rt))
+#define STRz_REG_SXTW(Rt, Rn, Rm)       EMIT(STR_REG_gen(rex.is32bits?0b10:0b11, Rm, 0b110, 0, Rn, Rt))
 
 // LOAD/STORE PAIR
 #define MEMPAIR_gen(size, L, op2, imm7, Rt2, Rn, Rt)    ((size)<<31 | 0b101<<27 | (op2)<<23 | (L)<<22 | (imm7)<<15 | (Rt2)<<10 | (Rn)<<5 | (Rt))
@@ -896,18 +909,24 @@ int convert_bitmask(uint64_t bitmask);
 #define VMEM_REG_gen(size, opc, Rm, option, S, Rn, Rt)  ((size)<<30 | 0b111<<27 | 1<<26 | (opc)<<22 | 1<<21 | (Rm)<<16 | (option)<<13 | (S)<<12 | 0b10<<10 | (Rn)<<5 | (Rt))
 
 #define VLDR32_REG(Dt, Rn, Rm)              EMIT(VMEM_REG_gen(0b10, 0b01, Rm, 0b011, 0, Rn, Dt))
+#define VLDR32_REG_SXTW(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b10, 0b01, Rm, 0b110, 0, Rn, Dt))
 #define VLDR32_REG_LSL2(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b10, 0b01, Rm, 0b011, 1, Rn, Dt))
 #define VLDR64_REG(Dt, Rn, Rm)              EMIT(VMEM_REG_gen(0b11, 0b01, Rm, 0b011, 0, Rn, Dt))
+#define VLDR64_REG_SXTW(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b11, 0b01, Rm, 0b110, 0, Rn, Dt))
 #define VLDR64_REG_LSL3(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b11, 0b01, Rm, 0b011, 1, Rn, Dt))
 #define VLDR128_REG(Qt, Rn, Rm)             EMIT(VMEM_REG_gen(0b00, 0b11, Rm, 0b011, 0, Rn, Qt))
 #define VLDR128_REG_LSL4(Qt, Rn, Rm)        EMIT(VMEM_REG_gen(0b00, 0b11, Rm, 0b011, 1, Rn, Qt))
+#define VLDR128_REG_SXTW(Qt, Rn, Rm)        EMIT(VMEM_REG_gen(0b00, 0b11, Rm, 0b110, 0, Rn, Qt))
 
 #define VSTR32_REG(Dt, Rn, Rm)              EMIT(VMEM_REG_gen(0b10, 0b00, Rm, 0b011, 0, Rn, Dt))
 #define VSTR32_REG_LSL2(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b10, 0b00, Rm, 0b011, 1, Rn, Dt))
+#define VSTR32_REG_SXTW(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b10, 0b00, Rm, 0b110, 0, Rn, Dt))
 #define VSTR64_REG(Dt, Rn, Rm)              EMIT(VMEM_REG_gen(0b11, 0b00, Rm, 0b011, 0, Rn, Dt))
 #define VSTR64_REG_LSL3(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b11, 0b00, Rm, 0b011, 1, Rn, Dt))
+#define VSTR64_REG_SXTW(Dt, Rn, Rm)         EMIT(VMEM_REG_gen(0b11, 0b00, Rm, 0b110, 0, Rn, Dt))
 #define VSTR128_REG(Qt, Rn, Rm)             EMIT(VMEM_REG_gen(0b00, 0b10, Rm, 0b011, 0, Rn, Qt))
 #define VSTR128_REG_LSL4(Qt, Rn, Rm)        EMIT(VMEM_REG_gen(0b00, 0b10, Rm, 0b011, 1, Rn, Qt))
+#define VSTR128_REG_SXTW(Qt, Rn, Rm)        EMIT(VMEM_REG_gen(0b00, 0b10, Rm, 0b110, 0, Rn, Qt))
 
 #define VLDR_PC_gen(opc, imm19, Rt)         ((opc)<<30 | 0b011<<27 | 1<<26 | (imm19)<<5 | (Rt))
 #define VLDR32_literal(Vt, imm19)           EMIT(VLDR_PC_gen(0b00, ((imm19)>>2)&0x7FFFF, Vt))
diff --git a/src/dynarec/arm64/dynarec_arm64_64.c b/src/dynarec/arm64/dynarec_arm64_64.c
index 85b89e3a..6ff6d594 100644
--- a/src/dynarec/arm64/dynarec_arm64_64.c
+++ b/src/dynarec/arm64/dynarec_arm64_64.c
@@ -108,7 +108,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                                 v0 = sse_get_reg_empty(dyn, ninst, x1, gd);
                                 SMREAD();
                                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
-                                ADDx_REG(x4, x4, ed);
+                                ADDz_REG(x4, x4, ed);
                                 VLD64(v0, x4, fixedaddress); // upper part reseted
                             }
                             break;
@@ -126,7 +126,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                                 v0 = sse_get_reg_empty(dyn, ninst, x1, gd);
                                 SMREAD();
                                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
-                                ADDx_REG(x4, x4, ed);
+                                ADDz_REG(x4, x4, ed);
                                 VLD32(v0, x4, fixedaddress);
                             }
                             break;
@@ -148,7 +148,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             } else {
                                 grab_segdata(dyn, addr, ninst, x4, seg);
                                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<4, 15, rex, NULL, 0, 0);
-                                ADDx_REG(x4, x4, ed);
+                                ADDz_REG(x4, x4, ed);
                                 VST128(v0, x4, fixedaddress);
                                 SMWRITE2();
                             }
@@ -165,7 +165,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             } else {
                                 grab_segdata(dyn, addr, ninst, x4, seg);
                                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<3, 7, rex, NULL, 0, 0);
-                                ADDx_REG(x4, x4, ed);
+                                ADDz_REG(x4, x4, ed);
                                 VST64(v0, x4, fixedaddress);
                                 SMWRITE2();
                             }
@@ -182,7 +182,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             } else {
                                 grab_segdata(dyn, addr, ninst, x4, seg);
                                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<2, 3, rex, NULL, 0, 0);
-                                ADDx_REG(x4, x4, ed);
+                                ADDz_REG(x4, x4, ed);
                                 VST32(v0, x4, fixedaddress);
                                 SMWRITE2();
                             }
@@ -206,7 +206,7 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                                 grab_segdata(dyn, addr, ninst, x4, seg);
                                 SMREAD();
                                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0xfff<<4, 15, rex, NULL, 0, 0);
-                                ADDx_REG(x4, x4, ed);
+                                ADDz_REG(x4, x4, ed);
                                 VLD128(v0, ed, fixedaddress);
                             }
                             break;
@@ -275,7 +275,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             } else {
                                 SMREAD();
                                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                                LDRB_REG(gd, ed, x4);
+                                if(rex.is32bits)
+                                    LDRB_REG_SXTW(gd, x4, ed);
+                                else
+                                    LDRB_REG(gd, ed, x4);
                             }
                             break;
                         default:
@@ -397,7 +400,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         grab_segdata(dyn, addr, ninst, x4, seg);
                         SMREAD();
                         addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                        LDRSW_REG(gd, ed, x4);
+                        if(rex.is32bits)
+                            LDRSW_REG_SXTW(gd, x4, ed);
+                        else
+                            LDRSW_REG(gd, ed, x4);
                     }
                 } else {
                     if(MODREG) {   // reg <= reg
@@ -406,7 +412,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                         grab_segdata(dyn, addr, ninst, x4, seg);
                         SMREAD();
                         addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                        LDRw_REG(gd, ed, x4);
+                        if(rex.is32bits)
+                            LDRw_REG_SXTW(gd, x4, ed);
+                        else
+                            LDRw_REG(gd, ed, x4);
                     }
                 }
             }
@@ -639,7 +648,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 grab_segdata(dyn, addr, ninst, x4, seg);
                 SMREAD();
                 addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                LDRB_REG(x4, wback, x4);
+                if(rex.is32bits)
+                    LDRB_REG_SXTW(x4, x4, wback);
+                else
+                    LDRB_REG(x4, wback, x4);
                 ed = x4;
             }
             BFIx(gb1, ed, gb2, 8);
@@ -653,7 +665,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 MOVxw_REG(xRAX+(nextop&7)+(rex.b<<3), gd);
             } else {                    // mem <= reg
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                STRxw_REG(gd, ed, x4);
+                if(rex.is32bits)
+                    STRxw_REG_SXTW(gd, x4, ed);
+                else
+                    STRxw_REG(gd, ed, x4);
                 SMWRITE2();
             }
             break;
@@ -668,7 +683,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             } else {                    // mem <= reg
                 SMREAD();
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                LDRxw_REG(gd, ed, x4);
+                if(rex.is32bits)
+                    LDRxw_REG_SXTW(gd, x4, ed);
+                else
+                    LDRxw_REG(gd, ed, x4);
             }
             break;
 
@@ -698,7 +716,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             } else {
                 SMREAD();
                 addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                LDRH_REG(x1, wback, x4);
+                if(rex.is32bits)
+                    LDRH_REG_SXTW(x1, x4, wback);
+                else
+                    LDRH_REG(x1, wback, x4);
                 ed = x1;
             }
             STRH_U12(ed, xEmu, offsetof(x64emu_t, segs[u8]));
@@ -714,11 +735,17 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 POP1z(x2); // so this can handle POP [ESP] and maybe some variant too
                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, &unscaled, 0, 0, rex, NULL, 0, 0);
                 if(ed==xRSP) {
-                    STRz_REG(x2, ed, x4);
+                    if(rex.is32bits)
+                        STRz_REG_SXTW(x2, x4, ed);
+                    else
+                        STRz_REG(x2, ed, x4);
                 } else {
                     // complicated to just allow a segfault that can be recovered correctly
                     SUBz_U12(xRSP, xRSP, rex.is32bits?4:8);
-                    STRz_REG(x2, ed, x4);
+                    if(rex.is32bits)
+                        STRz_REG_SXTW(x2, x4, ed);
+                    else
+                        STRz_REG(x2, ed, x4);
                     ADDz_U12(xRSP, xRSP, rex.is32bits?4:8);
                 }
             }
@@ -735,9 +762,25 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             else
                 u64 = F64;
             MOV64z(x1, u64);
-            LDRxw_REG(xRAX, x1, x4);
+            if(rex.is32bits)
+                LDRxw_REG_SXTW(xRAX, x4, x1);
+            else
+                LDRxw_REG(xRAX, x4, x1);
+            break;
+        case 0xA2:
+            INST_NAME("MOV FS:Od,AL");
+            grab_segdata(dyn, addr, ninst, x4, seg);
+            if(rex.is32bits)
+                u64 = F32;
+            else
+                u64 = F64;
+            MOV64z(x1, u64);
+            if(rex.is32bits)
+                STRB_REG_SXTW(xRAX, x4, x1);
+            else
+                STRB_REG(xRAX, x4, x1);
+            SMWRITE2();
             break;
-
         case 0xA3:
             INST_NAME("MOV FS:Od,EAX");
             grab_segdata(dyn, addr, ninst, x4, seg);
@@ -746,7 +789,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             else
                 u64 = F64;
             MOV64z(x1, u64);
-            STRxw_REG(xRAX, x1, x4);
+            if(rex.is32bits)
+                STRxw_REG_SXTW(xRAX, x4, x1);
+            else
+                STRxw_REG(xRAX, x4, x1);
             SMWRITE2();
             break;
 
@@ -770,7 +816,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 1);
                 u8 = F8;
                 MOV32w(x3, u8);
-                STRB_REG(x3, ed, x4);
+                if(rex.is32bits)
+                    STRB_REG_SXTW(x3, x4, ed);
+                else
+                    STRB_REG(x3, ed, x4);
                 SMWRITE2();
             }
             break;
@@ -786,7 +835,10 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                 addr = geted(dyn, addr, ninst, nextop, &ed, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 4);
                 i64 = F32S;
                 MOV64xw(x3, i64);
-                STRxw_REG(x3, ed, x4);
+                if(rex.is32bits)
+                    STRxw_REG_SXTW(x3, x4, ed);
+                else
+                    STRxw_REG(x3, ed, x4);
                 SMWRITE2();
             }
             break;
diff --git a/src/dynarec/arm64/dynarec_arm64_6664.c b/src/dynarec/arm64/dynarec_arm64_6664.c
index 4b33fab6..30a28012 100644
--- a/src/dynarec/arm64/dynarec_arm64_6664.c
+++ b/src/dynarec/arm64/dynarec_arm64_6664.c
@@ -62,7 +62,10 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                         SMREAD();
                         addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
                         v1 = fpu_get_scratch(dyn, ninst);
-                        VLDR64_REG(v1, ed, x4);
+                        if(rex.is32bits)
+                            VLDR64_REG_SXTW(v1, x4, ed);
+                        else
+                            VLDR64_REG(v1, ed, x4);
                     }
                     FCMPD(v0, v1);
                     FCOMI(x1, x2);
@@ -80,7 +83,10 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                         grab_segdata(dyn, addr, ninst, x4, seg);
                         addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
                         SMREAD();
-                        VLDR128_REG(v0, ed, x4);
+                        if(rex.is32bits)
+                            VLDR128_REG_SXTW(v0, x4, ed);
+                        else
+                            VLDR128_REG(v0, ed, x4);
                     }
                     break;
 
@@ -94,7 +100,10 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     } else {
                         grab_segdata(dyn, addr, ninst, x4, seg);
                         addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                        VSTR128_REG(v0, ed, x4);
+                        if(rex.is32bits)
+                            VSTR128_REG_SXTW(v0, x4, ed);
+                        else
+                            VSTR128_REG(v0, ed, x4);
                         SMWRITE2();
                     }
                     break;
@@ -110,7 +119,10 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                     } else {
                         grab_segdata(dyn, addr, ninst, x4, seg);
                         addr = geted(dyn, addr, ninst, nextop, &ed, x1, &fixedaddress, NULL, 0, 0, rex, NULL, 0, 0);
-                        VSTR64_REG(v0, ed, x4);
+                        if(rex.is32bits)
+                            VSTR64_REG_SXTW(v0, x4, ed);
+                        else
+                            VSTR64_REG(v0, ed, x4);
                         SMWRITE();
                     }
                     break;
@@ -229,7 +241,10 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 if(rex.w) {
                     STRx_REG(gd, ed, x4);
                 } else {
-                    STRH_REG(gd, ed, x4);
+                    if(rex.is32bits)
+                        STRH_REG_SXTW(gd, x4, ed);
+                    else
+                        STRH_REG(gd, ed, x4);
                 }
                 SMWRITE();
             }
@@ -255,7 +270,10 @@ uintptr_t dynarec64_6664(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int n
                 if(rex.w) {
                     LDRx_REG(gd, ed, x4);
                 } else {
-                    LDRH_REG(x1, ed, x4);
+                    if(rex.is32bits)
+                        LDRH_REG_SXTW(x1, x4, ed);
+                    else
+                        LDRH_REG(x1, ed, x4);
                     BFIx(gd, x1, 0, 16);
                 }
             }
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.h b/src/dynarec/arm64/dynarec_arm64_helper.h
index 7810293b..06e7705b 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.h
+++ b/src/dynarec/arm64/dynarec_arm64_helper.h
@@ -213,10 +213,13 @@
                 } else {                                \
                     SMREAD();                           \
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, D); \
-                    LDRxw_REG(x1, wback, O);            \
+                    if(rex.is32bits)                    \
+                        LDRxw_REG_SXTW(x1, O, wback);   \
+                    else                                \
+                        LDRxw_REG(x1, wback, O);        \
                     ed = x1;                            \
                 }
-#define WBACKO(O)   if(wback) {STRxw_REG(ed, wback, O); SMWRITE2();}
+#define WBACKO(O)   if(wback) {if(rex.is32bits) STRxw_REG_SXTW(ed, O, wback); else STRxw_REG(ed, wback, O); SMWRITE2();}
 //GETEDOx can use r1 for ed, and r2 for wback. wback is 0 if ed is xEAX..xEDI
 #define GETEDOx(O, D)  if(MODREG) {                     \
                     ed = xRAX+(nextop&7)+(rex.b<<3);    \
@@ -224,7 +227,10 @@
                 } else {                                \
                     SMREAD();                           \
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, D); \
-                    LDRx_REG(x1, wback, O);             \
+                    if(rex.is32bits)                    \
+                        LDRx_REG_SXTW(x1, O, wback);    \
+                    else                                \
+                        LDRx_REG(x1, wback, O);         \
                     ed = x1;                            \
                 }
 //GETEDOz can use r1 for ed, and r2 for wback. wback is 0 if ed is xEAX..xEDI
@@ -234,7 +240,10 @@
                 } else {                                \
                     SMREAD();                           \
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, D); \
-                    LDRz_REG(x1, wback, O);             \
+                    if(rex.is32bits)                    \
+                        LDRz_REG_SXTW(x1, O, wback);    \
+                    else                                \
+                        LDRz_REG(x1, wback, O);         \
                     ed = x1;                            \
                 }
 #define GETSEDOw(O, D)  if((nextop&0xC0)==0xC0) {       \
@@ -245,7 +254,10 @@
                 } else {                                \
                     SMREAD();                           \
                     addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, NULL, 0, 0, rex, NULL, 0, D); \
-                    LDRSW_REG(x1, wback, O);            \
+                    if(rex.is32bits)                    \
+                        LDRSW_REG_SXTW(x1, O, wback);   \
+                    else                                \
+                        LDRSW_REG(x1, wback, O);        \
                     wb = ed = x1;                       \
                 }
 //FAKEELike GETED, but doesn't get anything
@@ -304,7 +316,7 @@
                 } else {                        \
                     SMREAD();                   \
                     addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff<<1, (1<<1)-1, rex, NULL, 0, D); \
-                    ADDx_REG(x3, wback, i);     \
+                    ADDz_REG(x3, wback, i);     \
                     if(wback!=x3) wback = x3;   \
                     LDH(i, wback, fixedaddress);\
                     wb1 = 1;                    \
@@ -365,7 +377,7 @@
                 } else {                        \
                     SMREAD();                   \
                     addr = geted(dyn, addr, ninst, nextop, &wback, x3, &fixedaddress, &unscaled, 0xfff, 0, rex, NULL, 0, D); \
-                    ADDx_REG(x3, wback, i);     \
+                    ADDz_REG(x3, wback, i);     \
                     if(wback!=x3) wback = x3;   \
                     LDB(i, wback, fixedaddress);\
                     wb1 = 1;                    \
diff --git a/src/dynarec/dynarec.c b/src/dynarec/dynarec.c
index 1a389b94..915044eb 100644
--- a/src/dynarec/dynarec.c
+++ b/src/dynarec/dynarec.c
@@ -104,10 +104,15 @@ void DynaCall(x64emu_t* emu, uintptr_t addr)
     multiuint_t old_res_sav= emu->res_sav;
     deferred_flags_t old_df_sav= emu->df_sav;
     // uc_link
-    x64_ucontext_t* old_uc_link = emu->uc_link;
+    void* old_uc_link = emu->uc_link;
     emu->uc_link = NULL;
 
-    PushExit(emu);
+    #ifdef BOX32
+    if(box64_is32bits)
+        PushExit_32(emu);
+    else
+    #endif
+        PushExit(emu);
     R_RIP = addr;
     emu->df = d_none;
     DynaRun(emu);
@@ -137,6 +142,9 @@ void DynaCall(x64emu_t* emu, uintptr_t addr)
 }
 
 int my_setcontext(x64emu_t* emu, void* ucp);
+#ifdef BOX32
+int my32_setcontext(x64emu_t* emu, void* ucp);
+#endif
 void DynaRun(x64emu_t* emu)
 {
     // prepare setjump for signal handling
@@ -206,7 +214,12 @@ void DynaRun(x64emu_t* emu)
             }
             if(emu->quit && emu->uc_link) {
                 emu->quit = 0;
-                my_setcontext(emu, emu->uc_link);
+                #ifdef BOX32
+                if(box64_is32bits)
+                    my32_setcontext(emu, emu->uc_link);
+                else
+                #endif
+                    my_setcontext(emu, emu->uc_link);
             }
         }
 #endif
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c
index 9c212fea..24528fa1 100644
--- a/src/dynarec/dynarec_native_pass.c
+++ b/src/dynarec/dynarec_native_pass.c
@@ -111,7 +111,7 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
         #endif
         dyn->f.dfnone_here = 0;
         NEW_INST;
-        MESSAGE(LOG_DUMP, "New Instruction x64:%p, native:%p\n", (void*)addr, (void*)dyn->block);
+        MESSAGE(LOG_DUMP, "New Instruction %s:%p, native:%p\n", is32bits?"x86":"x64",(void*)addr, (void*)dyn->block);
         if(!ninst) {
             GOTEST(x1, x2);
         }
diff --git a/src/elfs/elfhash.c b/src/elfs/elfhash.c
index 966a18b7..ebb81285 100644
--- a/src/elfs/elfhash.c
+++ b/src/elfs/elfhash.c
@@ -78,7 +78,12 @@ const char* GetParentSymbolVersion(elfheader_t* h, int version)
     return box64_is32bits?GetParentSymbolVersion32(h, version):GetParentSymbolVersion64(h, version);
 }
 
-uint16_t GetParentSymbolVersionFlag32(elfheader_t* h, int index) { /* TODO */ return (uint16_t)-1; }
+uint16_t GetParentSymbolVersionFlag32(elfheader_t* h, int index)
+#ifndef BOX32
+ { return (uint16_t)-1; }
+#else
+ ;
+#endif
 uint16_t GetParentSymbolVersionFlag64(elfheader_t* h, int index)
 {
     if(!h->VerDef._64 || (index<1))
@@ -97,7 +102,12 @@ uint16_t GetParentSymbolVersionFlag(elfheader_t* h, int index)
     return box64_is32bits?GetParentSymbolVersionFlag32(h, index):GetParentSymbolVersionFlag64(h, index);
 }
 
-uint16_t GetSymbolVersionFlag32(elfheader_t* h, int version) { /* TODO */ return (uint16_t)-1; }
+uint16_t GetSymbolVersionFlag32(elfheader_t* h, int version)
+#ifndef BOX32
+{ return (uint16_t)-1; }
+#else
+ ;
+#endif
 uint16_t GetSymbolVersionFlag64(elfheader_t* h, int version)
 {
     if(version<2)
diff --git a/src/elfs/elfhash32.c b/src/elfs/elfhash32.c
index 00423b0a..3773e59a 100644
--- a/src/elfs/elfhash32.c
+++ b/src/elfs/elfhash32.c
@@ -41,6 +41,40 @@ static int SymbolMatch(elfheader_t* h, uint32_t i, int ver, const char* vername,
     return strcmp(vername, symvername)?0:1;
 }
 
+uint16_t GetParentSymbolVersionFlag32(elfheader_t* h, int index)
+{
+    if(!h->VerDef._32 || (index<1))
+        return (uint16_t)-1;
+    Elf32_Verdef *def = (Elf32_Verdef*)((uintptr_t)h->VerDef._32 + h->delta);
+    while(def) {
+        if(def->vd_ndx==index) {
+            return def->vd_flags;
+        }
+        def = def->vd_next?((Elf32_Verdef*)((uintptr_t)def + def->vd_next)):NULL;
+    }
+    return (uint16_t)-1;
+}
+
+uint16_t GetSymbolVersionFlag32(elfheader_t* h, int version)
+{
+    if(version<2)
+        return (uint16_t)-1;
+    if(h->VerNeed._32) {
+        Elf32_Verneed *ver = (Elf32_Verneed*)((uintptr_t)h->VerNeed._32 + h->delta);
+        while(ver) {
+            Elf32_Vernaux *aux = (Elf32_Vernaux*)((uintptr_t)ver + ver->vn_aux);
+            for(int j=0; j<ver->vn_cnt; ++j) {
+                if(aux->vna_other==version) 
+                    return aux->vna_flags;
+                aux = (Elf32_Vernaux*)((uintptr_t)aux + aux->vna_next);
+            }
+            ver = ver->vn_next?((Elf32_Verneed*)((uintptr_t)ver + ver->vn_next)):NULL;
+        }
+    }
+    return GetParentSymbolVersionFlag32(h, version);  // if symbol is "internal", use Def table instead
+}
+
+
 static Elf32_Sym* old_elf_lookup(elfheader_t* h, const char* symname, int ver, const char* vername, int local, int veropt)
 {
     // Prepare hash table
@@ -90,16 +124,16 @@ static Elf32_Sym* new_elf_lookup(elfheader_t* h, const char* symname, int ver, c
     const uint32_t symoffset = hashtab[1];
     const uint32_t bloom_size = hashtab[2];
     const uint32_t bloom_shift = hashtab[3];
-    const uint64_t *blooms = (uint64_t*)&hashtab[4];
+    const uint32_t *blooms = (uint32_t*)&hashtab[4];
     const uint32_t *buckets = (uint32_t*)&blooms[bloom_size];
     const uint32_t *chains = &buckets[nbuckets];
     // get hash from symname to lookup
     const uint32_t hash = new_elf_hash(symname);
     // early check with bloom: if at least one bit is not set, a symbol is surely missing.
-    uint64_t word = blooms[(hash/64)%bloom_size];
-    uint64_t mask = 0
-        | 1LL << (hash%64)
-        | 1LL << ((hash>>bloom_shift)%64);
+    uint32_t word = blooms[(hash/32)%bloom_size];
+    uint32_t mask = 0
+        | 1LL << (hash%32)
+        | 1LL << ((hash>>bloom_shift)%32);
     if ((word & mask) != mask) {
         return NULL;
     }
@@ -127,7 +161,7 @@ static void new_elf_hash_dump(elfheader_t* h)
     const uint32_t symoffset = hashtab[1];
     const uint32_t bloom_size = hashtab[2];
     const uint32_t bloom_shift = hashtab[3];
-    const uint64_t *blooms = (uint64_t*)&hashtab[4];
+    const uint32_t *blooms = (uint32_t*)&hashtab[4];
     const uint32_t *buckets = (uint32_t*)&blooms[bloom_size];
     const uint32_t *chains = &buckets[nbuckets];
     printf_log(LOG_NONE, "===============Dump GNU_HASH from %s\n", h->name);
diff --git a/src/elfs/elfload_dump.c b/src/elfs/elfload_dump.c
index 18d4dbc6..95fc70d3 100644
--- a/src/elfs/elfload_dump.c
+++ b/src/elfs/elfload_dump.c
@@ -9,10 +9,6 @@
 #include "elfload_dump.h"
 #include "elfloader_private.h"
 
-#ifndef SHT_CHECKSUM
-#define SHT_CHECKSUM 0x6ffffff8
-#endif
-
 static const char* DumpSection(Elf64_Shdr *s, char* SST) {
     static char buff[400];
     switch (s->sh_type) {
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c
index 248c4282..d251abaa 100644
--- a/src/elfs/elfloader.c
+++ b/src/elfs/elfloader.c
@@ -875,7 +875,12 @@ int RelocateElf(lib_t *maplib, lib_t *local_maplib, int bindnow, int deepbind, e
     return box64_is32bits?RelocateElf32(maplib, local_maplib, bindnow, deepbind, head):RelocateElf64(maplib, local_maplib, bindnow, deepbind, head);
 }
 
-int RelocateElfPlt32(lib_t *maplib, lib_t *local_maplib, int bindnow, int deepbind, elfheader_t* head) { /* TODO */ return -1; }
+int RelocateElfPlt32(lib_t *maplib, lib_t *local_maplib, int bindnow, int deepbind, elfheader_t* head)
+#ifndef BOX32
+{ return -1; }
+#else
+ ;
+#endif
 int RelocateElfPlt64(lib_t *maplib, lib_t *local_maplib, int bindnow, int deepbind, elfheader_t* head)
 {
     int need_resolver = 0;
@@ -953,7 +958,12 @@ uintptr_t GetLastByte(elfheader_t* h)
 #endif
 
 void checkHookedSymbols(elfheader_t* h); // in mallochook.c
-void AddSymbols32(lib_t *maplib, elfheader_t* h) { /* TODO */ }
+void AddSymbols32(lib_t *maplib, elfheader_t* h)
+#ifndef BOX32
+{ }
+#else
+ ;
+#endif
 void AddSymbols(lib_t *maplib, elfheader_t* h)
 {
     if(box64_is32bits) {
@@ -1121,15 +1131,10 @@ void startMallocHook();
 #else
 void startMallocHook() {}
 #endif
-void RunElfInit32(elfheader_t* h, x64emu_t *emu) { /* TODO*/ }
 void RunElfInit(elfheader_t* h, x64emu_t *emu)
 {
     if(!h || h->init_done)
         return;
-    if(box64_is32bits) {
-        RunElfInit32(h, emu);
-        return;
-    }
     // reset Segs Cache
     memset(emu->segs_serial, 0, sizeof(emu->segs_serial));
     uintptr_t p = h->initentry + h->delta;
@@ -1157,11 +1162,24 @@ void RunElfInit(elfheader_t* h, x64emu_t *emu)
         RunFunctionWithEmu(emu, 0, p, 3, my_context->argc, my_context->argv, my_context->envv);
     printf_dump(LOG_DEBUG, "Done Init for %s\n", ElfName(h));
     // and check init array now
-    Elf64_Addr *addr = (Elf64_Addr*)(h->initarray + h->delta);
-    for (size_t i=0; i<h->initarray_sz; ++i) {
-        if(addr[i]) {
-            printf_dump(LOG_DEBUG, "Calling Init[%zu] for %s @%p\n", i, ElfName(h), (void*)addr[i]);
-            RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 3, my_context->argc, my_context->argv, my_context->envv);
+    #ifdef BOX32
+    if(box64_is32bits) {
+        Elf32_Addr *addr = (Elf32_Addr*)(h->initarray + h->delta);
+        for (size_t i=0; i<h->initarray_sz; ++i) {
+            if(addr[i]) {
+                printf_dump(LOG_DEBUG, "Calling Init[%zu] for %s @%p\n", i, ElfName(h), from_ptrv(addr[i]));
+                RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 3, my_context->argc, my_context->argv, my_context->envv);
+            }
+        }
+    } else
+    #endif
+    {
+        Elf64_Addr *addr = (Elf64_Addr*)(h->initarray + h->delta);
+        for (size_t i=0; i<h->initarray_sz; ++i) {
+            if(addr[i]) {
+                printf_dump(LOG_DEBUG, "Calling Init[%zu] for %s @%p\n", i, ElfName(h), (void*)addr[i]);
+                RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 3, my_context->argc, my_context->argv, my_context->envv);
+            }
         }
     }
 
@@ -1191,15 +1209,10 @@ void RunDeferredElfInit(x64emu_t *emu)
     box_free(List);
 }
 
-void RunElfFini32(elfheader_t* h, x64emu_t *emu) { /* TODO */ }
 void RunElfFini(elfheader_t* h, x64emu_t *emu)
 {
     if(!h || h->fini_done || !h->init_done)
         return;
-    if(box64_is32bits) {
-        RunElfFini32(h, emu);
-        return;
-    }
     h->fini_done = 1;
     // Call the registered cxa_atexit functions
     CallCleanup(emu, h);
@@ -1208,10 +1221,21 @@ void RunElfFini(elfheader_t* h, x64emu_t *emu)
     printf_log(LOG_DEBUG, "Android does not support Fini for %s\n", ElfName(h));
 #else
     // first check fini array
-    Elf64_Addr *addr = (Elf64_Addr*)(h->finiarray + h->delta);
-    for (int i=h->finiarray_sz-1; i>=0; --i) {
-        printf_dump(LOG_DEBUG, "Calling Fini[%d] for %s @%p\n", i, ElfName(h), (void*)addr[i]);
-        RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 0);
+    #ifdef BOX32
+    if(box64_is32bits) {
+        Elf32_Addr *addr = (Elf32_Addr*)(h->finiarray + h->delta);
+        for (int i=h->finiarray_sz-1; i>=0; --i) {
+            printf_dump(LOG_DEBUG, "Calling Fini[%d] for %s @%p\n", i, ElfName(h), from_ptrv(addr[i]));
+            RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 0);
+        }
+    } else
+    #endif
+    {
+        Elf64_Addr *addr = (Elf64_Addr*)(h->finiarray + h->delta);
+        for (int i=h->finiarray_sz-1; i>=0; --i) {
+            printf_dump(LOG_DEBUG, "Calling Fini[%d] for %s @%p\n", i, ElfName(h), (void*)addr[i]);
+            RunFunctionWithEmu(emu, 0, (uintptr_t)addr[i], 0);
+        }
     }
     // then the "old-style" fini
     if(h->finientry) {
@@ -1499,7 +1523,12 @@ EXPORT int my_dl_iterate_phdr(x64emu_t *emu, void* F, void *data) {
     return ret;
 }
 
-void ResetSpecialCaseMainElf32(elfheader_t* h) { /* TODO */ }
+void ResetSpecialCaseMainElf32(elfheader_t* h)
+#ifndef BOX32
+{ }
+#else
+ ;
+#endif
 void ResetSpecialCaseMainElf(elfheader_t* h)
 {
     if(box64_is32bits) {
@@ -1620,7 +1649,12 @@ static Elf64_Sym* ElfLocateSymbol(elfheader_t* head, uintptr_t *offs, uintptr_t
     return sym;
 }
 
-void* ElfGetLocalSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt) { /* TOODO */ return NULL; }
+void* ElfGetLocalSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
+#ifndef BOX32
+{ return NULL; }
+#else
+ ;
+#endif
 void* ElfGetLocalSymbolStartEnd64(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
 {
     Elf64_Sym* sym = ElfLocateSymbol(head, offs, end, symname, ver, vername, local, veropt);
@@ -1636,7 +1670,12 @@ void* ElfGetLocalSymbolStartEnd(elfheader_t* head, uintptr_t *offs, uintptr_t *e
     return box64_is32bits?ElfGetLocalSymbolStartEnd32(head, offs, end, symname, ver, vername, local, veropt):ElfGetLocalSymbolStartEnd64(head, offs, end, symname, ver, vername, local, veropt);
 }
 
-void* ElfGetGlobalSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt) { /*T ODO */ return NULL; }
+void* ElfGetGlobalSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
+#ifndef BOX32
+{ return NULL; }
+#else
+ ;
+#endif
 void* ElfGetGlobalSymbolStartEnd64(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
 {
     Elf64_Sym* sym = ElfLocateSymbol(head, offs, end, symname, ver, vername, local, veropt);
@@ -1652,7 +1691,12 @@ void* ElfGetGlobalSymbolStartEnd(elfheader_t* head, uintptr_t *offs, uintptr_t *
     return box64_is32bits?ElfGetGlobalSymbolStartEnd32(head, offs, end, symname, ver, vername, local, veropt):ElfGetGlobalSymbolStartEnd64(head, offs, end, symname, ver, vername, local, veropt);
 }
 
-void* ElfGetWeakSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt) { /* TODO */ return NULL; }
+void* ElfGetWeakSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
+#ifndef BOX32
+{ return NULL; }
+#else
+ ;
+#endif
 void* ElfGetWeakSymbolStartEnd64(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
 {
     Elf64_Sym* sym = ElfLocateSymbol(head, offs, end, symname, ver, vername, local, veropt);
@@ -1668,7 +1712,12 @@ void* ElfGetWeakSymbolStartEnd(elfheader_t* head, uintptr_t *offs, uintptr_t *en
     return box64_is32bits?ElfGetWeakSymbolStartEnd32(head, offs, end, symname, ver, vername, local, veropt):ElfGetWeakSymbolStartEnd64(head, offs, end, symname, ver, vername, local, veropt);
 }
 
-int ElfGetSymTabStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname) { /* TODO */ return 0; }
+int ElfGetSymTabStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname)
+#ifndef BOX32
+{ return 0; }
+#else
+ ;
+#endif
 int ElfGetSymTabStartEnd64(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname)
 {
     Elf64_Sym* sym = ElfSymTabLookup64(head, symname);
diff --git a/src/elfs/elfloader32.c b/src/elfs/elfloader32.c
index 3b30bc07..62a3918e 100644
--- a/src/elfs/elfloader32.c
+++ b/src/elfs/elfloader32.c
@@ -42,6 +42,12 @@
 #include "x64tls.h"
 #include "box32.h"
 
+ptr_t pltResolver32 = ~(ptr_t)0;
+
+extern void* my__IO_2_1_stderr_;
+extern void* my__IO_2_1_stdin_ ;
+extern void* my__IO_2_1_stdout_;
+
 // return the index of header (-1 if it doesn't exist)
 static int getElfIndex(box64context_t* ctx, elfheader_t* head) {
     for (int i=0; i<ctx->elfsize; ++i)
@@ -60,6 +66,68 @@ static elfheader_t* checkElfLib(elfheader_t* h, library_t* lib)
     return h;
 }
 
+static Elf32_Sym* ElfLocateSymbol(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
+{
+    Elf32_Sym* sym = ElfLookup32(head, symname, *ver, *vername, local, *veropt);
+    if(!sym) return NULL;
+    if(head->VerSym && !*veropt) {
+        int idx = ((uintptr_t)sym - (uintptr_t)head->DynSym._32)/sizeof(Elf32_Sym);
+        int version = ((Elf32_Half*)((uintptr_t)head->VerSym+head->delta))[idx];
+        if(version!=-1) version &=0x7fff;
+        const char* symvername = GetSymbolVersion(head, version);
+        Elf32_Half flags = GetSymbolVersionFlag(head, version);
+        if(version>1 && *ver<2 && (flags==0)) {
+            *ver = version;
+            *vername = symvername;
+            *veropt = 1;
+        } else if(flags==0 && !*veropt && version>1 && *ver>1 && !strcmp(symvername, *vername)) {
+            *veropt = 1;
+        }
+    }
+    if(!sym->st_shndx) return NULL;
+    int vis = ELF32_ST_VISIBILITY(sym->st_other);
+    if(vis==STV_HIDDEN && !local)
+        return NULL;
+    return sym;
+}
+
+
+static void GrabX32CopyMainElfReloc(elfheader_t* head)
+{
+    if(head->rela) {
+        int cnt = head->relasz / head->relaent;
+        Elf32_Rela* rela = (Elf32_Rela *)(head->rela + head->delta);
+        printf_dump(LOG_DEBUG, "Grabbing R_386_COPY Relocation(s) in advance for %s\n", head->name);
+        for (int i=0; i<cnt; ++i) {
+            int t = ELF32_R_TYPE(rela[i].r_info);
+            if(t == R_386_COPY) {
+                Elf32_Sym *sym = &head->DynSym._32[ELF32_R_SYM(rela[i].r_info)];
+                const char* symname = SymName32(head, sym);
+                int version = head->VerSym?((Elf32_Half*)((uintptr_t)head->VerSym+head->delta))[ELF32_R_SYM(rela[i].r_info)]:-1;
+                if(version!=-1) version &=0x7fff;
+                const char* vername = GetSymbolVersion(head, version);
+                Elf32_Half flags = GetSymbolVersionFlag(head, version);
+                int veropt = flags?0:1;
+                uintptr_t offs = sym->st_value + head->delta;
+                AddUniqueSymbol(my_context->globdata, symname, offs, sym->st_size, version, vername, veropt);
+            }
+        }
+    }
+}
+
+void checkHookedSymbols(elfheader_t* h);
+void AddSymbols32(lib_t *maplib, elfheader_t* h)
+{
+    //if(box64_dump && h->hash)   old_elf_hash_dump(h);
+    //if(box64_dump && h->gnu_hash)   new_elf_hash_dump(h);
+    if(box64_dump && h->DynSym._32) DumpDynSym32(h);
+    if(h==my_context->elfs[0]) 
+        GrabX32CopyMainElfReloc(h);
+    #ifndef STATICBUILD
+    checkHookedSymbols(h);
+    #endif
+}
+
 int AllocLoadElfMemory32(box64context_t* context, elfheader_t* head, int mainbin)
 {
     ptr_t offs = 0;
@@ -624,3 +692,199 @@ int RelocateElf32(lib_t *maplib, lib_t *local_maplib, int bindnow, int deepbind,
     }
     return 0;
 }
+
+int RelocateElfPlt32(lib_t *maplib, lib_t *local_maplib, int bindnow, int deepbind, elfheader_t* head)
+{
+    int need_resolver = 0;
+    if(0 && (head->flags&DF_BIND_NOW) && !bindnow) { // disable for now, needs more symbol in a fow libs like gtk and nss3
+        bindnow = 1;
+        printf_log(LOG_DEBUG, "Forcing %s to Bind Now\n", head->name);
+    }
+    if(head->pltrel) {
+        int cnt = head->pltsz / head->pltent;
+        if(head->pltrel==DT_REL) {
+            DumpRelTable32(head, cnt, (Elf32_Rel *)(head->jmprel + head->delta), "PLT");
+            printf_log(LOG_DEBUG, "Applying %d PLT Relocation(s) for %s\n", cnt, head->name);
+            if(RelocateElfREL(maplib, local_maplib, bindnow, deepbind, head, cnt, (Elf32_Rel *)(head->jmprel + head->delta), &need_resolver))
+                return -1;
+        } else if(head->pltrel==DT_RELA) {
+            DumpRelATable32(head, cnt, (Elf32_Rela *)(head->jmprel + head->delta), "PLT");
+            printf_log(LOG_DEBUG, "Applying %d PLT Relocation(s) with Addend for %s\n", cnt, head->name);
+            if(RelocateElfRELA(maplib, local_maplib, bindnow, deepbind, head, cnt, (Elf32_Rela *)(head->jmprel + head->delta), &need_resolver))
+                return -1;
+        }
+        if(need_resolver) {
+            if(pltResolver32==~(ptr_t)0) {
+                pltResolver32 = AddBridge(my_context->system, vFEv, PltResolver32, 0, "(PltResolver)");
+            }
+            if(head->pltgot) {
+                *(ptr_t*)from_ptrv(head->pltgot+head->delta+8) = pltResolver32;
+                *(ptr_t*)from_ptrv(head->pltgot+head->delta+4) = to_ptrv(head);
+                printf_log(LOG_DEBUG, "PLT Resolver injected in plt.got at %p\n", from_ptrv(head->pltgot+head->delta+8));
+            } else if(head->got) {
+                *(ptr_t*)from_ptrv(head->got+head->delta+8) = pltResolver32;
+                *(ptr_t*)from_ptrv(head->got+head->delta+4) = to_ptrv(head);
+                printf_log(LOG_DEBUG, "PLT Resolver injected in got at %p\n", from_ptrv(head->got+head->delta+8));
+            }
+        }
+    }
+    return 0;
+}
+
+void ResetSpecialCaseMainElf32(elfheader_t* h)
+{
+    Elf32_Sym *sym = NULL;
+     for (uint32_t i=0; i<h->numDynSym; ++i) {
+        if(h->DynSym._32[i].st_info == 17) {
+            sym = h->DynSym._32+i;
+            const char * symname = h->DynStr+sym->st_name;
+            if(strcmp(symname, "_IO_2_1_stderr_")==0 && (from_ptrv(sym->st_value+h->delta))) {
+                memcpy(from_ptrv(sym->st_value+h->delta), stderr, sym->st_size);
+                my__IO_2_1_stderr_ = from_ptrv(sym->st_value+h->delta);
+                printf_log(LOG_DEBUG, "BOX32: Set @_IO_2_1_stderr_ to %p\n", my__IO_2_1_stderr_);
+            } else
+            if(strcmp(symname, "_IO_2_1_stdin_")==0 && (from_ptrv(sym->st_value+h->delta))) {
+                memcpy(from_ptrv(sym->st_value+h->delta), stdin, sym->st_size);
+                my__IO_2_1_stdin_ = from_ptrv(sym->st_value+h->delta);
+                printf_log(LOG_DEBUG, "BOX32: Set @_IO_2_1_stdin_ to %p\n", my__IO_2_1_stdin_);
+            } else
+            if(strcmp(symname, "_IO_2_1_stdout_")==0 && (from_ptrv(sym->st_value+h->delta))) {
+                memcpy(from_ptrv(sym->st_value+h->delta), stdout, sym->st_size);
+                my__IO_2_1_stdout_ = from_ptrv(sym->st_value+h->delta);
+                printf_log(LOG_DEBUG, "BOX32: Set @_IO_2_1_stdout_ to %p\n", my__IO_2_1_stdout_);
+            } else
+            if(strcmp(symname, "_IO_stderr_")==0 && (from_ptrv(sym->st_value+h->delta))) {
+                memcpy(from_ptrv(sym->st_value+h->delta), stderr, sym->st_size);
+                my__IO_2_1_stderr_ = from_ptrv(sym->st_value+h->delta);
+                printf_log(LOG_DEBUG, "BOX32: Set @_IO_stderr_ to %p\n", my__IO_2_1_stderr_);
+            } else
+            if(strcmp(symname, "_IO_stdin_")==0 && (from_ptrv(sym->st_value+h->delta))) {
+                memcpy(from_ptrv(sym->st_value+h->delta), stdin, sym->st_size);
+                my__IO_2_1_stdin_ = from_ptrv(sym->st_value+h->delta);
+                printf_log(LOG_DEBUG, "BOX32: Set @_IO_stdin_ to %p\n", my__IO_2_1_stdin_);
+            } else
+            if(strcmp(symname, "_IO_stdout_")==0 && (from_ptrv(sym->st_value+h->delta))) {
+                memcpy(from_ptrv(sym->st_value+h->delta), stdout, sym->st_size);
+                my__IO_2_1_stdout_ = from_ptrv(sym->st_value+h->delta);
+                printf_log(LOG_DEBUG, "BOX32: Set @_IO_stdout_ to %p\n", my__IO_2_1_stdout_);
+            }
+        }
+    }
+}
+
+void* ElfGetLocalSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
+{
+    Elf32_Sym* sym = ElfLocateSymbol(head, offs, end, symname, ver, vername, local, veropt);
+    if(!sym) return NULL;
+    int bind = ELF32_ST_BIND(sym->st_info);
+    if(bind!=STB_LOCAL) return 0;
+    if(offs) *offs = sym->st_value + head->delta;
+    if(end) *end = sym->st_value + head->delta + sym->st_size;
+    return sym;
+}
+
+void* ElfGetGlobalSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
+{
+    Elf32_Sym* sym = ElfLocateSymbol(head, offs, end, symname, ver, vername, local, veropt);
+    if(!sym) return NULL;
+    int bind = ELF32_ST_BIND(sym->st_info);
+    if(bind!=STB_GLOBAL && bind!=STB_GNU_UNIQUE) return 0;
+    if(offs) *offs = sym->st_value + head->delta;
+    if(end) *end = sym->st_value + head->delta + sym->st_size;
+    return sym;
+}
+
+void* ElfGetWeakSymbolStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname, int* ver, const char** vername, int local, int* veropt)
+{
+    Elf32_Sym* sym = ElfLocateSymbol(head, offs, end, symname, ver, vername, local, veropt);
+    if(!sym) return NULL;
+    int bind = ELF32_ST_BIND(sym->st_info);
+    if(bind!=STB_WEAK) return 0;
+    if(offs) *offs = sym->st_value + head->delta;
+    if(end) *end = sym->st_value + head->delta + sym->st_size;
+    return sym;
+}
+
+int ElfGetSymTabStartEnd32(elfheader_t* head, uintptr_t *offs, uintptr_t *end, const char* symname)
+{
+    Elf32_Sym* sym = ElfSymTabLookup32(head, symname);
+    if(!sym) return 0;
+    if(!sym->st_shndx) return 0;
+    if(!sym->st_size) return 0; //needed?
+    if(offs) *offs = sym->st_value + head->delta;
+    if(end) *end = sym->st_value + head->delta + sym->st_size;
+    return 1;
+}
+
+EXPORT void PltResolver32(x64emu_t* emu)
+{
+    ptr_t addr = Pop32(emu);
+    int slot = (int)Pop32(emu);
+    elfheader_t *h = (elfheader_t*)from_ptrv(addr);
+    library_t* lib = h->lib;
+    lib_t* local_maplib = GetMaplib(lib);
+    int deepbind = GetDeepBind(lib);
+    printf_dump(LOG_DEBUG, "PltResolver32: Addr=%p, Slot=%d Return=%p: elf is %s (VerSym=%p)\n", from_ptrv(addr), slot, *(ptr_t*)from_ptrv(R_ESP), h->name, h->VerSym);
+
+    Elf32_Rel * rel = (Elf32_Rel *)(from_ptrv(h->jmprel + h->delta + slot));
+
+    Elf32_Sym *sym = &h->DynSym._32[ELF32_R_SYM(rel->r_info)];
+    int bind = ELF32_ST_BIND(sym->st_info);
+    const char* symname = SymName32(h, sym);
+    int version = h->VerSym?((Elf32_Half*)((uintptr_t)h->VerSym+h->delta))[ELF32_R_SYM(rel->r_info)]:-1;
+    if(version!=-1) version &= 0x7fff;
+    const char* vername = GetSymbolVersion(h, version);
+    Elf32_Half flags = GetSymbolVersionFlag(h, version);
+    int veropt = flags?0:1;
+    ptr_t *p = (uint32_t*)from_ptrv(rel->r_offset + h->delta);
+    uintptr_t offs = 0;
+    uintptr_t end = 0;
+
+    Elf32_Sym *elfsym = NULL;
+    if(bind==STB_LOCAL) {
+        elfsym = ElfDynSymLookup32(h, symname);
+        if(elfsym && elfsym->st_shndx) {
+            offs = elfsym->st_value + h->delta;
+            end = offs + elfsym->st_size;
+        }
+        if(!offs && !end && local_maplib && deepbind)
+            GetLocalSymbolStartEnd(local_maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+        if(!offs && !end)
+            GetLocalSymbolStartEnd(my_context->maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+        if(!offs && !end && local_maplib && !deepbind)
+            GetLocalSymbolStartEnd(local_maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+    } else if(bind==STB_WEAK) {
+        if(local_maplib && deepbind)
+            GetGlobalWeakSymbolStartEnd(local_maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+        else
+            GetGlobalWeakSymbolStartEnd(my_context->maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+        if(!offs && !end && local_maplib && !deepbind)
+            GetGlobalWeakSymbolStartEnd(local_maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+    } else {
+        if(!offs && !end && local_maplib && deepbind)
+            GetGlobalSymbolStartEnd(local_maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+        if(!offs && !end)
+            GetGlobalSymbolStartEnd(my_context->maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+        if(!offs && !end && local_maplib && !deepbind)
+            GetGlobalSymbolStartEnd(local_maplib, symname, &offs, &end, h, version, vername, veropt, (void**)&elfsym);
+    }
+
+    if (!offs) {
+        printf_log(LOG_NONE, "Error: PltResolver32: Symbol %s(ver %d: %s%s%s) not found, cannot apply R_386_JMP_SLOT %p (%p) in %s\n", symname, version, symname, vername?"@":"", vername?vername:"", p, from_ptrv(*p), h->name);
+        emu->quit = 1;
+        return;
+    } else {
+        elfheader_t* sym_elf = FindElfSymbol(my_context, elfsym);
+        offs = (uintptr_t)getAlternate(from_ptrv(offs));
+
+        if(p) {
+            printf_dump(LOG_DEBUG, "            Apply %s R_386_JMP_SLOT %p with sym=%s(ver %d: %s%s%s) (%p -> %p / %s)\n", (bind==STB_LOCAL)?"Local":((bind==STB_WEAK)?"Weak":"Global"), p, symname, version, symname, vername?"@":"", vername?vername:"",from_ptrv(*p), from_ptrv(offs), ElfName(FindElfAddress(my_context, offs)));
+            *p = offs;
+        } else {
+            printf_log(LOG_NONE, "PltResolver32: Warning, Symbol %s(ver %d: %s%s%s) found, but Jump Slot Offset is NULL \n", symname, version, symname, vername?"@":"", vername?vername:"");
+        }
+    }
+
+    // jmp to function
+    R_EIP = offs;
+}
diff --git a/src/elfs/elfloader_private.h b/src/elfs/elfloader_private.h
index 6bcf6d82..535dbfad 100644
--- a/src/elfs/elfloader_private.h
+++ b/src/elfs/elfloader_private.h
@@ -194,8 +194,12 @@ typedef struct elfheader_s {
 #define STB_GNU_UNIQUE  10
 #endif
 
+#ifndef ELF32_ST_VISIBILITY
+#define ELF32_ST_VISIBILITY(o)  ((o) & 0x03)
+#endif
+
 #ifndef ELF64_ST_VISIBILITY
-#define ELF64_ST_VISIBILITY(o)   ((o) & 0x03)
+#define ELF64_ST_VISIBILITY(o)  ELF32_ST_VISIBILITY (o)
 #endif
 
 elfheader_t* ParseElfHeader32(FILE* f, const char* name, int exec);
diff --git a/src/elfs/elfparser32.c b/src/elfs/elfparser32.c
index b4bb78e4..376bb34d 100755
--- a/src/elfs/elfparser32.c
+++ b/src/elfs/elfparser32.c
@@ -252,8 +252,10 @@ elfheader_t* ParseElfHeader32(FILE* f, const char* name, int exec)
                     printf_log(LOG_DEBUG, "The DT_INIT_ARRAYSZ is %d\n", h->initarray_sz);
                     break;
                 case DT_PREINIT_ARRAYSZ:
-                    if(val)
-                        printf_log(LOG_NONE, "Warning, PreInit Array (size=%d) present and ignored!\n", val);
+                    #ifndef ANDROID
+                        if(val)
+                            printf_log(LOG_NONE, "Warning, PreInit Array (size=%d) present and ignored!\n", val);
+                    #endif
                     break;
                 case DT_FINI: // Exit hook
                     h->finientry = ptr;
diff --git a/src/emu/x64emu.c b/src/emu/x64emu.c
index f0865299..ddfa0fc6 100644
--- a/src/emu/x64emu.c
+++ b/src/emu/x64emu.c
@@ -64,11 +64,29 @@ static void internalX64Setup(x64emu_t* emu, box64context_t *context, uintptr_t s
     // set default value
     R_RIP = start;
     R_RSP = (stack + stacksize) & ~7;   // align stack start, always
+    #ifdef BOX32
+    if(box64_is32bits) {
+        if(stack>=0x100000000LL) {
+            printf_log(LOG_NONE, "BOX32: Stack pointer too high (%p), aborting\n", (void*)stack);
+            abort();
+        }
+        if(R_RSP>=0x100000000LL) {    // special case, stack is just a bit too high
+            R_RSP = 0x100000000LL - 16;
+        }
+    }
+    #endif
     // fake init of segments...
-    emu->segs[_CS] = 0x33;
-    emu->segs[_DS] = emu->segs[_ES] = emu->segs[_SS] = 0x2b;
-    emu->segs[_FS] = 0x43;
-    emu->segs[_GS] = default_gs;
+    if(box64_is32bits) {
+        emu->segs[_CS] = 0x23;
+        emu->segs[_DS] = emu->segs[_ES] = emu->segs[_SS] = 0x2b;
+        emu->segs[_FS] = default_fs;
+        emu->segs[_GS] = 0x33;
+    } else {
+        emu->segs[_CS] = 0x33;
+        emu->segs[_DS] = emu->segs[_ES] = emu->segs[_SS] = 0x2b;
+        emu->segs[_FS] = 0x43;
+        emu->segs[_GS] = default_gs;
+    }
     // setup fpu regs
     reset_fpu(emu);
     emu->mxcsr.x32 = 0x1f80;
@@ -77,7 +95,7 @@ static void internalX64Setup(x64emu_t* emu, box64context_t *context, uintptr_t s
 EXPORTDYN
 x64emu_t *NewX64Emu(box64context_t *context, uintptr_t start, uintptr_t stack, int stacksize, int ownstack)
 {
-    printf_log(LOG_DEBUG, "Allocate a new X86_64 Emu, with EIP=%p and Stack=%p/0x%X\n", (void*)start, (void*)stack, stacksize);
+    printf_log(LOG_DEBUG, "Allocate a new X86_64 Emu, with %cIP=%p and Stack=%p/0x%X\n", box64_is32bits?'E':'R', (void*)start, (void*)stack, stacksize);
 
     x64emu_t *emu = (x64emu_t*)box_calloc(1, sizeof(x64emu_t));
 
@@ -161,7 +179,7 @@ void CallCleanup(x64emu_t *emu, elfheader_t* h)
     if(!h)
         return;
     for(int i=h->clean_sz-1; i>=0; --i) {
-        printf_log(LOG_DEBUG, "Call cleanup #%d\n", i);
+        printf_log(LOG_DEBUG, "Call cleanup #%d (args:%d, arg:%p)\n", i, h->cleanups[i].arg, h->cleanups[i].a);
         RunFunctionWithEmu(emu, 0, (uintptr_t)(h->cleanups[i].f), h->cleanups[i].arg, h->cleanups[i].a );
         // now remove the cleanup
         if(i!=h->clean_sz-1)
@@ -325,10 +343,14 @@ void SetEBP(x64emu_t *emu, uint32_t v)
 {
     R_EBP = v;
 }
-//void SetESP(x64emu_t *emu, uint32_t v)
-//{
-//    R_ESP = v;
-//}
+void SetESP(x64emu_t *emu, uint32_t v)
+{
+    R_ESP = v;
+}
+void SetEIP(x64emu_t *emu, uint32_t v)
+{
+    R_EIP = v;
+}
 void SetRAX(x64emu_t *emu, uint64_t v)
 {
     R_RAX = v;
@@ -373,7 +395,7 @@ uint64_t GetRBP(x64emu_t *emu)
 {
     return R_RBP;
 }
-/*void SetFS(x64emu_t *emu, uint16_t v)
+void SetFS(x64emu_t *emu, uint16_t v)
 {
     emu->segs[_FS] = v;
     emu->segs_serial[_FS] = 0;
@@ -381,7 +403,7 @@ uint64_t GetRBP(x64emu_t *emu)
 uint16_t GetFS(x64emu_t *emu)
 {
     return emu->segs[_FS];
-}*/
+}
 
 
 void ResetFlags(x64emu_t *emu)
@@ -572,9 +594,14 @@ void EmuCall(x64emu_t* emu, uintptr_t addr)
     uint64_t old_rip = R_RIP;
     //Push64(emu, GetRBP(emu));   // set frame pointer
     //SetRBP(emu, GetRSP(emu));   // save RSP
-    R_RSP -= 200;
-    R_RSP &= ~63LL;
-    PushExit(emu);
+    //R_RSP -= 200;
+    //R_RSP &= ~63LL;
+    #ifdef BOX32
+    if(box64_is32bits)
+        PushExit_32(emu);
+    else
+    #endif
+        PushExit(emu);
     R_RIP = addr;
     emu->df = d_none;
     Run(emu, 0);
diff --git a/src/emu/x64emu_private.h b/src/emu/x64emu_private.h
index bef4a9a4..35bfd97e 100644
--- a/src/emu/x64emu_private.h
+++ b/src/emu/x64emu_private.h
@@ -5,6 +5,9 @@
 
 typedef struct box64context_s box64context_t;
 typedef struct x64_ucontext_s x64_ucontext_t;
+#ifdef BOX32
+typedef struct i386_ucontext_s i386_ucontext_t;
+#endif
 
 #define ERR_UNIMPL  1
 #define ERR_DIVBY0  2
@@ -116,6 +119,7 @@ typedef struct x64emu_s {
     uintptr_t   prev2_ip;
     #endif
     // scratch stack, used for alignment of double and 64bits ints on arm. 200 elements should be enough
+    __int128_t  dummy_align;    // here to have scratch 128bits aligned
     uint64_t    scratch[200];
     // local stack, do be deleted when emu is freed
     void*       stack2free; // this is the stack to free (can be NULL)
@@ -126,7 +130,7 @@ typedef struct x64emu_s {
     uintptr_t   old_savedsp;
     #endif
 
-    x64_ucontext_t *uc_link; // to handle setcontext
+    void*       uc_link; // to handle setcontext (can be x64_ucontext_t or a i386_ucontext_t)
 
     int         type;       // EMUTYPE_xxx define
 } x64emu_t;
diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c
index dd1b439c..b0f452a2 100644
--- a/src/emu/x64int3.c
+++ b/src/emu/x64int3.c
@@ -88,6 +88,10 @@ static uint8_t Peek8(uintptr_t addr, uintptr_t offset)
 
 void x64Int3(x64emu_t* emu, uintptr_t* addr)
 {
+    if(box64_is32bits) {
+        x86Int3(emu,addr);
+        return;
+    }
     onebridge_t* bridge = (onebridge_t*)(*addr-1);
     if(Peek8(*addr, 0)=='S' && Peek8(*addr, 1)=='C') // Signature for "Out of x86 door"
     {
@@ -393,4 +397,12 @@ void print_cycle_log(int loglevel) {
             }
         }
     }
-}
\ No newline at end of file
+}
+
+#ifndef BOX32
+void x86Int3(x64emu_t* emu, uintptr_t* addr)
+{
+    printf_log(LOG_NONE, "Error: Calling 32bits wrapped function without box32 support built in\n");
+    abort();
+}
+#endif
\ No newline at end of file
diff --git a/src/emu/x64run.c b/src/emu/x64run.c
index 614bf91c..fbb92d1a 100644
--- a/src/emu/x64run.c
+++ b/src/emu/x64run.c
@@ -27,6 +27,9 @@
 #include "modrm.h"
 
 int my_setcontext(x64emu_t* emu, void* ucp);
+#ifdef BOX32
+int my32_setcontext(x64emu_t* emu, void* ucp);
+#endif
 
 #ifdef TEST_INTERPRETER
 int RunTest(x64test_t *test)
@@ -2232,7 +2235,12 @@ if(emu->segs[_CS]!=0x33 && emu->segs[_CS]!=0x23) printf_log(LOG_NONE, "Warning,
     // setcontext handling
     else if(emu->quit && emu->uc_link) {
         emu->quit = 0;
-        my_setcontext(emu, emu->uc_link);
+        #ifdef BOX32
+        if(box64_is32bits)
+            my32_setcontext(emu, emu->uc_link);
+        else
+        #endif
+            my_setcontext(emu, emu->uc_link);
         addr = R_RIP;
         goto x64emurun;
     }
diff --git a/src/emu/x64run64.c b/src/emu/x64run64.c
index fe8da3e5..7ceef8ab 100644
--- a/src/emu/x64run64.c
+++ b/src/emu/x64run64.c
@@ -639,7 +639,15 @@ uintptr_t Run64(x64emu_t *emu, rex_t rex, int seg, uintptr_t addr)
                     R_RAX = *(uint32_t*)(tlsdata+tmp64u);

             }

             break;

-

+        case 0xA2:                      /* MOV Ob,AL */

+            if(rex.is32bits) {

+                tmp32s = F32S;

+                *(uint8_t*)(uintptr_t)(tlsdata+tmp32s) = R_AL;

+            } else {

+                tmp64u = F64;

+                *(uint8_t*)(tlsdata+tmp64u) = R_AL;

+            }

+            break;

         case 0xA3:                      /* MOV FS:Od,EAX */

             if(rex.is32bits) {

                 tmp32s = F32S;

diff --git a/src/emu/x64run_private.c b/src/emu/x64run_private.c
index f94025ee..6055101a 100644
--- a/src/emu/x64run_private.c
+++ b/src/emu/x64run_private.c
@@ -24,6 +24,9 @@
 #endif
 #include "x64tls.h"
 #include "bridge.h"
+#ifdef BOX32
+#include "box32.h"
+#endif
 
 #define PARITY(x)   (((emu->x64emu_parity_tab[(x) / 32] >> ((x) % 32)) & 1) == 0)
 #define XOR2(x)     (((x) ^ ((x)>>1)) & 0x1)
@@ -53,7 +56,7 @@ void EXPORT my___libc_init(x64emu_t* emu, void* raw_args , void (*onexit)(void)
     emu->quit = 1; // finished!
 }
 #else
-int32_t EXPORT my___libc_start_main(x64emu_t* emu, int (*main) (int, char * *, char * *), int argc, char * * ubp_av, void (*init) (void), void (*fini) (void), void (*rtld_fini) (void), void (* stack_end))
+EXPORT int32_t my___libc_start_main(x64emu_t* emu, int (*main) (int, char * *, char * *), int argc, char * * ubp_av, void (*init) (void), void (*fini) (void), void (*rtld_fini) (void), void (* stack_end))
 {
     (void)argc; (void)ubp_av; (void)fini; (void)rtld_fini; (void)stack_end;
 
@@ -106,6 +109,54 @@ int32_t EXPORT my___libc_start_main(x64emu_t* emu, int (*main) (int, char * *, c
     }
     return (int)GetEAX(emu);
 }
+#ifdef BOX32
+#ifdef ANDROID
+void EXPORT my32___libc_init(x64emu_t* emu, void* raw_args , void (*onexit)(void) , int (*main)(int, char**, char**), void const * const structors )
+{
+    //TODO: register fini
+    // let's cheat and set all args...
+    Push_32(emu, (uint32_t)my_context->envv32);
+    Push_32(emu, (uint32_t)my_context->argv32);
+    Push_32(emu, (uint32_t)my_context->argc);
+
+    printf_log(LOG_DEBUG, "Transfert to main(%d, %p, %p)=>%p from __libc_init\n", my_context->argc, my_context->argv, my_context->envv, main);
+    // should call structors->preinit_array and structors->init_array!
+    // call main and finish
+    PushExit_32(emu);
+    R_EIP=to_ptrv(main);
+
+    DynaRun(emu);
+
+    emu->quit = 1; // finished!
+}
+#else
+int32_t EXPORT my32___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, char * *), int argc, char * * ubp_av, void (*init) (void), void (*fini) (void), void (*rtld_fini) (void), void (* stack_end))
+{
+    // let's cheat and set all args...
+    Push_32(emu, my_context->envv32);
+    Push_32(emu, my_context->argv32);
+    Push_32(emu, my_context->argc);
+    if(init) {
+        PushExit_32(emu);
+        R_EIP=to_ptrv(*init);
+        printf_log(LOG_DEBUG, "Calling init(%p) from __libc_start_main\n", *init);
+        DynaRun(emu);
+        if(emu->error)  // any error, don't bother with more
+            return 0;
+        emu->quit = 0;
+    }
+    printf_log(LOG_DEBUG, "Transfert to main(%d, %p, %p)=>%p from __libc_start_main\n", my_context->argc, my_context->argv, my_context->envv, main);
+    // call main and finish
+    PushExit_32(emu);
+    R_EIP=to_ptrv(main);
+
+    DynaRun(emu);
+
+    emu->quit = 1; // finished!
+    return 0;
+}
+#endif
+#endif
 #endif
 
 const char* GetNativeName(void* p)
diff --git a/src/emu/x64run_private.h b/src/emu/x64run_private.h
index 45a68659..925e14d5 100644
--- a/src/emu/x64run_private.h
+++ b/src/emu/x64run_private.h
@@ -50,6 +50,12 @@ static inline void Push16(x64emu_t *emu, uint16_t v)
     *((uint16_t*)R_RSP) = v;
 }
 
+static inline void Push_32(x64emu_t *emu, uint32_t v)
+{
+    R_ESP -= 4;
+    *((uint32_t*)(uintptr_t)R_ESP) = v;
+}
+
 static inline void Push32(x64emu_t *emu, uint32_t v)
 {
     R_RSP -= 4;
@@ -70,6 +76,13 @@ static inline uint16_t Pop16(x64emu_t *emu)
     return *st;
 }
 
+static inline uint32_t Pop_32(x64emu_t *emu)
+{
+    uint32_t* st = (uint32_t*)(uintptr_t)R_RSP;
+    R_ESP += 4;
+    return *st;
+}
+
 static inline uint32_t Pop32(x64emu_t *emu)
 {
     uint32_t* st = (uint32_t*)R_RSP;
@@ -90,6 +103,13 @@ static inline void PushExit(x64emu_t* emu)
     *((uint64_t*)R_RSP) = my_context->exit_bridge;
 }
 
+#ifdef BOX32
+static inline void PushExit_32(x64emu_t* emu)
+{
+    R_ESP -= 4;
+    *((ptr_t*)(uintptr_t)R_ESP) = my_context->exit_bridge;
+}
+#endif
 // the op code definition can be found here: http://ref.x86asm.net/geek32.html
 
 reg64_t* GetECommon(x64emu_t* emu, uintptr_t* addr, rex_t rex, uint8_t m, uint8_t delta);
@@ -232,6 +252,7 @@ void x64Syscall(x64emu_t *emu);
 void x64Int3(x64emu_t* emu, uintptr_t* addr);
 x64emu_t* x64emu_fork(x64emu_t* e, int forktype);
 void x86Syscall(x64emu_t *emu); //32bits syscall
+void x86Int3(x64emu_t* emu, uintptr_t* addr);
 
 uintptr_t GetSegmentBaseEmu(x64emu_t* emu, int seg);
 #define GetGSBaseEmu(emu)    GetSegmentBaseEmu(emu, _GS)
diff --git a/src/emu/x64tls.c b/src/emu/x64tls.c
index 78f83c74..99ae188c 100644
--- a/src/emu/x64tls.c
+++ b/src/emu/x64tls.c
@@ -11,6 +11,9 @@
 #include "x64emu_private.h"
 #include "x64tls.h"
 #include "elfloader.h"
+#ifdef BOX32
+#include "box32.h"
+#endif
 
 typedef struct thread_area_s
 {
@@ -118,12 +121,19 @@ uint32_t my_modify_ldt(x64emu_t* emu, int op, thread_area_t* td, int size)
         return (uint32_t)-1;
     }
 
-    /*
-    my_context->segtls[idx].base = td->base_addr;
-    my_context->segtls[idx].limit = td->limit;
-    pthread_setspecific(my_context->segtls[idx].key, (void*)my_context->segtls[idx].base);
-    */
-    
+    if(box64_is32bits) {
+        emu->segs_serial[_GS] = 0;
+        my_context->segtls[idx].base = td->base_addr;
+        my_context->segtls[idx].limit = td->limit;
+        my_context->segtls[idx].present = 1;
+        if(idx>8 && !my_context->segtls[idx].key_init) {
+            pthread_key_create(&my_context->segtls[idx].key, NULL);
+            my_context->segtls[idx].key_init = 1;
+        }
+        if(my_context->segtls[idx].key_init)
+            pthread_setspecific(my_context->segtls[idx].key, (void*)my_context->segtls[idx].base);
+    }
+
     ResetSegmentsCache(emu);
 
     return 0;
@@ -220,6 +230,7 @@ int my_arch_prctl(x64emu_t *emu, int code, void* addr)
 
 
 #define POS_TLS     0x200
+#define POS_TLS_32  0x50
 /*
  tls record should looks like:
  void*      tcb             0x00
@@ -255,7 +266,7 @@ static tlsdatasize_t* setupTLSData(box64context_t* context)
     // Setup the GS segment:
     int dtssize = sizeDTS(context);
     int datasize = sizeTLSData(context->tlssize);
-    void *ptr_oversized = (char*)box_malloc(dtssize+POS_TLS+datasize);
+    void *ptr_oversized = (char*)box_malloc(dtssize+(box64_is32bits?POS_TLS_32:POS_TLS)+datasize);
     void *ptr = (void*)((uintptr_t)ptr_oversized + datasize);
     memcpy((void*)((uintptr_t)ptr-context->tlssize), context->tlsdata, context->tlssize);
     tlsdatasize_t *data = (tlsdatasize_t*)box_calloc(1, sizeof(tlsdatasize_t));
@@ -264,23 +275,45 @@ static tlsdatasize_t* setupTLSData(box64context_t* context)
     data->ptr = ptr_oversized;
     data->n_elfs = context->elfsize;
     pthread_setspecific(context->tlskey, data);
-    // copy canary...
-    memset((void*)((uintptr_t)ptr), 0, POS_TLS+dtssize);            // set to 0 remining bytes
-    memcpy((void*)((uintptr_t)ptr+0x28), context->canary, sizeof(void*));      // put canary in place
-    uintptr_t tlsptr = (uintptr_t)ptr;
-    memcpy((void*)((uintptr_t)ptr+0x0), &tlsptr, sizeof(void*));
-    memcpy((void*)((uintptr_t)ptr+0x10), &tlsptr, sizeof(void*));  // set tcb and self same address
-    uintptr_t dtp = (uintptr_t)ptr+POS_TLS;
-    memcpy((void*)(tlsptr+sizeof(void*)), &dtp, sizeof(void*));
-    if(dtssize) {
-        for (int i=0; i<context->elfsize; ++i) {
-            // set pointer
-            dtp = (uintptr_t)ptr + GetTLSBase(context->elfs[i]);
-            *(uint64_t*)((uintptr_t)ptr+POS_TLS+i*16) = dtp;
-            *(uint64_t*)((uintptr_t)ptr+POS_TLS+i*16+8) = i; // index
+    #ifdef BOX32
+    if(box64_is32bits) {
+        // copy canary...
+        memset((void*)((uintptr_t)ptr), 0, POS_TLS_32+dtssize);        // set to 0 remining bytes
+        memcpy((void*)((uintptr_t)ptr+0x14), context->canary, 4);      // put canary in place
+        ptr_t tlsptr = to_ptrv(ptr);
+        memcpy((void*)((uintptr_t)ptr+0x0), &tlsptr, 4);
+        ptr_t dtp = to_ptrv(ptr+POS_TLS_32);
+        memcpy(from_ptrv(tlsptr+0x4), &dtp, 4);
+        if(dtssize) {
+            for (int i=0; i<context->elfsize; ++i) {
+                // set pointer
+                dtp = to_ptrv(ptr + GetTLSBase(context->elfs[i]));
+                memcpy((void*)((uintptr_t)ptr+POS_TLS_32+i*8), &dtp, 4);
+                memcpy((void*)((uintptr_t)ptr+POS_TLS_32+i*8+4), &i, 4); // index
+            }
         }
+        memcpy((void*)((uintptr_t)ptr+0x10), &context->vsyscall, 4);  // address of vsyscall
+    } else
+    #endif
+    {
+        // copy canary...
+        memset((void*)((uintptr_t)ptr), 0, POS_TLS+dtssize);            // set to 0 remining bytes
+        memcpy((void*)((uintptr_t)ptr+0x28), context->canary, sizeof(void*));      // put canary in place
+        uintptr_t tlsptr = (uintptr_t)ptr;
+        memcpy((void*)((uintptr_t)ptr+0x0), &tlsptr, sizeof(void*));
+        memcpy((void*)((uintptr_t)ptr+0x10), &tlsptr, sizeof(void*));  // set tcb and self same address
+        uintptr_t dtp = (uintptr_t)ptr+POS_TLS;
+        memcpy((void*)(tlsptr+sizeof(void*)), &dtp, sizeof(void*));
+        if(dtssize) {
+            for (int i=0; i<context->elfsize; ++i) {
+                // set pointer
+                dtp = (uintptr_t)ptr + GetTLSBase(context->elfs[i]);
+                *(uint64_t*)((uintptr_t)ptr+POS_TLS+i*16) = dtp;
+                *(uint64_t*)((uintptr_t)ptr+POS_TLS+i*16+8) = i; // index
+            }
+        }
+        memcpy((void*)((uintptr_t)ptr+0x20), &context->vsyscall, sizeof(void*));  // address of vsyscall
     }
-    memcpy((void*)((uintptr_t)ptr+0x20), &context->vsyscall, sizeof(void*));  // address of vsyscall
     return data;
 }
 
@@ -356,7 +389,9 @@ void* GetSegmentBase(uint32_t desc)
         return NULL;
     }
     int base = desc>>3;
-    if(base==0x8 && !my_context->segtls[base].key_init)
+    if(!box64_is32bits && base==0x8 && !my_context->segtls[base].key_init)
+        return GetSeg43Base();
+    if(box64_is32bits && (base==0x6))
         return GetSeg43Base();
     if(base>15) {
         printf_log(LOG_NONE, "Warning, accessing segment unknown 0x%x or unset\n", desc);
diff --git a/src/emu/x86int3.c b/src/emu/x86int3.c
new file mode 100755
index 00000000..73f5b3ae
--- /dev/null
+++ b/src/emu/x86int3.c
@@ -0,0 +1,347 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/syscall.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <signal.h>
+
+#include "debug.h"
+#include "box64stack.h"
+#include "x64emu.h"
+#include "x64run.h"
+#include "x64emu_private.h"
+#include "x64run_private.h"
+#include "x87emu_private.h"
+#include "x64primop.h"
+#include "x64trace.h"
+#include "wrapper32.h"
+#include "box32context.h"
+#include "librarian.h"
+#include "signals.h"
+#include "tools/bridge_private.h"
+
+#include <elf.h>
+#include "elfloader.h"
+#include "elfload_dump.h"
+#include "elfs/elfloader_private.h"
+
+typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
+
+static uint64_t F64(uintptr_t* addr) {
+    uint64_t ret = *(uint64_t*)*addr;
+    *addr+=8;
+    return ret;
+}
+static uint8_t Peek8(uintptr_t addr, uintptr_t offset)
+{
+    return *(uint8_t*)(addr+offset);
+}
+
+extern int errno;
+void x86Int3(x64emu_t* emu, uintptr_t* addr)
+{
+    onebridge_t* bridge = (onebridge_t*)(*addr-1);
+    if(Peek8(*addr, 0)=='S' && Peek8(*addr, 1)=='C') // Signature for "Out of x86 door"
+    {
+        *addr += 2;
+        uintptr_t a = F64(addr);
+        if(a==0) {
+            R_RIP = *addr;
+            //printf_log(LOG_INFO, "%p:Exit x86 emu (emu=%p)\n", *(void**)(R_ESP), emu);
+            emu->quit=1; // normal quit
+        } else {
+            RESET_FLAGS(emu);
+            wrapper_t w = bridge->w;
+            a = F64(addr);
+            R_RIP = *addr;
+            /* This party can be used to trace only 1 specific lib (but it is quite slow)
+            elfheader_t *h = FindElfAddress(my_context, *(uintptr_t*)(R_ESP));
+            int have_trace = 0;
+            if(h && strstr(ElfName(h), "libMiles")) have_trace = 1;*/
+            if(box64_log>=LOG_DEBUG || cycle_log) {
+                int tid = GetTID();
+                char t_buff[256] = "\0";
+                char buff2[64] = "\0";
+                char buff3[64] = "\0";
+                int cycle_line = my_context->current_line;
+                if(cycle_log) {
+                    my_context->current_line = (my_context->current_line+1)%cycle_log;
+                }
+                char* buff = cycle_log?my_context->log_call[cycle_line]:t_buff;
+                char* buffret = cycle_log?my_context->log_ret[cycle_line]:NULL;
+                if(buffret) buffret[0] = '\0';
+                char *tmp;
+                int post = 0;
+                int perr = 0;
+                uint64_t *pu64 = NULL;
+                uint32_t *pu32 = NULL;
+                uint8_t *pu8 = NULL;
+                const char *s = bridge->name;
+                if(!s)
+                    s = GetNativeName((void*)a);
+                if(a==(uintptr_t)PltResolver32) {
+                    if(cycle_log) {
+                        ptr_t addr = *((uint32_t*)from_ptrv(R_ESP));
+                        int slot = *((uint32_t*)from_ptrv(R_ESP+4));
+                        elfheader_t *h = (elfheader_t*)from_ptrv(addr);
+                        Elf32_Rel * rel = (Elf32_Rel *)from_ptrv(h->jmprel + h->delta + slot);
+                        Elf32_Sym *sym = &h->DynSym._32[ELF32_R_SYM(rel->r_info)];
+                        const char* symname = SymName32(h, sym);
+                        snprintf(buff, 256, "%04d|PltResolver \"%s\"", tid, symname?symname:"???");
+                    } else {
+                        snprintf(buff, 256, "%s", " ... ");
+                    }
+                } else
+                if(strstr(s, "SDL_RWFromFile")==s || strstr(s, "SDL_RWFromFile")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%s, %s)", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(strstr(s, "glColor4f")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%f, %f, %f, %f)", tid, *(void**)from_ptr(R_ESP), s, *(float*)from_ptr(R_ESP+4), *(float*)from_ptr(R_ESP+8), *(float*)from_ptr(R_ESP+12), *(float*)from_ptr(R_ESP+16));
+                } else  if(strstr(s, "glTexCoord2f")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%f, %f)", tid, *(void**)from_ptr(R_ESP), s, *(float*)from_ptr(R_ESP+4), *(float*)from_ptr(R_ESP+8));
+                } else  if(strstr(s, "glVertex2f")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%f, %f)", tid, *(void**)from_ptr(R_ESP), s, *(float*)from_ptr(R_ESP+4), *(float*)from_ptr(R_ESP+8));
+                } else  if(strstr(s, "glVertex3f")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%f, %f, %f)", tid, *(void**)from_ptr(R_ESP), s, *(float*)from_ptr(R_ESP+4), *(float*)from_ptr(R_ESP+8), *(float*)from_ptr(R_ESP+12));
+                } else  if(strstr(s, "__open64")==s || strcmp(s, "open64")==0) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", %d, %d)", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), *(int*)from_ptr(R_ESP+8), *(int*)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(!strcmp(s, "opendir")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)));
+                    perr = 1;
+                } else  if(strstr(s, "__open")==s || !strcmp(s, "open") || !strcmp(s, "my_open64")) {
+                    tmp = from_ptrv(*(ptr_t*)from_ptr(R_ESP+4));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", %d (,%d))", tid, *(void**)from_ptr(R_ESP), s, (tmp)?tmp:"(nil)", *(int*)from_ptr(R_ESP+8), *(int*)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(!strcmp(s, "shm_open")) {
+                    tmp = from_ptrv(*(ptr_t*)from_ptr(R_ESP+4));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", %d, %d)", tid, *(void**)from_ptr(R_ESP), s, (tmp)?tmp:"(nil)", *(int*)from_ptr(R_ESP+8), *(int*)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(strcmp(s, "mkdir")==0) {
+                    tmp = from_ptrv(*(ptr_t*)from_ptr(R_ESP+4));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", %d)", tid, *(void**)from_ptr(R_ESP), s, (tmp)?tmp:"(nil)", *(int*)from_ptr(R_ESP+8));
+                    perr = 1;
+                } else  if(!strcmp(s, "fopen")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", \"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                    perr = 2;
+                } else  if(!strcmp(s, "freopen")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", \"%s\", %p)", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), *(void**)from_ptr(R_ESP+12));
+                    perr = 2;
+                } else  if(!strcmp(s, "fopen64")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", \"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                    perr = 2;
+                } else  if(!strcmp(s, "chdir")) {
+                    pu32=*(uint32_t**)from_ptr(R_ESP+4);
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)from_ptr(R_ESP), s, pu32?((pu32==(uint32_t*)1)?"/1/":(char*)pu32):"/0/");
+                } else  if(strstr(s, "getenv")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)));
+                    post = 2;
+                } else  if(strstr(s, "putenv")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)));
+                } else  if(strstr(s, "pread")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p, %u, %d)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), *(void**)from_ptr(R_ESP+8), *(uint32_t*)from_ptr(R_ESP+12), *(int32_t*)from_ptr(R_ESP+16));
+                    perr = 1;
+                } else  if(!strcmp(s, "read")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p, %u)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), *(void**)from_ptr(R_ESP+8), *(uint32_t*)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(strstr(s, "ioctl")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, 0x%x, %p)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), *(int32_t*)from_ptr(R_ESP+8), *(void**)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(strstr(s, "statvfs64")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p(\"%s\"), %p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), *(void**)from_ptr(R_ESP+8));
+                } else  if(strstr(s, "index")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p(\"%s\"), %i(%c))", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), *(int32_t*)from_ptr(R_ESP+8), *(int32_t*)from_ptr(R_ESP+8));
+                } else  if(strstr(s, "rindex")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p(\"%s\"), %i(%c))", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), *(int32_t*)from_ptr(R_ESP+8), *(int32_t*)from_ptr(R_ESP+8));
+                } else  if(strstr(s, "__xstat64")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p(\"%s\"), %p)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), *(void**)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(strcmp(s, "__xstat")==0) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p(\"%s\"), %p)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), *(void**)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(strstr(s, "__lxstat64")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p(\"%s\"), %p)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), *(void**)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(strstr(s, "sem_timedwait")==s) {
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+8));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, %p[%d sec %d ns])", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(void**)from_ptr(R_ESP+8), pu32?pu32[0]:-1, pu32?pu32[1]:-1);
+                    perr = 1;
+                } else  if(strstr(s, "waitpid")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p, 0x%x)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), *(void**)from_ptr(R_ESP+8), *(uint32_t*)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(strstr(s, "clock_gettime")==s || strstr(s, "__clock_gettime")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p)", tid, *(void**)from_ptr(R_ESP), s, *(uint32_t*)from_ptr(R_ESP+4), *(void**)from_ptr(R_ESP+8));
+                    post = 1;
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+8));
+                } else  if(strstr(s, "semop")==s) {
+                    int16_t* p16 = *(int16_t**)from_ptr(R_ESP+8);
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p[%u/%d/0x%x], %d)", tid, *(void**)from_ptr(R_ESP), s, *(int*)from_ptr(R_ESP+4), p16, p16[0], p16[1], p16[2], *(int*)from_ptr(R_ESP+12));
+                    perr = 1;
+                } else  if(!strcmp(s, "mmap64")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, 0x%x, %d, 0x%x, %d, %ld)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(ulong_t*)from_ptr(R_ESP+8), *(int*)from_ptr(R_ESP+12), *(int*)from_ptr(R_ESP+16), *(int*)from_ptr(R_ESP+20), *(int64_t*)from_ptr(R_ESP+24));
+                    perr = 3;
+                } else  if(!strcmp(s, "mmap")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, 0x%x, %d, 0x%x, %d, %d)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(ulong_t*)from_ptr(R_ESP+8), *(int*)from_ptr(R_ESP+12), *(int*)from_ptr(R_ESP+16), *(int*)from_ptr(R_ESP+20), *(int*)from_ptr(R_ESP+24));
+                    perr = 3;
+                } else  if(strstr(s, "strcasecmp")==s || strstr(s, "__strcasecmp")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", \"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(strstr(s, "gtk_signal_connect_full")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, \"%s\", %p, %p, %p, %p, %d, %d)", tid, *(void**)from_ptr(R_ESP), "gtk_signal_connect_full", *(void**)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), *(void**)from_ptr(R_ESP+12), *(void**)from_ptr(R_ESP+16), *(void**)from_ptr(R_ESP+20), *(void**)from_ptr(R_ESP+24), *(int32_t*)from_ptr(R_ESP+28), *(int32_t*)from_ptr(R_ESP+32));
+                } else  if(strstr(s, "strcmp")==s || strstr(s, "__strcmp")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", \"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(strstr(s, "strstr")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%.127s\", \"%.127s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(strstr(s, "strlen")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p(\"%s\"))", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), ((R_ESP+4))?((char*)from_ptrv(*(ptr_t*)from_ptr(R_ESP+4))):"nil");
+                } else  if(strstr(s, "vsnprintf")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%08X, %u, %08X...)", tid, *(void**)from_ptr(R_ESP), s, *(uint32_t*)from_ptr(R_ESP+4), *(uint32_t*)from_ptr(R_ESP+8), *(uint32_t*)from_ptr(R_ESP+12));
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    post = 3;
+                } else  if(strstr(s, "vsprintf")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, \"%s\", %p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)), *(void**)from_ptr(R_ESP+12));
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    post = 3;
+                } else  if(strstr(s, "__vsprintf_chk")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, %d, %zu, \"%s\", %p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(int*)from_ptr(R_ESP+8), *(size_t*)from_ptr(R_ESP+12), from_ptrv(*(ptr_t*)from_ptr(R_ESP+16)), *(void**)from_ptr(R_ESP+20));
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    post = 3;
+                } else  if(strstr(s, "__snprintf_chk")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, %zu, %d, %d, \"%s\", %p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(size_t*)from_ptr(R_ESP+8), *(int*)from_ptr(R_ESP+12), *(int*)from_ptr(R_ESP+16), from_ptrv(*(ptr_t*)from_ptr(R_ESP+20)), *(void**)from_ptr(R_ESP+24));
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    post = 3;
+                } else  if(strstr(s, "snprintf")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, %zu, \"%s\", ...)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(size_t*)from_ptr(R_ESP+8), from_ptrv(*(ptr_t*)from_ptr(R_ESP+12)));
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    post = 3;
+                } else  if(strstr(s, "sprintf")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%08X, %08X...)", tid, *(void**)from_ptr(R_ESP), s, *(uint32_t*)from_ptr(R_ESP+4), *(uint32_t*)from_ptr(R_ESP+8));
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    post = 3;
+                } else  if(strstr(s, "printf")==s) {
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    if(((uintptr_t)pu32)<0x5) // probably a _chk function
+                        pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+8));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\"...)", tid, *(void**)from_ptr(R_ESP), s, pu32?((char*)(pu32)):"nil");
+                } else  if(strstr(s, "__printf_chk")==s) {
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+8));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, \"%s\", ...)", tid, *(void**)from_ptr(R_ESP), s, from_ptri(int, R_ESP+4), pu32?((char*)(pu32)):"nil");
+                } else  if(strstr(s, "wprintf")==s) {
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                    if(((uintptr_t)pu32)<0x5) // probably a _chk function
+                        pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+8));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%S\"...)", tid, *(void**)from_ptr(R_ESP), s, pu32?((wchar_t*)(pu32)):L"nil");
+                } else  if(strstr(s, "__vswprintf")==s) {
+                    if(*(size_t*)from_ptr(R_ESP+12)<2) {
+                        snprintf(buff, 255, "%04d|%p: Calling %s(%p, %u, %p, %p, %p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(ulong_t*)from_ptr(R_ESP+8), *(void**)from_ptr(R_ESP+12), *(void**)from_ptr(R_ESP+16), *(void**)from_ptr(R_ESP+20));
+                    } else {
+                        snprintf(buff, 255, "%04d|%p: Calling %s(%p, %u, \"%S\", %p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(ulong_t*)from_ptr(R_ESP+8), *(wchar_t**)from_ptr(R_ESP+12), *(void**)from_ptr(R_ESP+16));
+                        pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+4));
+                        post = 6;
+                    }
+                } else  if(strstr(s, "puts")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\"...)", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)));
+                } else  if(strstr(s, "fputs")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", %p...)", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), *(void**)from_ptr(R_ESP+8));
+                } else  if(strstr(s, "fprintf")==s) {
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+8));
+                    if(((uintptr_t)pu32)<0x5) // probably a __fprint_chk
+                        pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+12));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%08X, \"%s\", ...)", tid, *(void**)from_ptr(R_ESP), s, *(uint32_t*)from_ptr(R_ESP+4), pu32?((char*)(pu32)):"nil");
+                } else  if(strstr(s, "vfprintf")==s) {
+                    pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+8));
+                    if(((uintptr_t)pu32)<0x5) // probably a _chk function
+                        pu32 = (uint32_t*)from_ptr(*(ptr_t*)from_ptr(R_ESP+12));
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%08X, \"%s\", ...)", tid, *(void**)from_ptr(R_ESP), s, *(uint32_t*)from_ptr(R_ESP+4), pu32?((char*)(pu32)):"nil");
+                } else  if(strstr(s, "vkGetInstanceProcAddr")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, \"%s\")", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(strstr(s, "vkGetDeviceProcAddr")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, \"%s\")", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(strstr(s, "glXGetProcAddress")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\")", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)));
+                } else  if(strstr(s, "sscanf")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", \"%s\", ...)", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(!strcmp(s, "vsscanf")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(\"%s\", \"%s\", ...)", tid, *(void**)from_ptr(R_ESP), s, from_ptrv(*(ptr_t*)from_ptr(R_ESP+4)), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else if(strstr(s, "XCreateWindow")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, %p, %d, %d, %u, %u, %u, %d, %u, %p, %u, %p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), *(void**)from_ptr(R_ESP+8), *(int*)from_ptr(R_ESP+12), *(int*)from_ptr(R_ESP+16), *(uint32_t*)from_ptr(R_ESP+20), *(uint32_t*)from_ptr(R_ESP+24), *(uint32_t*)from_ptr(R_ESP+28), *(int32_t*)from_ptr(R_ESP+32), *(uint32_t*)from_ptr(R_ESP+36), *(void**)from_ptr(R_ESP+40), *(uint32_t*)from_ptr(R_ESP+44), *(void**)from_ptr(R_ESP+48));
+                } else if(strstr(s, "XLoadQueryFont")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, \"%s\")", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else if(strstr(s, "pthread_mutex_lock")==s) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4));
+                } else if(!strcmp(s, "fmodf")) {
+                    post = 4;
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%f, %f)", tid, *(void**)from_ptr(R_ESP), s, *(float*)from_ptr(R_ESP+4), *(float*)from_ptr(R_ESP+8));
+                } else if(!strcmp(s, "fmod")) {
+                    post = 4;
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%f, %f)", tid, *(void**)from_ptr(R_ESP), s, *(double*)from_ptr(R_ESP+4), *(double*)from_ptr(R_ESP+12));
+                } else if(strstr(s, "SDL_GetWindowSurface")==s) {
+                    post = 5;
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p)", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4));
+                } else if(strstr(s, "udev_monitor_new_from_netlink")==s) {
+                    post = 5;
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%p, \"%s\")", tid, *(void**)from_ptr(R_ESP), s, *(void**)from_ptr(R_ESP+4), from_ptrv(*(ptr_t*)from_ptr(R_ESP+8)));
+                } else  if(!strcmp(s, "syscall")) {
+                    snprintf(buff, 255, "%04d|%p: Calling %s(%d, %p, %p, %p...)", tid, *(void**)from_ptr(R_ESP), s, *(int32_t*)from_ptr(R_ESP+4), *(void**)from_ptr(R_ESP+8), *(void**)from_ptr(R_ESP+12), *(void**)from_ptr(R_ESP+16));
+                    perr = 1;
+                } else {
+                    snprintf(buff, 255, "%04d|%p: Calling %s (%08X, %08X, %08X...)", tid, *(void**)from_ptr(R_ESP), s, *(uint32_t*)from_ptr(R_ESP+4), *(uint32_t*)from_ptr(R_ESP+8), *(uint32_t*)from_ptr(R_ESP+12));
+                }
+                if(!cycle_log) {
+                    mutex_lock(&emu->context->mutex_trace);
+                    printf_log(LOG_NONE, "%s =>", buff);
+                    mutex_unlock(&emu->context->mutex_trace);
+                }
+                w(emu, a);   // some function never come back, so unlock the mutex first!
+                if(post)
+                    switch(post) {
+                    case 1: snprintf(buff2, 63, " [%d sec %d nsec]", pu32?pu32[0]:-1, pu32?pu32[1]:-1);
+                            break;
+                    case 2: snprintf(buff2, 63, "(%s)", R_EAX?((char*)from_ptr(R_EAX)):"nil");
+                            break;
+                    case 3: snprintf(buff2, 63, "(%s)", pu32?((char*)pu32):"nil");
+                            break;
+                    case 4: snprintf(buff2, 63, " (%f)", ST0.d);
+                            break;
+                    case 5: {
+                            uint32_t* p = (uint32_t*)from_ptrv(R_EAX);
+                            if(p)
+                                snprintf(buff2, 63, " size=%dx%d, pitch=%d, pixels=%p", p[2], p[3], p[4], p+5);
+                            else
+                                snprintf(buff2, 63, "NULL Surface");
+                            }
+                            break;
+                    case 6: snprintf(buff2, 63, "(%S)", pu32?((wchar_t*)pu32):L"nil");
+                            break;
+                }
+                if(perr==1 && ((int)R_EAX)<0)
+                    snprintf(buff3, 63, " (errno=%d:\"%s\")", errno, strerror(errno));
+                else if(perr==2 && R_EAX==0)
+                    snprintf(buff3, 63, " (errno=%d:\"%s\")", errno, strerror(errno));
+                else if(perr==3 && ((int)R_EAX)==-1)
+                    snprintf(buff3, 63, " (errno=%d:\"%s\")", errno, strerror(errno));
+                if(cycle_log)
+                    snprintf(buffret, 128, "0x%lX%s%s", R_RAX, buff2, buff3);
+                else {
+                    mutex_lock(&emu->context->mutex_trace);
+                    printf_log(LOG_NONE, " return 0x%lX%s%s\n", R_RAX, buff2, buff3);
+                    mutex_unlock(&emu->context->mutex_trace);
+                }
+            } else
+                w(emu, a);
+        }
+        return;
+    }
+    if(!box64_ignoreint3 && my_context->signals[SIGTRAP]) {
+        R_RIP = *addr;  // update RIP
+        emit_signal(emu, SIGTRAP, NULL, 3);
+    } else {
+        printf_log(LOG_DEBUG, "%04d|Warning, ignoring unsupported Int 3 call @%p\n", GetTID(), (void*)R_RIP);
+        R_RIP = *addr;
+    }
+    //emu->quit = 1;
+}
diff --git a/src/emu/x86syscall.c b/src/emu/x86syscall.c
index 1d28a989..5a76a505 100755
--- a/src/emu/x86syscall.c
+++ b/src/emu/x86syscall.c
@@ -266,7 +266,7 @@ void EXPORT x86Syscall(x64emu_t *emu)
             R_EAX = R_EBX; // faking the syscall here, we don't want to really terminate the thread now
             break;
         /*case 123:   // SYS_modify_ldt
-            R_EAX = my_modify_ldt(emu, R_EBX, (thread_area_t*)(uintptr_t)R_ECX, R_EDX);
+            R_EAX = my32_modify_ldt(emu, R_EBX, (thread_area_t*)(uintptr_t)R_ECX, R_EDX);
             if(R_EAX==0xffffffff && errno>0)
                 R_EAX = (uint32_t)-errno;
             break;*/
diff --git a/src/emu/x86syscall_32.c b/src/emu/x86syscall_32.c
new file mode 100644
index 00000000..cae7b40b
--- /dev/null
+++ b/src/emu/x86syscall_32.c
@@ -0,0 +1,447 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <sys/syscall.h>   /* For SYS_xxx definitions */
+#include <unistd.h>
+#include <time.h>
+#include <sys/mman.h>
+#include <sys/select.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <asm/stat.h>
+#include <errno.h>
+#include <sched.h>
+#include <sys/wait.h>
+#include <sys/utsname.h>
+#ifndef __NR_socketcall
+#include <linux/net.h>
+#include <sys/socket.h>
+#endif
+#include <sys/resource.h>
+#include <poll.h>
+
+#include "debug.h"
+#include "box64stack.h"
+#include "x64emu.h"
+#include "x64run.h"
+#include "x64emu_private.h"
+#include "x64trace.h"
+#include "myalign32.h"
+#include "box64context.h"
+#include "callback.h"
+#include "signals.h"
+#include "x64tls.h"
+#include "box32.h"
+
+
+// Syscall table for x86_64 can be found 
+typedef struct scwrap_s {
+    uint32_t x86s;
+    int nats;
+    int nbpars;
+} scwrap_t;
+
+static const scwrap_t syscallwrap[] = {
+    //{ 2, __NR_fork, 1 },  
+    //{ 3, __NR_read, 3 },  // wrapped so SA_RESTART can be handled by libc
+    //{ 4, __NR_write, 3 }, // same
+    //{ 5, __NR_open, 3 },  // flags need transformation
+    //{ 6, __NR_close, 1 },   // wrapped so SA_RESTART can be handled by libc
+    //{ 7, __NR_waitpid, 3 },
+    //{ 10, __NR_unlink, 1 },
+    //{ 12, __NR_chdir, 1 },
+    //{ 13, __NR_time, 1 },
+    //{ 15, __NR_chmod, 2 },
+    //{ 19, __NR_lseek, 3 },
+    //{ 20, __NR_getpid, 0 },
+    //{ 24, __NR_getuid, 0 },
+    //{ 33, __NR_access, 2 },
+    //{ 37, __NR_kill, 2 },
+    //{ 38, __NR_rename, 2 },
+    //{ 39, __NR_mkdir, 2 },
+    //{ 40, __NR_rmdir, 1 },
+    //{ 41, __NR_dup, 1 },
+    //{ 42, __NR_pipe, 1 },
+    //{ 45, __NR_brk, 1 },
+    //{ 47, __NR_getgid, 0 },
+    //{ 49, __NR_geteuid, 0 },
+    //{ 50, __NR_getegid, 0 },
+    //{ 54, __NR_ioctl, 3 },    // should be wrapped to allow SA_RESTART handling by libc, but syscall is only 3 arguments, ioctl can be 5
+    //{ 55, __NR_fcntl, 3 },    // wrapped to allow filter of F_SETFD
+    //{ 60, __NR_umask, 1 },
+    //{ 63, __NR_dup2, 2 },
+    //{ 64, __NR_getppid, 0 },
+    //{ 66, __NR_setsid, 0 },
+    //{ 75, __NR_setrlimit, 2 },
+    //{ 76, __NR_getrlimit, 2 },
+    //{ 77, __NR_getrusage, 2 },
+    //{ 78, __NR_gettimeofday, 2 },
+    //{ 83, __NR_symlink, 2 },
+    //{ 82, __NR_select, 5 },
+    //{ 85, __NR_readlink, 3 },
+    //{ 91, __NR_munmap, 2 },
+    //{ 94, __NR_fchmod, 2 },
+    //{ 99, __NR_statfs, 2 },
+    //{ 102, __NR_socketcall, 2 },
+    //{ 104, __NR_setitimer, 3 },
+    //{ 105, __NR_getitimer, 2 },
+    //{ 106, __NR_newstat, 2 },
+    //{ 106, __NR_stat, 2 },
+    //{ 107, __NR_newlstat, 2 },
+    //{ 107, __NR_lstat, 2 },
+    //{ 108, __NR_newfstat, 2 },
+    //{ 108, __NR_fstat, 2 },
+    //{ 109, __NR_olduname, 1 },
+    //{ 110, __NR_iopl, 1 },
+    //{ 114, __NR_wait4, 4 }, //TODO: check struct rusage alignment
+    //{ 117, __NR_ipc, 6 },
+    //{ 119, __NR_sigreturn, 0},
+    //{ 120, __NR_clone, 5 },    // need works
+    //{ 122, __NR_uname, 1 },
+    //{ 123, __NR_modify_ldt },
+    //{ 125, __NR_mprotect, 3 },
+    //{ 136, __NR_personality, 1 },
+    //{ 140, __NR__llseek, 5 },
+    //{ 141, __NR_getdents, 3 },
+    //{ 142, __NR__newselect, 5 },
+    //{ 143, __NR_flock,  2 },
+    //{ 144, __NR_msync, 3 },
+    //{ 145, __NR_readv, 3 },
+    //{ 146, __NR_writev, 3 },
+    //{ 148, __NR_fdatasync, 1 },
+    //{ 149, __NR__sysctl, 1 },    // need wrapping?
+    //{ 156, __NR_sched_setscheduler, 3 },
+    //{ 157, __NR_sched_getscheduler, 1 },
+    //{ 158, __NR_sched_yield, 0 },
+    //{ 162, __NR_nanosleep, 2 },
+    //{ 164, __NR_setresuid, 3 },
+    //{ 168, __NR_poll, 3 },    // wrapped to allow SA_RESTART wrapping by libc
+    //{ 172, __NR_prctl, 5 },
+    //{ 173, __NR_rt_sigreturn, 0 },
+    //{ 175, __NR_rt_sigprocmask, 4 },
+    //{ 179, __NR_rt_sigsuspend, 2 },
+    //{ 183, __NR_getcwd, 2 },
+    //{ 184, __NR_capget, 2},
+    //{ 185, __NR_capset, 2},
+    //{ 186, __NR_sigaltstack, 2 },    // neeed wrap or something?
+    //{ 191, __NR_ugetrlimit, 2 },
+//    { 192, __NR_mmap2, 6},
+    //{ 195, __NR_stat64, 2 },  // need proprer wrap because of structure size change
+    //{ 196, __NR_lstat64, 2 }, // need proprer wrap because of structure size change
+    //{ 197, __NR_fstat64, 2 },  // need proprer wrap because of structure size change
+    //{ 199, __NR_getuid32, 0 },
+    //{ 200, __NR_getgid32, 0 },
+    //{ 201, __NR_geteuid32, 0 },
+    //{ 202, __NR_getegid32, 0 },
+    //{ 208, __NR_setresuid32, 3 },
+    //{ 209, __NR_getresuid32, 3 },
+    //{ 210, __NR_setresgid32, 3 },
+    //{ 211, __NR_getresgid32, 3 },
+    //{ 220, __NR_getdents64, 3 },
+    //{ 221, __NR_fcntl64, 3 },
+    { 224, __NR_gettid, 0 },
+    //{ 240, __NR_futex, 6 },
+    //{ 241, __NR_sched_setaffinity, 3 },
+    //{ 242, __NR_sched_getaffinity, 3 },
+    //{ 252, __NR_exit_group, 1 },
+    //{ 254, __NR_epoll_create, 1 },
+    //{ 255, __NR_epoll_ctl, 4 },
+    //{ 256, __NR_epoll_wait, 4 },
+    //{ 265, __NR_clock_gettime, 2 },
+    //{ 266, __NR_clock_getres, 2 },
+    //{ 270, __NR_tgkill, 3 },
+    //{ 271, __NR_utimes, 2 },
+    //{ 291, __NR_inotify_init, 0},
+    //{ 292, __NR_inotify_add_watch, 3},
+    //{ 293, __NR_inotify_rm_watch, 2},
+    //{ 311, __NR_set_robust_list, 2 },
+    //{ 312, __NR_get_robust_list, 4 },
+    //{ 318, __NR_getcpu, 3},
+    //{ 328, __NR_eventfd2, 2},
+    //{ 329, __NR_epoll_create1, 1 },
+    //{ 331, __NR_pipe2, 2},
+    //{ 332, __NR_inotify_init1, 1},
+    //{ 355, __NR_getrandom, 3 },
+    //{ 356, __NR_memfd_create, 2},
+    //{ 449, __NR_futex_waitv, 5},
+};
+
+struct mmap_arg_struct {
+    unsigned long addr;
+    unsigned long len;
+    unsigned long prot;
+    unsigned long flags;
+    unsigned long fd;
+    unsigned long offset;
+};
+
+#undef st_atime
+#undef st_ctime
+#undef st_mtime
+
+struct x64_pt_regs {
+    long ebx;
+    long ecx;
+    long edx;
+    long esi;
+    long edi;
+    long ebp;
+    long eax;
+    int  xds;
+    int  xes;
+    int  xfs;
+    int  xgs;
+    long orig_eax;
+    long eip;
+    int  xcs;
+    long eflags;
+    long esp;
+    int  xss;
+};
+
+#ifndef __NR_olduname
+struct oldold_utsname {
+        char sysname[9];
+        char nodename[9];
+        char release[9];
+        char version[9];
+        char machine[9];
+};
+#endif
+struct old_utsname {
+        char sysname[65];
+        char nodename[65];
+        char release[65];
+        char version[65];
+        char machine[65];
+};
+
+struct i386_user_desc {
+    unsigned int  entry_number;
+    unsigned long base_addr;
+    unsigned int  limit;
+    unsigned int  seg_32bit:1;
+    unsigned int  contents:2;
+    unsigned int  read_exec_only:1;
+    unsigned int  limit_in_pages:1;
+    unsigned int  seg_not_present:1;
+    unsigned int  useable:1;
+};
+
+int32_t my32_open(x64emu_t* emu, void* pathname, int32_t flags, uint32_t mode);
+int32_t my32_execve(x64emu_t* emu, const char* path, char* const argv[], char* const envp[]);
+int my32_munmap(x64emu_t* emu, void* addr, unsigned long length);
+
+void EXPORT x86Syscall(x64emu_t *emu)
+{
+    uint32_t s = R_EAX;
+    printf_log(LOG_DEBUG, "%p: Calling 32bits syscall 0x%02X (%d) %p %p %p %p %p", (void*)R_RIP, s, s, (void*)(uintptr_t)R_EBX, (void*)(uintptr_t)R_ECX, (void*)(uintptr_t)R_EDX, (void*)(uintptr_t)R_ESI, (void*)(uintptr_t)R_EDI); 
+    // check wrapper first
+    int cnt = sizeof(syscallwrap) / sizeof(scwrap_t);
+    for (int i=0; i<cnt; i++) {
+        if(syscallwrap[i].x86s == s) {
+            int sc = syscallwrap[i].nats;
+            switch(syscallwrap[i].nbpars) {
+                case 0: *(int32_t*)&R_EAX = syscall(sc); break;
+                case 1: *(int32_t*)&R_EAX = syscall(sc, R_EBX); break;
+                case 2: *(int32_t*)&R_EAX = syscall(sc, R_EBX, R_ECX); break;
+                case 3: *(int32_t*)&R_EAX = syscall(sc, R_EBX, R_ECX, R_EDX); break;
+                case 4: *(int32_t*)&R_EAX = syscall(sc, R_EBX, R_ECX, R_EDX, R_ESI); break;
+                case 5: *(int32_t*)&R_EAX = syscall(sc, R_EBX, R_ECX, R_EDX, R_ESI, R_EDI); break;
+                case 6: *(int32_t*)&R_EAX = syscall(sc, R_EBX, R_ECX, R_EDX, R_ESI, R_EDI, R_EBP); break;
+                default:
+                   printf_log(LOG_NONE, "ERROR, Unimplemented syscall wrapper (%d, %d)\n", s, syscallwrap[i].nbpars); 
+                   emu->quit = 1;
+                   return;
+            }
+            if(R_EAX==0xffffffff && errno>0)
+                R_EAX = (uint32_t)-errno;
+            printf_log(LOG_DEBUG, " => 0x%x\n", R_EAX);
+            return;
+        }
+    }
+    switch (s) {
+        case 1: // sys_exit
+            emu->quit = 1;
+            emu->exit = 1;
+            //R_EAX = syscall(__NR_exit, R_EBX);  // the syscall should exit only current thread
+            R_EAX = R_EBX; // faking the syscall here, we don't want to really terminate the thread now
+            break;
+        case 3:  // sys_read
+            S_EAX = read((int)R_EBX, from_ptrv(R_ECX), from_ulong(R_EDX));
+            break;
+        case 4:  // sys_write
+            S_EAX = write((int)R_EBX, from_ptrv(R_ECX), from_ulong(R_EDX));
+            break;
+        case 5: // sys_open
+            if(s==5) {printf_log(LOG_DEBUG, " => sys_open(\"%s\", %d, %d)", (char*)from_ptrv(R_EBX), of_convert32(R_ECX), R_EDX);}; 
+            //S_EAX = open((void*)R_EBX, of_convert32(R_ECX), R_EDX);
+            S_EAX = my32_open(emu, from_ptrv(R_EBX), of_convert32(R_ECX), R_EDX);
+            break;
+        case 6:  // sys_close
+            S_EAX = close((int)R_EBX);
+            break;
+        /*case 123:   // SYS_modify_ldt
+            R_EAX = my32_modify_ldt(emu, R_EBX, (thread_area_t*)(uintptr_t)R_ECX, R_EDX);
+            if(R_EAX==0xffffffff && errno>0)
+                R_EAX = (uint32_t)-errno;
+            break;*/
+        case 243: // set_thread_area
+            R_EAX = my_set_thread_area_32(emu, (thread_area_32_t*)(uintptr_t)R_EBX);
+            if(R_EAX==0xffffffff && errno>0)
+                R_EAX = (uint32_t)-errno;
+            break;
+        default:
+            printf_log(LOG_INFO, "Warning: Unsupported Syscall 0x%02Xh (%d)\n", s, s);
+            R_EAX = (uint32_t)-ENOSYS;
+            return;
+    }
+    printf_log(LOG_DEBUG, " => 0x%x\n", R_EAX);
+}
+
+#ifdef BOX32
+#define stack(n) (b[(n)/4])
+#define i32(n)  (int32_t)stack(n)
+#define u32(n)  (uint32_t)stack(n)
+#define p(n)    from_ptrv(stack(n))
+
+uint32_t EXPORT my32_syscall(x64emu_t *emu, ptr_t* b)
+{
+    static uint32_t warned = 0;
+    uint32_t s = u32(0);
+    printf_log(LOG_DEBUG, "%p: Calling libc syscall 0x%02X (%d) %p %p %p %p %p\n", from_ptrv(R_EIP), s, s, from_ptrv(u32(4)), from_ptrv(u32(8)), from_ptrv(u32(12)), from_ptrv(u32(16)), from_ptrv(u32(20))); 
+    // check wrapper first
+    int cnt = sizeof(syscallwrap) / sizeof(scwrap_t);
+    for (int i=0; i<cnt; i++) {
+        if(syscallwrap[i].x86s == s) {
+            int sc = syscallwrap[i].nats;
+            switch(syscallwrap[i].nbpars) {
+                case 0: return syscall(sc);
+                case 1: return syscall(sc, u32(4));
+                case 2: return syscall(sc, u32(4), u32(8));
+                case 3: return syscall(sc, u32(4), u32(8), u32(12));
+                case 4: return syscall(sc, u32(4), u32(8), u32(12), u32(16));
+                case 5: return syscall(sc, u32(4), u32(8), u32(12), u32(16), u32(20));
+                case 6: return syscall(sc, u32(4), u32(8), u32(12), u32(16), u32(20), u32(24));
+                default:
+                   printf_log(LOG_NONE, "ERROR, Unimplemented syscall wrapper (%d, %d)\n", s, syscallwrap[i].nbpars); 
+                   emu->quit = 1;
+                   return 0;
+            }
+        }
+    }
+    switch (s) {
+        case 1: // __NR_exit
+            emu->quit = 1;
+            return u32(4); // faking the syscall here, we don't want to really terminate the program now
+        case 3:  // sys_read
+            return (uint32_t)read(i32(4), p(8), u32(12));
+        case 4:  // sys_write
+            return (uint32_t)write(i32(4), p(8), u32(12));
+        case 5: // sys_open
+            return my32_open(emu, p(4), of_convert32(u32(8)), u32(12));
+        case 6:  // sys_close
+            return (uint32_t)close(i32(4));
+        case 11: // execve
+            return (uint32_t)my32_execve(emu, p(4), p(8), p(12));
+        case 91:   // munmap
+            return (uint32_t)my32_munmap(emu, p(4), u32(8));
+#if 0
+        case 120:   // clone
+            // x86 raw syscall is long clone(unsigned long flags, void *stack, int *parent_tid, unsigned long tls, int *child_tid);
+            // so flags=u(4), stack=p(8), parent_tid=p(12), tls=p(16), child_tid=p(20)
+            if(p(8))
+            {
+                void* stack_base = p(8);
+                int stack_size = 0;
+                if(!stack_base) {
+                    // allocate a new stack...
+                    int currstack = 0;
+                    if((R_ESP>=(uintptr_t)emu->init_stack) && (R_ESP<=((uintptr_t)emu->init_stack+emu->size_stack)))
+                        currstack = 1;
+                    stack_size = (currstack)?emu->size_stack:(1024*1024);
+                    stack_base = mmap(NULL, stack_size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0);
+                    // copy value from old stack to new stack
+                    if(currstack)
+                        memcpy(stack_base, emu->init_stack, stack_size);
+                    else {
+                        int size_to_copy = (uintptr_t)emu->init_stack + emu->size_stack - (R_ESP);
+                        memcpy(stack_base+stack_size-size_to_copy, (void*)R_ESP, size_to_copy);
+                    }
+                }
+                x64emu_t * newemu = NewX86Emu(emu->context, R_EIP, (uintptr_t)stack_base, stack_size, (p(8))?0:1);
+                SetupX86Emu(newemu);
+                CloneEmu(newemu, emu);
+                Push32(newemu, 0);
+                PushExit(newemu);
+                void* mystack = NULL;
+                if(my32_context->stack_clone_used) {
+                    mystack = malloc(1024*1024);  // stack for own process... memory leak, but no practical way to remove it
+                } else {
+                    if(!my32_context->stack_clone)
+                        my32_context->stack_clone = malloc(1024*1024);
+                    mystack = my32_context->stack_clone;
+                    my32_context->stack_clone_used = 1;
+                }
+                // x86_64 raw clone is long clone(unsigned long flags, void *stack, int *parent_tid, int *child_tid, unsigned long tls);
+                long ret = clone(clone_fn, (void*)((uintptr_t)mystack+1024*1024), u32(4), newemu, p(12), p(16), p(20));
+                return (uint32_t)ret;
+            }
+            else
+                return (uint32_t)syscall(__NR_clone, u32(4), p(8), p(12), p(16), p(20));
+            break;
+        case 123:   // SYS_modify_ldt
+            return my32_modify_ldt(emu, i32(4), (thread_area_t*)p(8), i32(12));
+        case 125:   // mprotect
+            return (uint32_t)my32_mprotect(emu, p(4), u32(8), i32(12));
+        case 174:   // sys_rt_sigaction
+            return (uint32_t)my32_sigaction(emu, i32(4), (x86_sigaction_t*)p(8), (x86_sigaction_t*)p(12));
+        case 192:   // mmap2
+            return (uint32_t)my32_mmap64(emu, p(4), u32(8), i32(12), i32(16), i32(20), u32(24));
+        case 243: // set_thread_area
+            return my32_set_thread_area((thread_area_t*)p(4));
+#ifndef NOALIGN
+        case 254: // epoll_create
+            return my32_epoll_create(emu, i32(4));
+        case 255: // epoll_ctl
+            return my32_epoll_ctl(emu, i32(4), i32(8), i32(12), p(16));
+        case 256: // epoll_wait
+            return my32_epoll_wait(emu, i32(4), p(8), i32(12), i32(16));
+#endif
+        case 270: //_NR_tgkill
+            /*if(!u32(12))*/ {
+                //printf("tgkill(%u, %u, %u) => ", u32(4), u32(8), u32(12));
+                uint32_t ret = (uint32_t)syscall(__NR_tgkill, u32(4), u32(8), u32(12));
+                //printf("%u (errno=%d)\n", ret, (ret==(uint32_t)-1)?errno:0);
+                return ret;
+            }/* else {
+                printf_log(LOG_INFO, "Warning: ignoring libc Syscall tgkill (%u, %u, %u)\n", u32(4), u32(8), u32(12));
+            }*/
+            return 0;
+#ifndef NOALIGN
+        case 329:   // epoll_create1
+            return my32_epoll_create1(emu, of_convert32(i32(4)));
+#endif
+#ifndef __NR_getrandom
+        case 355:  // getrandom
+            return (uint32_t)my32_getrandom(emu, p(4), u32(8), u32(12));
+#endif
+#ifndef __NR_memfd_create
+        case 356:  // memfd_create
+            return (uint32_t)my32_memfd_create(emu, (void*)R_EBX, R_ECX);
+#endif
+#endif
+        default:
+            if(!(warned&(1<<s))) {
+                printf_log(LOG_INFO, "Warning: Unsupported libc Syscall 0x%02X (%d)\n", s, s);
+                warned|=(1<<s);
+            }
+            errno = ENOSYS;
+            return -1;
+    }
+    return 0;
+}
+#endif //BOX32
\ No newline at end of file
diff --git a/src/emu/x87emu_private.c b/src/emu/x87emu_private.c
index 92c14268..c64f49cb 100644
--- a/src/emu/x87emu_private.c
+++ b/src/emu/x87emu_private.c
@@ -295,7 +295,6 @@ void fpu_savenv(x64emu_t* emu, char* p, int b16)
     // other stuff are not pushed....
 }
 
-// this is the 64bits version (slightly different than the 32bits!)
 typedef struct xsave32_s {
     uint16_t ControlWord;        /* 000 */
     uint16_t StatusWord;         /* 002 */
@@ -311,9 +310,10 @@ typedef struct xsave32_s {
     uint32_t MxCsr;              /* 018 */
     uint32_t MxCsr_Mask;         /* 01c */
     sse_regs_t FloatRegisters[8];/* 020 */  // fpu/mmx are store in 128bits here
-    sse_regs_t XmmRegisters[16]; /* 0a0 */
-    uint8_t  Reserved4[96];      /* 1a0 */
+    sse_regs_t XmmRegisters[8];  /* 0a0 */
+    uint8_t  Reserved4[56*4];    /* 1a0 */
 } xsave32_t;
+// this is the 64bits version (slightly different than the 32bits!)
 typedef struct xsave64_s {
     uint16_t ControlWord;        /* 000 */
     uint16_t StatusWord;         /* 002 */
@@ -354,8 +354,7 @@ void fpu_fxsave32(x64emu_t* emu, void* ed)
     for(int i=0; i<8; ++i)
         memcpy(&p->FloatRegisters[i].q[0], (i<stack)?&ST(i):&emu->mmx[i], sizeof(mmx87_regs_t));
     // copy SSE regs
-    for(int i=0; i<16; ++i)
-        memcpy(&p->XmmRegisters[i], &emu->xmm[i], 16);
+    memcpy(p->XmmRegisters, emu->xmm, 8*16);
 }
 
 void fpu_fxsave64(x64emu_t* emu, void* ed)
@@ -381,8 +380,7 @@ void fpu_fxsave64(x64emu_t* emu, void* ed)
     for(int i=0; i<8; ++i)
         memcpy(&p->FloatRegisters[i].q[0], (i<stack)?&ST(i):&emu->mmx[i], sizeof(mmx87_regs_t));
     // copy SSE regs
-    for(int i=0; i<16; ++i)
-        memcpy(&p->XmmRegisters[i], &emu->xmm[i], 16);
+    memcpy(p->XmmRegisters, emu->xmm, 16*16);
 }
 
 void fpu_fxrstor32(x64emu_t* emu, void* ed)
@@ -406,8 +404,7 @@ void fpu_fxrstor32(x64emu_t* emu, void* ed)
     for(int i=0; i<8; ++i)
         memcpy((i<stack)?&ST(i):&emu->mmx[i], &p->FloatRegisters[i].q[0], sizeof(mmx87_regs_t));
     // copy SSE regs
-    for(int i=0; i<16; ++i)
-        memcpy(&emu->xmm[i], &p->XmmRegisters[i], 16);
+    memcpy(emu->xmm, p->XmmRegisters, 8*16);
 }
 
 void fpu_fxrstor64(x64emu_t* emu, void* ed)
@@ -431,8 +428,7 @@ void fpu_fxrstor64(x64emu_t* emu, void* ed)
     for(int i=0; i<8; ++i)
         memcpy((i<stack)?&ST(i):&emu->mmx[i], &p->FloatRegisters[i].q[0], sizeof(mmx87_regs_t));
     // copy SSE regs
-    for(int i=0; i<16; ++i)
-        memcpy(&emu->xmm[i], &p->XmmRegisters[i], 16);
+    memcpy(emu->xmm, p->XmmRegisters, 16*16);
 }
 
 typedef struct xsaveheader_s {
diff --git a/src/include/box32.h b/src/include/box32.h
index ab8fa184..9554e65f 100644
--- a/src/include/box32.h
+++ b/src/include/box32.h
@@ -104,9 +104,4 @@ void fini_hash_helper();
 
 typedef struct x86emu_s x86emu_t;
 
-void* my_mmap(x86emu_t* emu, void* addr, unsigned long length, int prot, int flags, int fd, int offset);
-void* my_mmap64(x86emu_t* emu, void *addr, unsigned long length, int prot, int flags, int fd, int64_t offset);
-int my_munmap(x86emu_t* emu, void* addr, unsigned long length);
-int my_mprotect(x86emu_t* emu, void *addr, unsigned long len, int prot);
-
 #endif //__BOX32_64__H_
diff --git a/src/include/box32context.h b/src/include/box32context.h
new file mode 100644
index 00000000..fac7a6f7
--- /dev/null
+++ b/src/include/box32context.h
@@ -0,0 +1,7 @@
+#ifndef __BOX32CONTEXT_H_
+#define __BOX32CONTEXT_H_
+
+#include "box32.h"
+#include "box64context.h"
+
+#endif//__BOX32CONTEXT_H_
\ No newline at end of file
diff --git a/src/include/box64context.h b/src/include/box64context.h
index b8706729..532c1aaf 100644
--- a/src/include/box64context.h
+++ b/src/include/box64context.h
@@ -7,12 +7,19 @@
 #ifdef DYNAREC
 #include "dynarec/native_lock.h"
 #endif
+#ifndef BOX32_DEF
+#define BOX32_DEF
+typedef uint32_t ptr_t;
+typedef int32_t long_t;
+typedef uint32_t ulong_t;
+#endif
 
 #ifdef DYNAREC
 // disabling for now, seems to have a negative impact on performances
 //#define USE_CUSTOM_MUTEX
 #endif
 
+
 typedef struct elfheader_s elfheader_t;
 typedef struct cleanup_s cleanup_t;
 typedef struct x64emu_s x64emu_t;
@@ -26,6 +33,7 @@ typedef struct kh_defaultversion_s kh_defaultversion_t;
 typedef struct kh_mapsymbols_s kh_mapsymbols_t;
 typedef struct library_s library_t;
 typedef struct linkmap_s linkmap_t;
+typedef struct linkmap32_s linkmap32_t;
 typedef struct kh_threadstack_s kh_threadstack_t;
 typedef struct rbtree rbtree;
 typedef struct atfork_fnc_s {
@@ -97,9 +105,11 @@ typedef struct box64context_s {
 
     int                 argc;
     char**              argv;
+    ptr_t               argv32;
 
     int                 envc;
     char**              envv;
+    ptr_t               envv32;
 
     int                 orig_argc;
     char**              orig_argv;
@@ -175,6 +185,7 @@ typedef struct box64context_s {
     library_t           *sdl2lib;
     library_t           *sdl2mixerlib;
     linkmap_t           *linkmap;
+    linkmap32_t         *linkmap32;
     void*               sdl1allocrw;    // SDL1 AllocRW/FreeRW function
     void*               sdl1freerw;
     void*               sdl2allocrw;    // SDL2 AllocRW/FreeRW function
diff --git a/src/include/debug.h b/src/include/debug.h
index e0f81c95..1ecf5b4e 100644
--- a/src/include/debug.h
+++ b/src/include/debug.h
@@ -121,7 +121,7 @@ extern int box64_x11threads;
 extern int box64_x11glx;
 extern char* box64_libGL;
 extern uintptr_t fmod_smc_start, fmod_smc_end; // to handle libfmod (from Unreal) SMC (self modifying code)
-extern uint32_t default_gs;
+extern uint32_t default_gs, default_fs;
 extern int jit_gdb; // launch gdb when a segfault is trapped
 extern int box64_tcmalloc_minimal;  // when using tcmalloc_minimal
 #define LOG_NONE 0
diff --git a/src/include/elfload_dump.h b/src/include/elfload_dump.h
index 3fa0a910..848a2817 100644
--- a/src/include/elfload_dump.h
+++ b/src/include/elfload_dump.h
@@ -26,4 +26,8 @@ void DumpRelRTable64(elfheader_t *h, int cnt, Elf64_Relr *relr, const char *name
 
 void DumpBinary(char* p, int sz);
 
+#ifndef SHT_CHECKSUM
+#define SHT_CHECKSUM 0x6ffffff8
+#endif
+
 #endif //ELFLOADER_DUMP_H
\ No newline at end of file
diff --git a/src/include/myalign32.h b/src/include/myalign32.h
new file mode 100755
index 00000000..c81ccdf6
--- /dev/null
+++ b/src/include/myalign32.h
@@ -0,0 +1,409 @@
+#ifndef __MY_ALIGN32__H_
+#define __MY_ALIGN32__H_
+#include <stdint.h>
+
+#define X64_VA_MAX_REG  (6*8)
+#define X64_VA_MAX_XMM  ((6*8)+(8*16))
+
+#define ALIGN64_16(A) (uint64_t*)((((uintptr_t)A)+15)&~15LL)
+
+#ifdef __x86_64__
+// x86_64, 6 64bits general regs and 16 or 8? 128bits float regs
+/*
+For reference, here is the x86_64 va_list structure
+typedef struct {
+   unsigned int gp_offset;
+   unsigned int fp_offset;
+   void *overflow_arg_area;
+   void *reg_save_area;
+} va_list[1];
+*/
+#define CREATE_SYSV_VALIST_32(A)          \
+  va_list sysv_varargs;                   \
+  sysv_varargs->gp_offset=X64_VA_MAX_REG; \
+  sysv_varargs->fp_offset=X64_VA_MAX_XMM; \
+  sysv_varargs->reg_save_area=(A);        \
+  sysv_varargs->overflow_arg_area=A
+
+#define CONVERT_VALIST_32(A)              \
+  va_list sysv_varargs;                   \
+  sysv_varargs->gp_offset=X64_VA_MAX_REG; \
+  sysv_varargs->fp_offset=X64_VA_MAX_XMM; \
+  sysv_varargs->reg_save_area=(A);        \
+  sysv_varargs->overflow_arg_area=A
+
+
+
+#elif defined(__aarch64__)
+// aarch64: 8 64bits general regs and 8 128bits float regs
+/*
+va_list declared as
+typedef struct  va_list {
+    void * stack; // next stack param
+    void * gr_top; // end of GP arg reg save area
+    void * vr_top; // end of FP/SIMD arg reg save area
+    int gr_offs; // offset from  gr_top to next GP register arg
+    int vr_offs; // offset from  vr_top to next FP/SIMD register arg
+} va_list;
+*/
+#define CREATE_SYSV_VALIST_32(A) \
+  va_list sysv_varargs; \
+  sysv_varargs.__gr_offs=(8*8); \
+  sysv_varargs.__vr_offs=(8*16); \
+  sysv_varargs.__stack=(A);
+
+#define CONVERT_VALIST_32(A)                                     \
+  va_list sysv_varargs;                                          \
+  sysv_varargs.__gr_offs=(8*8);                                  \
+  sysv_varargs.__vr_offs=(8*16));                                \
+  sysv_varargs.__stack=(A);
+
+
+#elif defined(__loongarch64) || defined(__powerpc64__) || defined(__riscv)
+#define CREATE_SYSV_VALIST_32(A) \
+  va_list sysv_varargs = (va_list)A
+
+#define CREATE_VALIST_FROM_VALIST_32(VA, SCRATCH)                          \
+  va_list sysv_varargs = (va_list)A
+
+#else
+#error Unknown architecture!
+#endif
+
+#define VARARGS_32 sysv_varargs
+#define PREPARE_VALIST_32 CREATE_SYSV_VALIST_32(emu->scratch)
+#define VARARGS_32_(A) sysv_varargs
+#define PREPARE_VALIST_32_(A) CREATE_SYSV_VALIST_32(A)
+
+void myStackAlign32(const char* fmt, uint32_t* st, uint64_t* mystack);
+void myStackAlignGVariantNew32(const char* fmt, uint32_t* st, uint64_t* mystack);
+void myStackAlignW32(const char* fmt, uint32_t* st, uint64_t* mystack);
+
+void UnalignStat64_32(const void* source, void* dest);
+
+void UnalignStatFS64_32(const void* source, void* dest);
+#if 0
+void UnalignOggVorbis(void* dest, void* source); // Arm -> x86
+void AlignOggVorbis(void* dest, void* source);   // x86 -> Arm
+
+void UnalignVorbisDspState(void* dest, void* source); // Arm -> x86
+void AlignVorbisDspState(void* dest, void* source);   // x86 -> Arm
+
+void UnalignVorbisBlock(void* dest, void* source); // Arm -> x86
+void AlignVorbisBlock(void* dest, void* source);   // x86 -> Arm
+
+void UnalignEpollEvent(void* dest, void* source, int nbr); // Arm -> x86
+void AlignEpollEvent(void* dest, void* source, int nbr); // x86 -> Arm
+
+void UnalignSmpegInfo(void* dest, void* source); // Arm -> x86
+void AlignSmpegInfo(void* dest, void* source);   // x86 -> Arm
+#endif
+// stat64 is packed on i386, not on arm (and possibly other structures)
+#undef st_atime
+#undef st_atime_nsec
+#undef st_mtime
+#undef st_mtime_nsec
+#undef st_ctime
+#undef st_ctime_nsec
+struct i386_stat64 {
+	uint64_t	st_dev;
+	uint8_t		__pad0[4];
+	uint32_t		__st_ino;
+	uint32_t		st_mode;
+	uint32_t		st_nlink;
+	uint32_t		st_uid;
+	uint32_t		st_gid;
+	uint64_t	st_rdev;
+	uint8_t		__pad3[4];
+	int64_t		st_size;
+	uint32_t		st_blksize;
+	uint64_t		st_blocks;
+	uint32_t	st_atime;
+	uint32_t	st_atime_nsec;
+	uint32_t	st_mtime;
+	uint32_t	st_mtime_nsec;
+	uint32_t	st_ctime;
+	uint32_t	st_ctime_nsec;
+	uint64_t	st_ino;
+} __attribute__((packed));
+
+struct i386_fsid {
+  int     val[2];
+} __attribute__((packed));
+
+struct i386_statfs {
+  uint32_t    f_type;
+  uint32_t    f_bsize;
+  uint32_t    f_blocks;
+  uint32_t    f_bfree;
+  uint32_t    f_bavail;
+  uint32_t    f_files;
+  uint32_t    f_ffree;
+  struct i386_fsid f_fsid;
+  uint32_t    f_namelen;
+  uint32_t    f_frsize;
+  uint32_t    f_flags;
+  uint32_t    f_spare[4];
+} __attribute__((packed));
+
+struct i386_statfs64 {
+  uint32_t    f_type;
+  uint32_t    f_bsize;
+  uint64_t    f_blocks;
+  uint64_t    f_bfree;
+  uint64_t    f_bavail;
+  uint64_t    f_files;
+  uint64_t    f_ffree;
+  struct i386_fsid f_fsid;
+  uint32_t    f_namelen;
+  uint32_t    f_frsize;
+  uint32_t    f_flags;
+  uint32_t    f_spare[4];
+} __attribute__((packed));
+#if 0
+typedef struct {
+  unsigned char *data;
+  int storage;
+  int fill;
+  int returned;
+
+  int unsynced;
+  int headerbytes;
+  int bodybytes;
+} ogg_sync_state;
+
+typedef struct {
+  unsigned char   *body_data;    /* bytes from packet bodies */
+  long    body_storage;          /* storage elements allocated */
+  long    body_fill;             /* elements stored; fill mark */
+  long    body_returned;         /* elements of fill returned */
+
+
+  int     *lacing_vals;      /* The values that will go to the segment table */
+  int64_t *granule_vals; /* granulepos values for headers. Not compact
+                                this way, but it is simple coupled to the
+                                lacing fifo */
+  long    lacing_storage;
+  long    lacing_fill;
+  long    lacing_packet;
+  long    lacing_returned;
+
+  unsigned char    header[282];      /* working space for header encode */
+  int              header_fill;
+
+  int     e_o_s;          /* set when we have buffered the last packet in the
+                             logical bitstream */
+  int     b_o_s;          /* set after we've written the initial page
+                             of a logical bitstream */
+  long    serialno;
+  long    pageno;
+  int64_t  packetno;  /* sequence number for decode; the framing
+                             knows where there's a hole in the data,
+                             but we need coupling so that the codec
+                             (which is in a separate abstraction
+                             layer) also knows about the gap */
+  int64_t   granulepos;
+
+} ogg_stream_state;
+
+typedef struct vorbis_dsp_state {
+  int analysisp;
+  ptr_t vi; //vorbis_info
+
+  ptr_t  pcm;  //float**
+  ptr_t pcmret; // float**
+  int      pcm_storage;
+  int      pcm_current;
+  int      pcm_returned;
+
+  int  preextrapolate;
+  int  eofflag;
+
+  long lW;
+  long W;
+  long nW;
+  long centerW;
+
+  int64_t granulepos;
+  int64_t sequence;
+
+  int64_t glue_bits;
+  int64_t time_bits;
+  int64_t floor_bits;
+  int64_t res_bits;
+
+  void       *backend_state;
+} vorbis_dsp_state;
+
+typedef struct {
+  long endbyte;
+  int  endbit;
+
+  unsigned char *buffer;
+  unsigned char *ptr;
+  long storage;
+} oggpack_buffer;
+
+typedef struct vorbis_block {
+  /* necessary stream state for linking to the framing abstraction */
+  float  **pcm;       /* this is a pointer into local storage */
+  oggpack_buffer opb;
+
+  long  lW;
+  long  W;
+  long  nW;
+  int   pcmend;
+  int   mode;
+
+  int         eofflag;
+  int64_t granulepos;
+  int64_t sequence;
+  vorbis_dsp_state *vd; /* For read-only access of configuration */
+
+  /* local storage to avoid remallocing; it's up to the mapping to
+     structure it */
+  void               *localstore;
+  long                localtop;
+  long                localalloc;
+  long                totaluse;
+  struct alloc_chain *reap;
+
+  /* bitmetrics for the frame */
+  long glue_bits;
+  long time_bits;
+  long floor_bits;
+  long res_bits;
+
+  void *internal;
+
+} vorbis_block;
+
+typedef struct {
+  size_t (*read_func)  (void *ptr, size_t size, size_t nmemb, void *datasource);
+  int    (*seek_func)  (void *datasource, int64_t offset, int whence);
+  int    (*close_func) (void *datasource);
+  long   (*tell_func)  (void *datasource);
+} ov_callbacks;
+
+typedef struct OggVorbis  {
+  void            *datasource; /* Pointer to a FILE *, etc. */
+  int              seekable;
+  int64_t      offset;
+  int64_t      end;
+  ogg_sync_state   oy;
+
+  /* If the FILE handle isn't seekable (eg, a pipe), only the current
+     stream appears */
+  int              links;
+  int64_t     *offsets;
+  int64_t     *dataoffsets;
+  long            *serialnos;
+  int64_t     *pcmlengths; /* overloaded to maintain binary
+                                  compatibility; x2 size, stores both
+                                  beginning and end values */
+  void     *vi; //vorbis_info
+  void  *vc;    //vorbis_comment
+
+  /* Decoding working state local storage */
+  int64_t      pcm_offset;
+  int              ready_state;
+  long             current_serialno;
+  int              current_link;
+
+  double           bittrack;
+  double           samptrack;
+
+  ogg_stream_state os; /* take physical pages, weld into a logical
+                          stream of packets */
+  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+  vorbis_block     vb; /* local working space for packet->PCM decode */
+
+  ov_callbacks callbacks;
+
+} OggVorbis;
+
+typedef struct my_SMPEG_Info_s {
+    int has_audio;
+    int has_video;
+    int width;
+    int height;
+    int current_frame;
+    double current_fps;
+    char audio_string[80];
+    int  audio_current_frame;
+    uint32_t current_offset;
+    uint32_t total_size;
+    double current_time;
+    double total_time;
+} my_SMPEG_Info_t;
+
+typedef struct  __attribute__((packed)) x86_ftsent_s {
+        struct x86_ftsent_s *fts_cycle;
+        struct x86_ftsent_s *fts_parent;
+        struct x86_ftsent_s *fts_link;
+        long fts_number;
+        void *fts_pointer;
+        char *fts_accpath;
+        char *fts_path;
+        int fts_errno;
+        int fts_symfd;
+        uint16_t fts_pathlen;
+        uint16_t fts_namelen;
+        uintptr_t fts_ino;
+        uint64_t fts_dev;
+        uint32_t fts_nlink;
+        int16_t fts_level;
+        uint16_t fts_info;
+        uint16_t fts_flags;
+        uint16_t fts_instr;
+        struct stat *fts_statp;
+        char fts_name[1];
+} x86_ftsent_t;
+
+void UnalignFTSENT(void* dest, void* source); // Arm -> x86
+void AlignFTSENT(void* dest, void* source);   // x86 -> Arm
+
+typedef struct my_flock64_s {
+	uint16_t  l_type;
+	uint16_t  l_whence;
+	int64_t   l_start;
+	int64_t   l_len;
+	int       l_pid;
+} my_flock64_t;
+
+typedef struct __attribute__((packed)) x86_flock64_s {
+	uint16_t  l_type;
+	uint16_t  l_whence;
+	int64_t   l_start;
+	int64_t   l_len;
+	int       l_pid;
+} x86_flock64_t;
+
+void UnalignFlock64(void* dest, void* source); // Arm -> x86
+void AlignFlock64(void* dest, void* source);   // x86 -> Arm
+
+// defined in wrapperlibc.c
+int of_convert(int);    // x86->arm
+int of_unconvert(int);  // arm->x86
+
+typedef struct my_GValue_s
+{
+  int         g_type;
+  union {
+    int        v_int;
+    int64_t    v_int64;
+    uint64_t   v_uint64;
+    float      v_float;
+    double     v_double;
+    void*      v_pointer;
+  } data[2];
+} my_GValue_t;
+
+void alignNGValue(my_GValue_t* v, void* value, int n);
+void unalignNGValue(void* value, my_GValue_t* v, int n);
+#endif
+
+int of_convert32(int a);
+int of_unconvert32(int a);
+
+#endif//__MY_ALIGN32__H_
\ No newline at end of file
diff --git a/src/include/regs.h b/src/include/regs.h
index 3cfcdc5a..5b2a9c41 100644
--- a/src/include/regs.h
+++ b/src/include/regs.h
@@ -319,6 +319,7 @@ typedef union {
 #define R_R13 emu->regs[_R13].q[0]
 #define R_R14 emu->regs[_R14].q[0]
 #define R_R15 emu->regs[_R15].q[0]
+#define R_EIP emu->ip.dword[0]
 #define R_EAX emu->regs[_AX].dword[0]
 #define R_EBX emu->regs[_BX].dword[0]
 #define R_ECX emu->regs[_CX].dword[0]
diff --git a/src/include/threads.h b/src/include/threads.h
index 8ed0e4c1..a35b02f3 100644
--- a/src/include/threads.h
+++ b/src/include/threads.h
@@ -4,11 +4,26 @@
 typedef struct box64context_s box64context_t;
 typedef struct x64emu_s x64emu_t;
 
+typedef struct emuthread_s {
+	uintptr_t 	fnc;
+	void*		arg;
+	x64emu_t*	emu;
+	int			join;
+	uintptr_t	self;
+	ulong_t		hself;
+	int			cancel_cap, cancel_size;
+	void**		cancels;
+} emuthread_t;
+
 void CleanStackSize(box64context_t* context);
 
 void init_pthread_helper(void);
 void fini_pthread_helper(box64context_t* context);
 void clean_current_emuthread(void);
+#ifdef BOX32
+void init_pthread_helper_32(void);
+void fini_pthread_helper_32(box64context_t* context);
+#endif
 
 // prepare an "emuthread structure" in pet and return address of function pointer for a "thread creation routine"
 void* my_prepare_thread(x64emu_t *emu, void* f, void* arg, int ssize, void** pet);
diff --git a/src/include/x64emu.h b/src/include/x64emu.h
index 5591823b..8c08a0c2 100644
--- a/src/include/x64emu.h
+++ b/src/include/x64emu.h
@@ -25,7 +25,8 @@ void SetEDX(x64emu_t *emu, uint32_t v);
 void SetEDI(x64emu_t *emu, uint32_t v);
 void SetESI(x64emu_t *emu, uint32_t v);
 void SetEBP(x64emu_t *emu, uint32_t v);
-//void SetESP(x64emu_t *emu, uint32_t v);
+void SetESP(x64emu_t *emu, uint32_t v);
+void SetEIP(x64emu_t *emu, uint32_t v);
 void SetRAX(x64emu_t *emu, uint64_t v);
 void SetRBX(x64emu_t *emu, uint64_t v);
 void SetRCX(x64emu_t *emu, uint64_t v);
@@ -35,8 +36,8 @@ void SetRSI(x64emu_t *emu, uint64_t v);
 void SetRBP(x64emu_t *emu, uint64_t v);
 void SetRSP(x64emu_t *emu, uint64_t v);
 void SetRIP(x64emu_t *emu, uint64_t v);
-//void SetFS(x64emu_t *emu, uint16_t v);
-//uint16_t GetFS(x64emu_t *emu);
+void SetFS(x64emu_t *emu, uint16_t v);
+uint16_t GetFS(x64emu_t *emu);
 uint64_t GetRSP(x64emu_t *emu);
 uint64_t GetRBP(x64emu_t *emu);
 void ResetFlags(x64emu_t *emu);
diff --git a/src/include/x64run.h b/src/include/x64run.h
index a5d4528e..9eed07c0 100644
--- a/src/include/x64run.h
+++ b/src/include/x64run.h
@@ -10,6 +10,9 @@ void DynaRun(x64emu_t *emu);
 
 uint32_t LibSyscall(x64emu_t *emu);
 void PltResolver64(x64emu_t* emu);
+#ifdef BOX32
+void PltResolver32(x64emu_t* emu);
+#endif
 extern uintptr_t pltResolver64;
 int GetTID(void);
 
diff --git a/src/librarian/librarian.c b/src/librarian/librarian.c
index b836e4ca..259f7e0c 100644
--- a/src/librarian/librarian.c
+++ b/src/librarian/librarian.c
@@ -12,6 +12,9 @@
 #include "x64emu.h"
 #include "box64context.h"
 #include "elfloader.h"
+#ifdef BOX32
+#include "box32.h"
+#endif
 
 #include "bridge.h"
 
@@ -254,15 +257,31 @@ static int AddNeededLib_add(lib_t** maplib, int local, needed_libs_t* needed, in
 
     if (lib->type == LIB_EMULATED) {
         // Need to add library to the linkmap (put here so the link is ordered)
-        linkmap_t *lm = addLinkMapLib(lib);
-        if(!lm) {
-            // Crashed already
-            printf_dump(LOG_DEBUG, "Failure to add lib linkmap\n");
-            return 1;
+        #ifdef BOX32
+        if(box64_is32bits) {
+            linkmap32_t *lm = addLinkMapLib32(lib);
+            if(!lm) {
+                // Crashed already
+                printf_dump(LOG_DEBUG, "Failure to add lib linkmap\n");
+                return 1;
+            }
+            lm->l_addr = (Elf32_Addr)to_ptrv(GetElfDelta(lib->e.elf));
+            lm->l_name = to_ptrv(lib->name);
+            lm->l_ld = to_ptrv(GetDynamicSection(lib->e.elf));
+        } else
+        #endif
+        {
+            linkmap_t *lm = addLinkMapLib(lib);
+            if(!lm) {
+                // Crashed already
+                printf_dump(LOG_DEBUG, "Failure to add lib linkmap\n");
+                return 1;
+            }
+            lm->l_addr = (Elf64_Addr)GetElfDelta(lib->e.elf);
+            lm->l_name = lib->name;
+            lm->l_ld = GetDynamicSection(lib->e.elf);
         }
-        lm->l_addr = (Elf64_Addr)GetElfDelta(lib->e.elf);
-        lm->l_name = lib->name;
-        lm->l_ld = GetDynamicSection(lib->e.elf);
+        //TODO: it seems to never be removed!
     }
     IncRefCount(lib, emu);
     return 0;
diff --git a/src/librarian/library.c b/src/librarian/library.c
index 69f27d5f..e4ab45e5 100644
--- a/src/librarian/library.c
+++ b/src/librarian/library.c
@@ -40,6 +40,16 @@
 #endif
 
 #undef GO
+#ifdef BOX32
+#define GO(P, N) int wrapped##N##_init32(library_t* lib, box64context_t *box64); \
+                 void wrapped##N##_fini32(library_t* lib);
+#ifdef STATICBUILD
+#include "library_list_static_32.h"
+#else
+#include "library_list_32.h"
+#endif
+#undef GO
+#endif
 
 #define GO(P, N) {P, wrapped##N##_init, wrapped##N##_fini},
 wrappedlib_t wrappedlibs[] = {
@@ -50,6 +60,17 @@ wrappedlib_t wrappedlibs[] = {
 #endif
 };
 #undef GO
+#define GO(P, N) {P, wrapped##N##_init32, wrapped##N##_fini32},
+wrappedlib_t wrappedlibs32[] = {
+#ifdef BOX32
+#ifdef STATICBUILD
+#include "library_list_static_32.h"
+#else
+#include "library_list_32.h"
+#endif
+#endif
+};
+#undef GO
 
 KHASH_MAP_IMPL_STR(symbolmap, symbol1_t)
 KHASH_MAP_IMPL_STR(symbol2map, symbol2_t)
@@ -232,14 +253,11 @@ int DummyLib_GetLocal(library_t* lib, const char* name, uintptr_t *offs, uintptr
 }
 
 static void initWrappedLib(library_t *lib, box64context_t* context) {
-    if(box64_is32bits) {
-        // TODO
-        return; // nothing wrapped yet
-    }
-    int nb = sizeof(wrappedlibs) / sizeof(wrappedlib_t);
+    int nb = (box64_is32bits?sizeof(wrappedlibs32):sizeof(wrappedlibs)) / sizeof(wrappedlib_t);
     for (int i=0; i<nb; ++i) {
-        if(strcmp(lib->name, wrappedlibs[i].name)==0) {
-            if(wrappedlibs[i].init(lib, context)) {
+        wrappedlib_t* w = box64_is32bits?(&wrappedlibs32[i]):(&wrappedlibs[i]);
+        if(strcmp(lib->name, w->name)==0) {
+            if(w->init(lib, context)) {
                 // error!
                 const char* error_str = dlerror();
                 if(error_str)   // don't print the message if there is no error string from last error
@@ -247,7 +265,7 @@ static void initWrappedLib(library_t *lib, box64context_t* context) {
                 return; // non blocker...
             }
             printf_dump(LOG_INFO, "Using native(wrapped) %s\n", lib->name);
-            lib->fini = wrappedlibs[i].fini;
+            lib->fini = w->fini;
             lib->getglobal = WrappedLib_GetGlobal;
             lib->getweak = WrappedLib_GetWeak;
             lib->getlocal = WrappedLib_GetLocal;
@@ -366,7 +384,7 @@ static void initEmulatedLib(const char* path, library_t *lib, box64context_t* co
 {
     char libname[MAX_PATH];
     strcpy(libname, path);
-    int found = FileIsX64ELF(libname);
+    int found = box64_is32bits?FileIsX86ELF(libname):FileIsX64ELF(libname);
     if(found)
         if(loadEmulatedLib(libname, lib, context, verneeded))
             return;
@@ -375,14 +393,14 @@ static void initEmulatedLib(const char* path, library_t *lib, box64context_t* co
         {
             strcpy(libname, context->box64_ld_lib.paths[i]);
             strcat(libname, path);
-            if(FileIsX64ELF(libname))
+            if(box64_is32bits?FileIsX86ELF(libname):FileIsX64ELF(libname))
                 if(loadEmulatedLib(libname, lib, context, verneeded))
                     return;
             // also try x86_64 variant
             strcpy(libname, context->box64_ld_lib.paths[i]);
-            strcat(libname, "x86_64/");
+            strcat(libname, box64_is32bits?"i386/":"x86_64/");
             strcat(libname, path);
-            if(FileIsX64ELF(libname))
+            if(box64_is32bits?FileIsX86ELF(libname):FileIsX64ELF(libname))
                 if(loadEmulatedLib(libname, lib, context, verneeded))
                     return;            
         }
@@ -793,7 +811,7 @@ static int getSymbolInDataMaps(library_t*lib, const char* name, int noweak, uint
         if(lib->w.altmy)
             strcpy(buff, lib->w.altmy);
         else
-            strcpy(buff, "my_");
+            strcpy(buff, box64_is32bits?"my32_":"my_");
         strcat(buff, name);
         #ifdef STATICBUILD
         symbol = (void*)kh_value(lib->w.mydatamap, k).addr;
@@ -828,7 +846,7 @@ static int getSymbolInSymbolMaps(library_t*lib, const char* name, int noweak, ui
             if(lib->w.altmy)
                 strcpy(buff, lib->w.altmy);
             else
-                strcpy(buff, "my_");
+                strcpy(buff, box64_is32bits?"my32_":"my_");
             strcat(buff, name);
             #ifdef STATICBUILD
             symbol = (void*)s->addr;
@@ -856,7 +874,7 @@ static int getSymbolInSymbolMaps(library_t*lib, const char* name, int noweak, ui
             if(lib->w.altmy)
                 strcpy(buff, lib->w.altmy);
             else
-                strcpy(buff, "my_");
+                strcpy(buff, box64_is32bits?"my32_":"my_");
             strcat(buff, name);
             #ifdef STATICBUILD
             symbol = (void*)s->addr;
@@ -921,7 +939,7 @@ static int getSymbolInSymbolMaps(library_t*lib, const char* name, int noweak, ui
                 if(lib->w.altmy)
                     strcpy(buff, lib->w.altmy);
                 else
-                    strcpy(buff, "my_");
+                    strcpy(buff, box64_is32bits?"my32_":"my_");
                 strcat(buff, name);
                 #ifdef STATICBUILD
                 symbol = (void*)s->addr;
@@ -1078,6 +1096,64 @@ int GetDeepBind(library_t* lib)
     return lib->deepbind;
 }
 
+#ifdef BOX32
+linkmap32_t* getLinkMapLib32(library_t* lib)
+{
+    linkmap32_t* lm = my_context->linkmap32;
+    while(lm) {
+        if(lm->l_lib == lib)
+            return lm;
+        lm = (linkmap32_t*)from_ptrv(lm->l_next);
+    }
+    return NULL;
+}
+linkmap32_t* getLinkMapElf32(elfheader_t* h)
+{
+    linkmap32_t* lm = my_context->linkmap32;
+    while(lm) {
+        if(lm->l_lib && lm->l_lib->type==LIB_EMULATED && lm->l_lib->e.elf == h)
+            return lm;
+        lm = (linkmap32_t*)from_ptrv(lm->l_next);
+    }
+    return NULL;
+}
+linkmap32_t* addLinkMapLib32(library_t* lib)
+{
+    if(!my_context->linkmap32) {
+        my_context->linkmap32 = (linkmap32_t*)box_calloc(1, sizeof(linkmap32_t));
+        my_context->linkmap32->l_lib = lib;
+        return my_context->linkmap32;
+    }
+    linkmap32_t* lm = my_context->linkmap32;
+    while(lm->l_next)
+        lm = (linkmap32_t*)from_ptrv(lm->l_next);
+    lm->l_next = to_ptrv(box_calloc(1, sizeof(linkmap32_t)));
+    linkmap32_t* l_next = (linkmap32_t*)from_ptrv(lm->l_next);
+    l_next->l_lib = lib;
+    l_next->l_prev = to_ptrv(lm);
+    return l_next;
+}
+void removeLinkMapLib32(library_t* lib)
+{
+    linkmap32_t* lm = getLinkMapLib32(lib);
+    if(!lm) return;
+    if(lm->l_next)
+        ((linkmap32_t*)from_ptrv(lm->l_next))->l_prev = lm->l_prev;
+    if(lm->l_prev)
+        ((linkmap32_t*)from_ptrv(lm->l_prev))->l_next = lm->l_next;
+    box_free(lm);
+}
+
+void AddMainElfToLinkmap32(elfheader_t* elf)
+{
+    linkmap32_t* lm = addLinkMapLib32(NULL);    // main elf will have a null lib link
+
+    lm->l_addr = (Elf32_Addr)to_ptrv(GetElfDelta(elf));
+    lm->l_name = to_ptrv(my_context->fullpath);
+    lm->l_ld = to_ptrv(GetDynamicSection(elf));
+}
+#endif
+
 linkmap_t* getLinkMapLib(library_t* lib)
 {
     linkmap_t* lm = my_context->linkmap;
diff --git a/src/librarian/library_private.h b/src/librarian/library_private.h
index a13df4a0..495ad000 100644
--- a/src/librarian/library_private.h
+++ b/src/librarian/library_private.h
@@ -133,11 +133,29 @@ typedef struct linkmap_s {
     library_t*  l_lib;
 
 } linkmap_t;
+#ifdef BOX32
+typedef struct linkmap32_s {
+    // actual struct link_map
+    Elf32_Addr  l_addr;
+    ptr_t       l_name; // char*
+    ptr_t       l_ld;   //Elf64_Dyn*
+    ptr_t l_next, l_prev;   // struct linkmap32_s *
+    // custom
+    library_t*  l_lib;
+
+} linkmap32_t;
+#endif
 
 linkmap_t* getLinkMapLib(library_t* lib);
 linkmap_t* getLinkMapElf(elfheader_t* h);
 linkmap_t* addLinkMapLib(library_t* lib);
 void removeLinkMapLib(library_t* lib);
+#ifdef BOX32
+linkmap32_t* getLinkMapLib32(library_t* lib);
+linkmap32_t* getLinkMapElf32(elfheader_t* h);
+linkmap32_t* addLinkMapLib32(library_t* lib);
+void removeLinkMapLib32(library_t* lib);
+#endif
 
 int FiniLibrary(library_t* lib, x64emu_t* emu);
 void Free1Library(library_t **lib, x64emu_t* emu);
diff --git a/src/library_list_32.h b/src/library_list_32.h
new file mode 100644
index 00000000..a5a1831c
--- /dev/null
+++ b/src/library_list_32.h
@@ -0,0 +1,12 @@
+#ifndef GO
+#error Nope
+#endif
+
+GO("libpthread.so.0", libpthread)
+GO("librt.so.1", librt)
+GO("libc.so.6", libc)
+GO("libm.so.6", libm)
+GO("libdl.so.2", libdl)
+GO("ld-linux.so.2", ldlinux)
+
+GO("crashhandler.so", crashhandler)
diff --git a/src/library_list_static_32.h b/src/library_list_static_32.h
new file mode 100644
index 00000000..525b5bef
--- /dev/null
+++ b/src/library_list_static_32.h
@@ -0,0 +1,10 @@
+#ifndef GO
+#error Nope
+#endif
+
+GO("libpthread.so.0", libpthread)
+GO("librt.so.1", librt)
+GO("libc.so.6", libc)
+GO("libm.so.6", libm)
+GO("libdl.so.2", libdl)
+GO("ld-linux.so.2", ldlinux)
diff --git a/src/libtools/myalign32.c b/src/libtools/myalign32.c
new file mode 100755
index 00000000..ee0b2790
--- /dev/null
+++ b/src/libtools/myalign32.c
@@ -0,0 +1,935 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <wchar.h>
+#include <sys/epoll.h>
+#include <fts.h>
+
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "myalign32.h"
+#include "debug.h"
+#include "box32.h"
+
+void myStackAlign32(const char* fmt, uint32_t* st, uint64_t* mystack)
+{
+    if(!fmt)
+        return;
+    // loop...
+    const char* p = fmt;
+    int state = 0;
+    double d;
+    while(*p)
+    {
+        switch(state) {
+            case 0:
+                switch(*p) {
+                    case '%': state = 1; ++p; break;
+                    default:
+                        ++p;
+                }
+                break;
+            case 1: // normal
+            case 2: // l
+            case 3: // ll
+            case 4: // L
+                switch(*p) {
+                    case '%': state = 0;  ++p; break; //%% = back to 0
+                    case 'l': ++state; if (state>3) state=3; ++p; break;
+                    case 'z': state = 2; ++p; break;
+                    case 'L': state = 4; ++p; break;
+                    case 'a':
+                    case 'A':
+                    case 'e':
+                    case 'E':
+                    case 'g':
+                    case 'G':
+                    case 'F':
+                    case 'f': state += 10; break;    //  float
+                    case 'd':
+                    case 'i':
+                    case 'o': state += 20; break;   // int
+                    case 'x':
+                    case 'X':
+                    case 'u': state += 40; break;   // uint
+                    case 'h': ++p; break;  // ignored...
+                    case '\'':
+                    case '0':
+                    case '1':
+                    case '2':
+                    case '3':
+                    case '4':
+                    case '5':
+                    case '6':
+                    case '7':
+                    case '8':
+                    case '9':
+                    case '.': 
+                    case '+': 
+                    case '-': ++p; break; // formating, ignored
+                    case 'm': state = 0; ++p; break; // no argument
+                    case 'n':
+                    case 'p':
+                    case 'S':
+                    case 's': state = 30; break; // pointers
+                    case '$': ++p; break; // should issue a warning, it's not handled...
+                    case '*': *(mystack++) = *(st++); ++p; break; // fetch an int in the stack....
+                    case ' ': state=0; ++p; break;
+                    default:
+                        state=20; // other stuff, put an int...
+                }
+                break;
+            case 11:    //double
+            case 12:    //%lg, still double
+            case 13:    //%llg, still double
+            case 23:    // 64bits int
+            case 43:    // 64bits uint
+                *(uint64_t*)mystack = *(uint64_t*)st;
+                st+=2; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 22:    // long int
+                *(int64_t*)mystack = from_long(*(long_t*)st);
+                st+=1; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 42:    // long uint
+                *(uint64_t*)mystack = from_ulong(*(ulong_t*)st);
+                st+=1; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 14:    //%LG long double
+                #ifdef HAVE_LD80BITS
+                memcpy(mystack, st, 10);
+                st+=3; mystack+=2;
+                #else
+                LD2D((void*)st, &d);
+                *(long double*)mystack = (long double)d;
+                st+=3; mystack+=2;
+                #endif
+                state = 0;
+                ++p;
+                break;
+            case 30:    //pointer
+                *(uintptr_t*)mystack = from_ptr(*st);
+                st++; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 20:    // fallback
+            case 21:
+            case 24:    // normal int / pointer
+            case 40:
+            case 41:
+                *mystack = *st;
+                ++mystack;
+                ++st;
+                state = 0;
+                ++p;
+                break;
+            default:
+                // whattt?
+                state = 0;
+        }
+    }
+}
+
+void myStackAlignGVariantNew32(const char* fmt, uint32_t* st, uint64_t* mystack)
+{
+    if (!fmt)
+        return;
+    
+    const char *p = fmt;
+    int state = 0;
+    int inblocks = 0;
+    int tmp;
+
+    do {
+        switch(state) {
+            case 0: // Nothing
+                switch(*p) {
+                    case 'b': // gboolean
+                    case 'y': // guchar
+                    case 'n': // gint16
+                    case 'q': // guint16
+                    case 'i': // gint32
+                    case 'u': // guint32
+                    case 'h': // gint32
+                    case 's': // const gchar*
+                    case 'o':
+                    case 'g':
+                    case 'v': // GVariant*
+                    case '*': // GVariant* of any type
+                    case '?': // GVariant* of basic type
+                    case 'r': // GVariant* of tuple type
+                        *mystack = *st;
+                        ++mystack;
+                        ++st;
+                        break;
+                    case 'x': // gint64
+                    case 't': // guint64
+                    case 'd': // gdouble
+                        *(uint64_t*)mystack = *(uint64_t*)st;
+                        st+=2; mystack+=1;
+                        break;
+                    case '{':
+                    case '(': ++inblocks; break;
+                    case '}':
+                    case ')': --inblocks; break;
+                    case 'a': state = 1; break; // GVariantBuilder* or GVariantIter**
+                    case 'm': state = 2; break; // maybe types
+                    case '@': state = 3; break; // GVariant* of type [type]
+                    case '^': state = 4; break; // pointer value
+                    case '&': break; // pointer: do nothing
+                }
+                break;
+            case 1: // Arrays
+                switch(*p) {
+                    case '{':
+                    case '(': ++tmp; break;
+                    case '}':
+                    case ')': --tmp; break;
+                }
+                if (*p == 'a') break;
+                if (tmp == 0) {
+                    *mystack = *st;
+                    ++mystack;
+                    ++st;
+                    state = 0;
+                }
+                break;
+            case 2: // Maybe-types
+                switch(*p) {
+                    case 'b': // gboolean
+                    case 'y': // guchar
+                    case 'n': // gint16
+                    case 'q': // guint16
+                    case 'i': // gint32
+                    case 'u': // guint32
+                    case 'h': // gint32
+                    case 'x': // gint64
+                    case 't': // guint64
+                    case 'd': // gdouble
+                    case '{':
+                    case '}':
+                    case '(':
+                    case ')':
+                        // Add a gboolean or gboolean*, no char increment
+                        *mystack = *st;
+                        ++mystack;
+                        ++st;
+                        --p;
+                        state = 0;
+                        break;
+                    case 'a': // GVariantBuilder* or GVariantIter**
+                    case 's': // const gchar*
+                    case 'o':
+                    case 'g':
+                    case 'v': // GVariant*
+                    case '@': // GVariant* of type [type]
+                    case '*': // GVariant* of any type
+                    case '?': // GVariant* of basic type
+                    case 'r': // GVariant* of tuple type
+                    case '&': // pointer
+                    case '^': // pointer value
+                        // Just maybe-NULL
+                        --p;
+                        state = 0;
+                        break;
+
+                    default: // Default to add a gboolean & reinit state?
+                        *mystack = *st;
+                        ++mystack;
+                        ++st;
+                        --p;
+                        state = 0;
+                }
+                break;
+            case 3: // GVariant*
+                switch(*p) {
+                    case '{':
+                    case '(': ++tmp; break;
+                    case '}':
+                    case ')': --tmp; break;
+                    case 'a': // GVariantBuilder* or GVariantIter**
+                        do { ++p; } while(*p == 'a'); // Use next character which is not an array (array definition)
+                        switch(*p) {
+                            case '{':
+                            case '(': ++tmp; break;
+                            case '}':
+                            case ')': --tmp; break;
+                        }
+                        break;
+                }
+                if (tmp == 0) {
+                    *mystack = *st;
+                    ++mystack;
+                    ++st;
+                    state = 0;
+                }
+                break;
+            case 4: // ^
+                if (*p == 'a') state = 5;
+                else if (*p == '&') state = 8;
+                else state = 0; //???
+                break;
+            case 5: // ^a
+                if ((*p == 's') || (*p == 'o') || (*p == 'y')) {
+                    *mystack = *st;
+                    ++mystack;
+                    ++st;
+                    state = 0;
+                } else if (*p == '&') state = 6;
+                else if (*p == 'a') state = 7;
+                else state = 0; //???
+                break;
+            case 6: // ^a&
+                if ((*p == 's') || (*p == 'o')) {
+                    *mystack = *st;
+                    ++mystack;
+                    ++st;
+                    state = 0;
+                } else if (*p == 'a') state = 7;
+                else state = 0; //???
+                break;
+            case 7: // ^aa / ^a&a
+                if (*p == 'y') {
+                    *mystack = *st;
+                    ++mystack;
+                    ++st;
+                    state = 0;
+                } else state = 0; //???
+            case 8: // ^&
+                if (*p == 'a') state = 9;
+                else state = 0; //???
+            case 9: // ^&a
+                if (*p == 'y') {
+                    *mystack = *st;
+                    ++mystack;
+                    ++st;
+                    state = 0;
+                } else state = 0; //???
+        }
+        ++p;
+    } while (*p && (inblocks || state));
+}
+
+void myStackAlignW32(const char* fmt, uint32_t* st, uint64_t* mystack)
+{
+    // loop...
+    const wchar_t* p = (const wchar_t*)fmt;
+    int state = 0;
+    double d;
+    while(*p)
+    {
+        switch(state) {
+            case 0:
+                switch(*p) {
+                    case '%': state = 1; ++p; break;
+                    default:
+                        ++p;
+                }
+                break;
+            case 1: // normal
+            case 2: // l
+            case 3: // ll
+            case 4: // L
+                switch(*p) {
+                    case '%': state = 0;  ++p; break; //%% = back to 0
+                    case 'l': ++state; if (state>3) state=3; ++p; break;
+                    case 'z': state = 2; ++p; break;
+                    case 'L': state = 4; ++p; break;
+                    case 'a':
+                    case 'A':
+                    case 'e':
+                    case 'E':
+                    case 'g':
+                    case 'G':
+                    case 'F':
+                    case 'f': state += 10; break;    //  float
+                    case 'd':
+                    case 'i':
+                    case 'o': state += 20; break;   // int
+                    case 'x':
+                    case 'X':
+                    case 'u': state += 40; break;   // unsigned
+                    case 'h': ++p; break;  // ignored...
+                    case '\'':
+                    case '0':
+                    case '1':
+                    case '2':
+                    case '3':
+                    case '4':
+                    case '5':
+                    case '6':
+                    case '7':
+                    case '8':
+                    case '9':
+                    case '.': 
+                    case '+': 
+                    case '-': ++p; break; // formating, ignored
+                    case 'm': state = 0; ++p; break; // no argument
+                    case 'n':
+                    case 'p':
+                    case 'S':
+                    case 's': state = 30; break; // pointers
+                    case '$': ++p; break; // should issue a warning, it's not handled...
+                    case '*': *(mystack++) = *(st++); ++p; break; //fetch an int in the stack
+                    case ' ': state=0; ++p; break;
+                    default:
+                        state=20; // other stuff, put an int...
+                }
+                break;
+            case 11:    //double
+            case 12:    //%lg, still double
+            case 13:    //%llg, still double
+            case 23:    // 64bits int
+            case 43:    // 64bits uint
+                *(uint64_t*)mystack = *(uint64_t*)st;
+                st+=2; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 22:    // long int
+                *(int64_t*)mystack = from_long(*(long_t*)st);
+                st+=1; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 42:    // long uint
+                *(uint64_t*)mystack = from_ulong(*(ulong_t*)st);
+                st+=1; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 14:    //%LG long double
+                #ifdef HAVE_LD80BITS
+                memcpy(mystack, st, 10);
+                st+=3; mystack+=2;
+                #else
+                LD2D((void*)st, &d);
+                *(long double*)mystack = (long double)d;
+                st+=3; mystack+=2;
+                #endif
+                state = 0;
+                ++p;
+                break;
+            case 30:    //pointer
+                *(uintptr_t*)mystack = from_ptr(*st);
+                st++; mystack+=1;
+                state = 0;
+                ++p;
+                break;
+            case 20:    // fallback
+            case 40:
+            case 21:
+            case 24:    // normal int / pointer
+                *mystack = *st;
+                ++mystack;
+                ++st;
+                state = 0;
+                ++p;
+                break;
+            default:
+                // whattt?
+                state = 0;
+        }
+    }
+}
+
+
+#if 0
+
+typedef struct __attribute__((packed)) {
+  unsigned char   *body_data;
+  long    body_storage;
+  long    body_fill;
+  long    body_returned;
+
+
+  int     *lacing_vals;
+  int64_t *granule_vals;
+  long    lacing_storage;
+  long    lacing_fill;
+  long    lacing_packet;
+  long    lacing_returned;
+
+  unsigned char    header[282];
+  int              header_fill __attribute__ ((aligned (4)));
+
+  int     e_o_s;
+  int     b_o_s;
+  long    serialno;
+  long    pageno;
+  int64_t  packetno;
+  int64_t   granulepos;
+
+} ogg_stream_state_x64;
+
+typedef struct __attribute__((packed)) vorbis_dsp_state_x64 {
+  int analysisp;
+  void *vi; //vorbis_info
+
+  float **pcm;
+  float **pcmret;
+  int      pcm_storage;
+  int      pcm_current;
+  int      pcm_returned;
+
+  int  preextrapolate;
+  int  eofflag;
+
+  long lW;
+  long W;
+  long nW;
+  long centerW;
+
+  int64_t granulepos;
+  int64_t sequence;
+
+  int64_t glue_bits;
+  int64_t time_bits;
+  int64_t floor_bits;
+  int64_t res_bits;
+
+  void       *backend_state;
+} vorbis_dsp_state_x64;
+
+typedef struct __attribute__((packed)) {
+  long endbyte;
+  int  endbit;
+
+  unsigned char *buffer;
+  unsigned char *ptr;
+  long storage;
+} oggpack_buffer_x64;
+
+typedef struct __attribute__((packed)) vorbis_block_x64 {
+
+  float  **pcm;
+  oggpack_buffer_x64 opb;
+
+  long  lW;
+  long  W;
+  long  nW;
+  int   pcmend;
+  int   mode;
+
+  int         eofflag;
+  int64_t granulepos;
+  int64_t sequence;
+  void *vd;
+  
+  void               *localstore;
+  long                localtop;
+  long                localalloc;
+  long                totaluse;
+  void *reap;
+
+  long glue_bits;
+  long time_bits;
+  long floor_bits;
+  long res_bits;
+
+  void *internal;
+
+} vorbis_block_x64;
+
+typedef struct __attribute__((packed)) OggVorbis_x64  {
+  void            *datasource; /* Pointer to a FILE *, etc. */
+  int              seekable;
+  int64_t      offset;
+  int64_t      end;
+  ogg_sync_state   oy;
+
+  /* If the FILE handle isn't seekable (eg, a pipe), only the current
+     stream appears */
+  int              links;
+  int64_t     *offsets;
+  int64_t     *dataoffsets;
+  long            *serialnos;
+  int64_t     *pcmlengths; /* overloaded to maintain binary
+                                  compatibility; x2 size, stores both
+                                  beginning and end values */
+  void     *vi; //vorbis_info
+  void  *vc;    //vorbis_comment
+
+  /* Decoding working state local storage */
+  int64_t      pcm_offset;
+  int              ready_state;
+  long             current_serialno;
+  int              current_link;
+
+  double           bittrack;
+  double           samptrack;
+
+  ogg_stream_state_x64 os; /* take physical pages, weld into a logical
+                          stream of packets */
+  vorbis_dsp_state_x64 vd; /* central working state for the packet->PCM decoder */
+  vorbis_block_x64     vb; /* local working space for packet->PCM decode */
+
+  ov_callbacks callbacks;
+
+} OggVorbis_x64;
+
+#define TRANSFERT \
+GO(datasource) \
+GO(seekable) \
+GO(offset) \
+GO(end) \
+GOM(oy, sizeof(ogg_sync_state)) \
+GO(links) \
+GO(offsets) \
+GO(dataoffsets) \
+GO(serialnos) \
+GO(pcmlengths) \
+GO(vi) \
+GO(vc) \
+GO(pcm_offset) \
+GO(ready_state) \
+GO(current_serialno) \
+GO(current_link) \
+GOM(bittrack, 16) \
+GO(os.body_data) \
+GO(os.body_storage) \
+GO(os.body_fill) \
+GO(os.body_returned) \
+GO(os.lacing_vals) \
+GO(os.granule_vals) \
+GO(os.lacing_storage) \
+GO(os.lacing_fill) \
+GO(os.lacing_packet) \
+GO(os.lacing_returned) \
+GOM(os.header, 282) \
+GO(os.header_fill) \
+GO(os.e_o_s) \
+GO(os.b_o_s) \
+GO(os.serialno) \
+GO(os.pageno) \
+GO(os.packetno) \
+GO(os.granulepos) \
+GO(vd.analysisp) \
+GO(vd.vi) \
+GO(vd.pcm) \
+GO(vd.pcmret) \
+GO(vd.pcm_storage) \
+GO(vd.pcm_current) \
+GO(vd.pcm_returned) \
+GO(vd.preextrapolate) \
+GO(vd.eofflag) \
+GO(vd.lW) \
+GO(vd.W) \
+GO(vd.nW) \
+GO(vd.centerW) \
+GO(vd.granulepos) \
+GO(vd.sequence) \
+GO(vd.glue_bits) \
+GO(vd.time_bits) \
+GO(vd.floor_bits) \
+GO(vd.res_bits) \
+GO(vd.backend_state) \
+GO(vb.pcm) \
+GO(vb.opb.endbyte) \
+GO(vb.opb.endbit) \
+GO(vb.opb.buffer) \
+GO(vb.opb.ptr) \
+GO(vb.opb.storage) \
+GO(vb.lW) \
+GO(vb.W) \
+GO(vb.nW) \
+GO(vb.pcmend) \
+GO(vb.mode) \
+GO(vb.eofflag) \
+GO(vb.granulepos) \
+GO(vb.sequence) \
+GO(vb.localstore) \
+GO(vb.localtop) \
+GO(vb.localalloc) \
+GO(vb.totaluse) \
+GO(vb.reap) \
+GO(vb.glue_bits) \
+GO(vb.time_bits) \
+GO(vb.floor_bits) \
+GO(vb.res_bits) \
+GO(vb.internal) \
+GOM(callbacks, sizeof(ov_callbacks))
+
+void AlignOggVorbis(void* dest, void* source)
+{
+     // Arm -> x64
+     OggVorbis_x64* src = (OggVorbis_x64*)source;
+     OggVorbis*     dst = (OggVorbis*)dest;
+
+     #define GO(A) dst->A = src->A;
+     #define GOM(A, S) memcpy(&dst->A, &src->A, S);
+     TRANSFERT
+     #undef GO
+     #undef GOM
+     dst->vb.vd = (src->vb.vd == &src->vd)?&dst->vd:(vorbis_dsp_state*)src->vb.vd;
+}
+void UnalignOggVorbis(void* dest, void* source)
+{
+    // x64 -> Arm
+     OggVorbis_x64* dst = (OggVorbis_x64*)dest;
+     OggVorbis*     src = (OggVorbis*)source;
+
+     #define GO(A) dst->A = src->A;
+     #define GOM(A, S) memcpy(&dst->A, &src->A, S);
+     TRANSFERT
+     #undef GO
+     #undef GOM
+     dst->vb.vd = (src->vb.vd == &src->vd)?&dst->vd:(vorbis_dsp_state_x64*)src->vb.vd;
+}
+#undef TRANSFERT
+
+#define TRANSFERT \
+GO(analysisp) \
+GO(vi) \
+GO(pcm) \
+GO(pcmret) \
+GO(pcm_storage) \
+GO(pcm_current) \
+GO(pcm_returned) \
+GO(preextrapolate) \
+GO(eofflag) \
+GO(lW) \
+GO(W) \
+GO(nW) \
+GO(centerW) \
+GO(granulepos) \
+GO(sequence) \
+GO(glue_bits) \
+GO(time_bits) \
+GO(floor_bits) \
+GO(res_bits) \
+GO(backend_state)
+
+void UnalignVorbisDspState(void* dest, void* source)
+{
+    // Arm -> x64
+     #define GO(A) ((vorbis_dsp_state_x64*)dest)->A = ((vorbis_dsp_state*)source)->A;
+     #define GOM(A, S) memcpy(&((vorbis_dsp_state_x64*)dest)->A, &((vorbis_dsp_state*)source)->A, S);
+     TRANSFERT
+     #undef GO
+     #undef GOM
+}
+void AlignVorbisDspState(void* dest, void* source)
+{
+    // x64 -> Arm
+     #define GO(A) ((vorbis_dsp_state*)dest)->A = ((vorbis_dsp_state_x64*)source)->A;
+     #define GOM(A, S) memcpy(&((vorbis_dsp_state*)dest)->A, &((vorbis_dsp_state_x64*)source)->A, S);
+     TRANSFERT
+     #undef GO
+     #undef GOM
+}
+#undef TRANSFERT
+
+#define TRANSFERT \
+GO(pcm) \
+GO(opb.endbyte) \
+GO(opb.endbit) \
+GO(opb.buffer) \
+GO(opb.ptr) \
+GO(opb.storage) \
+GO(lW) \
+GO(W) \
+GO(nW) \
+GO(pcmend) \
+GO(mode) \
+GO(eofflag) \
+GO(granulepos) \
+GO(sequence) \
+GO(vd) \
+GO(localstore) \
+GO(localtop) \
+GO(localalloc) \
+GO(totaluse) \
+GO(reap) \
+GO(glue_bits) \
+GO(time_bits) \
+GO(floor_bits) \
+GO(res_bits) \
+GO(internal)
+
+void UnalignVorbisBlock(void* dest, void* source)
+{
+    // Arm -> x64
+     #define GO(A) ((vorbis_block_x64*)dest)->A = ((vorbis_block*)source)->A;
+     #define GOM(A, S) memcpy(&((vorbis_block_x64*)dest)->A, &((vorbis_block*)source)->A, S);
+     TRANSFERT
+     #undef GO
+     #undef GOM
+}
+void AlignVorbisBlock(void* dest, void* source)
+{
+    // x64 -> Arm
+     #define GO(A) ((vorbis_block*)dest)->A = ((vorbis_block_x64*)source)->A;
+     #define GOM(A, S) memcpy(&((vorbis_block*)dest)->A, &((vorbis_block_x64*)source)->A, S);
+     TRANSFERT
+     #undef GO
+     #undef GOM
+}
+
+#undef TRANSFERT
+
+typedef union __attribute__((packed)) x64_epoll_data {
+    void    *ptr;
+    int      fd;
+    uint32_t u32;
+    uint64_t u64;
+} x64_epoll_data_t;
+
+struct __attribute__((packed)) x64_epoll_event {
+    uint32_t            events;
+    x64_epoll_data_t    data;
+};
+// Arm -> x64
+void UnalignEpollEvent(void* dest, void* source, int nbr)
+{
+    struct x64_epoll_event *x64_struct = (struct x64_epoll_event*)dest;
+    struct epoll_event *arm_struct = (struct epoll_event*)source;
+    while(nbr) {
+        x64_struct->events = arm_struct->events;
+        x64_struct->data.u64 = arm_struct->data.u64;
+        ++x64_struct;
+        ++arm_struct;
+        --nbr;
+    }
+}
+
+// x64 -> Arm
+void AlignEpollEvent(void* dest, void* source, int nbr)
+{
+    struct x64_epoll_event *x64_struct = (struct x64_epoll_event*)source;
+    struct epoll_event *arm_struct = (struct epoll_event*)dest;
+    while(nbr) {
+        arm_struct->events = x64_struct->events;
+        arm_struct->data.u64 = x64_struct->data.u64;
+        ++x64_struct;
+        ++arm_struct;
+        --nbr;
+    }
+}
+
+typedef struct __attribute__((packed)) x64_SMPEG_Info_s {
+    int has_audio;
+    int has_video;
+    int width;
+    int height;
+    int current_frame;
+    double current_fps;
+    char audio_string[80];
+    int  audio_current_frame;
+    uint32_t current_offset;
+    uint32_t total_size;
+    double current_time;
+    double total_time;
+} x64_SMPEG_Info_t;
+
+#define TRANSFERT \
+GO(has_audio) \
+GO(has_video) \
+GO(width) \
+GO(height) \
+GO(current_frame) \
+GO(current_fps) \
+GOM(audio_string, 80) \
+GO(audio_current_frame) \
+GO(current_offset) \
+GO(total_size) \
+GO(current_time) \
+GO(total_time)
+
+
+// Arm -> x64
+void UnalignSmpegInfo(void* dest, void* source)
+{
+    #define GO(A) ((x64_SMPEG_Info_t*)dest)->A = ((my_SMPEG_Info_t*)source)->A;
+    #define GOM(A, S) memcpy(&((x64_SMPEG_Info_t*)dest)->A, &((my_SMPEG_Info_t*)source)->A, S);
+    TRANSFERT
+    #undef GO
+    #undef GOM
+}
+// x64 -> Arm
+void AlignSmpegInfo(void* dest, void* source)
+{
+    #define GO(A) ((my_SMPEG_Info_t*)dest)->A = ((x64_SMPEG_Info_t*)source)->A;
+    #define GOM(A, S) memcpy(&((my_SMPEG_Info_t*)dest)->A, &((x64_SMPEG_Info_t*)source)->A, S);
+    TRANSFERT
+    #undef GO
+    #undef GOM
+}
+#undef TRANSFERT
+
+#define TRANSFERT   \
+GOV(fts_cycle)      \
+GOV(fts_parent)     \
+GOV(fts_link)       \
+GO(fts_number)      \
+GO(fts_pointer)     \
+GO(fts_accpath)     \
+GO(fts_path)        \
+GO(fts_errno)       \
+GO(fts_symfd)       \
+GO(fts_pathlen)     \
+GO(fts_namelen)     \
+GO(fts_ino)         \
+GO(fts_dev)         \
+GO(fts_nlink)       \
+GO(fts_level)       \
+GO(fts_info)        \
+GO(fts_flags)       \
+GO(fts_instr)       \
+GO(fts_statp)       \
+GOM(fts_name, sizeof(void*))
+
+// Arm -> x64
+void UnalignFTSENT(void* dest, void* source)
+{
+    #define GO(A) ((x64_ftsent_t*)dest)->A = ((FTSENT*)source)->A;
+    #define GOV(A) ((x64_ftsent_t*)dest)->A = (void*)((FTSENT*)source)->A;
+    #define GOM(A, S) memcpy(&((x64_ftsent_t*)dest)->A, &((FTSENT*)source)->A, S);
+    TRANSFERT
+    #undef GO
+    #undef GOV
+    #undef GOM
+}
+// x64 -> Arm
+void AlignFTSENT(void* dest, void* source)
+{
+    #define GO(A) ((FTSENT*)dest)->A = ((x64_ftsent_t*)source)->A;
+    #define GOV(A) ((FTSENT*)dest)->A = (void*)((x64_ftsent_t*)source)->A;
+    #define GOM(A, S) memcpy(&((FTSENT*)dest)->A, &((x64_ftsent_t*)source)->A, S);
+    TRANSFERT
+    #undef GO
+    #undef GOV
+    #undef GOM
+}
+#undef TRANSFERT
+
+void alignNGValue(my_GValue_t* v, void* value, int n)
+{
+    while(n) {
+        v->g_type = *(int*)value;
+        memcpy(v->data, value+4, 2*sizeof(double));
+        ++v;
+        value+=4+2*sizeof(double);
+        --n;
+    }
+}
+void unalignNGValue(void* value, my_GValue_t* v, int n)
+{
+    while(n) {
+        *(int*)value = v->g_type;
+        memcpy(value+4, v->data, 2*sizeof(double));
+        ++v;
+        value+=4+2*sizeof(double);
+        --n;
+    }
+}
+
+#endif
\ No newline at end of file
diff --git a/src/libtools/myalign64_32.c b/src/libtools/myalign64_32.c
new file mode 100755
index 00000000..8f11c5b2
--- /dev/null
+++ b/src/libtools/myalign64_32.c
@@ -0,0 +1,104 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <asm/stat.h>
+#include <sys/vfs.h>
+
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "myalign32.h"
+#include "box32.h"
+
+void UnalignStat64_32(const void* source, void* dest)
+{
+    struct i386_stat64 *i386st = (struct i386_stat64*)dest;
+    struct stat *st = (struct stat*) source;
+    
+    memset(i386st->__pad0, 0, sizeof(i386st->__pad0));
+	memset(i386st->__pad3, 0, sizeof(i386st->__pad3));
+    i386st->st_dev      = st->st_dev;
+    i386st->__st_ino    = st->st_ino;
+    i386st->st_mode     = st->st_mode;
+    i386st->st_nlink    = st->st_nlink;
+    i386st->st_uid      = st->st_uid;
+    i386st->st_gid      = st->st_gid;
+    i386st->st_rdev     = st->st_rdev;
+    i386st->st_size     = st->st_size;
+    i386st->st_blksize  = st->st_blksize;
+    i386st->st_blocks   = st->st_blocks;
+    i386st->st_atime    = st->st_atime;
+    i386st->st_atime_nsec   = st->st_atime_nsec;
+    i386st->st_mtime    = st->st_mtime;
+    i386st->st_mtime_nsec   = st->st_mtime_nsec;
+    i386st->st_ctime    = st->st_ctime;
+    i386st->st_ctime_nsec   = st->st_ctime_nsec;
+    i386st->st_ino      = st->st_ino;
+}
+
+struct native_fsid {
+  int     val[2];
+};
+
+struct native_statfs64 {
+  uint32_t    f_type;
+  uint32_t    f_bsize;
+  uint64_t    f_blocks;
+  uint64_t    f_bfree;
+  uint64_t    f_bavail;
+  uint64_t    f_files;
+  uint64_t    f_ffree;
+  struct native_fsid f_fsid;
+  uint32_t    f_namelen;
+  uint32_t    f_frsize;
+  uint32_t    f_flags;
+  uint32_t    f_spare[4];
+};  // f_flags is not always defined, but then f_spare is [5] in that case
+
+
+void UnalignStatFS64_32(const void* source, void* dest)
+{
+    struct i386_statfs64 *i386st = (struct i386_statfs64*)dest;
+    struct native_statfs64 *st = (struct native_statfs64*) source;
+
+    i386st->f_type      = st->f_type;
+    i386st->f_bsize     = st->f_bsize;
+    i386st->f_blocks    = st->f_blocks;
+    i386st->f_bfree     = st->f_bfree;
+    i386st->f_bavail    = st->f_bavail;
+    i386st->f_files     = st->f_files;
+    i386st->f_ffree     = st->f_ffree;
+    memcpy(&i386st->f_fsid, &st->f_fsid, sizeof(i386st->f_fsid));
+    i386st->f_namelen   = st->f_namelen;
+    i386st->f_frsize    = st->f_frsize;
+    i386st->f_flags     = st->f_flags;
+    i386st->f_spare[0]  = st->f_spare[0];
+    i386st->f_spare[1]  = st->f_spare[1];
+    i386st->f_spare[2]  = st->f_spare[2];
+    i386st->f_spare[3]  = st->f_spare[3];
+}
+#if 0
+#define TRANSFERT   \
+GO(l_type)          \
+GO(l_whence)        \
+GO(l_start)         \
+GO(l_len)           \
+GO(l_pid)
+
+// Arm -> x64
+void UnalignFlock64_32(void* dest, void* source)
+{
+    #define GO(A) ((x64_flock64_t*)dest)->A = ((my_flock64_t*)source)->A;
+    TRANSFERT
+    #undef GO
+}
+
+// x64 -> Arm
+void AlignFlock64_32(void* dest, void* source)
+{
+    #define GO(A) ((my_flock64_t*)dest)->A = ((x64_flock64_t*)source)->A;
+    TRANSFERT
+    #undef GO
+}
+#undef TRANSFERT
+#endif
\ No newline at end of file
diff --git a/src/libtools/signal32.c b/src/libtools/signal32.c
new file mode 100644
index 00000000..54d68143
--- /dev/null
+++ b/src/libtools/signal32.c
@@ -0,0 +1,842 @@
+#define _GNU_SOURCE
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <signal.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <syscall.h>
+#include <stddef.h>
+#include <stdarg.h>
+#include <ucontext.h>
+#include <setjmp.h>
+#include <sys/mman.h>
+#include <pthread.h>
+#ifndef ANDROID
+#include <execinfo.h>
+#endif
+
+#include "box32context.h"
+#include "debug.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "emu/x64run_private.h"
+#include "signals.h"
+#include "box64stack.h"
+#include "dynarec.h"
+#include "callback.h"
+#include "x64run.h"
+#include "elfloader.h"
+#include "threads.h"
+#include "emu/x87emu_private.h"
+#include "custommem.h"
+#ifdef DYNAREC
+#include "dynablock.h"
+#include "../dynarec/dynablock_private.h"
+#include "dynarec_native.h"
+#endif
+
+
+/* Definitions taken from the kernel headers.  */
+enum
+{
+  I386_GS = 0,
+# define I386_GS         I386_GS
+  I386_FS,
+# define I386_FS         I386_FS
+  I386_ES,
+# define I386_ES         I386_ES
+  I386_DS,
+# define I386_DS         I386_DS
+  I386_EDI,
+# define I386_EDI        I386_EDI
+  I386_ESI,
+# define I386_ESI        I386_ESI
+  I386_EBP,
+# define I386_EBP        I386_EBP
+  I386_ESP,
+# define I386_ESP        I386_ESP
+  I386_EBX,
+# define I386_EBX        I386_EBX
+  I386_EDX,
+# define I386_EDX        I386_EDX
+  I386_ECX,
+# define I386_ECX        I386_ECX
+  I386_EAX,
+# define I386_EAX        I386_EAX
+  I386_TRAPNO,
+# define I386_TRAPNO        I386_TRAPNO
+  I386_ERR,
+# define I386_ERR        I386_ERR
+  I386_EIP,
+# define I386_EIP        I386_EIP
+  I386_CS,
+# define I386_CS                I386_CS
+  I386_EFL,
+# define I386_EFL        I386_EFL
+  I386_UESP,
+# define I386_UESP        I386_UESP
+  I386_SS
+# define I386_SS        I386_SS
+};
+
+typedef uint32_t i386_gregset_t[19];
+struct i386_fpreg
+{
+  uint16_t significand[4];
+  uint16_t exponent;
+}__attribute__((packed));
+
+struct i386_fpxreg
+{
+  unsigned short significand[4];
+  unsigned short exponent;
+  unsigned short padding[3];
+}__attribute__((packed));
+
+struct i386_xmmreg
+{
+  uint32_t          element[4];
+}__attribute__((packed));
+
+struct i386_fpstate
+{
+  /* Regular FPU environment.  */
+  uint32_t          cw;
+  uint32_t          sw;
+  uint32_t          tag;
+  uint32_t          ipoff;
+  uint32_t          cssel;
+  uint32_t          dataoff;
+  uint32_t          datasel;
+  struct i386_fpreg _st[8];
+  uint32_t          status_magic;
+  /* FXSR FPU environment.  */
+  uint32_t          _fxsr_env[6];
+  uint32_t          mxcsr;
+  uint32_t          reserved;
+  struct i386_fpxreg _fxsr_st[8];
+  struct i386_xmmreg _xmm[8];
+  uint32_t          padding[56];
+}__attribute__((packed));
+
+typedef struct i386_fpstate *i386_fpregset_t;
+
+static void save_fpreg(x64emu_t* emu, struct i386_fpstate* state)
+{
+    emu->sw.f.F87_TOP = emu->top&7;
+    state->sw = emu->sw.x16;
+    state->cw = emu->cw.x16;
+    // save SSE and MMX regs
+    fpu_fxsave32(emu, &state->_fxsr_env);
+}
+static void load_fpreg(x64emu_t* emu, struct i386_fpstate* state)
+{
+    // copy SSE and MMX regs
+    fpu_fxrstor32(emu, &state->_fxsr_env);
+    emu->cw.x16 = state->cw;
+    emu->sw.x16 = state->sw;
+    emu->top = emu->sw.f.F87_TOP&7;
+}
+
+typedef struct
+  {
+    ptr_t ss_sp;
+    int ss_flags;
+    long_t ss_size;
+  } i386_stack_t;
+
+typedef struct x64_stack_s
+{
+    void *ss_sp;
+    int ss_flags;
+    size_t ss_size;
+} x64_stack_t;
+
+
+/*
+another way to see the sigcontext
+struct sigcontext
+{
+  unsigned short gs, __gsh;
+  unsigned short fs, __fsh;
+  unsigned short es, __esh;
+  unsigned short ds, __dsh;
+  unsigned long edi;
+  unsigned long esi;
+  unsigned long ebp;
+  unsigned long esp;
+  unsigned long ebx;
+  unsigned long edx;
+  unsigned long ecx;
+  unsigned long eax;
+  unsigned long trapno;
+  unsigned long err;
+  unsigned long eip;
+  unsigned short cs, __csh;
+  unsigned long eflags;
+  unsigned long esp_at_signal;
+  unsigned short ss, __ssh;
+  struct _fpstate * fpstate;
+  unsigned long oldmask;
+  unsigned long cr2;
+};
+*/
+typedef struct
+  {
+    i386_gregset_t gregs;
+    ptr_t fpregs;   //i386_fpregset_t
+    uint32_t oldmask;
+    uint32_t cr2;
+  } i386_mcontext_t;
+
+// /!\ signal sig_set is different than glibc __sig_set
+#define _NSIG_WORDS (64 / 32)
+typedef unsigned long i386_old_sigset_t;
+typedef struct {
+    unsigned long sig[_NSIG_WORDS];
+} i386_sigset_t;
+
+struct i386_xsave_hdr_struct {
+ 	uint64_t xstate_bv;
+ 	uint64_t reserved1[2];
+ 	uint64_t reserved2[5];
+};
+
+struct i386_xstate {
+	/*
+	 * Applications need to refer to fpstate through fpstate pointer
+	 * in sigcontext. Not here directly.
+	 */
+ 	struct i386_fpstate fpstate;
+ 	struct i386_xsave_hdr_struct xsave_hdr;
+ 	/* new processor state extensions will go here */
+} __attribute__ ((aligned (64)));
+
+struct i386_xstate_cntxt {
+	ptr_t               xstate; //struct  i386_xstate *xstate;
+	uint32_t	        size;
+	uint32_t 	        lmask;
+	uint32_t	        hmask;
+};
+
+typedef struct i386_ucontext_s
+{
+    uint32_t uc_flags;
+    ptr_t uc_link;  //struct i386_ucontext_s *uc_link;
+    i386_stack_t uc_stack;
+    i386_mcontext_t uc_mcontext;
+    i386_sigset_t uc_sigmask;
+	/* Allow for uc_sigmask growth.  Glibc uses a 1024-bit sigset_t.  */
+	int		  unused[32 - (sizeof (sigset_t) / sizeof (int))];
+	//struct i386_xstate_cntxt  uc_xstate;
+    struct i386_xstate  xstate;
+} i386_ucontext_t;
+
+typedef struct i386_sigframe_s {
+    ptr_t           pretcode;   // pointer to retcode
+    int             sig;
+    i386_mcontext_t cpustate;
+    struct i386_xstate fpstate;
+    ptr_t           extramask[64-1];
+    char            retcode[8];
+} i386_sigframe_t;
+
+struct kernel_sigaction {
+        void (*k_sa_handler) (int);
+        unsigned long sa_flags;
+        void (*sa_restorer) (void);
+        unsigned long sa_mask;
+        unsigned long sa_mask2;
+};
+#ifdef DYNAREC
+uintptr_t getX64Address(dynablock_t* db, uintptr_t arm_addr);
+#endif
+
+x64_stack_t* sigstack_getstack();
+int my_sigaltstack(x64emu_t* emu, const x64_stack_t* ss, x64_stack_t* oss);
+EXPORT int my32_sigaltstack(x64emu_t* emu, const i386_stack_t* ss, i386_stack_t* oss)
+{
+    x64_stack_t ss_ = {0};
+    x64_stack_t oss_ = {0};
+    if(ss) {
+        ss_.ss_flags = ss->ss_flags;
+        ss_.ss_sp = from_ptrv(ss->ss_sp);
+        ss_.ss_size = ss->ss_size;
+    }
+    int ret = my_sigaltstack(emu, ss?(&ss_):NULL, oss?(&oss_):NULL);
+    if(!ret && oss) {
+        oss->ss_flags = oss_.ss_flags;
+        oss->ss_sp = to_ptrv(oss_.ss_sp);
+        oss->ss_size = oss_.ss_size;
+    }
+    return ret;
+}
+
+
+uint32_t RunFunctionHandler32(int* exit, int dynarec, i386_ucontext_t* sigcontext, ptr_t fnc, int nargs, ...)
+{
+    if(fnc==0 || fnc==1) {
+        va_list va;
+        va_start (va, nargs);
+        int sig = va_arg(va, int);
+        va_end (va);
+        printf_log(LOG_NONE, "%04d|BOX32: Warning, calling Signal %d function handler %s\n", GetTID(), sig, fnc?"SIG_IGN":"SIG_DFL");
+        if(fnc==0) {
+            printf_log(LOG_NONE, "Unhandled signal caught, aborting\n");
+            abort();
+        }
+        return 0;
+    }
+#ifdef HAVE_TRACE
+    uintptr_t old_start = trace_start, old_end = trace_end;
+#if 0
+    trace_start = 0; trace_end = 1; // disabling trace, globably for now...
+#endif
+#endif
+#ifndef USE_CUSTOM_MEM
+    // because a signal can interupt a malloc-like function
+    // Dynarec cannot be used in signal handling unless custom malloc is used
+    dynarec = 0;
+#endif
+
+    x64emu_t *emu = thread_get_emu();
+    #ifdef DYNAREC
+    if(box64_dynarec_test)
+        emu->test.test = 0;
+    #endif
+
+    /*SetFS(emu, default_fs);*/
+    for (int i=0; i<6; ++i)
+        emu->segs_serial[i] = 0;
+
+    int align = nargs&1;
+
+    R_ESP -= nargs * sizeof(ptr_t);
+
+    uint32_t *p = (uint32_t*)from_ptrv(R_ESP);
+
+    va_list va;
+    va_start (va, nargs);
+    for (int i=0; i<nargs; ++i) {
+        uint32_t v = va_arg(va, uint32_t);
+        *p = v;
+        p++;
+    }
+    va_end (va);
+
+    printf_log(LOG_DEBUG, "%04d|signal #%d function handler %p called, RSP=%p\n", GetTID(), R_EDI, from_ptrv(fnc), from_ptrv(R_ESP));
+
+    int oldquitonlongjmp = emu->flags.quitonlongjmp;
+    emu->flags.quitonlongjmp = 2;
+    int old_cs = R_CS;
+    R_CS = 0x23;
+
+    emu->eflags.x64 &= ~(1<<F_TF); // this one needs to cleared
+
+    if(dynarec)
+        DynaCall(emu, fnc);
+    else
+        EmuCall(emu, fnc);
+
+    if(!emu->flags.longjmp)
+        R_ESP+=nargs*sizeof(ptr_t);
+
+    if(!emu->flags.longjmp && R_CS==0x23)
+        R_CS = old_cs;
+
+    emu->flags.quitonlongjmp = oldquitonlongjmp;
+
+    #ifdef DYNAREC
+    if(box64_dynarec_test) {
+        emu->test.test = 0;
+        emu->test.clean = 0;
+    }
+    #endif
+
+    if(emu->flags.longjmp) {
+        // longjmp inside signal handler, lets grab all relevent value and do the actual longjmp in the signal handler
+        emu->flags.longjmp = 0;
+        if(sigcontext) {
+            sigcontext->uc_mcontext.gregs[I386_EAX] = R_EAX;
+            sigcontext->uc_mcontext.gregs[I386_ECX] = R_ECX;
+            sigcontext->uc_mcontext.gregs[I386_EDX] = R_EDX;
+            sigcontext->uc_mcontext.gregs[I386_EDI] = R_EDI;
+            sigcontext->uc_mcontext.gregs[I386_ESI] = R_ESI;
+            sigcontext->uc_mcontext.gregs[I386_EBP] = R_EBP;
+            sigcontext->uc_mcontext.gregs[I386_ESP] = R_ESP;
+            sigcontext->uc_mcontext.gregs[I386_EBX] = R_EBX;
+            sigcontext->uc_mcontext.gregs[I386_EIP] = R_EIP;
+            // flags
+            sigcontext->uc_mcontext.gregs[I386_EFL] = emu->eflags.x64;
+            // get segments
+            sigcontext->uc_mcontext.gregs[I386_CS] = R_CS;
+            sigcontext->uc_mcontext.gregs[I386_DS] = R_DS;
+            sigcontext->uc_mcontext.gregs[I386_ES] = R_ES;
+            sigcontext->uc_mcontext.gregs[I386_SS] = R_SS;
+            sigcontext->uc_mcontext.gregs[I386_FS] = R_FS;
+            sigcontext->uc_mcontext.gregs[I386_GS] = R_GS;
+        } else {
+            printf_log(LOG_NONE, "Warning, longjmp in signal but no sigcontext to change\n");
+        }
+    }
+    if(exit)
+        *exit = emu->exit;
+
+    uint32_t ret = R_EAX;
+
+#ifdef HAVE_TRACE
+    trace_start = old_start; trace_end = old_end;
+#endif
+
+    return ret;
+}
+
+#define is_memprot_locked (1<<1)
+#define is_dyndump_locked (1<<8)
+void my_sigactionhandler_oldcode_32(int32_t sig, int simple, siginfo_t* info, void * ucntx, int* old_code, void* cur_db)
+{
+    int Locks = unlockMutex();
+
+    printf_log(LOG_DEBUG, "Sigactionhanlder for signal #%d called (jump to %p/%s)\n", sig, (void*)my_context->signals[sig], GetNativeName((void*)my_context->signals[sig]));
+
+    uintptr_t restorer = my_context->restorer[sig];
+    // get that actual ESP first!
+    x64emu_t *emu = thread_get_emu();
+    uintptr_t frame = R_RSP;
+#if defined(DYNAREC)
+#if defined(ARM64)
+    dynablock_t* db = (dynablock_t*)cur_db;//FindDynablockFromNativeAddress(pc);
+    ucontext_t *p = (ucontext_t *)ucntx;
+    void* pc = NULL;
+    if(p) {
+        pc = (void*)p->uc_mcontext.pc;
+        if(db)
+            frame = (uintptr_t)p->uc_mcontext.regs[10+_SP];
+    }
+#elif defined(LA64)
+    dynablock_t* db = (dynablock_t*)cur_db;//FindDynablockFromNativeAddress(pc);
+    ucontext_t *p = (ucontext_t *)ucntx;
+    void* pc = NULL;
+    if(p) {
+        pc = (void*)p->uc_mcontext.__pc;
+        if(db)
+            frame = (uintptr_t)p->uc_mcontext.__gregs[12+_SP];
+    }
+#elif defined(RV64)
+    dynablock_t* db = (dynablock_t*)cur_db;//FindDynablockFromNativeAddress(pc);
+    ucontext_t *p = (ucontext_t *)ucntx;
+    void* pc = NULL;
+    if(p) {
+        pc = (void*)p->uc_mcontext.__gregs[0];
+        if(db)
+            frame = (uintptr_t)p->uc_mcontext.__gregs[16+_SP];
+    }
+#else
+#error Unsupported architecture
+#endif
+#else
+    (void)ucntx; (void)cur_db;
+#endif
+    // setup libc context stack frame, on caller stack
+    frame = frame&~15;
+
+    // stack tracking
+    x64_stack_t *new_ss = my_context->onstack[sig]?sigstack_getstack():NULL;
+    int used_stack = 0;
+    if(new_ss) {
+        if(new_ss->ss_flags == SS_ONSTACK) { // already using it!
+            frame = ((uintptr_t)emu->regs[_SP].q[0] - 128) & ~0x0f;
+        } else {
+            frame = (uintptr_t)(((uintptr_t)new_ss->ss_sp + new_ss->ss_size - 16) & ~0x0f);
+            used_stack = 1;
+            new_ss->ss_flags = SS_ONSTACK;
+        }
+    } else {
+        frame -= 0x200; // redzone
+    }
+
+    // TODO: do I need to really setup 2 stack frame? That doesn't seems right!
+    // setup stack frame
+    frame -= 512+64+16*16;
+    void* xstate = (void*)frame;
+    frame -= sizeof(siginfo_t);
+    siginfo_t* info2 = (siginfo_t*)frame;
+    memcpy(info2, info, sizeof(siginfo_t));
+    // try to fill some sigcontext....
+    frame -= sizeof(i386_ucontext_t);
+    i386_ucontext_t   *sigcontext = (i386_ucontext_t*)frame;
+    // get general register
+    sigcontext->uc_mcontext.gregs[I386_EAX] = R_EAX;
+    sigcontext->uc_mcontext.gregs[I386_ECX] = R_ECX;
+    sigcontext->uc_mcontext.gregs[I386_EDX] = R_EDX;
+    sigcontext->uc_mcontext.gregs[I386_EDI] = R_EDI;
+    sigcontext->uc_mcontext.gregs[I386_ESI] = R_ESI;
+    sigcontext->uc_mcontext.gregs[I386_EBP] = R_EBP;
+    sigcontext->uc_mcontext.gregs[I386_ESP] = R_ESP;
+    sigcontext->uc_mcontext.gregs[I386_EBX] = R_EBX;
+    sigcontext->uc_mcontext.gregs[I386_EIP] = R_EIP;//emu->old_ip;   // old_ip should be more accurate as the "current" IP, but it's not always up-to-date
+    // flags
+    sigcontext->uc_mcontext.gregs[I386_EFL] = emu->eflags.x64;
+    // get segments
+    sigcontext->uc_mcontext.gregs[I386_CS] = R_CS;
+    sigcontext->uc_mcontext.gregs[I386_DS] = R_DS;
+    sigcontext->uc_mcontext.gregs[I386_ES] = R_ES;
+    sigcontext->uc_mcontext.gregs[I386_SS] = R_SS;
+    sigcontext->uc_mcontext.gregs[I386_FS] = R_FS;
+    sigcontext->uc_mcontext.gregs[I386_GS] = R_GS;
+#if defined(DYNAREC)
+#if defined(ARM64)
+    if(db && p) {
+        sigcontext->uc_mcontext.gregs[I386_EAX] = p->uc_mcontext.regs[10];
+        sigcontext->uc_mcontext.gregs[I386_ECX] = p->uc_mcontext.regs[11];
+        sigcontext->uc_mcontext.gregs[I386_EDX] = p->uc_mcontext.regs[12];
+        sigcontext->uc_mcontext.gregs[I386_EBX] = p->uc_mcontext.regs[13];
+        sigcontext->uc_mcontext.gregs[I386_ESP] = p->uc_mcontext.regs[14];
+        sigcontext->uc_mcontext.gregs[I386_EBP] = p->uc_mcontext.regs[15];
+        sigcontext->uc_mcontext.gregs[I386_ESI] = p->uc_mcontext.regs[16];
+        sigcontext->uc_mcontext.gregs[I386_EDI] = p->uc_mcontext.regs[17];
+        sigcontext->uc_mcontext.gregs[I386_EIP] = getX64Address(db, (uintptr_t)pc);
+    }
+#elif defined(LA64)
+    if(db && p) {
+        sigcontext->uc_mcontext.gregs[I386_EAX] = p->uc_mcontext.__gregs[12];
+        sigcontext->uc_mcontext.gregs[I386_ECX] = p->uc_mcontext.__gregs[13];
+        sigcontext->uc_mcontext.gregs[I386_EDX] = p->uc_mcontext.__gregs[14];
+        sigcontext->uc_mcontext.gregs[I386_EBX] = p->uc_mcontext.__gregs[15];
+        sigcontext->uc_mcontext.gregs[I386_ESP] = p->uc_mcontext.__gregs[16];
+        sigcontext->uc_mcontext.gregs[I386_EBP] = p->uc_mcontext.__gregs[17];
+        sigcontext->uc_mcontext.gregs[I386_ESI] = p->uc_mcontext.__gregs[18];
+        sigcontext->uc_mcontext.gregs[I386_EDI] = p->uc_mcontext.__gregs[19];
+        sigcontext->uc_mcontext.gregs[I386_EIP] = getX64Address(db, (uintptr_t)pc);
+    }
+#elif defined(RV64)
+    if(db && p) {
+        sigcontext->uc_mcontext.gregs[I386_EAX] = p->uc_mcontext.__gregs[16];
+        sigcontext->uc_mcontext.gregs[I386_ECX] = p->uc_mcontext.__gregs[17];
+        sigcontext->uc_mcontext.gregs[I386_EDX] = p->uc_mcontext.__gregs[18];
+        sigcontext->uc_mcontext.gregs[I386_EBX] = p->uc_mcontext.__gregs[19];
+        sigcontext->uc_mcontext.gregs[I386_ESP] = p->uc_mcontext.__gregs[20];
+        sigcontext->uc_mcontext.gregs[I386_EBP] = p->uc_mcontext.__gregs[21];
+        sigcontext->uc_mcontext.gregs[I386_ESI] = p->uc_mcontext.__gregs[22];
+        sigcontext->uc_mcontext.gregs[I386_EDI] = p->uc_mcontext.__gregs[23];
+        sigcontext->uc_mcontext.gregs[I386_EIP] = getX64Address(db, (uintptr_t)pc);
+    }
+#else
+#error Unsupported architecture
+#endif
+#endif
+    // get FloatPoint status
+    sigcontext->uc_mcontext.fpregs = to_ptrv(xstate);//(struct x64_libc_fpstate*)&sigcontext->xstate;
+    fpu_xsave_mask(emu, xstate, 1, 0b111);
+    memcpy(&sigcontext->xstate, xstate, sizeof(sigcontext->xstate));
+    ((struct i386_fpstate*)xstate)->status_magic = 0x46505853;   // magic number to signal an XSTATE type of fpregs
+    // get signal mask
+
+    if(new_ss) {
+        sigcontext->uc_stack.ss_sp = to_ptrv(new_ss->ss_sp);
+        sigcontext->uc_stack.ss_size = new_ss->ss_size;
+        sigcontext->uc_stack.ss_flags = new_ss->ss_flags;
+    } else
+        sigcontext->uc_stack.ss_flags = SS_DISABLE;
+    // Try to guess some X64_TRAPNO
+    /*
+    TRAP_x86_DIVIDE     = 0,   // Division by zero exception
+    TRAP_x86_TRCTRAP    = 1,   // Single-step exception
+    TRAP_x86_NMI        = 2,   // NMI interrupt
+    TRAP_x86_BPTFLT     = 3,   // Breakpoint exception
+    TRAP_x86_OFLOW      = 4,   // Overflow exception
+    TRAP_x86_BOUND      = 5,   // Bound range exception
+    TRAP_x86_PRIVINFLT  = 6,   // Invalid opcode exception
+    TRAP_x86_DNA        = 7,   // Device not available exception
+    TRAP_x86_DOUBLEFLT  = 8,   // Double fault exception
+    TRAP_x86_FPOPFLT    = 9,   // Coprocessor segment overrun
+    TRAP_x86_TSSFLT     = 10,  // Invalid TSS exception
+    TRAP_x86_SEGNPFLT   = 11,  // Segment not present exception
+    TRAP_x86_STKFLT     = 12,  // Stack fault
+    TRAP_x86_PROTFLT    = 13,  // General protection fault
+    TRAP_x86_PAGEFLT    = 14,  // Page fault
+    TRAP_x86_ARITHTRAP  = 16,  // Floating point exception
+    TRAP_x86_ALIGNFLT   = 17,  // Alignment check exception
+    TRAP_x86_MCHK       = 18,  // Machine check exception
+    TRAP_x86_CACHEFLT   = 19   // SIMD exception (via SIGFPE) if CPU is SSE capable otherwise Cache flush exception (via SIGSEV)
+    */
+    uint32_t prot = getProtection((uintptr_t)info->si_addr);
+    if(sig==SIGBUS)
+        sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 17;
+    else if(sig==SIGSEGV) {
+        if((uintptr_t)info->si_addr == sigcontext->uc_mcontext.gregs[I386_EIP]) {
+            sigcontext->uc_mcontext.gregs[I386_ERR] = (info->si_errno==0x1234)?0:((info->si_errno==0xdead)?(0x2|(info->si_code<<3)):0x0010);    // execution flag issue (probably), unless it's a #GP(0)
+            sigcontext->uc_mcontext.gregs[I386_TRAPNO] = ((info->si_code==SEGV_ACCERR) || (info->si_errno==0x1234) || (info->si_errno==0xdead) || ((uintptr_t)info->si_addr==0))?13:14;
+        } else if(info->si_code==SEGV_ACCERR && !(prot&PROT_WRITE)) {
+            sigcontext->uc_mcontext.gregs[I386_ERR] = 0x0002;    // write flag issue
+            sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 14;
+        } else {
+            if((info->si_code!=SEGV_ACCERR) && labs((intptr_t)info->si_addr-(intptr_t)sigcontext->uc_mcontext.gregs[I386_ESP])<16)
+                sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 12; // stack overflow probably
+            else
+                sigcontext->uc_mcontext.gregs[I386_TRAPNO] = (info->si_code == SEGV_ACCERR)?13:14;
+            //I386_ERR seems to be INT:8 CODE:8. So for write access segfault it's 0x0002 For a read it's 0x0004 (and 8 for exec). For an int 2d it could be 0x2D01 for example
+            sigcontext->uc_mcontext.gregs[I386_ERR] = 0x0004;    // read error? there is no execute control in box64 anyway
+        }
+        if(info->si_code == SEGV_ACCERR && old_code)
+            *old_code = -1;
+        if(info->si_errno==0x1234) {
+            info2->si_errno = 0;
+        } else if(info->si_errno==0xdead) {
+            // INT x
+            uint8_t int_n = info2->si_code;
+            info2->si_errno = 0;
+            info2->si_code = info->si_code;
+            info2->si_addr = NULL;
+            // some special cases...
+            if(int_n==3) {
+                info2->si_signo = SIGTRAP;
+                sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 3;
+                sigcontext->uc_mcontext.gregs[I386_ERR] = 0;
+            } else if(int_n==0x04) {
+                sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 4;
+                sigcontext->uc_mcontext.gregs[I386_ERR] = 0;
+            } else if (int_n==0x29 || int_n==0x2c || int_n==0x2d) {
+                sigcontext->uc_mcontext.gregs[I386_ERR] = 0x02|(int_n<<3);
+            } else {
+                sigcontext->uc_mcontext.gregs[I386_ERR] = 0x0a|(int_n<<3);
+            }
+        } else if(info->si_errno==0xcafe) {
+            info2->si_errno = 0;
+            sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 0;
+            info2->si_signo = SIGFPE;
+        }
+    } else if(sig==SIGFPE) {
+        if (info->si_code == FPE_INTOVF)
+            sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 4;
+        else
+            sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 19;
+    } else if(sig==SIGILL)
+        sigcontext->uc_mcontext.gregs[I386_TRAPNO] = 6;
+    else if(sig==SIGTRAP) {
+        info2->si_code = 128;
+        sigcontext->uc_mcontext.gregs[I386_TRAPNO] = info->si_code;
+        sigcontext->uc_mcontext.gregs[I386_ERR] = 0;
+    }
+    //TODO: SIGABRT generate what?
+    printf_log(LOG_DEBUG, "Signal %d: si_addr=%p, TRAPNO=%d, ERR=%d, RIP=%p\n", sig, (void*)info2->si_addr, sigcontext->uc_mcontext.gregs[I386_TRAPNO], sigcontext->uc_mcontext.gregs[I386_ERR],from_ptrv(sigcontext->uc_mcontext.gregs[I386_EIP]));
+    // call the signal handler
+    i386_ucontext_t sigcontext_copy = *sigcontext;
+    // save old value from emu
+    #define GO(A) uint32_t old_##A = R_##A
+    GO(EAX);
+    GO(EDI);
+    GO(ESI);
+    GO(EDX);
+    GO(ECX);
+    GO(EBP);
+    #undef GO
+    // set stack pointer
+    R_ESP = frame;
+    // set frame pointer
+    R_EBP = sigcontext->uc_mcontext.gregs[I386_EBP];
+
+    int exits = 0;
+    int ret;
+    int dynarec = 0;
+    #ifdef DYNAREC
+    if(sig!=SIGSEGV && !(Locks&is_dyndump_locked) && !(Locks&is_memprot_locked))
+        dynarec = 1;
+    #endif
+    ret = RunFunctionHandler32(&exits, dynarec, sigcontext, my_context->signals[info2->si_signo], 3, info2->si_signo, info2, sigcontext);
+    // restore old value from emu
+    if(used_stack)  // release stack
+        new_ss->ss_flags = 0;
+    #define GO(A) R_##A = old_##A
+    GO(EAX);
+    GO(EDI);
+    GO(ESI);
+    GO(EDX);
+    GO(ECX);
+    GO(EBP);
+    #undef GO
+
+    if(memcmp(sigcontext, &sigcontext_copy, sizeof(i386_ucontext_t))) {
+        if(emu->jmpbuf) {
+            #define GO(R)   emu->regs[_##R].q[0]=sigcontext->uc_mcontext.gregs[I386_E##R]
+            GO(AX);
+            GO(CX);
+            GO(DX);
+            GO(DI);
+            GO(SI);
+            GO(BP);
+            GO(SP);
+            GO(BX);
+            #undef GO
+            emu->ip.q[0]=sigcontext->uc_mcontext.gregs[I386_EIP];
+            // flags
+            emu->eflags.x64=sigcontext->uc_mcontext.gregs[I386_EFL];
+            // get segments
+            #define GO(S) if(emu->segs[_##S]!=sigcontext->uc_mcontext.gregs[I386_##S])  emu->segs[_##S]=sigcontext->uc_mcontext.gregs[I386_##S]
+            GO(CS);
+            GO(DS);
+            GO(ES);
+            GO(SS);
+            GO(GS);
+            GO(FS);
+            #undef GO
+            for(int i=0; i<6; ++i)
+                emu->segs_serial[i] = 0;
+            printf_log(LOG_DEBUG, "Context has been changed in Sigactionhanlder, doing siglongjmp to resume emu at %p, RSP=%p\n", (void*)R_RIP, (void*)R_RSP);
+            if(old_code)
+                *old_code = -1;    // re-init the value to allow another segfault at the same place
+            //relockMutex(Locks);   // do not relock mutex, because of the siglongjmp, whatever was running is canceled
+            #ifdef DYNAREC
+            if(Locks & is_dyndump_locked)
+                CancelBlock64(1);
+            #endif
+            #ifdef RV64
+            emu->xSPSave = emu->old_savedsp;
+            #endif
+            #ifdef ANDROID
+            siglongjmp(*emu->jmpbuf, 1);
+            #else
+            siglongjmp(emu->jmpbuf, 1);
+            #endif
+        }
+        printf_log(LOG_INFO, "Warning, context has been changed in Sigactionhanlder%s\n", (sigcontext->uc_mcontext.gregs[I386_EIP]!=sigcontext_copy.uc_mcontext.gregs[I386_EIP])?" (EIP changed)":"");
+    }
+    // restore regs...
+    #define GO(R)   R_##R=sigcontext->uc_mcontext.gregs[I386_##R]
+    GO(EAX);
+    GO(ECX);
+    GO(EDX);
+    GO(EDI);
+    GO(ESI);
+    GO(EBP);
+    GO(ESP);
+    GO(EBX);
+    #undef GO
+    emu->eflags.x64=sigcontext->uc_mcontext.gregs[I386_EFL];
+    #define GO(R)   R_##R=sigcontext->uc_mcontext.gregs[I386_##R]
+    GO(CS);
+    GO(DS);
+    GO(ES);
+    GO(SS);
+    GO(GS);
+    GO(FS);
+    #undef GO
+
+    printf_log(LOG_DEBUG, "Sigactionhanlder main function returned (exit=%d, restorer=%p)\n", exits, (void*)restorer);
+    if(exits) {
+        //relockMutex(Locks);   // the thread will exit, so no relock there
+        #ifdef DYNAREC
+        if(Locks & is_dyndump_locked)
+            CancelBlock64(1);
+        #endif
+        exit(ret);
+    }
+    if(restorer)
+        RunFunctionHandler32(&exits, 0, NULL, restorer, 0);
+    relockMutex(Locks);
+}
+
+EXPORT int my32_getcontext(x64emu_t* emu, void* ucp)
+{
+//    printf_log(LOG_NONE, "Warning: call to partially implemented getcontext\n");
+    i386_ucontext_t *u = (i386_ucontext_t*)ucp;
+    // stack traking
+    u->uc_stack.ss_sp = 0;
+    u->uc_stack.ss_size = 0;    // this need to filled
+    // get general register
+    u->uc_mcontext.gregs[I386_EAX] = R_EAX;
+    u->uc_mcontext.gregs[I386_ECX] = R_ECX;
+    u->uc_mcontext.gregs[I386_EDX] = R_EDX;
+    u->uc_mcontext.gregs[I386_EDI] = R_EDI;
+    u->uc_mcontext.gregs[I386_ESI] = R_ESI;
+    u->uc_mcontext.gregs[I386_EBP] = R_EBP;
+    u->uc_mcontext.gregs[I386_EIP] = *(uint32_t*)from_ptrv(R_ESP);
+    u->uc_mcontext.gregs[I386_ESP] = R_ESP+4;
+    u->uc_mcontext.gregs[I386_EBX] = R_EBX;
+    // get segments
+    u->uc_mcontext.gregs[I386_GS] = R_GS;
+    u->uc_mcontext.gregs[I386_FS] = R_FS;
+    u->uc_mcontext.gregs[I386_ES] = R_ES;
+    u->uc_mcontext.gregs[I386_DS] = R_DS;
+    u->uc_mcontext.gregs[I386_CS] = R_CS;
+    u->uc_mcontext.gregs[I386_SS] = R_SS;
+    // get FloatPoint status
+    if(u->uc_mcontext.fpregs)
+        save_fpreg(emu, from_ptrv(u->uc_mcontext.fpregs));
+    // get signal mask
+    sigprocmask(SIG_SETMASK, NULL, (sigset_t*)&u->uc_sigmask);
+    // ensure uc_link is properly initialized
+    u->uc_link = to_ptrv(emu->uc_link);
+
+    return 0;
+}
+
+EXPORT int my32_setcontext(x64emu_t* emu, void* ucp)
+{
+//    printf_log(LOG_NONE, "Warning: call to partially implemented setcontext\n");
+    i386_ucontext_t *u = (i386_ucontext_t*)ucp;
+    // stack tracking
+    emu->init_stack = from_ptrv(u->uc_stack.ss_sp);
+    emu->size_stack = from_ulong(u->uc_stack.ss_size);
+    // set general register
+    R_EAX = u->uc_mcontext.gregs[I386_EAX];
+    R_ECX = u->uc_mcontext.gregs[I386_ECX];
+    R_EDX = u->uc_mcontext.gregs[I386_EDX];
+    R_EDI = u->uc_mcontext.gregs[I386_EDI];
+    R_ESI = u->uc_mcontext.gregs[I386_ESI];
+    R_EBP = u->uc_mcontext.gregs[I386_EBP];
+    R_EIP = u->uc_mcontext.gregs[I386_EIP];
+    R_ESP = u->uc_mcontext.gregs[I386_ESP];
+    R_EBX = u->uc_mcontext.gregs[I386_EBX];
+    // get segments
+    R_GS = u->uc_mcontext.gregs[I386_GS];
+    R_FS = u->uc_mcontext.gregs[I386_FS];
+    R_ES = u->uc_mcontext.gregs[I386_ES];
+    R_DS = u->uc_mcontext.gregs[I386_DS];
+    R_CS = u->uc_mcontext.gregs[I386_CS];
+    R_SS = u->uc_mcontext.gregs[I386_SS];
+    // set FloatPoint status
+    if(u->uc_mcontext.fpregs)
+        load_fpreg(emu, from_ptrv(u->uc_mcontext.fpregs));
+    // set signal mask
+    sigprocmask(SIG_SETMASK, (sigset_t*)&u->uc_sigmask, NULL);
+    // set uc_link
+    emu->uc_link = from_ptrv(u->uc_link);
+    errno = 0;
+    return R_EAX;
+}
+
+EXPORT int my32_makecontext(x64emu_t* emu, void* ucp, void* fnc, int32_t argc, int32_t* argv)
+{
+//    printf_log(LOG_NONE, "Warning: call to unimplemented makecontext\n");
+    i386_ucontext_t *u = (i386_ucontext_t*)ucp;
+    // setup stack
+    u->uc_mcontext.gregs[I386_ESP] = to_ptr(u->uc_stack.ss_sp + u->uc_stack.ss_size - 4);
+    // setup the function
+    u->uc_mcontext.gregs[I386_EIP] = to_ptrv(fnc);
+    // setup args
+    uint32_t* esp = (uint32_t*)from_ptr(u->uc_mcontext.gregs[I386_ESP]);
+    for (int i=0; i<argc; ++i) {
+        // push value
+        --esp;
+        *esp = argv[(argc-1)-i];
+    }
+    // push the return value
+    --esp;
+    *esp = to_ptr(my_context->exit_bridge);
+    u->uc_mcontext.gregs[I386_ESP] = (uintptr_t)esp;
+    
+    return 0;
+}
+
+EXPORT int my32_swapcontext(x64emu_t* emu, void* ucp1, void* ucp2)
+{
+//    printf_log(LOG_NONE, "Warning: call to unimplemented swapcontext\n");
+    // grab current context in ucp1
+    my32_getcontext(emu, ucp1);
+    // activate ucp2
+    my32_setcontext(emu, ucp2);
+    return 0;
+}
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index e58081c1..a3030e40 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -269,6 +269,10 @@ static void sigstack_key_alloc() {
     pthread_key_create(&sigstack_key, sigstack_destroy);
 }
 
+x64_stack_t* sigstack_getstack() {
+    return (x64_stack_t*)pthread_getspecific(sigstack_key);
+}
+
 // this allow handling "safe" function that just abort if accessing a bad address
 static __thread JUMPBUFF signal_jmpbuf;
 #ifdef ANDROID
@@ -923,8 +927,17 @@ int sigbus_specialcases(siginfo_t* info, void * ucntx, void* pc, void* _fpsimd)
     return 0;
 }
 
+#ifdef BOX32
+void my_sigactionhandler_oldcode_32(int32_t sig, int simple, siginfo_t* info, void * ucntx, int* old_code, void* cur_db);
+#endif
 void my_sigactionhandler_oldcode(int32_t sig, int simple, siginfo_t* info, void * ucntx, int* old_code, void* cur_db)
 {
+    #ifdef BOX32
+    if(box64_is32bits) {
+        my_sigactionhandler_oldcode_32(sig, simple, info, ucntx, old_code, cur_db);
+        return;
+    }
+    #endif
     int Locks = unlockMutex();
 
     printf_log(LOG_DEBUG, "Sigactionhanlder for signal #%d called (jump to %p/%s)\n", sig, (void*)my_context->signals[sig], GetNativeName((void*)my_context->signals[sig]));
@@ -2184,7 +2197,7 @@ EXPORT int my_getcontext(x64emu_t* emu, void* ucp)
     // get signal mask
     sigprocmask(SIG_SETMASK, NULL, (sigset_t*)&u->uc_sigmask);
     // ensure uc_link is properly initialized
-    u->uc_link = emu->uc_link;
+    u->uc_link = (x64_ucontext_t*)emu->uc_link;
 
     return 0;
 }
diff --git a/src/libtools/threads.c b/src/libtools/threads.c
index 074068c0..0973d658 100644
--- a/src/libtools/threads.c
+++ b/src/libtools/threads.c
@@ -29,6 +29,9 @@
 #include "dynablock.h"
 #include "dynarec/native_lock.h"
 #endif
+#ifdef BOX32
+#include "box32.h"
+#endif
 
 //void _pthread_cleanup_push_defer(void* buffer, void* routine, void* arg);	// declare hidden functions
 //void _pthread_cleanup_pop_restore(void* buffer, int exec);
@@ -124,14 +127,6 @@ int GetStackSize(x64emu_t* emu, uintptr_t attr, void** stack, size_t* stacksize)
 
 void my_longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val);
 
-typedef struct emuthread_s {
-	uintptr_t 	fnc;
-	void*		arg;
-	x64emu_t*	emu;
-	int			cancel_cap, cancel_size;
-	x64_unwind_buff_t **cancels;
-} emuthread_t;
-
 static pthread_key_t thread_key;
 
 static void emuthread_destroy(void* p)
@@ -144,6 +139,10 @@ static void emuthread_destroy(void* p)
 	if (my_context && (ptr = pthread_getspecific(my_context->tlskey)) != NULL)
         free_tlsdatasize(ptr);*/
 	// free x64emu
+	#ifdef BOX32
+	if(box64_is32bits && !et->join)
+		to_hash_d(et->self);
+	#endif
 	if(et) {
 		FreeX64Emu(&et->emu);
 		box_free(et);
@@ -158,9 +157,13 @@ static void emuthread_cancel(void* p)
 	// check cancels threads
 	for(int i=et->cancel_size-1; i>=0; --i) {
 		et->emu->flags.quitonlongjmp = 0;
-		my_longjmp(et->emu, et->cancels[i]->__cancel_jmp_buf, 1);
+		my_longjmp(et->emu, ((x64_unwind_buff_t*)et->cancels[i])->__cancel_jmp_buf, 1);
 		DynaRun(et->emu);	// will return after a __pthread_unwind_next()
 	}
+	#ifdef BOX32
+	if(box64_is32bits)
+		to_hash_d(et->self);
+	#endif
 	box_free(et->cancels);
 	et->cancels=NULL;
 	et->cancel_size = et->cancel_cap = 0;
@@ -182,6 +185,12 @@ void thread_set_emu(x64emu_t* emu)
 	}
 	et->emu = emu;
 	et->emu->type = EMUTYPE_MAIN;
+	#ifdef BOX32
+	if(box64_is32bits) {
+		et->self = (uintptr_t)pthread_self();
+		et->hself = to_hash(et->self);
+	}
+	#endif
 	pthread_setspecific(thread_key, et);
 }
 
@@ -1097,6 +1106,10 @@ EXPORT int my_pthread_barrier_init(x64emu_t* emu, pthread_barrier_t* bar, my_bar
 
 void init_pthread_helper()
 {
+	#ifdef BOX32
+	if(box64_is32bits)
+		init_pthread_helper_32();
+	#endif
 	real_pthread_cleanup_push_defer = (vFppp_t)dlsym(NULL, "_pthread_cleanup_push_defer");
 	real_pthread_cleanup_pop_restore = (vFpi_t)dlsym(NULL, "_pthread_cleanup_pop_restore");
 	real_pthread_cond_clockwait = (iFppip_t)dlsym(NULL, "pthread_cond_clockwait");
@@ -1129,6 +1142,10 @@ void clean_current_emuthread()
 
 void fini_pthread_helper(box64context_t* context)
 {
+	#ifdef BOX32
+	if(box64_is32bits)
+		fini_pthread_helper_32(context);
+	#endif
 	CleanStackSize(context);
 	clean_current_emuthread();
 }
diff --git a/src/libtools/threads32.c b/src/libtools/threads32.c
new file mode 100755
index 00000000..1fc3a2df
--- /dev/null
+++ b/src/libtools/threads32.c
@@ -0,0 +1,854 @@
+// __USE_UNIX98 is needed for sttype / gettype definition
+#define __USE_UNIX98
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <pthread.h>
+#include <signal.h>
+#include <errno.h>
+#include <setjmp.h>
+#include <sys/mman.h>
+#include <dlfcn.h>
+
+#include "debug.h"
+#include "box32context.h"
+#include "threads.h"
+#include "emu/x64emu_private.h"
+#include "tools/bridge_private.h"
+#include "x64run.h"
+#include "x64emu.h"
+#include "box64stack.h"
+#include "callback.h"
+#include "custommem.h"
+#include "khash.h"
+#include "emu/x64run_private.h"
+#include "x64trace.h"
+#include "dynarec.h"
+#include "bridge.h"
+#ifdef DYNAREC
+#include "dynablock.h"
+#endif
+
+typedef void (*vFppp_t)(void*, void*, void*);
+typedef void (*vFpi_t)(void*, int);
+//starting with glibc 2.34+, those 2 functions are in libc.so as versionned symbol only
+// So use dlsym to get the symbol unversionned, as simple link will not work.
+static vFppp_t real_pthread_cleanup_push_defer = NULL;
+static vFpi_t real_pthread_cleanup_pop_restore = NULL;
+// those function can be used simply
+void _pthread_cleanup_push(void* buffer, void* routine, void* arg);	// declare hidden functions
+void _pthread_cleanup_pop(void* buffer, int exec);
+
+typedef struct threadstack_s {
+	void* 	stack;
+	size_t 	stacksize;
+} threadstack_t;
+
+// longjmp / setjmp
+typedef struct jump_buff_i386_s {
+ uint32_t save_ebx;
+ uint32_t save_esi;
+ uint32_t save_edi;
+ uint32_t save_ebp;
+ uint32_t save_esp;
+ uint32_t save_eip;
+} jump_buff_i386_t;
+
+// sigset_t should have the same size on 32bits and 64bits machine (64bits)
+typedef struct __jmp_buf_tag_s {
+    jump_buff_i386_t __jmpbuf;
+    int              __mask_was_saved;
+    sigset_t         __saved_mask;
+} __jmp_buf_tag_t;
+
+typedef struct x64_unwind_buff_s {
+	struct {
+		jump_buff_i386_t	__cancel_jmp_buf;	
+		int					__mask_was_saved;
+	} __cancel_jmp_buf[1];
+	ptr_t __pad[2];
+	void* __pad3;
+} x64_unwind_buff_t __attribute__((__aligned__));
+
+static pthread_attr_t* get_attr(void* attr);
+static void del_attr(void* attr);
+
+typedef void(*vFv_t)();
+
+KHASH_MAP_INIT_INT(threadstack, threadstack_t)
+#ifndef ANDROID
+KHASH_MAP_INIT_INT(cancelthread, __pthread_unwind_buf_t*)
+#endif
+
+void CleanStackSize(box64context_t* context);
+void FreeStackSize(kh_threadstack_t* map, uintptr_t attr);
+void AddStackSize(kh_threadstack_t* map, uintptr_t attr, void* stack, size_t stacksize);
+int GetStackSize(x64emu_t* emu, uintptr_t attr, void** stack, size_t* stacksize);
+
+static pthread_key_t thread_key;
+
+void my32_longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val);
+
+static void emuthread_destroy(void* p)
+{
+	emuthread_t *et = (emuthread_t*)p;
+	if(!et)
+		return;
+	// destroy the hash key if thread is not joinable
+	if(!et->join)
+		to_hash_d(et->self);
+	// destroy thread emu and all
+	if(et) {
+		FreeX64Emu(&et->emu);
+		free(et);
+	}
+}
+
+static void emuthread_cancel(void* p)
+{
+	emuthread_t *et = (emuthread_t*)p;
+	if(!et)
+		return;
+	// check cancels threads
+	for(int i=et->cancel_size-1; i>=0; --i) {
+		et->emu->flags.quitonlongjmp = 0;
+		my32_longjmp(et->emu, ((x64_unwind_buff_t*)et->cancels[i])->__cancel_jmp_buf, 1);
+		DynaRun(et->emu);	// will return after a __pthread_unwind_next()
+	}
+	free(et->cancels);
+	to_hash_d(et->self);
+	et->cancels=NULL;
+	et->cancel_size = et->cancel_cap = 0;
+}
+
+static void* pthread_routine(void* p)
+{
+	// free current emuthread if it exist
+	{
+		void* t = pthread_getspecific(thread_key);
+		if(t) {
+			// not sure how this could happens
+			printf_log(LOG_INFO, "Clean of an existing ET for Thread %04d\n", GetTID());
+			emuthread_destroy(t);
+		}
+	}
+	pthread_setspecific(thread_key, p);
+	// call the function
+	emuthread_t *et = (emuthread_t*)p;
+	et->emu->type = EMUTYPE_MAIN;
+	et->self = (uintptr_t)pthread_self();
+	et->hself = to_hash(et->self);
+	// setup callstack and run...
+	x64emu_t* emu = et->emu;
+	Push_32(emu, 0);	// PUSH 0 (backtrace marker: return address is 0)
+	Push_32(emu, 0);	// PUSH BP
+	R_EBP = R_ESP;	// MOV BP, SP
+    R_ESP -= 32;	// guard area
+	R_ESP &=~15;
+	Push_32(emu, to_ptrv(et->arg));
+	PushExit_32(emu);
+	R_EIP = to_ptr(et->fnc);
+	pthread_cleanup_push(emuthread_cancel, p);
+	DynaRun(et->emu);
+	pthread_cleanup_pop(0);
+	void* ret = from_ptrv(R_EAX);
+	return ret;
+}
+
+EXPORT int my32_pthread_attr_destroy(x64emu_t* emu, void* attr)
+{
+	if(emu->context->stacksizes)
+		FreeStackSize(emu->context->stacksizes, (uintptr_t)attr);
+	int ret = pthread_attr_destroy(get_attr(attr));
+	del_attr(attr);
+	return ret;
+}
+
+EXPORT int my32_pthread_attr_getstack(x64emu_t* emu, void* attr, void** stackaddr, size_t* stacksize)
+{
+	int ret = pthread_attr_getstack(get_attr(attr), stackaddr, stacksize);
+	if (ret==0)
+		GetStackSize(emu, (uintptr_t)attr, stackaddr, stacksize);
+	return ret;
+}
+
+EXPORT int my32_pthread_attr_setstack(x64emu_t* emu, void* attr, void* stackaddr, size_t stacksize)
+{
+	if(!emu->context->stacksizes) {
+		emu->context->stacksizes = kh_init(threadstack);
+	}
+	AddStackSize(emu->context->stacksizes, (uintptr_t)attr, stackaddr, stacksize);
+	//Don't call actual setstack...
+	//return pthread_attr_setstack(attr, stackaddr, stacksize);
+	return pthread_attr_setstacksize(get_attr(attr), stacksize);
+}
+
+EXPORT int my32_pthread_create(x64emu_t *emu, void* t, void* attr, void* start_routine, void* arg)
+{
+	int stacksize = 2*1024*1024;	//default stack size is 2Mo
+	void* attr_stack;
+	size_t attr_stacksize;
+	int own;
+	void* stack;
+
+	if(attr) {
+		size_t stsize;
+		if(pthread_attr_getstacksize(get_attr(attr), &stsize)==0)
+			stacksize = stsize;
+		if(stacksize<512*1024)	// emu and all needs some stack space, don't go too low
+			pthread_attr_setstacksize(get_attr(attr), 512*1024);
+	}
+	if(GetStackSize(emu, (uintptr_t)attr, &attr_stack, &attr_stacksize))
+	{
+		stack = attr_stack;
+		stacksize = attr_stacksize;
+		own = 0;
+	} else {
+		//stack = malloc(stacksize);
+		stack = mmap64(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0);
+		own = 1;
+	}
+
+	emuthread_t *et = (emuthread_t*)calloc(1, sizeof(emuthread_t));
+    x64emu_t *emuthread = NewX64Emu(my_context, (uintptr_t)start_routine, (uintptr_t)stack, stacksize, own);
+	SetupX64Emu(emuthread, emu);
+	et->emu = emuthread;
+	et->fnc = (uintptr_t)start_routine;
+	et->arg = arg;
+	if(!attr)
+		et->join = 1;
+	else {
+		int j;
+		pthread_attr_getdetachstate(get_attr(attr), &j);
+		if(j==PTHREAD_CREATE_JOINABLE)
+			et->join = 1;
+		else
+			et->join = 0;
+	}
+	#ifdef DYNAREC
+	if(box64_dynarec) {
+		// pre-creation of the JIT code for the entry point of the thread
+		dynablock_t *current = NULL;
+		DBGetBlock(emu, (uintptr_t)start_routine, 1, 1);
+	}
+	#endif
+	// create thread
+	return pthread_create((pthread_t*)t, get_attr(attr), 
+		pthread_routine, et);
+}
+
+EXPORT int my32_pthread_detach(x64emu_t* emu, pthread_t p)
+{
+	if(pthread_equal(p ,pthread_self())) {
+		emuthread_t *et = (emuthread_t*)pthread_getspecific(thread_key);
+		et->join = 0;
+	}
+	return pthread_detach(p);
+}
+
+void* my32_prepare_thread(x64emu_t *emu, void* f, void* arg, int ssize, void** pet)
+{
+	int stacksize = (ssize)?ssize:(2*1024*1024);	//default stack size is 2Mo
+	//void* stack = malloc(stacksize);
+	void* stack = mmap64(NULL, stacksize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN, -1, 0);
+	emuthread_t *et = (emuthread_t*)calloc(1, sizeof(emuthread_t));
+    x64emu_t *emuthread = NewX64Emu(emu->context, (uintptr_t)f, (uintptr_t)stack, stacksize, 1);
+	SetupX64Emu(emuthread, emu);
+	et->emu = emuthread;
+	et->fnc = (uintptr_t)f;
+	et->arg = arg;
+	#ifdef DYNAREC
+	if(box64_dynarec) {
+		// pre-creation of the JIT code for the entry point of the thread
+		dynablock_t *current = NULL;
+		DBGetBlock(emu, (uintptr_t)f, 1, 1);
+	}
+	#endif
+	*pet =  et;
+	return pthread_routine;
+}
+
+void my32_longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val);
+
+EXPORT void my32___pthread_register_cancel(x64emu_t* emu, x64_unwind_buff_t* buff)
+{
+	buff = (x64_unwind_buff_t*)from_ptr(R_EAX);	// param is in fact on register
+	emuthread_t *et = (emuthread_t*)pthread_getspecific(thread_key);
+	if(et->cancel_cap == et->cancel_size) {
+		et->cancel_cap+=8;
+		et->cancels = realloc(et->cancels, sizeof(x64_unwind_buff_t*)*et->cancel_cap);
+	}
+	et->cancels[et->cancel_size++] = buff;
+}
+
+EXPORT void my32___pthread_unregister_cancel(x64emu_t* emu, x64_unwind_buff_t* buff)
+{
+	emuthread_t *et = (emuthread_t*)pthread_getspecific(thread_key);
+	for (int i=et->cancel_size-1; i>=0; --i) {
+		if(et->cancels[i] == buff) {
+			if(i!=et->cancel_size-1)
+				memmove(et->cancels+i, et->cancels+i+1, sizeof(x64_unwind_buff_t*)*(et->cancel_size-i-1));
+			et->cancel_size--;
+		}
+	}
+}
+
+EXPORT void my32___pthread_unwind_next(x64emu_t* emu, void* p)
+{
+	emu->quit = 1;
+}
+
+KHASH_MAP_INIT_INT(once, int)
+
+#define SUPER() \
+GO(0)			\
+GO(1)			\
+GO(2)			\
+GO(3)			\
+GO(4)			\
+GO(5)			\
+GO(6)			\
+GO(7)			\
+GO(8)			\
+GO(9)			\
+GO(10)			\
+GO(11)			\
+GO(12)			\
+GO(13)			\
+GO(14)			\
+GO(15)			\
+GO(16)			\
+GO(17)			\
+GO(18)			\
+GO(19)			\
+GO(20)			\
+GO(21)			\
+GO(22)			\
+GO(23)			\
+GO(24)			\
+GO(25)			\
+GO(26)			\
+GO(27)			\
+GO(28)			\
+GO(29)			
+
+// cleanup_routine
+#define GO(A)   \
+static uintptr_t my32_cleanup_routine_fct_##A = 0;  						\
+static void my32_cleanup_routine_##A(void* a)    							\
+{                                       								\
+    RunFunctionFmt(my32_cleanup_routine_fct_##A, "p", to_ptrv(a));	\
+}
+SUPER()
+#undef GO
+static void* findcleanup_routineFct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my32_cleanup_routine_fct_##A == (uintptr_t)fct) return my32_cleanup_routine_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_cleanup_routine_fct_##A == 0) {my32_cleanup_routine_fct_##A = (uintptr_t)fct; return my32_cleanup_routine_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for pthread cleanup_routine callback\n");
+    return NULL;
+}
+
+// key_destructor
+#define GO(A)   \
+static uintptr_t my32_key_destructor_fct_##A = 0;  						\
+static void my32_key_destructor_##A(void* a)    							\
+{                                       								\
+    RunFunctionFmt(my32_key_destructor_fct_##A, "p", to_ptrv(a));	\
+}
+SUPER()
+#undef GO
+static void* findkey_destructorFct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my32_key_destructor_fct_##A == (uintptr_t)fct) return my32_key_destructor_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_key_destructor_fct_##A == 0) {my32_key_destructor_fct_##A = (uintptr_t)fct; return my32_key_destructor_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for pthread key_destructor callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+
+int EXPORT my32_pthread_once(x64emu_t* emu, int* once, void* cb)
+{
+	if(*once)	// quick test first
+		return 0;
+	// slow test now
+	#ifdef DYNAREC
+	int old = native_lock_xchg_d(once, 1);
+	#else
+	int old = *once;	// outside of the mutex in case once is badly formed
+	pthread_mutex_lock(&my_context->mutex_lock);
+	old = *once;
+	*once = 1;
+	pthread_mutex_unlock(&my_context->mutex_lock);
+	#endif
+	if(old)
+		return 0;
+    // make some room and align R_RSP before doing the call (maybe it would be simpler to just use Callback functions)
+    Push_32(emu, R_EBP); // push rbp
+    R_EBP = R_ESP;      // mov rbp, rsp
+    R_ESP -= 0x200;
+    R_ESP &= ~63LL;
+	DynaCall(emu, (uintptr_t)cb);
+	R_ESP = R_EBP;          // mov rsp, rbp
+	R_EBP = Pop32(emu);     // pop rbp
+	return 0;
+}
+EXPORT int my32___pthread_once(x64emu_t* emu, void* once, void* cb) __attribute__((alias("my32_pthread_once")));
+
+EXPORT int my32_pthread_key_create(x64emu_t* emu, void* key, void* dtor)
+{
+	return pthread_key_create(key, findkey_destructorFct(dtor));
+}
+EXPORT int my32___pthread_key_create(x64emu_t* emu, void* key, void* dtor) __attribute__((alias("my32_pthread_key_create")));
+
+// phtread_cond_init with null attr seems to only write 1 (NULL) dword on x64, while it's 48 bytes on ARM. 
+// Not sure why as sizeof(pthread_cond_init) is 48 on both platform... But Neverwinter Night init seems to rely on that
+// What about cond that are statically initialized? 
+// Note, this is is a versionned function (the pthread_cond_*), and this seems to correspond to an old behaviour
+
+KHASH_MAP_INIT_INT(mapcond, pthread_cond_t*);
+
+// should all access to that map be behind a mutex?
+kh_mapcond_t *mapcond = NULL;
+
+static pthread_cond_t* add_cond(void* cond)
+{
+	mutex_lock(&my_context->mutex_thread);
+	khint_t k;
+	int ret;
+	pthread_cond_t *c;
+	k = kh_put(mapcond, mapcond, (uintptr_t)cond, &ret);
+	if(!ret)
+		c = kh_value(mapcond, k);	// already there... reinit an existing one?
+	else 
+		c = kh_value(mapcond, k) = (pthread_cond_t*)calloc(1, sizeof(pthread_cond_t));
+	//*(ptr_t*)cond = to_ptrv(cond);
+	mutex_unlock(&my_context->mutex_thread);
+	return c;
+}
+static pthread_cond_t* get_cond(void* cond)
+{
+	pthread_cond_t* ret;
+	int r;
+	mutex_lock(&my_context->mutex_thread);
+	khint_t k = kh_get(mapcond, mapcond, *(uintptr_t*)cond);
+	if(k==kh_end(mapcond)) {
+		khint_t k = kh_get(mapcond, mapcond, (uintptr_t)cond);
+		if(k==kh_end(mapcond)) {
+			printf_log(LOG_DEBUG, "BOX32: Note: phtread_cond not found, create a new empty one\n");
+			ret = (pthread_cond_t*)calloc(1, sizeof(pthread_cond_t));
+			k = kh_put(mapcond, mapcond, (uintptr_t)cond, &r);
+			kh_value(mapcond, k) = ret;
+			//*(ptr_t*)cond = to_ptrv(cond);
+			pthread_cond_init(ret, NULL);
+		} else
+			ret = kh_value(mapcond, k);
+	} else
+		ret = kh_value(mapcond, k);
+	mutex_unlock(&my_context->mutex_thread);
+	return ret;
+}
+static void del_cond(void* cond)
+{
+	if(!mapcond)
+		return;
+	mutex_lock(&my_context->mutex_thread);
+	khint_t k = kh_get(mapcond, mapcond, *(uintptr_t*)cond);
+	if(k!=kh_end(mapcond)) {
+		free(kh_value(mapcond, k));
+		kh_del(mapcond, mapcond, k);
+	}
+	mutex_unlock(&my_context->mutex_thread);
+}
+pthread_mutex_t* getAlignedMutex(pthread_mutex_t* m);
+
+EXPORT int my32_pthread_cond_broadcast_old(x64emu_t* emu, void* cond)
+{
+	pthread_cond_t * c = get_cond(cond);
+	return pthread_cond_broadcast(c);
+}
+EXPORT int my32_pthread_cond_destroy_old(x64emu_t* emu, void* cond)
+{
+	pthread_cond_t * c = get_cond(cond);
+	int ret = pthread_cond_destroy(c);
+	if(c!=cond) del_cond(cond);
+	return ret;
+}
+EXPORT int my32_pthread_cond_init_old(x64emu_t* emu, void* cond, void* attr)
+{
+	pthread_cond_t *c = add_cond(cond);
+	return pthread_cond_init(c, (const pthread_condattr_t*)attr);
+}
+EXPORT int my32_pthread_cond_signal_old(x64emu_t* emu, void* cond)
+{
+	pthread_cond_t * c = get_cond(cond);
+	return pthread_cond_signal(c);
+}
+EXPORT int my32_pthread_cond_timedwait_old(x64emu_t* emu, void* cond, void* mutex, void* abstime)
+{
+	pthread_cond_t * c = get_cond(cond);
+	return pthread_cond_timedwait(c, getAlignedMutex((pthread_mutex_t*)mutex), (const struct timespec*)abstime);
+}
+EXPORT int my32_pthread_cond_wait_old(x64emu_t* emu, void* cond, void* mutex)
+{
+	pthread_cond_t * c = get_cond(cond);
+	return pthread_cond_wait(c, getAlignedMutex((pthread_mutex_t*)mutex));
+}
+
+EXPORT int my32_pthread_cond_timedwait(x64emu_t* emu, void* cond, void* mutex, void* abstime)
+{
+	return pthread_cond_timedwait((pthread_cond_t*)cond, getAlignedMutex((pthread_mutex_t*)mutex), (const struct timespec*)abstime);
+}
+EXPORT int my32_pthread_cond_wait(x64emu_t* emu, void* cond, void* mutex)
+{
+	return pthread_cond_wait((pthread_cond_t*)cond, getAlignedMutex((pthread_mutex_t*)mutex));
+}
+
+EXPORT int my32_pthread_mutexattr_setkind_np(x64emu_t* emu, void* t, int kind)
+{
+    // does "kind" needs some type of translation?
+    return pthread_mutexattr_settype(t, kind);
+}
+
+// pthread_attr_t on x64 is 36 bytes
+static uint64_t ATTR_SIGN = 0xA055E10CDE98LL;	// random signature
+typedef struct my32_x64_attr_s {
+	uint64_t		sign;
+	pthread_attr_t*	attr;
+} my32_x64_attr_t;
+
+static pthread_attr_t* get_attr(void* attr)
+{
+	if(!attr)
+		return NULL;
+	my32_x64_attr_t* my32_attr = (my32_x64_attr_t*)attr;
+	if(my32_attr->sign!=ATTR_SIGN) {
+		my32_attr->attr = (pthread_attr_t*)calloc(1, sizeof(pthread_attr_t));
+		my32_attr->sign = ATTR_SIGN;
+	}
+	return my32_attr->attr;
+}
+static void del_attr(void* attr)
+{
+	if(!attr)
+		return;
+	my32_x64_attr_t* my32_attr = (my32_x64_attr_t*)attr;
+	if(my32_attr->sign==ATTR_SIGN) {
+		my32_attr->sign = 0;
+		free(my32_attr->attr);
+	}
+}
+
+EXPORT int my32_pthread_attr_init(x64emu_t* emu, void* attr)
+{
+	return pthread_attr_init(get_attr(attr));
+}
+
+EXPORT int my32_pthread_attr_getdetachstate(x64emu_t* emu, void* attr, void* p)
+{
+	return pthread_attr_getdetachstate(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_getguardsize(x64emu_t* emu, void* attr, void* p)
+{
+	return pthread_attr_getguardsize(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_getinheritsched(x64emu_t* emu, void* attr, void* p)
+{
+	return pthread_attr_getinheritsched(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_getschedparam(x64emu_t* emu, void* attr, void* p)
+{
+	return pthread_attr_getschedparam(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_getschedpolicy(x64emu_t* emu, void* attr, void* p)
+{
+	return pthread_attr_getschedpolicy(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_getscope(x64emu_t* emu, void* attr, void* p)
+{
+	return pthread_attr_getscope(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_getstackaddr(x64emu_t* emu, void* attr, ptr_t* p)
+{
+	size_t size;
+	void* pp;
+	int ret = pthread_attr_getstack(get_attr(attr), &pp, &size);
+	*p = to_ptrv(pp);
+	return ret;
+}
+EXPORT int my32_pthread_attr_getstacksize(x64emu_t* emu, void* attr, ulong_t* p)
+{
+	size_t size;
+	void* pp;
+	int ret = pthread_attr_getstack(get_attr(attr), &pp, &size);
+	*p = to_ulong(size);
+	return ret;
+}
+EXPORT int my32_pthread_attr_setdetachstate(x64emu_t* emu, void* attr, int p)
+{
+	return pthread_attr_setdetachstate(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_setguardsize(x64emu_t* emu, void* attr, size_t p)
+{
+	return pthread_attr_setguardsize(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_setinheritsched(x64emu_t* emu, void* attr, int p)
+{
+	return pthread_attr_setinheritsched(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_setschedparam(x64emu_t* emu, void* attr, void* param)
+{
+    int policy;
+    pthread_attr_getschedpolicy(get_attr(attr), &policy);
+    int pmin = sched_get_priority_min(policy);
+    int pmax = sched_get_priority_max(policy);
+    if(param) {
+        int p = *(int*)param;
+        if(p>=pmin && p<=pmax)
+            return pthread_attr_setschedparam(get_attr(attr), param);
+    }
+    printf_log(LOG_INFO, "Warning, call to pthread_attr_setschedparam(%p, %p[%d]) ignored\n", attr, param, param?(*(int*)param):-1);
+    return 0;   // faking success
+}
+EXPORT int my32_pthread_attr_setschedpolicy(x64emu_t* emu, void* attr, int p)
+{
+	return pthread_attr_setschedpolicy(get_attr(attr), p);
+}
+EXPORT int my32_pthread_attr_setstackaddr(x64emu_t* emu, void* attr, void* p)
+{
+	ulong_t size = 2*1024*1024;
+	my32_pthread_attr_getstacksize(emu, attr, &size);
+	return pthread_attr_setstack(get_attr(attr), p, size);
+}
+EXPORT int my32_pthread_attr_setstacksize(x64emu_t* emu, void* attr, size_t p)
+{
+	ptr_t pp;
+	my32_pthread_attr_getstackaddr(emu, attr, &pp);
+	return pthread_attr_setstack(get_attr(attr), from_ptrv(pp), p);
+}
+
+
+EXPORT int my32_pthread_attr_setscope(x64emu_t* emu, void* attr, int scope)
+{
+    if(scope!=PTHREAD_SCOPE_SYSTEM) printf_log(LOG_INFO, "Warning, scope of call to pthread_attr_setscope(...) changed from %d to PTHREAD_SCOPE_SYSTEM\n", scope);
+	return pthread_attr_setscope(get_attr(attr), PTHREAD_SCOPE_SYSTEM);
+    //The scope is either PTHREAD_SCOPE_SYSTEM or PTHREAD_SCOPE_PROCESS
+    // but PTHREAD_SCOPE_PROCESS doesn't seem supported on ARM linux, and PTHREAD_SCOPE_SYSTEM is default
+}
+
+#ifndef ANDROID
+EXPORT void my32__pthread_cleanup_push_defer(x64emu_t* emu, void* buffer, void* routine, void* arg)
+{
+	real_pthread_cleanup_push_defer(buffer, findcleanup_routineFct(routine), arg);
+}
+
+EXPORT void my32__pthread_cleanup_push(x64emu_t* emu, void* buffer, void* routine, void* arg)
+{
+	_pthread_cleanup_push(buffer, findcleanup_routineFct(routine), arg);
+}
+
+EXPORT void my32__pthread_cleanup_pop_restore(x64emu_t* emu, void* buffer, int exec)
+{
+	real_pthread_cleanup_pop_restore(buffer, exec);
+}
+
+EXPORT void my32__pthread_cleanup_pop(x64emu_t* emu, void* buffer, int exec)
+{
+	_pthread_cleanup_pop(buffer, exec);
+}
+
+// getaffinity_np (pthread or attr) hav an "old" version (glibc-2.3.3) that only have 2 args, cpusetsize is omited
+EXPORT int my32_pthread_getaffinity_np(x64emu_t* emu, pthread_t thread, int cpusetsize, void* cpuset)
+{
+	if(cpusetsize>0x1000) {
+		// probably old version of the function, that didn't have cpusetsize....
+		cpuset = from_ptrv(cpusetsize);
+		cpusetsize = sizeof(cpu_set_t);
+	} 
+
+	int ret = pthread_getaffinity_np(thread, cpusetsize, cpuset);
+	if(ret<0) {
+		printf_log(LOG_INFO, "Warning, pthread_getaffinity_np(%p, %d, %p) errored, with errno=%d\n", (void*)thread, cpusetsize, cpuset, errno);
+	}
+
+    return ret;
+}
+
+EXPORT int my32_pthread_setaffinity_np(x64emu_t* emu, pthread_t thread, int cpusetsize, void* cpuset)
+{
+	if(cpusetsize>0x1000) {
+		// probably old version of the function, that didn't have cpusetsize....
+		cpuset = from_ptrv(cpusetsize);
+		cpusetsize = sizeof(cpu_set_t);
+	} 
+
+	int ret = pthread_setaffinity_np(thread, cpusetsize, cpuset);
+	if(ret<0) {
+		printf_log(LOG_INFO, "Warning, pthread_setaffinity_np(%p, %d, %p) errored, with errno=%d\n", (void*)thread, cpusetsize, cpuset, errno);
+	}
+
+    return ret;
+}
+
+EXPORT int my32_pthread_attr_setaffinity_np(x64emu_t* emu, void* attr, uint32_t cpusetsize, void* cpuset)
+{
+	if(cpusetsize>0x1000) {
+		// probably old version of the function, that didn't have cpusetsize....
+		cpuset = from_ptrv(cpusetsize);
+		cpusetsize = sizeof(cpu_set_t);
+	} 
+
+	int ret = pthread_attr_setaffinity_np(attr, cpusetsize, cpuset);
+	if(ret<0) {
+		printf_log(LOG_INFO, "Warning, pthread_attr_setaffinity_np(%p, %d, %p) errored, with errno=%d\n", attr, cpusetsize, cpuset, errno);
+	}
+
+    return ret;
+}
+#endif
+
+EXPORT int my32_pthread_kill(x64emu_t* emu, void* thread, int sig)
+{
+    // check for old "is everything ok?"
+    if((thread==NULL) && (sig==0))
+        return pthread_kill(pthread_self(), 0);
+    return pthread_kill((pthread_t)thread, sig);
+}
+
+//EXPORT void my32_pthread_exit(x64emu_t* emu, void* retval)
+//{
+//	emu->quit = 1;	// to be safe
+//	pthread_exit(retval);
+//}
+
+// TODO: find a better way for mutex. It should be possible to use the actual mutex most of the time, especially for simple ones
+// Having the mutex table behind a mutex is far from ideal!
+
+KHASH_MAP_INIT_INT(mutex, pthread_mutex_t*)
+static kh_mutex_t* unaligned_mutex = NULL;
+static pthread_rwlock_t m_lock = {0};
+pthread_mutex_t* getAlignedMutex(pthread_mutex_t* m)
+{
+	pthread_mutex_t* ret = NULL;
+	pthread_rwlock_rdlock(&m_lock);
+	khint_t k = kh_get(mutex, unaligned_mutex, (uintptr_t)m);
+	if(k!=kh_end(unaligned_mutex)) {
+		ret = kh_value(unaligned_mutex, k);
+	} else {
+		int r;
+		pthread_rwlock_unlock(&m_lock);
+		pthread_rwlock_wrlock(&m_lock);
+		k = kh_put(mutex, unaligned_mutex, (uintptr_t)m, &r);
+		ret = kh_value(unaligned_mutex, k) = (pthread_mutex_t*)calloc(1, sizeof(pthread_mutex_t));
+		memcpy(ret, m, 24);
+	}
+	pthread_rwlock_unlock(&m_lock);
+	return ret;
+}
+EXPORT int my32_pthread_mutex_destroy(pthread_mutex_t *m)
+{
+	pthread_rwlock_wrlock(&m_lock);
+	khint_t k = kh_get(mutex, unaligned_mutex, (uintptr_t)m);
+	if(k!=kh_end(unaligned_mutex)) {
+		pthread_mutex_t *n = kh_value(unaligned_mutex, k);
+		kh_del(mutex, unaligned_mutex, k);
+		int ret = pthread_mutex_destroy(n);
+		free(n);
+		return ret;
+	}
+	pthread_rwlock_unlock(&m_lock);
+	return pthread_mutex_destroy(m);
+}
+#define getAlignedMutexWithInit(A, B)	getAlignedMutex(A)
+
+EXPORT int my32___pthread_mutex_destroy(pthread_mutex_t *m) __attribute__((alias("my32_pthread_mutex_destroy")));
+
+EXPORT int my32_pthread_mutex_init(pthread_mutex_t *m, pthread_mutexattr_t *att)
+{
+	return pthread_mutex_init(getAlignedMutexWithInit(m, 0), att);
+}
+EXPORT int my32___pthread_mutex_init(pthread_mutex_t *m, pthread_mutexattr_t *att) __attribute__((alias("my32_pthread_mutex_init")));
+
+EXPORT int my32_pthread_mutex_lock(pthread_mutex_t *m)
+{
+	return pthread_mutex_lock(getAlignedMutex(m));
+}
+EXPORT int my32___pthread_mutex_lock(pthread_mutex_t *m) __attribute__((alias("my32_pthread_mutex_lock")));
+
+EXPORT int my32_pthread_mutex_timedlock(pthread_mutex_t *m, const struct timespec * t)
+{
+	return pthread_mutex_timedlock(getAlignedMutex(m), t);
+}
+
+EXPORT int my32_pthread_mutex_trylock(pthread_mutex_t *m)
+{
+	return pthread_mutex_trylock(getAlignedMutex(m));
+}
+EXPORT int my32___pthread_mutex_trylock(pthread_mutex_t *m) __attribute__((alias("my32_pthread_mutex_trylock")));
+
+EXPORT int my32_pthread_mutex_unlock(pthread_mutex_t *m)
+{
+	return pthread_mutex_unlock(getAlignedMutex(m));
+}
+EXPORT int my32___pthread_mutex_unlock(pthread_mutex_t *m) __attribute__((alias("my32_pthread_mutex_unlock")));
+
+static int done = 0;
+void init_pthread_helper_32()
+{
+	if(done)
+		return;
+	done = 1;
+	real_pthread_cleanup_push_defer = (vFppp_t)dlsym(NULL, "_pthread_cleanup_push_defer");
+	real_pthread_cleanup_pop_restore = (vFpi_t)dlsym(NULL, "_pthread_cleanup_pop_restore");
+
+	mapcond = kh_init(mapcond);
+	unaligned_mutex = kh_init(mutex);
+	pthread_key_create(&thread_key, emuthread_destroy);
+	pthread_setspecific(thread_key, NULL);
+}
+
+void clean_current_emuthread_32()
+{
+	emuthread_t *et = (emuthread_t*)pthread_getspecific(thread_key);
+	if(et) {
+		emuthread_destroy(et);
+		pthread_setspecific(thread_key, NULL);
+	}
+}
+
+void fini_pthread_helper_32(box64context_t* context)
+{
+	if(!done)
+		return;
+	done = 0;
+	//CleanStackSize(context);
+	pthread_cond_t *cond;
+	kh_foreach_value(mapcond, cond, 
+		pthread_cond_destroy(cond);
+		free(cond);
+	);
+	kh_destroy(mapcond, mapcond);
+	mapcond = NULL;
+	pthread_mutex_t *m;
+	kh_foreach_value(unaligned_mutex, m, 
+		pthread_mutex_destroy(m);
+		free(m);
+	);
+	kh_destroy(mutex, unaligned_mutex);
+
+	clean_current_emuthread_32();
+}
diff --git a/src/tools/box32stack.c b/src/tools/box32stack.c
new file mode 100644
index 00000000..441b27ab
--- /dev/null
+++ b/src/tools/box32stack.c
@@ -0,0 +1,137 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#include "box64stack.h"
+#include "box64context.h"
+#include "elfloader.h"
+#include "debug.h"
+#include "emu/x64emu_private.h"
+#include "emu/x64run_private.h"
+#include "auxval.h"
+#include "custommem.h"
+#include "box32.h"
+
+static void PushString32(x64emu_t *emu, const char* s)
+{
+    int sz = strlen(s) + 1;
+    // round to 4 bytes boundary
+    R_ESP -= sz;
+    memcpy(from_ptrv(R_ESP), s, sz);
+}
+
+static void Push32_32(x64emu_t *emu, uint32_t v)
+{
+    R_ESP -= 4;
+    *((uint32_t*)from_ptr(R_ESP)) = v;
+}
+
+
+EXPORTDYN
+void SetupInitialStack32(x64emu_t *emu)
+{
+    // start with 0
+    Push32_32(emu, 0);
+    // push program executed
+    PushString32(emu, emu->context->argv[0]);
+    uintptr_t p_arg0 = from_ptr(R_ESP);
+    // push envs
+    uintptr_t p_envv[emu->context->envc];
+    for (int i=emu->context->envc-1; i>=0; --i) {
+        PushString32(emu, emu->context->envv[i]);
+        p_envv[i] = from_ptr(R_ESP);
+    }
+    // push args, also, free the argv[] string and point to the one in the main stack
+    uintptr_t p_argv[emu->context->argc];
+    for (int i=emu->context->argc-1; i>=0; --i) {
+        PushString32(emu, emu->context->argv[i]);
+        p_argv[i] = R_ESP;
+        free(emu->context->argv[i]);
+        emu->context->argv[i] = (char*)p_argv[i];
+    }
+    // align
+    uintptr_t tmp = from_ptr(R_ESP)&~(emu->context->stackalign-1);
+    memset((void*)tmp, 0, from_ptr(R_ESP)-tmp);
+    R_ESP=to_ptr(tmp);
+
+    // push some AuxVector stuffs
+    PushString32(emu, "i686");
+    uintptr_t p_i686 = from_ptr(R_ESP);
+    uintptr_t p_random = real_getauxval(25);
+    if(!p_random) {
+        for (int i=0; i<4; ++i)
+            Push32_32(emu, random());
+        p_random = from_ptr(R_ESP);
+    }
+    // align
+    tmp = (R_ESP)&~(emu->context->stackalign-1);
+    memset((void*)tmp, 0, from_ptr(R_ESP)-tmp);
+    R_ESP=tmp;
+
+    // push the AuxVector themselves
+    /*
+    00: 00000000
+    03: 08048034
+    04: 00000020
+    05: 0000000b
+    06: 00001000
+    07: f7fc0000
+    08: 00000000
+    09: 08049060
+    11: 000003e8
+    12: 000003e8
+    13: 000003e8
+    14: 000003e8
+    15: ffd8aa5b/i686
+    16: bfebfbff
+    17: 00000064
+    23: 00000000
+    25: ffd8aa4b
+    26: 00000000
+    31: ffd8bfeb/./testAuxVec
+    32: f7fbfb40
+    33: f7fbf000
+    */
+    Push32_32(emu, 0); Push32_32(emu, 0);                            //AT_NULL(0)=0
+    //Push32_32(emu, ); Push32_32(emu, 3);                             //AT_PHDR(3)=address of the PH of the executable
+    //Push32_32(emu, ); Push32_32(emu, 4);                             //AT_PHENT(4)=size of PH entry
+    //Push32_32(emu, ); Push32_32(emu, 5);                             //AT_PHNUM(5)=number of elf headers
+    Push32_32(emu, box64_pagesize); Push32_32(emu, 6);               //AT_PAGESZ(6)
+    //Push32_32(emu, real_getauxval(7)); Push32_32(emu, 7);            //AT_BASE(7)=ld-2.27.so start (in memory)
+    Push32_32(emu, 0); Push32_32(emu, 8);                            //AT_FLAGS(8)=0
+    Push32_32(emu, R_EIP); Push32_32(emu, 9);                        //AT_ENTRY(9)=entrypoint
+    Push32_32(emu, from_ulong(real_getauxval(11))); Push32_32(emu, 11);          //AT_UID(11)
+    Push32_32(emu, from_ulong(real_getauxval(12))); Push32_32(emu, 12);          //AT_EUID(12)
+    Push32_32(emu, from_ulong(real_getauxval(13))); Push32_32(emu, 13);          //AT_GID(13)
+    Push32_32(emu, from_ulong(real_getauxval(14))); Push32_32(emu, 14);          //AT_EGID(14)
+    Push32_32(emu, p_i686); Push32_32(emu, 15);                      //AT_PLATFORM(15)=&"i686"
+    // Push HWCAP:
+    //  FPU: 1<<0 ; VME: 1<<1 ; DE : 1<<2 ; PSE: 1<<3 ; TSC: 1<<4 ; MSR: 1<<5 ; PAE: 1<<6 ; MCE: 1<<7
+    //  CX8: 1<<8 ; APIC:1<<9 ;             SEP: 1<<11; MTRR:1<<12; PGE: 1<<13; MCA: 1<<14; CMOV:1<<15
+    // FCMOV:1<<16;                                                                         MMX: 1<<23
+    // OSFXR:1<<24; XMM: 1<<25;XMM2: 1<<26;                                                AMD3D:1<<31
+    Push32_32(emu, (1<<0) | (1<<1) | (1<<2) | (1<<3) | (1<<4) | (1<<8)  | (1<<15) | (1<<16) | (1<<23) | (1<<25) | (1<<26));
+    Push32_32(emu, 16);                                         //AT_HWCAP(16)=...
+    //Push32_32(emu, sysconf(_SC_CLK_TCK)); Push32_32(emu, 17);        //AT_CLKTCK(17)=times() frequency
+    Push32_32(emu, from_ulong(real_getauxval(23))); Push32_32(emu, 23);          //AT_SECURE(23)
+    Push32_32(emu, p_random); Push32_32(emu, 25);                    //AT_RANDOM(25)=p_random
+    Push32_32(emu, 0); Push32_32(emu, 26);                           //AT_HWCAP2(26)=0
+    Push32_32(emu, p_arg0); Push32_32(emu, 31);                      //AT_EXECFN(31)=p_arg0
+    Push32_32(emu, emu->context->vsyscall); Push32_32(emu, 32); //AT_SYSINFO(32)=vsyscall
+    //Push32_32(emu, ); Push32_32(emu, 33);                            //AT_SYSINFO_EHDR(33)=address of vDSO
+    if(!emu->context->auxval_start) // store auxval start if needed
+        emu->context->auxval_start = (uintptr_t*)from_ptr(R_ESP);
+
+    // push nil / envs / nil / args / argc
+    Push32_32(emu, 0);
+    for (int i=emu->context->envc-1; i>=0; --i)
+        Push32_32(emu, to_ptr(p_envv[i]));
+    emu->context->envv32 = R_ESP;
+    Push32_32(emu, 0);
+    for (int i=emu->context->argc-1; i>=0; --i)
+        Push32_32(emu, to_ptr(p_argv[i]));
+    emu->context->argv32 = R_ESP;
+    Push32_32(emu, emu->context->argc);
+}
diff --git a/src/tools/box64stack.c b/src/tools/box64stack.c
index 7be31b4d..82dc9a63 100644
--- a/src/tools/box64stack.c
+++ b/src/tools/box64stack.c
@@ -42,9 +42,19 @@ void PushString(x64emu_t *emu, const char* s)
     memcpy((void*)R_RSP, s, sz);
 }
 
+void SetupInitialStack32(x64emu_t *emu)
+#ifndef BOX32
+ { }
+#else
+ ;
+#endif
 EXPORTDYN
 void SetupInitialStack(x64emu_t *emu)
 {
+    if(box64_is32bits) {
+        SetupInitialStack32(emu);
+        return;
+    }
     // start with 0
     Push64(emu, 0);
     // push program executed
diff --git a/src/tools/callback.c b/src/tools/callback.c
index 341a554d..661a3b13 100644
--- a/src/tools/callback.c
+++ b/src/tools/callback.c
@@ -12,43 +12,74 @@
 #include "box64context.h"
 #include "box64stack.h"
 #include "dynarec.h"
+#ifdef BOX32
+#include "box32.h"
+#endif
 
 EXPORTDYN
 uint64_t RunFunction(uintptr_t fnc, int nargs, ...)
 {
     x64emu_t *emu = thread_get_emu();
-    int align = (nargs>6)?(((nargs-6)&1)):0;
-    int stackn = align + ((nargs>6)?(nargs-6):0);
-
-    Push64(emu, R_RBP); // push rbp
-    R_RBP = R_RSP;      // mov rbp, rsp
+    #ifdef BOX32
+    if(box64_is32bits) {
+        Push_32(emu, R_RBP); // push ebp
+        R_RBP = R_ESP;       // mov ebp, esp
 
-    R_RSP -= stackn*sizeof(void*);   // need to push in reverse order
+        R_ESP -= nargs*4;   // need to push in reverse order
 
-    uint64_t *p = (uint64_t*)R_RSP;
+        ptr_t *p = (ptr_t*)from_ptrv(R_ESP);
 
-    va_list va;
-    va_start (va, nargs);
-    for (int i=0; i<nargs; ++i) {
-        if(i<6) {
-            int nn[] = {_DI, _SI, _DX, _CX, _R8, _R9};
-            emu->regs[nn[i]].q[0] = va_arg(va, uint64_t);
-        } else {
-            *p = va_arg(va, uint64_t);
+        va_list va;
+        va_start (va, nargs);
+        for (int i=0; i<nargs; ++i) {
+            *p = va_arg(va, uint32_t);
             p++;
         }
+        va_end (va);
+    } else
+    #endif
+    {
+        int align = (nargs>6)?(((nargs-6)&1)):0;
+        int stackn = align + ((nargs>6)?(nargs-6):0);
+
+        Push64(emu, R_RBP); // push rbp
+        R_RBP = R_RSP;      // mov rbp, rsp
+
+        R_RSP -= stackn*sizeof(void*);   // need to push in reverse order
+
+        uint64_t *p = (uint64_t*)R_RSP;
+
+        va_list va;
+        va_start (va, nargs);
+        for (int i=0; i<nargs; ++i) {
+            if(i<6) {
+                int nn[] = {_DI, _SI, _DX, _CX, _R8, _R9};
+                emu->regs[nn[i]].q[0] = va_arg(va, uint64_t);
+            } else {
+                *p = va_arg(va, uint64_t);
+                p++;
+            }
+        }
+        va_end (va);
     }
-    va_end (va);
 
     uintptr_t oldip = R_RIP;
     DynaCall(emu, fnc);
 
     if(oldip==R_RIP) {
-        R_RSP = R_RBP;          // mov rsp, rbp
-        R_RBP = Pop64(emu);     // pop rbp
+        #ifdef BOX32
+        if(box64_is32bits) {
+            R_RSP = R_EBP;          // mov esp, ebp
+            R_EBP = Pop_32(emu);    // pop ebp
+        }
+        #endif
+        {
+            R_RSP = R_RBP;          // mov rsp, rbp
+            R_RBP = Pop64(emu);     // pop rbp
+        }
     }
 
-    uint64_t ret = R_RAX;
+    uint64_t ret = box64_is32bits?((uint64_t)R_EAX | ((uint64_t)R_EDX)<<32):R_RAX;
 
     return ret;
 }
@@ -61,6 +92,27 @@ uint64_t RunFunctionFmt(uintptr_t fnc, const char* fmt, ...)
     int ni = 0;
     int ndf = 0;
     for (int i=0; fmt[i]; ++i) {
+        #ifdef BOX32
+        if(box64_is32bits)
+            switch(fmt[i]) {
+                case 'd': 
+                case 'I': 
+                case 'U': nargs+=2; break;
+                case 'p': 
+                case 'L': 
+                case 'l': 
+                case 'f': 
+                case 'i': 
+                case 'u': 
+                case 'w': 
+                case 'W': 
+                case 'c': 
+                case 'C': ++nargs; break;
+                default:
+                    ++nargs; break;
+            }
+        else
+        #endif
         switch(fmt[i]) {
             case 'f': 
             case 'd': if(ndf<8) ++ndf; else ++nargs; break;
@@ -83,63 +135,116 @@ uint64_t RunFunctionFmt(uintptr_t fnc, const char* fmt, ...)
     ndf = 0;
     int align = nargs&1;
     int stackn = align + nargs;
+    int sizeof_ptr = sizeof(void*);
+    #ifdef BOX32
+    if(box64_is32bits) {
+        Push_32(emu, R_EBP); // push ebp
+        R_RBP = R_ESP;       // mov ebp, esp
+        sizeof_ptr = sizeof(ptr_t);
+    } else
+    #endif
+    {
+        Push64(emu, R_RBP); // push rbp
+        R_RBP = R_RSP;      // mov rbp, rsp
+    }
 
-    Push64(emu, R_RBP); // push rbp
-    R_RBP = R_RSP;      // mov rbp, rsp
-
-    R_RSP -= stackn*sizeof(void*);   // need to push in reverse order
-
-    uint64_t *p = (uint64_t*)R_RSP;
-
-    static const int nn[] = {_DI, _SI, _DX, _CX, _R8, _R9};
-    #define GO(c, A, B, B2, C) case c: if(ni<6) emu->regs[nn[ni++]].A[0] = C va_arg(va, B2); else {*p = 0; *((B*)p) = va_arg(va, B2); ++p;}; break;
-    va_list va;
-    va_start (va, fmt);
-    for (int i=0; fmt[i]; ++i) {
-        switch(fmt[i]) {
-            case 'f':   if(ndf<8)
-                            emu->xmm[ndf++].f[0] = va_arg(va, double);  // float are promoted to double in ...
-                        else {
-                            *p = 0;
-                            *((float*)p) = va_arg(va, double);
-                            ++p;
-                        }
-                        break;
-            case 'd':   if(ndf<8)
-                            emu->xmm[ndf++].d[0] = va_arg(va, double);
-                        else {
-                            *((double*)p) = va_arg(va, double);
-                            ++p;
-                        }
-                        break;
-            GO('p', q, void*, void*, (uintptr_t))
-            GO('i', sdword, int, int, )
-            GO('u', dword, uint32_t, uint32_t, )
-            GO('I', sq, int64_t, int64_t, )
-            GO('U', q, uint64_t, uint64_t, )
-            GO('L', q, uint64_t, uint64_t, )
-            GO('l', sq, int64_t, int64_t, )
-            GO('w', sword, int16_t, int, )
-            GO('W', word, uint16_t, int, )
-            GO('c', sbyte, int8_t, int, )
-            GO('C', byte, uint8_t, int, )
-            default:
-                printf_log(LOG_NONE, "Error, unhandled arg %d: '%c' in RunFunctionFmt\n", i, fmt[i]);
-                if(ni<6) emu->regs[nn[ni++]].q[0] = va_arg(va, uint64_t); else {*p = va_arg(va, uint64_t); ++p;}; 
-                break;
+    R_RSP -= stackn*sizeof_ptr;   // need to push in reverse order
+
+    #ifdef BOX32
+    if(box64_is32bits) {
+        ptr_t *p = (ptr_t*)from_ptrv(R_ESP);
+
+        #define GO(c, B, B2, N) case c: *((B*)p) = va_arg(va, B2); p+=N; break
+        va_list va;
+        va_start (va, fmt);
+        for (int i=0; fmt[i]; ++i) {
+            switch(fmt[i]) {
+                GO('f', float, double, 1);
+                GO('d', double, double, 2);
+                case 'p': *((ptr_t*)p) = to_ptrv(va_arg(va, void*)); p+=1; break;
+                GO('i', int, int, 1);
+                GO('u', uint32_t, uint32_t, 1);
+                GO('I', int64_t, int64_t, 2);
+                GO('U', uint64_t, uint64_t, 2);
+                GO('L', uint32_t, uint64_t, 1);     // long are 64bits on 64bits system
+                GO('l', int32_t, int64_t, 1);       // but 32bits on 32bits system
+                GO('w', int16_t, int, 1);
+                GO('W', uint16_t, int, 1);
+                GO('c', int8_t, int, 1);
+                GO('C', uint8_t, int, 1);
+                default:
+                    printf_log(LOG_NONE, "Error, unhandled arg %d: '%c' in RunFunctionFmt\n", i, fmt[i]);
+                    *p = va_arg(va, uint32_t);
+                    ++p; 
+                    break;
+            }
         }
+        #undef GO
+        va_end (va);
+    } else
+    #endif
+    {
+        uint64_t *p = (uint64_t*)R_RSP;
+
+        static const int nn[] = {_DI, _SI, _DX, _CX, _R8, _R9};
+        #define GO(c, A, B, B2, C) case c: if(ni<6) emu->regs[nn[ni++]].A[0] = C va_arg(va, B2); else {*p = 0; *((B*)p) = va_arg(va, B2); ++p;}; break;
+        va_list va;
+        va_start (va, fmt);
+        for (int i=0; fmt[i]; ++i) {
+            switch(fmt[i]) {
+                case 'f':   if(ndf<8)
+                                emu->xmm[ndf++].f[0] = va_arg(va, double);  // float are promoted to double in ...
+                            else {
+                                *p = 0;
+                                *((float*)p) = va_arg(va, double);
+                                ++p;
+                            }
+                            break;
+                case 'd':   if(ndf<8)
+                                emu->xmm[ndf++].d[0] = va_arg(va, double);
+                            else {
+                                *((double*)p) = va_arg(va, double);
+                                ++p;
+                            }
+                            break;
+                GO('p', q, void*, void*, (uintptr_t))
+                GO('i', sdword, int, int, )
+                GO('u', dword, uint32_t, uint32_t, )
+                GO('I', sq, int64_t, int64_t, )
+                GO('U', q, uint64_t, uint64_t, )
+                GO('L', q, uint64_t, uint64_t, )
+                GO('l', sq, int64_t, int64_t, )
+                GO('w', sword, int16_t, int, )
+                GO('W', word, uint16_t, int, )
+                GO('c', sbyte, int8_t, int, )
+                GO('C', byte, uint8_t, int, )
+                default:
+                    printf_log(LOG_NONE, "Error, unhandled arg %d: '%c' in RunFunctionFmt\n", i, fmt[i]);
+                    if(ni<6) emu->regs[nn[ni++]].q[0] = va_arg(va, uint64_t); else {*p = va_arg(va, uint64_t); ++p;}; 
+                    break;
+            }
+        }
+        #undef GO
+        va_end (va);
     }
-    va_end (va);
 
     uintptr_t oldip = R_RIP;
     DynaCall(emu, fnc);
 
     if(oldip==R_RIP) {
-        R_RSP = R_RBP;          // mov rsp, rbp
-        R_RBP = Pop64(emu);     // pop rbp
+        #ifdef BOX32
+        if(box64_is32bits) {
+            R_RSP = R_EBP;          // mov esp, ebp
+            R_RBP = Pop_32(emu);    // pop ebp
+        }
+        #endif
+        {
+            R_RSP = R_RBP;          // mov rsp, rbp
+            R_RBP = Pop64(emu);     // pop rbp
+        }
     }
 
-    uint64_t ret = R_RAX;
+    uint64_t ret = box64_is32bits?((uint64_t)R_EAX | ((uint64_t)R_EDX)<<32):R_RAX;
 
     return ret;
 }
@@ -148,6 +253,10 @@ EXPORTDYN
 uint64_t RunSafeFunction(uintptr_t fnc, int nargs, ...)
 {
     x64emu_t * emu = thread_get_emu();
+    if(box64_is32bits) {
+        printf_log(LOG_NONE, "Calling RunSafeFunction in 32bits\n");
+        abort();
+    }
 
     int align = (nargs>6)?(((nargs-6)&1)):0;
     int stackn = align + ((nargs>6)?(nargs-6):0);
@@ -222,28 +331,48 @@ uint64_t RunSafeFunction(uintptr_t fnc, int nargs, ...)
 EXPORTDYN
 uint64_t RunFunctionWithEmu(x64emu_t *emu, int QuitOnLongJump, uintptr_t fnc, int nargs, ...)
 {
-    int align = (nargs>6)?(((nargs-6)&1)):0;
-    int stackn = align + ((nargs>6)?(nargs-6):0);
-
-    Push64(emu, R_RBP); // push rbp
-    R_RBP = R_RSP;      // mov rbp, rsp
+    #ifdef BOX32
+    if(box64_is32bits) {
+        Push_32(emu, R_RBP); // push ebp
+        R_RBP = R_ESP;       // mov ebp, esp
 
-    R_RSP -= stackn*sizeof(void*);   // need to push in reverse order
+        R_ESP -= nargs*4;   // need to push in reverse order
 
-    uint64_t *p = (uint64_t*)R_RSP;
+        ptr_t *p = (ptr_t*)from_ptrv(R_ESP);
 
-    va_list va;
-    va_start (va, nargs);
-    for (int i=0; i<nargs; ++i) {
-        if(i<6) {
-            int nn[] = {_DI, _SI, _DX, _CX, _R8, _R9};
-            emu->regs[nn[i]].q[0] = va_arg(va, uint64_t);
-        } else {
-            *p = va_arg(va, uint64_t);
+        va_list va;
+        va_start (va, nargs);
+        for (int i=0; i<nargs; ++i) {
+            *p = va_arg(va, uint32_t);
             p++;
         }
+        va_end (va);
+    } else
+    #endif
+    {
+        int align = (nargs>6)?(((nargs-6)&1)):0;
+        int stackn = align + ((nargs>6)?(nargs-6):0);
+
+        Push64(emu, R_RBP); // push rbp
+        R_RBP = R_RSP;      // mov rbp, rsp
+
+        R_RSP -= stackn*sizeof(void*);   // need to push in reverse order
+
+        uint64_t *p = (uint64_t*)R_RSP;
+
+        va_list va;
+        va_start (va, nargs);
+        for (int i=0; i<nargs; ++i) {
+            if(i<6) {
+                int nn[] = {_DI, _SI, _DX, _CX, _R8, _R9};
+                emu->regs[nn[i]].q[0] = va_arg(va, uint64_t);
+            } else {
+                *p = va_arg(va, uint64_t);
+                p++;
+            }
+        }
+        va_end (va);
     }
-    va_end (va);
 
     uintptr_t oldip = R_RIP;
     int old_quit = emu->quit;
@@ -256,20 +385,29 @@ uint64_t RunFunctionWithEmu(x64emu_t *emu, int QuitOnLongJump, uintptr_t fnc, in
 
     if(oldip==R_RIP) {
         R_RSP = R_RBP;      // restore stack only if EIP is the one expected (else, it means return value is not the one expected)
-        R_RBP = Pop64(emu); //Pop EBP
+        #ifdef BOX32
+        if(box64_is32bits)
+            R_RBP = Pop_32(emu); //Pop EBP
+        else
+        #endif
+            R_RBP = Pop64(emu); //Pop EBP
     }
 
     emu->quit = old_quit;
     emu->flags.quitonlongjmp = oldlong;
 
 
-    return R_RAX;
+    return box64_is32bits?((uint64_t)R_EAX | ((uint64_t)R_EDX)<<32):R_RAX;;
 }
 
 EXPORTDYN
 uint64_t RunFunctionWindows(uintptr_t fnc, int nargs, ...)
 {
     x64emu_t *emu = thread_get_emu();
+    if(box64_is32bits) {
+        printf_log(LOG_NONE, "Calling RunFunctionWindows in 32bits\n");
+        abort();
+    }
     int align = (nargs>4)?(((nargs-4)&1)):0;
     int stackn = align + ((nargs>4)?(nargs-4):0);
 
diff --git a/src/wrapped/generated/wrappedaluredefs.h b/src/wrapped/generated/wrappedaluredefs.h
index 25481ebd..ed991ac9 100644
--- a/src/wrapped/generated/wrappedaluredefs.h
+++ b/src/wrapped/generated/wrappedaluredefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedalureDEFS_H_
 #define __wrappedalureDEFS_H_
diff --git a/src/wrapped/generated/wrappedaluretypes.h b/src/wrapped/generated/wrappedaluretypes.h
index 6026c995..e7ad2fc7 100644
--- a/src/wrapped/generated/wrappedaluretypes.h
+++ b/src/wrapped/generated/wrappedaluretypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedalureTYPES_H_
 #define __wrappedalureTYPES_H_
diff --git a/src/wrapped/generated/wrappedalureundefs.h b/src/wrapped/generated/wrappedalureundefs.h
index 35d18761..e831d08b 100644
--- a/src/wrapped/generated/wrappedalureundefs.h
+++ b/src/wrapped/generated/wrappedalureundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedalureUNDEFS_H_
 #define __wrappedalureUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedalutdefs.h b/src/wrapped/generated/wrappedalutdefs.h
index 932f9b40..4159e6ec 100644
--- a/src/wrapped/generated/wrappedalutdefs.h
+++ b/src/wrapped/generated/wrappedalutdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedalutDEFS_H_
 #define __wrappedalutDEFS_H_
diff --git a/src/wrapped/generated/wrappedaluttypes.h b/src/wrapped/generated/wrappedaluttypes.h
index fd59c671..143dde60 100644
--- a/src/wrapped/generated/wrappedaluttypes.h
+++ b/src/wrapped/generated/wrappedaluttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedalutTYPES_H_
 #define __wrappedalutTYPES_H_
diff --git a/src/wrapped/generated/wrappedalutundefs.h b/src/wrapped/generated/wrappedalutundefs.h
index 837ffbd3..97eb4984 100644
--- a/src/wrapped/generated/wrappedalutundefs.h
+++ b/src/wrapped/generated/wrappedalutundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedalutUNDEFS_H_
 #define __wrappedalutUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedanldefs.h b/src/wrapped/generated/wrappedanldefs.h
index 6c72df28..7edc8921 100644
--- a/src/wrapped/generated/wrappedanldefs.h
+++ b/src/wrapped/generated/wrappedanldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedanlDEFS_H_
 #define __wrappedanlDEFS_H_
diff --git a/src/wrapped/generated/wrappedanltypes.h b/src/wrapped/generated/wrappedanltypes.h
index 4c56eb37..44ab3979 100644
--- a/src/wrapped/generated/wrappedanltypes.h
+++ b/src/wrapped/generated/wrappedanltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedanlTYPES_H_
 #define __wrappedanlTYPES_H_
diff --git a/src/wrapped/generated/wrappedanlundefs.h b/src/wrapped/generated/wrappedanlundefs.h
index ed0ba39f..5da94bf1 100644
--- a/src/wrapped/generated/wrappedanlundefs.h
+++ b/src/wrapped/generated/wrappedanlundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedanlUNDEFS_H_
 #define __wrappedanlUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedatkbridgedefs.h b/src/wrapped/generated/wrappedatkbridgedefs.h
index a7aa9e4f..631d5a84 100644
--- a/src/wrapped/generated/wrappedatkbridgedefs.h
+++ b/src/wrapped/generated/wrappedatkbridgedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatkbridgeDEFS_H_
 #define __wrappedatkbridgeDEFS_H_
diff --git a/src/wrapped/generated/wrappedatkbridgetypes.h b/src/wrapped/generated/wrappedatkbridgetypes.h
index fc55a5e4..f564afe0 100644
--- a/src/wrapped/generated/wrappedatkbridgetypes.h
+++ b/src/wrapped/generated/wrappedatkbridgetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatkbridgeTYPES_H_
 #define __wrappedatkbridgeTYPES_H_
diff --git a/src/wrapped/generated/wrappedatkbridgeundefs.h b/src/wrapped/generated/wrappedatkbridgeundefs.h
index 2549ad2e..d3a6395c 100644
--- a/src/wrapped/generated/wrappedatkbridgeundefs.h
+++ b/src/wrapped/generated/wrappedatkbridgeundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatkbridgeUNDEFS_H_
 #define __wrappedatkbridgeUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedatkdefs.h b/src/wrapped/generated/wrappedatkdefs.h
index e5408284..5c2f53a4 100644
--- a/src/wrapped/generated/wrappedatkdefs.h
+++ b/src/wrapped/generated/wrappedatkdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatkDEFS_H_
 #define __wrappedatkDEFS_H_
diff --git a/src/wrapped/generated/wrappedatktypes.h b/src/wrapped/generated/wrappedatktypes.h
index 98cae437..fe4417db 100644
--- a/src/wrapped/generated/wrappedatktypes.h
+++ b/src/wrapped/generated/wrappedatktypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatkTYPES_H_
 #define __wrappedatkTYPES_H_
diff --git a/src/wrapped/generated/wrappedatkundefs.h b/src/wrapped/generated/wrappedatkundefs.h
index c100ca47..d9b9ee9b 100644
--- a/src/wrapped/generated/wrappedatkundefs.h
+++ b/src/wrapped/generated/wrappedatkundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatkUNDEFS_H_
 #define __wrappedatkUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedatomicdefs.h b/src/wrapped/generated/wrappedatomicdefs.h
index 7c0be638..98ebdcf6 100644
--- a/src/wrapped/generated/wrappedatomicdefs.h
+++ b/src/wrapped/generated/wrappedatomicdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatomicDEFS_H_
 #define __wrappedatomicDEFS_H_
diff --git a/src/wrapped/generated/wrappedatomictypes.h b/src/wrapped/generated/wrappedatomictypes.h
index b7ef8829..8fb6ed69 100644
--- a/src/wrapped/generated/wrappedatomictypes.h
+++ b/src/wrapped/generated/wrappedatomictypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatomicTYPES_H_
 #define __wrappedatomicTYPES_H_
diff --git a/src/wrapped/generated/wrappedatomicundefs.h b/src/wrapped/generated/wrappedatomicundefs.h
index 6a71a445..ad461c7d 100644
--- a/src/wrapped/generated/wrappedatomicundefs.h
+++ b/src/wrapped/generated/wrappedatomicundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatomicUNDEFS_H_
 #define __wrappedatomicUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedatspidefs.h b/src/wrapped/generated/wrappedatspidefs.h
index d7983847..06dd6d38 100644
--- a/src/wrapped/generated/wrappedatspidefs.h
+++ b/src/wrapped/generated/wrappedatspidefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatspiDEFS_H_
 #define __wrappedatspiDEFS_H_
diff --git a/src/wrapped/generated/wrappedatspitypes.h b/src/wrapped/generated/wrappedatspitypes.h
index 0293ae92..0a6b16c9 100644
--- a/src/wrapped/generated/wrappedatspitypes.h
+++ b/src/wrapped/generated/wrappedatspitypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatspiTYPES_H_
 #define __wrappedatspiTYPES_H_
diff --git a/src/wrapped/generated/wrappedatspiundefs.h b/src/wrapped/generated/wrappedatspiundefs.h
index 216cda26..fd308cc0 100644
--- a/src/wrapped/generated/wrappedatspiundefs.h
+++ b/src/wrapped/generated/wrappedatspiundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedatspiUNDEFS_H_
 #define __wrappedatspiUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedayatanaappindicator3defs.h b/src/wrapped/generated/wrappedayatanaappindicator3defs.h
index f5a970d2..33c49fd9 100644
--- a/src/wrapped/generated/wrappedayatanaappindicator3defs.h
+++ b/src/wrapped/generated/wrappedayatanaappindicator3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedayatanaappindicator3DEFS_H_
 #define __wrappedayatanaappindicator3DEFS_H_
diff --git a/src/wrapped/generated/wrappedayatanaappindicator3types.h b/src/wrapped/generated/wrappedayatanaappindicator3types.h
index ac9dfa4c..fe1f19e3 100644
--- a/src/wrapped/generated/wrappedayatanaappindicator3types.h
+++ b/src/wrapped/generated/wrappedayatanaappindicator3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedayatanaappindicator3TYPES_H_
 #define __wrappedayatanaappindicator3TYPES_H_
diff --git a/src/wrapped/generated/wrappedayatanaappindicator3undefs.h b/src/wrapped/generated/wrappedayatanaappindicator3undefs.h
index 35c9f4e9..f85739c2 100644
--- a/src/wrapped/generated/wrappedayatanaappindicator3undefs.h
+++ b/src/wrapped/generated/wrappedayatanaappindicator3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedayatanaappindicator3UNDEFS_H_
 #define __wrappedayatanaappindicator3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedbz2defs.h b/src/wrapped/generated/wrappedbz2defs.h
index 7a94209b..0c38acef 100644
--- a/src/wrapped/generated/wrappedbz2defs.h
+++ b/src/wrapped/generated/wrappedbz2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedbz2DEFS_H_
 #define __wrappedbz2DEFS_H_
diff --git a/src/wrapped/generated/wrappedbz2types.h b/src/wrapped/generated/wrappedbz2types.h
index cad85bc7..df8dea62 100644
--- a/src/wrapped/generated/wrappedbz2types.h
+++ b/src/wrapped/generated/wrappedbz2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedbz2TYPES_H_
 #define __wrappedbz2TYPES_H_
diff --git a/src/wrapped/generated/wrappedbz2undefs.h b/src/wrapped/generated/wrappedbz2undefs.h
index 0285da9d..8930629c 100644
--- a/src/wrapped/generated/wrappedbz2undefs.h
+++ b/src/wrapped/generated/wrappedbz2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedbz2UNDEFS_H_
 #define __wrappedbz2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedcairodefs.h b/src/wrapped/generated/wrappedcairodefs.h
index 3146a809..e7ddef2d 100644
--- a/src/wrapped/generated/wrappedcairodefs.h
+++ b/src/wrapped/generated/wrappedcairodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcairoDEFS_H_
 #define __wrappedcairoDEFS_H_
diff --git a/src/wrapped/generated/wrappedcairogobjectdefs.h b/src/wrapped/generated/wrappedcairogobjectdefs.h
index 950015a2..18dd3139 100644
--- a/src/wrapped/generated/wrappedcairogobjectdefs.h
+++ b/src/wrapped/generated/wrappedcairogobjectdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcairogobjectDEFS_H_
 #define __wrappedcairogobjectDEFS_H_
diff --git a/src/wrapped/generated/wrappedcairogobjecttypes.h b/src/wrapped/generated/wrappedcairogobjecttypes.h
index a7e969bd..35e48a25 100644
--- a/src/wrapped/generated/wrappedcairogobjecttypes.h
+++ b/src/wrapped/generated/wrappedcairogobjecttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcairogobjectTYPES_H_
 #define __wrappedcairogobjectTYPES_H_
diff --git a/src/wrapped/generated/wrappedcairogobjectundefs.h b/src/wrapped/generated/wrappedcairogobjectundefs.h
index 4f3da1b5..80947046 100644
--- a/src/wrapped/generated/wrappedcairogobjectundefs.h
+++ b/src/wrapped/generated/wrappedcairogobjectundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcairogobjectUNDEFS_H_
 #define __wrappedcairogobjectUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedcairotypes.h b/src/wrapped/generated/wrappedcairotypes.h
index 4020471b..703493b0 100644
--- a/src/wrapped/generated/wrappedcairotypes.h
+++ b/src/wrapped/generated/wrappedcairotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcairoTYPES_H_
 #define __wrappedcairoTYPES_H_
diff --git a/src/wrapped/generated/wrappedcairoundefs.h b/src/wrapped/generated/wrappedcairoundefs.h
index a3042b43..d416133e 100644
--- a/src/wrapped/generated/wrappedcairoundefs.h
+++ b/src/wrapped/generated/wrappedcairoundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcairoUNDEFS_H_
 #define __wrappedcairoUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedcapdefs.h b/src/wrapped/generated/wrappedcapdefs.h
index 57c78f12..529e275c 100644
--- a/src/wrapped/generated/wrappedcapdefs.h
+++ b/src/wrapped/generated/wrappedcapdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcapDEFS_H_
 #define __wrappedcapDEFS_H_
diff --git a/src/wrapped/generated/wrappedcaptypes.h b/src/wrapped/generated/wrappedcaptypes.h
index 3d18ce39..cc2e63c9 100644
--- a/src/wrapped/generated/wrappedcaptypes.h
+++ b/src/wrapped/generated/wrappedcaptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcapTYPES_H_
 #define __wrappedcapTYPES_H_
diff --git a/src/wrapped/generated/wrappedcapundefs.h b/src/wrapped/generated/wrappedcapundefs.h
index 87967b4a..dfcfee25 100644
--- a/src/wrapped/generated/wrappedcapundefs.h
+++ b/src/wrapped/generated/wrappedcapundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcapUNDEFS_H_
 #define __wrappedcapUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedcrashhandlerdefs.h b/src/wrapped/generated/wrappedcrashhandlerdefs.h
index 36c4d36c..ae1f5f6b 100644
--- a/src/wrapped/generated/wrappedcrashhandlerdefs.h
+++ b/src/wrapped/generated/wrappedcrashhandlerdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcrashhandlerDEFS_H_
 #define __wrappedcrashhandlerDEFS_H_
diff --git a/src/wrapped/generated/wrappedcrashhandlertypes.h b/src/wrapped/generated/wrappedcrashhandlertypes.h
index 2acab702..16d8480b 100644
--- a/src/wrapped/generated/wrappedcrashhandlertypes.h
+++ b/src/wrapped/generated/wrappedcrashhandlertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcrashhandlerTYPES_H_
 #define __wrappedcrashhandlerTYPES_H_
diff --git a/src/wrapped/generated/wrappedcrashhandlerundefs.h b/src/wrapped/generated/wrappedcrashhandlerundefs.h
index 3fb6554d..c584ed08 100644
--- a/src/wrapped/generated/wrappedcrashhandlerundefs.h
+++ b/src/wrapped/generated/wrappedcrashhandlerundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcrashhandlerUNDEFS_H_
 #define __wrappedcrashhandlerUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedcrypto3defs.h b/src/wrapped/generated/wrappedcrypto3defs.h
index c6874fbf..0c92c187 100644
--- a/src/wrapped/generated/wrappedcrypto3defs.h
+++ b/src/wrapped/generated/wrappedcrypto3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcrypto3DEFS_H_
 #define __wrappedcrypto3DEFS_H_
diff --git a/src/wrapped/generated/wrappedcrypto3types.h b/src/wrapped/generated/wrappedcrypto3types.h
index 175bea56..d8ab308d 100644
--- a/src/wrapped/generated/wrappedcrypto3types.h
+++ b/src/wrapped/generated/wrappedcrypto3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcrypto3TYPES_H_
 #define __wrappedcrypto3TYPES_H_
diff --git a/src/wrapped/generated/wrappedcrypto3undefs.h b/src/wrapped/generated/wrappedcrypto3undefs.h
index 1e82efc0..6285fa6c 100644
--- a/src/wrapped/generated/wrappedcrypto3undefs.h
+++ b/src/wrapped/generated/wrappedcrypto3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcrypto3UNDEFS_H_
 #define __wrappedcrypto3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedcryptodefs.h b/src/wrapped/generated/wrappedcryptodefs.h
index 2a2f3c2c..8031208e 100644
--- a/src/wrapped/generated/wrappedcryptodefs.h
+++ b/src/wrapped/generated/wrappedcryptodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcryptoDEFS_H_
 #define __wrappedcryptoDEFS_H_
diff --git a/src/wrapped/generated/wrappedcryptotypes.h b/src/wrapped/generated/wrappedcryptotypes.h
index 6a9de7b4..1376ebcc 100644
--- a/src/wrapped/generated/wrappedcryptotypes.h
+++ b/src/wrapped/generated/wrappedcryptotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcryptoTYPES_H_
 #define __wrappedcryptoTYPES_H_
diff --git a/src/wrapped/generated/wrappedcryptoundefs.h b/src/wrapped/generated/wrappedcryptoundefs.h
index 0604af4f..45344ad0 100644
--- a/src/wrapped/generated/wrappedcryptoundefs.h
+++ b/src/wrapped/generated/wrappedcryptoundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcryptoUNDEFS_H_
 #define __wrappedcryptoUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedcurldefs.h b/src/wrapped/generated/wrappedcurldefs.h
index 6e2dd59c..cf888633 100644
--- a/src/wrapped/generated/wrappedcurldefs.h
+++ b/src/wrapped/generated/wrappedcurldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcurlDEFS_H_
 #define __wrappedcurlDEFS_H_
diff --git a/src/wrapped/generated/wrappedcurltypes.h b/src/wrapped/generated/wrappedcurltypes.h
index 5576f7a6..b5fee462 100644
--- a/src/wrapped/generated/wrappedcurltypes.h
+++ b/src/wrapped/generated/wrappedcurltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcurlTYPES_H_
 #define __wrappedcurlTYPES_H_
diff --git a/src/wrapped/generated/wrappedcurlundefs.h b/src/wrapped/generated/wrappedcurlundefs.h
index 1b785a42..b0e50301 100644
--- a/src/wrapped/generated/wrappedcurlundefs.h
+++ b/src/wrapped/generated/wrappedcurlundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedcurlUNDEFS_H_
 #define __wrappedcurlUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedd3dadapter9defs.h b/src/wrapped/generated/wrappedd3dadapter9defs.h
index 80a0f1b5..fa28fe94 100644
--- a/src/wrapped/generated/wrappedd3dadapter9defs.h
+++ b/src/wrapped/generated/wrappedd3dadapter9defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedd3dadapter9DEFS_H_
 #define __wrappedd3dadapter9DEFS_H_
diff --git a/src/wrapped/generated/wrappedd3dadapter9types.h b/src/wrapped/generated/wrappedd3dadapter9types.h
index c09cdf39..53c6d875 100644
--- a/src/wrapped/generated/wrappedd3dadapter9types.h
+++ b/src/wrapped/generated/wrappedd3dadapter9types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedd3dadapter9TYPES_H_
 #define __wrappedd3dadapter9TYPES_H_
diff --git a/src/wrapped/generated/wrappedd3dadapter9undefs.h b/src/wrapped/generated/wrappedd3dadapter9undefs.h
index d6dd2ebf..7bdde12e 100644
--- a/src/wrapped/generated/wrappedd3dadapter9undefs.h
+++ b/src/wrapped/generated/wrappedd3dadapter9undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedd3dadapter9UNDEFS_H_
 #define __wrappedd3dadapter9UNDEFS_H_
diff --git a/src/wrapped/generated/wrappeddbusdefs.h b/src/wrapped/generated/wrappeddbusdefs.h
index 28ece645..afebbfbd 100644
--- a/src/wrapped/generated/wrappeddbusdefs.h
+++ b/src/wrapped/generated/wrappeddbusdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusDEFS_H_
 #define __wrappeddbusDEFS_H_
diff --git a/src/wrapped/generated/wrappeddbusglib1defs.h b/src/wrapped/generated/wrappeddbusglib1defs.h
index bf9d1ef1..35aa676f 100644
--- a/src/wrapped/generated/wrappeddbusglib1defs.h
+++ b/src/wrapped/generated/wrappeddbusglib1defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusglib1DEFS_H_
 #define __wrappeddbusglib1DEFS_H_
diff --git a/src/wrapped/generated/wrappeddbusglib1types.h b/src/wrapped/generated/wrappeddbusglib1types.h
index a6b57cf2..199693aa 100644
--- a/src/wrapped/generated/wrappeddbusglib1types.h
+++ b/src/wrapped/generated/wrappeddbusglib1types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusglib1TYPES_H_
 #define __wrappeddbusglib1TYPES_H_
diff --git a/src/wrapped/generated/wrappeddbusglib1undefs.h b/src/wrapped/generated/wrappeddbusglib1undefs.h
index c77048c0..eb12da9d 100644
--- a/src/wrapped/generated/wrappeddbusglib1undefs.h
+++ b/src/wrapped/generated/wrappeddbusglib1undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusglib1UNDEFS_H_
 #define __wrappeddbusglib1UNDEFS_H_
diff --git a/src/wrapped/generated/wrappeddbusmenuglibdefs.h b/src/wrapped/generated/wrappeddbusmenuglibdefs.h
index e8e738c4..3ac3cad4 100644
--- a/src/wrapped/generated/wrappeddbusmenuglibdefs.h
+++ b/src/wrapped/generated/wrappeddbusmenuglibdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusmenuglibDEFS_H_
 #define __wrappeddbusmenuglibDEFS_H_
diff --git a/src/wrapped/generated/wrappeddbusmenuglibtypes.h b/src/wrapped/generated/wrappeddbusmenuglibtypes.h
index c795e242..850324f1 100644
--- a/src/wrapped/generated/wrappeddbusmenuglibtypes.h
+++ b/src/wrapped/generated/wrappeddbusmenuglibtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusmenuglibTYPES_H_
 #define __wrappeddbusmenuglibTYPES_H_
diff --git a/src/wrapped/generated/wrappeddbusmenuglibundefs.h b/src/wrapped/generated/wrappeddbusmenuglibundefs.h
index 93f1f962..3158cdb8 100644
--- a/src/wrapped/generated/wrappeddbusmenuglibundefs.h
+++ b/src/wrapped/generated/wrappeddbusmenuglibundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusmenuglibUNDEFS_H_
 #define __wrappeddbusmenuglibUNDEFS_H_
diff --git a/src/wrapped/generated/wrappeddbustypes.h b/src/wrapped/generated/wrappeddbustypes.h
index c19729f2..2b18d783 100644
--- a/src/wrapped/generated/wrappeddbustypes.h
+++ b/src/wrapped/generated/wrappeddbustypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusTYPES_H_
 #define __wrappeddbusTYPES_H_
diff --git a/src/wrapped/generated/wrappeddbusundefs.h b/src/wrapped/generated/wrappeddbusundefs.h
index e0e5f799..1d906a1d 100644
--- a/src/wrapped/generated/wrappeddbusundefs.h
+++ b/src/wrapped/generated/wrappeddbusundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddbusUNDEFS_H_
 #define __wrappeddbusUNDEFS_H_
diff --git a/src/wrapped/generated/wrappeddecor0defs.h b/src/wrapped/generated/wrappeddecor0defs.h
index 3f8696fd..2d83b3e7 100644
--- a/src/wrapped/generated/wrappeddecor0defs.h
+++ b/src/wrapped/generated/wrappeddecor0defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddecor0DEFS_H_
 #define __wrappeddecor0DEFS_H_
diff --git a/src/wrapped/generated/wrappeddecor0types.h b/src/wrapped/generated/wrappeddecor0types.h
index 6fa92b9e..fcf2ff9d 100644
--- a/src/wrapped/generated/wrappeddecor0types.h
+++ b/src/wrapped/generated/wrappeddecor0types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddecor0TYPES_H_
 #define __wrappeddecor0TYPES_H_
diff --git a/src/wrapped/generated/wrappeddecor0undefs.h b/src/wrapped/generated/wrappeddecor0undefs.h
index 8d7a76f2..3811b5bf 100644
--- a/src/wrapped/generated/wrappeddecor0undefs.h
+++ b/src/wrapped/generated/wrappeddecor0undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappeddecor0UNDEFS_H_
 #define __wrappeddecor0UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedevent21defs.h b/src/wrapped/generated/wrappedevent21defs.h
index 8a79789f..5c0526c4 100644
--- a/src/wrapped/generated/wrappedevent21defs.h
+++ b/src/wrapped/generated/wrappedevent21defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedevent21DEFS_H_
 #define __wrappedevent21DEFS_H_
diff --git a/src/wrapped/generated/wrappedevent21types.h b/src/wrapped/generated/wrappedevent21types.h
index dcee212e..742455d6 100644
--- a/src/wrapped/generated/wrappedevent21types.h
+++ b/src/wrapped/generated/wrappedevent21types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedevent21TYPES_H_
 #define __wrappedevent21TYPES_H_
diff --git a/src/wrapped/generated/wrappedevent21undefs.h b/src/wrapped/generated/wrappedevent21undefs.h
index e0cd3b7c..6892fb37 100644
--- a/src/wrapped/generated/wrappedevent21undefs.h
+++ b/src/wrapped/generated/wrappedevent21undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedevent21UNDEFS_H_
 #define __wrappedevent21UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedexpatdefs.h b/src/wrapped/generated/wrappedexpatdefs.h
index c142fbd9..2283f92a 100644
--- a/src/wrapped/generated/wrappedexpatdefs.h
+++ b/src/wrapped/generated/wrappedexpatdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedexpatDEFS_H_
 #define __wrappedexpatDEFS_H_
diff --git a/src/wrapped/generated/wrappedexpattypes.h b/src/wrapped/generated/wrappedexpattypes.h
index 958436dc..ee8153a4 100644
--- a/src/wrapped/generated/wrappedexpattypes.h
+++ b/src/wrapped/generated/wrappedexpattypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedexpatTYPES_H_
 #define __wrappedexpatTYPES_H_
diff --git a/src/wrapped/generated/wrappedexpatundefs.h b/src/wrapped/generated/wrappedexpatundefs.h
index 7c0e0b44..580e5c66 100644
--- a/src/wrapped/generated/wrappedexpatundefs.h
+++ b/src/wrapped/generated/wrappedexpatundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedexpatUNDEFS_H_
 #define __wrappedexpatUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedfaudiodefs.h b/src/wrapped/generated/wrappedfaudiodefs.h
index 6e118b8b..971648cb 100644
--- a/src/wrapped/generated/wrappedfaudiodefs.h
+++ b/src/wrapped/generated/wrappedfaudiodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfaudioDEFS_H_
 #define __wrappedfaudioDEFS_H_
diff --git a/src/wrapped/generated/wrappedfaudiotypes.h b/src/wrapped/generated/wrappedfaudiotypes.h
index 1676f6f2..2e818b48 100644
--- a/src/wrapped/generated/wrappedfaudiotypes.h
+++ b/src/wrapped/generated/wrappedfaudiotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfaudioTYPES_H_
 #define __wrappedfaudioTYPES_H_
diff --git a/src/wrapped/generated/wrappedfaudioundefs.h b/src/wrapped/generated/wrappedfaudioundefs.h
index f5e9c2af..30cb2328 100644
--- a/src/wrapped/generated/wrappedfaudioundefs.h
+++ b/src/wrapped/generated/wrappedfaudioundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfaudioUNDEFS_H_
 #define __wrappedfaudioUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedflacdefs.h b/src/wrapped/generated/wrappedflacdefs.h
index 752417ca..5ac0fa74 100644
--- a/src/wrapped/generated/wrappedflacdefs.h
+++ b/src/wrapped/generated/wrappedflacdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedflacDEFS_H_
 #define __wrappedflacDEFS_H_
diff --git a/src/wrapped/generated/wrappedflactypes.h b/src/wrapped/generated/wrappedflactypes.h
index 17fcd7a4..26ddc696 100644
--- a/src/wrapped/generated/wrappedflactypes.h
+++ b/src/wrapped/generated/wrappedflactypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedflacTYPES_H_
 #define __wrappedflacTYPES_H_
diff --git a/src/wrapped/generated/wrappedflacundefs.h b/src/wrapped/generated/wrappedflacundefs.h
index c4ea0182..38d7d703 100644
--- a/src/wrapped/generated/wrappedflacundefs.h
+++ b/src/wrapped/generated/wrappedflacundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedflacUNDEFS_H_
 #define __wrappedflacUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedfontconfigdefs.h b/src/wrapped/generated/wrappedfontconfigdefs.h
index db507edc..8e56edf8 100644
--- a/src/wrapped/generated/wrappedfontconfigdefs.h
+++ b/src/wrapped/generated/wrappedfontconfigdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfontconfigDEFS_H_
 #define __wrappedfontconfigDEFS_H_
diff --git a/src/wrapped/generated/wrappedfontconfigtypes.h b/src/wrapped/generated/wrappedfontconfigtypes.h
index f3e8d29d..036b90b5 100644
--- a/src/wrapped/generated/wrappedfontconfigtypes.h
+++ b/src/wrapped/generated/wrappedfontconfigtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfontconfigTYPES_H_
 #define __wrappedfontconfigTYPES_H_
diff --git a/src/wrapped/generated/wrappedfontconfigundefs.h b/src/wrapped/generated/wrappedfontconfigundefs.h
index 4bdce179..5ddcc45c 100644
--- a/src/wrapped/generated/wrappedfontconfigundefs.h
+++ b/src/wrapped/generated/wrappedfontconfigundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfontconfigUNDEFS_H_
 #define __wrappedfontconfigUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedfreebl3defs.h b/src/wrapped/generated/wrappedfreebl3defs.h
index 33db283d..5eb127d0 100644
--- a/src/wrapped/generated/wrappedfreebl3defs.h
+++ b/src/wrapped/generated/wrappedfreebl3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfreebl3DEFS_H_
 #define __wrappedfreebl3DEFS_H_
diff --git a/src/wrapped/generated/wrappedfreebl3types.h b/src/wrapped/generated/wrappedfreebl3types.h
index 8468e9c5..fa0925b6 100644
--- a/src/wrapped/generated/wrappedfreebl3types.h
+++ b/src/wrapped/generated/wrappedfreebl3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfreebl3TYPES_H_
 #define __wrappedfreebl3TYPES_H_
diff --git a/src/wrapped/generated/wrappedfreebl3undefs.h b/src/wrapped/generated/wrappedfreebl3undefs.h
index 88b22d7d..a03330d7 100644
--- a/src/wrapped/generated/wrappedfreebl3undefs.h
+++ b/src/wrapped/generated/wrappedfreebl3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfreebl3UNDEFS_H_
 #define __wrappedfreebl3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedfreetypedefs.h b/src/wrapped/generated/wrappedfreetypedefs.h
index fc2eb27d..50fd7cb0 100644
--- a/src/wrapped/generated/wrappedfreetypedefs.h
+++ b/src/wrapped/generated/wrappedfreetypedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfreetypeDEFS_H_
 #define __wrappedfreetypeDEFS_H_
diff --git a/src/wrapped/generated/wrappedfreetypetypes.h b/src/wrapped/generated/wrappedfreetypetypes.h
index eb85cbb9..44d67d1f 100644
--- a/src/wrapped/generated/wrappedfreetypetypes.h
+++ b/src/wrapped/generated/wrappedfreetypetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfreetypeTYPES_H_
 #define __wrappedfreetypeTYPES_H_
diff --git a/src/wrapped/generated/wrappedfreetypeundefs.h b/src/wrapped/generated/wrappedfreetypeundefs.h
index 6b477c39..1c7663d8 100644
--- a/src/wrapped/generated/wrappedfreetypeundefs.h
+++ b/src/wrapped/generated/wrappedfreetypeundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedfreetypeUNDEFS_H_
 #define __wrappedfreetypeUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgbmdefs.h b/src/wrapped/generated/wrappedgbmdefs.h
index 7e238831..4307e0dd 100644
--- a/src/wrapped/generated/wrappedgbmdefs.h
+++ b/src/wrapped/generated/wrappedgbmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgbmDEFS_H_
 #define __wrappedgbmDEFS_H_
diff --git a/src/wrapped/generated/wrappedgbmtypes.h b/src/wrapped/generated/wrappedgbmtypes.h
index c45641fb..44605146 100644
--- a/src/wrapped/generated/wrappedgbmtypes.h
+++ b/src/wrapped/generated/wrappedgbmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgbmTYPES_H_
 #define __wrappedgbmTYPES_H_
diff --git a/src/wrapped/generated/wrappedgbmundefs.h b/src/wrapped/generated/wrappedgbmundefs.h
index 9f4e891b..71f533d2 100644
--- a/src/wrapped/generated/wrappedgbmundefs.h
+++ b/src/wrapped/generated/wrappedgbmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgbmUNDEFS_H_
 #define __wrappedgbmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgconf2defs.h b/src/wrapped/generated/wrappedgconf2defs.h
index 56cf7acd..f8f24214 100644
--- a/src/wrapped/generated/wrappedgconf2defs.h
+++ b/src/wrapped/generated/wrappedgconf2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgconf2DEFS_H_
 #define __wrappedgconf2DEFS_H_
diff --git a/src/wrapped/generated/wrappedgconf2types.h b/src/wrapped/generated/wrappedgconf2types.h
index 356c6518..e4f1a721 100644
--- a/src/wrapped/generated/wrappedgconf2types.h
+++ b/src/wrapped/generated/wrappedgconf2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgconf2TYPES_H_
 #define __wrappedgconf2TYPES_H_
diff --git a/src/wrapped/generated/wrappedgconf2undefs.h b/src/wrapped/generated/wrappedgconf2undefs.h
index 806ab5b1..69376de0 100644
--- a/src/wrapped/generated/wrappedgconf2undefs.h
+++ b/src/wrapped/generated/wrappedgconf2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgconf2UNDEFS_H_
 #define __wrappedgconf2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgcryptdefs.h b/src/wrapped/generated/wrappedgcryptdefs.h
index 47ea49ca..e810394d 100644
--- a/src/wrapped/generated/wrappedgcryptdefs.h
+++ b/src/wrapped/generated/wrappedgcryptdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgcryptDEFS_H_
 #define __wrappedgcryptDEFS_H_
diff --git a/src/wrapped/generated/wrappedgcrypttypes.h b/src/wrapped/generated/wrappedgcrypttypes.h
index 07785d69..7ae0d91f 100644
--- a/src/wrapped/generated/wrappedgcrypttypes.h
+++ b/src/wrapped/generated/wrappedgcrypttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgcryptTYPES_H_
 #define __wrappedgcryptTYPES_H_
diff --git a/src/wrapped/generated/wrappedgcryptundefs.h b/src/wrapped/generated/wrappedgcryptundefs.h
index 69c2e6f3..650917fb 100644
--- a/src/wrapped/generated/wrappedgcryptundefs.h
+++ b/src/wrapped/generated/wrappedgcryptundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgcryptUNDEFS_H_
 #define __wrappedgcryptUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgdk3defs.h b/src/wrapped/generated/wrappedgdk3defs.h
index 2d2c754e..8a7f3ee7 100644
--- a/src/wrapped/generated/wrappedgdk3defs.h
+++ b/src/wrapped/generated/wrappedgdk3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdk3DEFS_H_
 #define __wrappedgdk3DEFS_H_
diff --git a/src/wrapped/generated/wrappedgdk3types.h b/src/wrapped/generated/wrappedgdk3types.h
index 9fef4666..1ce09545 100644
--- a/src/wrapped/generated/wrappedgdk3types.h
+++ b/src/wrapped/generated/wrappedgdk3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdk3TYPES_H_
 #define __wrappedgdk3TYPES_H_
diff --git a/src/wrapped/generated/wrappedgdk3undefs.h b/src/wrapped/generated/wrappedgdk3undefs.h
index 2b636c1e..5d2f1896 100644
--- a/src/wrapped/generated/wrappedgdk3undefs.h
+++ b/src/wrapped/generated/wrappedgdk3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdk3UNDEFS_H_
 #define __wrappedgdk3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgdkpixbuf2defs.h b/src/wrapped/generated/wrappedgdkpixbuf2defs.h
index b0f2a7e1..63a0a528 100644
--- a/src/wrapped/generated/wrappedgdkpixbuf2defs.h
+++ b/src/wrapped/generated/wrappedgdkpixbuf2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdkpixbuf2DEFS_H_
 #define __wrappedgdkpixbuf2DEFS_H_
diff --git a/src/wrapped/generated/wrappedgdkpixbuf2types.h b/src/wrapped/generated/wrappedgdkpixbuf2types.h
index 57e0d38f..f7457e91 100644
--- a/src/wrapped/generated/wrappedgdkpixbuf2types.h
+++ b/src/wrapped/generated/wrappedgdkpixbuf2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdkpixbuf2TYPES_H_
 #define __wrappedgdkpixbuf2TYPES_H_
diff --git a/src/wrapped/generated/wrappedgdkpixbuf2undefs.h b/src/wrapped/generated/wrappedgdkpixbuf2undefs.h
index 0a6750f0..1ade154b 100644
--- a/src/wrapped/generated/wrappedgdkpixbuf2undefs.h
+++ b/src/wrapped/generated/wrappedgdkpixbuf2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdkpixbuf2UNDEFS_H_
 #define __wrappedgdkpixbuf2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgdkx112defs.h b/src/wrapped/generated/wrappedgdkx112defs.h
index bd316824..a4067646 100644
--- a/src/wrapped/generated/wrappedgdkx112defs.h
+++ b/src/wrapped/generated/wrappedgdkx112defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdkx112DEFS_H_
 #define __wrappedgdkx112DEFS_H_
diff --git a/src/wrapped/generated/wrappedgdkx112types.h b/src/wrapped/generated/wrappedgdkx112types.h
index 4b36cbf4..87cfd23f 100644
--- a/src/wrapped/generated/wrappedgdkx112types.h
+++ b/src/wrapped/generated/wrappedgdkx112types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdkx112TYPES_H_
 #define __wrappedgdkx112TYPES_H_
diff --git a/src/wrapped/generated/wrappedgdkx112undefs.h b/src/wrapped/generated/wrappedgdkx112undefs.h
index 308cf824..39425e2e 100644
--- a/src/wrapped/generated/wrappedgdkx112undefs.h
+++ b/src/wrapped/generated/wrappedgdkx112undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgdkx112UNDEFS_H_
 #define __wrappedgdkx112UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgio2defs.h b/src/wrapped/generated/wrappedgio2defs.h
index c9fad231..291981f6 100644
--- a/src/wrapped/generated/wrappedgio2defs.h
+++ b/src/wrapped/generated/wrappedgio2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgio2DEFS_H_
 #define __wrappedgio2DEFS_H_
diff --git a/src/wrapped/generated/wrappedgio2types.h b/src/wrapped/generated/wrappedgio2types.h
index 00790100..0176f2ba 100644
--- a/src/wrapped/generated/wrappedgio2types.h
+++ b/src/wrapped/generated/wrappedgio2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgio2TYPES_H_
 #define __wrappedgio2TYPES_H_
diff --git a/src/wrapped/generated/wrappedgio2undefs.h b/src/wrapped/generated/wrappedgio2undefs.h
index f14e77aa..28d43472 100644
--- a/src/wrapped/generated/wrappedgio2undefs.h
+++ b/src/wrapped/generated/wrappedgio2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgio2UNDEFS_H_
 #define __wrappedgio2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedglesv2defs.h b/src/wrapped/generated/wrappedglesv2defs.h
index 26d20e5a..d3413bb6 100644
--- a/src/wrapped/generated/wrappedglesv2defs.h
+++ b/src/wrapped/generated/wrappedglesv2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedglesv2DEFS_H_
 #define __wrappedglesv2DEFS_H_
diff --git a/src/wrapped/generated/wrappedglesv2types.h b/src/wrapped/generated/wrappedglesv2types.h
index 586fe02b..e377afe0 100644
--- a/src/wrapped/generated/wrappedglesv2types.h
+++ b/src/wrapped/generated/wrappedglesv2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedglesv2TYPES_H_
 #define __wrappedglesv2TYPES_H_
diff --git a/src/wrapped/generated/wrappedglesv2undefs.h b/src/wrapped/generated/wrappedglesv2undefs.h
index 9362f423..f09da98b 100644
--- a/src/wrapped/generated/wrappedglesv2undefs.h
+++ b/src/wrapped/generated/wrappedglesv2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedglesv2UNDEFS_H_
 #define __wrappedglesv2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedglib2defs.h b/src/wrapped/generated/wrappedglib2defs.h
index e203aa2b..9ce6fc0f 100644
--- a/src/wrapped/generated/wrappedglib2defs.h
+++ b/src/wrapped/generated/wrappedglib2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedglib2DEFS_H_
 #define __wrappedglib2DEFS_H_
diff --git a/src/wrapped/generated/wrappedglib2types.h b/src/wrapped/generated/wrappedglib2types.h
index fc81f779..7215b932 100644
--- a/src/wrapped/generated/wrappedglib2types.h
+++ b/src/wrapped/generated/wrappedglib2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedglib2TYPES_H_
 #define __wrappedglib2TYPES_H_
diff --git a/src/wrapped/generated/wrappedglib2undefs.h b/src/wrapped/generated/wrappedglib2undefs.h
index f6d5f437..d1aa2403 100644
--- a/src/wrapped/generated/wrappedglib2undefs.h
+++ b/src/wrapped/generated/wrappedglib2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedglib2UNDEFS_H_
 #define __wrappedglib2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgmodule2defs.h b/src/wrapped/generated/wrappedgmodule2defs.h
index 297d418b..1f408822 100644
--- a/src/wrapped/generated/wrappedgmodule2defs.h
+++ b/src/wrapped/generated/wrappedgmodule2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgmodule2DEFS_H_
 #define __wrappedgmodule2DEFS_H_
diff --git a/src/wrapped/generated/wrappedgmodule2types.h b/src/wrapped/generated/wrappedgmodule2types.h
index 96576d22..17882f8a 100644
--- a/src/wrapped/generated/wrappedgmodule2types.h
+++ b/src/wrapped/generated/wrappedgmodule2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgmodule2TYPES_H_
 #define __wrappedgmodule2TYPES_H_
diff --git a/src/wrapped/generated/wrappedgmodule2undefs.h b/src/wrapped/generated/wrappedgmodule2undefs.h
index 37761994..2dff2048 100644
--- a/src/wrapped/generated/wrappedgmodule2undefs.h
+++ b/src/wrapped/generated/wrappedgmodule2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgmodule2UNDEFS_H_
 #define __wrappedgmodule2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgmpdefs.h b/src/wrapped/generated/wrappedgmpdefs.h
index 48916e6b..10cdeacf 100644
--- a/src/wrapped/generated/wrappedgmpdefs.h
+++ b/src/wrapped/generated/wrappedgmpdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgmpDEFS_H_
 #define __wrappedgmpDEFS_H_
diff --git a/src/wrapped/generated/wrappedgmptypes.h b/src/wrapped/generated/wrappedgmptypes.h
index c7a54de0..4073c73a 100644
--- a/src/wrapped/generated/wrappedgmptypes.h
+++ b/src/wrapped/generated/wrappedgmptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgmpTYPES_H_
 #define __wrappedgmpTYPES_H_
diff --git a/src/wrapped/generated/wrappedgmpundefs.h b/src/wrapped/generated/wrappedgmpundefs.h
index 514a6c09..310c09b6 100644
--- a/src/wrapped/generated/wrappedgmpundefs.h
+++ b/src/wrapped/generated/wrappedgmpundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgmpUNDEFS_H_
 #define __wrappedgmpUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgnutlsdefs.h b/src/wrapped/generated/wrappedgnutlsdefs.h
index c7178490..c3b0cf26 100644
--- a/src/wrapped/generated/wrappedgnutlsdefs.h
+++ b/src/wrapped/generated/wrappedgnutlsdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgnutlsDEFS_H_
 #define __wrappedgnutlsDEFS_H_
diff --git a/src/wrapped/generated/wrappedgnutlstypes.h b/src/wrapped/generated/wrappedgnutlstypes.h
index 37272839..fc5a2758 100644
--- a/src/wrapped/generated/wrappedgnutlstypes.h
+++ b/src/wrapped/generated/wrappedgnutlstypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgnutlsTYPES_H_
 #define __wrappedgnutlsTYPES_H_
diff --git a/src/wrapped/generated/wrappedgnutlsundefs.h b/src/wrapped/generated/wrappedgnutlsundefs.h
index 8ab689c7..a33f3f5f 100644
--- a/src/wrapped/generated/wrappedgnutlsundefs.h
+++ b/src/wrapped/generated/wrappedgnutlsundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgnutlsUNDEFS_H_
 #define __wrappedgnutlsUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgobject2defs.h b/src/wrapped/generated/wrappedgobject2defs.h
index 0f36947b..d0cfb465 100644
--- a/src/wrapped/generated/wrappedgobject2defs.h
+++ b/src/wrapped/generated/wrappedgobject2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgobject2DEFS_H_
 #define __wrappedgobject2DEFS_H_
diff --git a/src/wrapped/generated/wrappedgobject2types.h b/src/wrapped/generated/wrappedgobject2types.h
index d7a8f665..7cbd4625 100644
--- a/src/wrapped/generated/wrappedgobject2types.h
+++ b/src/wrapped/generated/wrappedgobject2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgobject2TYPES_H_
 #define __wrappedgobject2TYPES_H_
diff --git a/src/wrapped/generated/wrappedgobject2undefs.h b/src/wrapped/generated/wrappedgobject2undefs.h
index 5b5b37b9..d8f7d81f 100644
--- a/src/wrapped/generated/wrappedgobject2undefs.h
+++ b/src/wrapped/generated/wrappedgobject2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgobject2UNDEFS_H_
 #define __wrappedgobject2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgompdefs.h b/src/wrapped/generated/wrappedgompdefs.h
index 5618a4d1..cf407c67 100644
--- a/src/wrapped/generated/wrappedgompdefs.h
+++ b/src/wrapped/generated/wrappedgompdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgompDEFS_H_
 #define __wrappedgompDEFS_H_
diff --git a/src/wrapped/generated/wrappedgomptypes.h b/src/wrapped/generated/wrappedgomptypes.h
index 4b0d4c01..6ba360a1 100644
--- a/src/wrapped/generated/wrappedgomptypes.h
+++ b/src/wrapped/generated/wrappedgomptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgompTYPES_H_
 #define __wrappedgompTYPES_H_
diff --git a/src/wrapped/generated/wrappedgompundefs.h b/src/wrapped/generated/wrappedgompundefs.h
index ae3271f1..8917656d 100644
--- a/src/wrapped/generated/wrappedgompundefs.h
+++ b/src/wrapped/generated/wrappedgompundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgompUNDEFS_H_
 #define __wrappedgompUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgssapidefs.h b/src/wrapped/generated/wrappedgssapidefs.h
index 85b82b8e..2342552e 100644
--- a/src/wrapped/generated/wrappedgssapidefs.h
+++ b/src/wrapped/generated/wrappedgssapidefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgssapiDEFS_H_
 #define __wrappedgssapiDEFS_H_
diff --git a/src/wrapped/generated/wrappedgssapikrb5defs.h b/src/wrapped/generated/wrappedgssapikrb5defs.h
index 423cee13..22a1dc0c 100644
--- a/src/wrapped/generated/wrappedgssapikrb5defs.h
+++ b/src/wrapped/generated/wrappedgssapikrb5defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgssapikrb5DEFS_H_
 #define __wrappedgssapikrb5DEFS_H_
diff --git a/src/wrapped/generated/wrappedgssapikrb5types.h b/src/wrapped/generated/wrappedgssapikrb5types.h
index 2f2c3cd5..5c7aeb3b 100644
--- a/src/wrapped/generated/wrappedgssapikrb5types.h
+++ b/src/wrapped/generated/wrappedgssapikrb5types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgssapikrb5TYPES_H_
 #define __wrappedgssapikrb5TYPES_H_
diff --git a/src/wrapped/generated/wrappedgssapikrb5undefs.h b/src/wrapped/generated/wrappedgssapikrb5undefs.h
index a2be1c3e..46c6936e 100644
--- a/src/wrapped/generated/wrappedgssapikrb5undefs.h
+++ b/src/wrapped/generated/wrappedgssapikrb5undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgssapikrb5UNDEFS_H_
 #define __wrappedgssapikrb5UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgssapitypes.h b/src/wrapped/generated/wrappedgssapitypes.h
index 3d4ee9fe..b628366a 100644
--- a/src/wrapped/generated/wrappedgssapitypes.h
+++ b/src/wrapped/generated/wrappedgssapitypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgssapiTYPES_H_
 #define __wrappedgssapiTYPES_H_
diff --git a/src/wrapped/generated/wrappedgssapiundefs.h b/src/wrapped/generated/wrappedgssapiundefs.h
index c5512ffc..7eca10db 100644
--- a/src/wrapped/generated/wrappedgssapiundefs.h
+++ b/src/wrapped/generated/wrappedgssapiundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgssapiUNDEFS_H_
 #define __wrappedgssapiUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstallocatorsdefs.h b/src/wrapped/generated/wrappedgstallocatorsdefs.h
index c45e3cf8..0bc601ff 100644
--- a/src/wrapped/generated/wrappedgstallocatorsdefs.h
+++ b/src/wrapped/generated/wrappedgstallocatorsdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstallocatorsDEFS_H_
 #define __wrappedgstallocatorsDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstallocatorstypes.h b/src/wrapped/generated/wrappedgstallocatorstypes.h
index a98a8a1d..e3f0c4da 100644
--- a/src/wrapped/generated/wrappedgstallocatorstypes.h
+++ b/src/wrapped/generated/wrappedgstallocatorstypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstallocatorsTYPES_H_
 #define __wrappedgstallocatorsTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstallocatorsundefs.h b/src/wrapped/generated/wrappedgstallocatorsundefs.h
index c672c705..676204d3 100644
--- a/src/wrapped/generated/wrappedgstallocatorsundefs.h
+++ b/src/wrapped/generated/wrappedgstallocatorsundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstallocatorsUNDEFS_H_
 #define __wrappedgstallocatorsUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstappdefs.h b/src/wrapped/generated/wrappedgstappdefs.h
index 35f3ab34..e7f6a901 100644
--- a/src/wrapped/generated/wrappedgstappdefs.h
+++ b/src/wrapped/generated/wrappedgstappdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstappDEFS_H_
 #define __wrappedgstappDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstapptypes.h b/src/wrapped/generated/wrappedgstapptypes.h
index 4ffbaf81..0c153dfe 100644
--- a/src/wrapped/generated/wrappedgstapptypes.h
+++ b/src/wrapped/generated/wrappedgstapptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstappTYPES_H_
 #define __wrappedgstappTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstappundefs.h b/src/wrapped/generated/wrappedgstappundefs.h
index ce6a01f5..a58167f3 100644
--- a/src/wrapped/generated/wrappedgstappundefs.h
+++ b/src/wrapped/generated/wrappedgstappundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstappUNDEFS_H_
 #define __wrappedgstappUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstaudiodefs.h b/src/wrapped/generated/wrappedgstaudiodefs.h
index 1cb16ea1..c72ddca5 100644
--- a/src/wrapped/generated/wrappedgstaudiodefs.h
+++ b/src/wrapped/generated/wrappedgstaudiodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstaudioDEFS_H_
 #define __wrappedgstaudioDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstaudiotypes.h b/src/wrapped/generated/wrappedgstaudiotypes.h
index 82d46cc1..2900f70f 100644
--- a/src/wrapped/generated/wrappedgstaudiotypes.h
+++ b/src/wrapped/generated/wrappedgstaudiotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstaudioTYPES_H_
 #define __wrappedgstaudioTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstaudioundefs.h b/src/wrapped/generated/wrappedgstaudioundefs.h
index fb81b07a..6ccef133 100644
--- a/src/wrapped/generated/wrappedgstaudioundefs.h
+++ b/src/wrapped/generated/wrappedgstaudioundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstaudioUNDEFS_H_
 #define __wrappedgstaudioUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstbasedefs.h b/src/wrapped/generated/wrappedgstbasedefs.h
index d9a16ee4..5ee7cdce 100644
--- a/src/wrapped/generated/wrappedgstbasedefs.h
+++ b/src/wrapped/generated/wrappedgstbasedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstbaseDEFS_H_
 #define __wrappedgstbaseDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstbasetypes.h b/src/wrapped/generated/wrappedgstbasetypes.h
index 4c306231..3b29db11 100644
--- a/src/wrapped/generated/wrappedgstbasetypes.h
+++ b/src/wrapped/generated/wrappedgstbasetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstbaseTYPES_H_
 #define __wrappedgstbaseTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstbaseundefs.h b/src/wrapped/generated/wrappedgstbaseundefs.h
index 0547e9fc..5a21be1c 100644
--- a/src/wrapped/generated/wrappedgstbaseundefs.h
+++ b/src/wrapped/generated/wrappedgstbaseundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstbaseUNDEFS_H_
 #define __wrappedgstbaseUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstcheckdefs.h b/src/wrapped/generated/wrappedgstcheckdefs.h
index 150a1b51..5e15ab5c 100644
--- a/src/wrapped/generated/wrappedgstcheckdefs.h
+++ b/src/wrapped/generated/wrappedgstcheckdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstcheckDEFS_H_
 #define __wrappedgstcheckDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstchecktypes.h b/src/wrapped/generated/wrappedgstchecktypes.h
index 5769e178..59ae098b 100644
--- a/src/wrapped/generated/wrappedgstchecktypes.h
+++ b/src/wrapped/generated/wrappedgstchecktypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstcheckTYPES_H_
 #define __wrappedgstcheckTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstcheckundefs.h b/src/wrapped/generated/wrappedgstcheckundefs.h
index 29f89b9e..f8abd0e7 100644
--- a/src/wrapped/generated/wrappedgstcheckundefs.h
+++ b/src/wrapped/generated/wrappedgstcheckundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstcheckUNDEFS_H_
 #define __wrappedgstcheckUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstcontrollerdefs.h b/src/wrapped/generated/wrappedgstcontrollerdefs.h
index 639be35a..2e837e2b 100644
--- a/src/wrapped/generated/wrappedgstcontrollerdefs.h
+++ b/src/wrapped/generated/wrappedgstcontrollerdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstcontrollerDEFS_H_
 #define __wrappedgstcontrollerDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstcontrollertypes.h b/src/wrapped/generated/wrappedgstcontrollertypes.h
index b52da4a2..03d60347 100644
--- a/src/wrapped/generated/wrappedgstcontrollertypes.h
+++ b/src/wrapped/generated/wrappedgstcontrollertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstcontrollerTYPES_H_
 #define __wrappedgstcontrollerTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstcontrollerundefs.h b/src/wrapped/generated/wrappedgstcontrollerundefs.h
index 342d0861..4df06ff4 100644
--- a/src/wrapped/generated/wrappedgstcontrollerundefs.h
+++ b/src/wrapped/generated/wrappedgstcontrollerundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstcontrollerUNDEFS_H_
 #define __wrappedgstcontrollerUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstfftdefs.h b/src/wrapped/generated/wrappedgstfftdefs.h
index 8e45f8ec..51c5d2d5 100644
--- a/src/wrapped/generated/wrappedgstfftdefs.h
+++ b/src/wrapped/generated/wrappedgstfftdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstfftDEFS_H_
 #define __wrappedgstfftDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstffttypes.h b/src/wrapped/generated/wrappedgstffttypes.h
index 1628daeb..a5c00343 100644
--- a/src/wrapped/generated/wrappedgstffttypes.h
+++ b/src/wrapped/generated/wrappedgstffttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstfftTYPES_H_
 #define __wrappedgstfftTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstfftundefs.h b/src/wrapped/generated/wrappedgstfftundefs.h
index 26a688a8..08ae1695 100644
--- a/src/wrapped/generated/wrappedgstfftundefs.h
+++ b/src/wrapped/generated/wrappedgstfftundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstfftUNDEFS_H_
 #define __wrappedgstfftUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstgldefs.h b/src/wrapped/generated/wrappedgstgldefs.h
index 255450f6..b36e3a43 100644
--- a/src/wrapped/generated/wrappedgstgldefs.h
+++ b/src/wrapped/generated/wrappedgstgldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstglDEFS_H_
 #define __wrappedgstglDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstgltypes.h b/src/wrapped/generated/wrappedgstgltypes.h
index e8013056..b4fd087a 100644
--- a/src/wrapped/generated/wrappedgstgltypes.h
+++ b/src/wrapped/generated/wrappedgstgltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstglTYPES_H_
 #define __wrappedgstglTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstglundefs.h b/src/wrapped/generated/wrappedgstglundefs.h
index 05db81ca..1c663207 100644
--- a/src/wrapped/generated/wrappedgstglundefs.h
+++ b/src/wrapped/generated/wrappedgstglundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstglUNDEFS_H_
 #define __wrappedgstglUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstnetdefs.h b/src/wrapped/generated/wrappedgstnetdefs.h
index 50e75484..07c8c196 100644
--- a/src/wrapped/generated/wrappedgstnetdefs.h
+++ b/src/wrapped/generated/wrappedgstnetdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstnetDEFS_H_
 #define __wrappedgstnetDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstnettypes.h b/src/wrapped/generated/wrappedgstnettypes.h
index a4f1dbbc..a2233ffc 100644
--- a/src/wrapped/generated/wrappedgstnettypes.h
+++ b/src/wrapped/generated/wrappedgstnettypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstnetTYPES_H_
 #define __wrappedgstnetTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstnetundefs.h b/src/wrapped/generated/wrappedgstnetundefs.h
index 3af737a4..0aa78161 100644
--- a/src/wrapped/generated/wrappedgstnetundefs.h
+++ b/src/wrapped/generated/wrappedgstnetundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstnetUNDEFS_H_
 #define __wrappedgstnetUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstpbutilsdefs.h b/src/wrapped/generated/wrappedgstpbutilsdefs.h
index 6451ec65..550f0e85 100644
--- a/src/wrapped/generated/wrappedgstpbutilsdefs.h
+++ b/src/wrapped/generated/wrappedgstpbutilsdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstpbutilsDEFS_H_
 #define __wrappedgstpbutilsDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstpbutilstypes.h b/src/wrapped/generated/wrappedgstpbutilstypes.h
index ec08b7dc..cac4c954 100644
--- a/src/wrapped/generated/wrappedgstpbutilstypes.h
+++ b/src/wrapped/generated/wrappedgstpbutilstypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstpbutilsTYPES_H_
 #define __wrappedgstpbutilsTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstpbutilsundefs.h b/src/wrapped/generated/wrappedgstpbutilsundefs.h
index c4e5fb34..edd9918f 100644
--- a/src/wrapped/generated/wrappedgstpbutilsundefs.h
+++ b/src/wrapped/generated/wrappedgstpbutilsundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstpbutilsUNDEFS_H_
 #define __wrappedgstpbutilsUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstreamerdefs.h b/src/wrapped/generated/wrappedgstreamerdefs.h
index 6b6714e0..64e7fd37 100644
--- a/src/wrapped/generated/wrappedgstreamerdefs.h
+++ b/src/wrapped/generated/wrappedgstreamerdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstreamerDEFS_H_
 #define __wrappedgstreamerDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstreamertypes.h b/src/wrapped/generated/wrappedgstreamertypes.h
index 939f702e..df664a5e 100644
--- a/src/wrapped/generated/wrappedgstreamertypes.h
+++ b/src/wrapped/generated/wrappedgstreamertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstreamerTYPES_H_
 #define __wrappedgstreamerTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstreamerundefs.h b/src/wrapped/generated/wrappedgstreamerundefs.h
index 207c97a0..1dba4f5f 100644
--- a/src/wrapped/generated/wrappedgstreamerundefs.h
+++ b/src/wrapped/generated/wrappedgstreamerundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstreamerUNDEFS_H_
 #define __wrappedgstreamerUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstriffdefs.h b/src/wrapped/generated/wrappedgstriffdefs.h
index 81e814b5..686cb089 100644
--- a/src/wrapped/generated/wrappedgstriffdefs.h
+++ b/src/wrapped/generated/wrappedgstriffdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstriffDEFS_H_
 #define __wrappedgstriffDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrifftypes.h b/src/wrapped/generated/wrappedgstrifftypes.h
index 8799c1e0..ddea8ff2 100644
--- a/src/wrapped/generated/wrappedgstrifftypes.h
+++ b/src/wrapped/generated/wrappedgstrifftypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstriffTYPES_H_
 #define __wrappedgstriffTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstriffundefs.h b/src/wrapped/generated/wrappedgstriffundefs.h
index ddb6cb9e..dd543bc9 100644
--- a/src/wrapped/generated/wrappedgstriffundefs.h
+++ b/src/wrapped/generated/wrappedgstriffundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstriffUNDEFS_H_
 #define __wrappedgstriffUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtpdefs.h b/src/wrapped/generated/wrappedgstrtpdefs.h
index 871d7f6e..43f8b5ee 100644
--- a/src/wrapped/generated/wrappedgstrtpdefs.h
+++ b/src/wrapped/generated/wrappedgstrtpdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstrtpDEFS_H_
 #define __wrappedgstrtpDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtptypes.h b/src/wrapped/generated/wrappedgstrtptypes.h
index 54af171f..3071f761 100644
--- a/src/wrapped/generated/wrappedgstrtptypes.h
+++ b/src/wrapped/generated/wrappedgstrtptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstrtpTYPES_H_
 #define __wrappedgstrtpTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstrtpundefs.h b/src/wrapped/generated/wrappedgstrtpundefs.h
index 09ae5a3b..07438861 100644
--- a/src/wrapped/generated/wrappedgstrtpundefs.h
+++ b/src/wrapped/generated/wrappedgstrtpundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstrtpUNDEFS_H_
 #define __wrappedgstrtpUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtspdefs.h b/src/wrapped/generated/wrappedgstrtspdefs.h
index cf9cd01a..13e99cb5 100644
--- a/src/wrapped/generated/wrappedgstrtspdefs.h
+++ b/src/wrapped/generated/wrappedgstrtspdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstrtspDEFS_H_
 #define __wrappedgstrtspDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstrtsptypes.h b/src/wrapped/generated/wrappedgstrtsptypes.h
index c5ec4e6e..66b15e71 100644
--- a/src/wrapped/generated/wrappedgstrtsptypes.h
+++ b/src/wrapped/generated/wrappedgstrtsptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstrtspTYPES_H_
 #define __wrappedgstrtspTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstrtspundefs.h b/src/wrapped/generated/wrappedgstrtspundefs.h
index b40cba5a..cd8ea1cf 100644
--- a/src/wrapped/generated/wrappedgstrtspundefs.h
+++ b/src/wrapped/generated/wrappedgstrtspundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstrtspUNDEFS_H_
 #define __wrappedgstrtspUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstsdpdefs.h b/src/wrapped/generated/wrappedgstsdpdefs.h
index 1d7b9f42..e46a79dc 100644
--- a/src/wrapped/generated/wrappedgstsdpdefs.h
+++ b/src/wrapped/generated/wrappedgstsdpdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstsdpDEFS_H_
 #define __wrappedgstsdpDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstsdptypes.h b/src/wrapped/generated/wrappedgstsdptypes.h
index 8d256835..f767d134 100644
--- a/src/wrapped/generated/wrappedgstsdptypes.h
+++ b/src/wrapped/generated/wrappedgstsdptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstsdpTYPES_H_
 #define __wrappedgstsdpTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstsdpundefs.h b/src/wrapped/generated/wrappedgstsdpundefs.h
index 01e5b544..63cd7144 100644
--- a/src/wrapped/generated/wrappedgstsdpundefs.h
+++ b/src/wrapped/generated/wrappedgstsdpundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstsdpUNDEFS_H_
 #define __wrappedgstsdpUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgsttagdefs.h b/src/wrapped/generated/wrappedgsttagdefs.h
index f9e4019e..6f269b08 100644
--- a/src/wrapped/generated/wrappedgsttagdefs.h
+++ b/src/wrapped/generated/wrappedgsttagdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgsttagDEFS_H_
 #define __wrappedgsttagDEFS_H_
diff --git a/src/wrapped/generated/wrappedgsttagtypes.h b/src/wrapped/generated/wrappedgsttagtypes.h
index 32da7856..a536de8c 100644
--- a/src/wrapped/generated/wrappedgsttagtypes.h
+++ b/src/wrapped/generated/wrappedgsttagtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgsttagTYPES_H_
 #define __wrappedgsttagTYPES_H_
diff --git a/src/wrapped/generated/wrappedgsttagundefs.h b/src/wrapped/generated/wrappedgsttagundefs.h
index 7b71d720..c2b24f1b 100644
--- a/src/wrapped/generated/wrappedgsttagundefs.h
+++ b/src/wrapped/generated/wrappedgsttagundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgsttagUNDEFS_H_
 #define __wrappedgsttagUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstvideodefs.h b/src/wrapped/generated/wrappedgstvideodefs.h
index 58d61cb0..5afd8894 100644
--- a/src/wrapped/generated/wrappedgstvideodefs.h
+++ b/src/wrapped/generated/wrappedgstvideodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstvideoDEFS_H_
 #define __wrappedgstvideoDEFS_H_
diff --git a/src/wrapped/generated/wrappedgstvideotypes.h b/src/wrapped/generated/wrappedgstvideotypes.h
index 33bc6241..4bb4c414 100644
--- a/src/wrapped/generated/wrappedgstvideotypes.h
+++ b/src/wrapped/generated/wrappedgstvideotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstvideoTYPES_H_
 #define __wrappedgstvideoTYPES_H_
diff --git a/src/wrapped/generated/wrappedgstvideoundefs.h b/src/wrapped/generated/wrappedgstvideoundefs.h
index cfe93733..5d03c95b 100644
--- a/src/wrapped/generated/wrappedgstvideoundefs.h
+++ b/src/wrapped/generated/wrappedgstvideoundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgstvideoUNDEFS_H_
 #define __wrappedgstvideoUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgthread2defs.h b/src/wrapped/generated/wrappedgthread2defs.h
index 745d0049..53ec561c 100644
--- a/src/wrapped/generated/wrappedgthread2defs.h
+++ b/src/wrapped/generated/wrappedgthread2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgthread2DEFS_H_
 #define __wrappedgthread2DEFS_H_
diff --git a/src/wrapped/generated/wrappedgthread2types.h b/src/wrapped/generated/wrappedgthread2types.h
index 104fab88..1a9403ca 100644
--- a/src/wrapped/generated/wrappedgthread2types.h
+++ b/src/wrapped/generated/wrappedgthread2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgthread2TYPES_H_
 #define __wrappedgthread2TYPES_H_
diff --git a/src/wrapped/generated/wrappedgthread2undefs.h b/src/wrapped/generated/wrappedgthread2undefs.h
index 486f8801..b8c3b911 100644
--- a/src/wrapped/generated/wrappedgthread2undefs.h
+++ b/src/wrapped/generated/wrappedgthread2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgthread2UNDEFS_H_
 #define __wrappedgthread2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgtk3defs.h b/src/wrapped/generated/wrappedgtk3defs.h
index de33868c..df76649d 100644
--- a/src/wrapped/generated/wrappedgtk3defs.h
+++ b/src/wrapped/generated/wrappedgtk3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgtk3DEFS_H_
 #define __wrappedgtk3DEFS_H_
diff --git a/src/wrapped/generated/wrappedgtk3types.h b/src/wrapped/generated/wrappedgtk3types.h
index 93850e0f..7730a006 100644
--- a/src/wrapped/generated/wrappedgtk3types.h
+++ b/src/wrapped/generated/wrappedgtk3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgtk3TYPES_H_
 #define __wrappedgtk3TYPES_H_
diff --git a/src/wrapped/generated/wrappedgtk3undefs.h b/src/wrapped/generated/wrappedgtk3undefs.h
index 763ac0e1..ad99adfa 100644
--- a/src/wrapped/generated/wrappedgtk3undefs.h
+++ b/src/wrapped/generated/wrappedgtk3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgtk3UNDEFS_H_
 #define __wrappedgtk3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedgtkx112defs.h b/src/wrapped/generated/wrappedgtkx112defs.h
index b23e2b33..b4801e84 100644
--- a/src/wrapped/generated/wrappedgtkx112defs.h
+++ b/src/wrapped/generated/wrappedgtkx112defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgtkx112DEFS_H_
 #define __wrappedgtkx112DEFS_H_
diff --git a/src/wrapped/generated/wrappedgtkx112types.h b/src/wrapped/generated/wrappedgtkx112types.h
index 34566285..c9cd415b 100644
--- a/src/wrapped/generated/wrappedgtkx112types.h
+++ b/src/wrapped/generated/wrappedgtkx112types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgtkx112TYPES_H_
 #define __wrappedgtkx112TYPES_H_
diff --git a/src/wrapped/generated/wrappedgtkx112undefs.h b/src/wrapped/generated/wrappedgtkx112undefs.h
index 4f05b24d..604e0ebb 100644
--- a/src/wrapped/generated/wrappedgtkx112undefs.h
+++ b/src/wrapped/generated/wrappedgtkx112undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedgtkx112UNDEFS_H_
 #define __wrappedgtkx112UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n64defs.h b/src/wrapped/generated/wrappedicui18n64defs.h
index 18689c5e..0111bb89 100644
--- a/src/wrapped/generated/wrappedicui18n64defs.h
+++ b/src/wrapped/generated/wrappedicui18n64defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n64DEFS_H_
 #define __wrappedicui18n64DEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n64types.h b/src/wrapped/generated/wrappedicui18n64types.h
index 849a1765..23cc9f76 100644
--- a/src/wrapped/generated/wrappedicui18n64types.h
+++ b/src/wrapped/generated/wrappedicui18n64types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n64TYPES_H_
 #define __wrappedicui18n64TYPES_H_
diff --git a/src/wrapped/generated/wrappedicui18n64undefs.h b/src/wrapped/generated/wrappedicui18n64undefs.h
index 2613c2de..24c138a6 100644
--- a/src/wrapped/generated/wrappedicui18n64undefs.h
+++ b/src/wrapped/generated/wrappedicui18n64undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n64UNDEFS_H_
 #define __wrappedicui18n64UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n66defs.h b/src/wrapped/generated/wrappedicui18n66defs.h
index 62c4ec87..e0bd170e 100644
--- a/src/wrapped/generated/wrappedicui18n66defs.h
+++ b/src/wrapped/generated/wrappedicui18n66defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n66DEFS_H_
 #define __wrappedicui18n66DEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n66types.h b/src/wrapped/generated/wrappedicui18n66types.h
index c3aaa0c1..4801c47d 100644
--- a/src/wrapped/generated/wrappedicui18n66types.h
+++ b/src/wrapped/generated/wrappedicui18n66types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n66TYPES_H_
 #define __wrappedicui18n66TYPES_H_
diff --git a/src/wrapped/generated/wrappedicui18n66undefs.h b/src/wrapped/generated/wrappedicui18n66undefs.h
index 8c75e931..60c1fcd4 100644
--- a/src/wrapped/generated/wrappedicui18n66undefs.h
+++ b/src/wrapped/generated/wrappedicui18n66undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n66UNDEFS_H_
 #define __wrappedicui18n66UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n67defs.h b/src/wrapped/generated/wrappedicui18n67defs.h
index 91fd2a6d..e010d670 100644
--- a/src/wrapped/generated/wrappedicui18n67defs.h
+++ b/src/wrapped/generated/wrappedicui18n67defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n67DEFS_H_
 #define __wrappedicui18n67DEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n67types.h b/src/wrapped/generated/wrappedicui18n67types.h
index f387e620..55714464 100644
--- a/src/wrapped/generated/wrappedicui18n67types.h
+++ b/src/wrapped/generated/wrappedicui18n67types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n67TYPES_H_
 #define __wrappedicui18n67TYPES_H_
diff --git a/src/wrapped/generated/wrappedicui18n67undefs.h b/src/wrapped/generated/wrappedicui18n67undefs.h
index 04164f92..00755228 100644
--- a/src/wrapped/generated/wrappedicui18n67undefs.h
+++ b/src/wrapped/generated/wrappedicui18n67undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n67UNDEFS_H_
 #define __wrappedicui18n67UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n72defs.h b/src/wrapped/generated/wrappedicui18n72defs.h
index f065b4cb..0e3238b2 100644
--- a/src/wrapped/generated/wrappedicui18n72defs.h
+++ b/src/wrapped/generated/wrappedicui18n72defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n72DEFS_H_
 #define __wrappedicui18n72DEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n72types.h b/src/wrapped/generated/wrappedicui18n72types.h
index ba6a2e7a..df1e35fa 100644
--- a/src/wrapped/generated/wrappedicui18n72types.h
+++ b/src/wrapped/generated/wrappedicui18n72types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n72TYPES_H_
 #define __wrappedicui18n72TYPES_H_
diff --git a/src/wrapped/generated/wrappedicui18n72undefs.h b/src/wrapped/generated/wrappedicui18n72undefs.h
index fa3d7f9e..b2b75342 100644
--- a/src/wrapped/generated/wrappedicui18n72undefs.h
+++ b/src/wrapped/generated/wrappedicui18n72undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n72UNDEFS_H_
 #define __wrappedicui18n72UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n73defs.h b/src/wrapped/generated/wrappedicui18n73defs.h
index 7dd420e8..298c1d42 100644
--- a/src/wrapped/generated/wrappedicui18n73defs.h
+++ b/src/wrapped/generated/wrappedicui18n73defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n73DEFS_H_
 #define __wrappedicui18n73DEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n73types.h b/src/wrapped/generated/wrappedicui18n73types.h
index a532595e..cf389074 100644
--- a/src/wrapped/generated/wrappedicui18n73types.h
+++ b/src/wrapped/generated/wrappedicui18n73types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n73TYPES_H_
 #define __wrappedicui18n73TYPES_H_
diff --git a/src/wrapped/generated/wrappedicui18n73undefs.h b/src/wrapped/generated/wrappedicui18n73undefs.h
index af936d37..7628830e 100644
--- a/src/wrapped/generated/wrappedicui18n73undefs.h
+++ b/src/wrapped/generated/wrappedicui18n73undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n73UNDEFS_H_
 #define __wrappedicui18n73UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n74defs.h b/src/wrapped/generated/wrappedicui18n74defs.h
index 9d35caa0..62c37309 100644
--- a/src/wrapped/generated/wrappedicui18n74defs.h
+++ b/src/wrapped/generated/wrappedicui18n74defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n74DEFS_H_
 #define __wrappedicui18n74DEFS_H_
diff --git a/src/wrapped/generated/wrappedicui18n74types.h b/src/wrapped/generated/wrappedicui18n74types.h
index c7ab0d49..349e524f 100644
--- a/src/wrapped/generated/wrappedicui18n74types.h
+++ b/src/wrapped/generated/wrappedicui18n74types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n74TYPES_H_
 #define __wrappedicui18n74TYPES_H_
diff --git a/src/wrapped/generated/wrappedicui18n74undefs.h b/src/wrapped/generated/wrappedicui18n74undefs.h
index 6165885f..c451c934 100644
--- a/src/wrapped/generated/wrappedicui18n74undefs.h
+++ b/src/wrapped/generated/wrappedicui18n74undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicui18n74UNDEFS_H_
 #define __wrappedicui18n74UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc64defs.h b/src/wrapped/generated/wrappedicuuc64defs.h
index b0e5e183..f83a1efe 100644
--- a/src/wrapped/generated/wrappedicuuc64defs.h
+++ b/src/wrapped/generated/wrappedicuuc64defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc64DEFS_H_
 #define __wrappedicuuc64DEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc64types.h b/src/wrapped/generated/wrappedicuuc64types.h
index afad3be7..3a0c1945 100644
--- a/src/wrapped/generated/wrappedicuuc64types.h
+++ b/src/wrapped/generated/wrappedicuuc64types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc64TYPES_H_
 #define __wrappedicuuc64TYPES_H_
diff --git a/src/wrapped/generated/wrappedicuuc64undefs.h b/src/wrapped/generated/wrappedicuuc64undefs.h
index 8405e07d..9e81564a 100644
--- a/src/wrapped/generated/wrappedicuuc64undefs.h
+++ b/src/wrapped/generated/wrappedicuuc64undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc64UNDEFS_H_
 #define __wrappedicuuc64UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc66defs.h b/src/wrapped/generated/wrappedicuuc66defs.h
index 5236e323..31a37806 100644
--- a/src/wrapped/generated/wrappedicuuc66defs.h
+++ b/src/wrapped/generated/wrappedicuuc66defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc66DEFS_H_
 #define __wrappedicuuc66DEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc66types.h b/src/wrapped/generated/wrappedicuuc66types.h
index 050fe419..1ca92836 100644
--- a/src/wrapped/generated/wrappedicuuc66types.h
+++ b/src/wrapped/generated/wrappedicuuc66types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc66TYPES_H_
 #define __wrappedicuuc66TYPES_H_
diff --git a/src/wrapped/generated/wrappedicuuc66undefs.h b/src/wrapped/generated/wrappedicuuc66undefs.h
index 97cf2dbe..5ce0b4f2 100644
--- a/src/wrapped/generated/wrappedicuuc66undefs.h
+++ b/src/wrapped/generated/wrappedicuuc66undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc66UNDEFS_H_
 #define __wrappedicuuc66UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc67defs.h b/src/wrapped/generated/wrappedicuuc67defs.h
index 96e34f1c..f8588ef6 100644
--- a/src/wrapped/generated/wrappedicuuc67defs.h
+++ b/src/wrapped/generated/wrappedicuuc67defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc67DEFS_H_
 #define __wrappedicuuc67DEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc67types.h b/src/wrapped/generated/wrappedicuuc67types.h
index 508d920f..f647c538 100644
--- a/src/wrapped/generated/wrappedicuuc67types.h
+++ b/src/wrapped/generated/wrappedicuuc67types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc67TYPES_H_
 #define __wrappedicuuc67TYPES_H_
diff --git a/src/wrapped/generated/wrappedicuuc67undefs.h b/src/wrapped/generated/wrappedicuuc67undefs.h
index e6043cd6..c7107958 100644
--- a/src/wrapped/generated/wrappedicuuc67undefs.h
+++ b/src/wrapped/generated/wrappedicuuc67undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc67UNDEFS_H_
 #define __wrappedicuuc67UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc72defs.h b/src/wrapped/generated/wrappedicuuc72defs.h
index 8a512ca5..1506fa74 100644
--- a/src/wrapped/generated/wrappedicuuc72defs.h
+++ b/src/wrapped/generated/wrappedicuuc72defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc72DEFS_H_
 #define __wrappedicuuc72DEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc72types.h b/src/wrapped/generated/wrappedicuuc72types.h
index ff28ecfd..a78214de 100644
--- a/src/wrapped/generated/wrappedicuuc72types.h
+++ b/src/wrapped/generated/wrappedicuuc72types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc72TYPES_H_
 #define __wrappedicuuc72TYPES_H_
diff --git a/src/wrapped/generated/wrappedicuuc72undefs.h b/src/wrapped/generated/wrappedicuuc72undefs.h
index 82b2e329..d05452e3 100644
--- a/src/wrapped/generated/wrappedicuuc72undefs.h
+++ b/src/wrapped/generated/wrappedicuuc72undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc72UNDEFS_H_
 #define __wrappedicuuc72UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc73defs.h b/src/wrapped/generated/wrappedicuuc73defs.h
index 93b84b08..2333d563 100644
--- a/src/wrapped/generated/wrappedicuuc73defs.h
+++ b/src/wrapped/generated/wrappedicuuc73defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc73DEFS_H_
 #define __wrappedicuuc73DEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc73types.h b/src/wrapped/generated/wrappedicuuc73types.h
index e6859dd4..dec364e0 100644
--- a/src/wrapped/generated/wrappedicuuc73types.h
+++ b/src/wrapped/generated/wrappedicuuc73types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc73TYPES_H_
 #define __wrappedicuuc73TYPES_H_
diff --git a/src/wrapped/generated/wrappedicuuc73undefs.h b/src/wrapped/generated/wrappedicuuc73undefs.h
index 8fa45188..3f76f393 100644
--- a/src/wrapped/generated/wrappedicuuc73undefs.h
+++ b/src/wrapped/generated/wrappedicuuc73undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc73UNDEFS_H_
 #define __wrappedicuuc73UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc74defs.h b/src/wrapped/generated/wrappedicuuc74defs.h
index b8dc6163..c3a15fbf 100644
--- a/src/wrapped/generated/wrappedicuuc74defs.h
+++ b/src/wrapped/generated/wrappedicuuc74defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc74DEFS_H_
 #define __wrappedicuuc74DEFS_H_
diff --git a/src/wrapped/generated/wrappedicuuc74types.h b/src/wrapped/generated/wrappedicuuc74types.h
index 4998e102..c965a0ad 100644
--- a/src/wrapped/generated/wrappedicuuc74types.h
+++ b/src/wrapped/generated/wrappedicuuc74types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc74TYPES_H_
 #define __wrappedicuuc74TYPES_H_
diff --git a/src/wrapped/generated/wrappedicuuc74undefs.h b/src/wrapped/generated/wrappedicuuc74undefs.h
index 43d685d0..938a3bf9 100644
--- a/src/wrapped/generated/wrappedicuuc74undefs.h
+++ b/src/wrapped/generated/wrappedicuuc74undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedicuuc74UNDEFS_H_
 #define __wrappedicuuc74UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedidn2defs.h b/src/wrapped/generated/wrappedidn2defs.h
index 4177a4af..f176b322 100644
--- a/src/wrapped/generated/wrappedidn2defs.h
+++ b/src/wrapped/generated/wrappedidn2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedidn2DEFS_H_
 #define __wrappedidn2DEFS_H_
diff --git a/src/wrapped/generated/wrappedidn2types.h b/src/wrapped/generated/wrappedidn2types.h
index e67e4dee..abeb9ff0 100644
--- a/src/wrapped/generated/wrappedidn2types.h
+++ b/src/wrapped/generated/wrappedidn2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedidn2TYPES_H_
 #define __wrappedidn2TYPES_H_
diff --git a/src/wrapped/generated/wrappedidn2undefs.h b/src/wrapped/generated/wrappedidn2undefs.h
index 77a2eb8c..235a0b88 100644
--- a/src/wrapped/generated/wrappedidn2undefs.h
+++ b/src/wrapped/generated/wrappedidn2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedidn2UNDEFS_H_
 #define __wrappedidn2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedkrb5defs.h b/src/wrapped/generated/wrappedkrb5defs.h
index 1480b7a5..dee7c859 100644
--- a/src/wrapped/generated/wrappedkrb5defs.h
+++ b/src/wrapped/generated/wrappedkrb5defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedkrb5DEFS_H_
 #define __wrappedkrb5DEFS_H_
diff --git a/src/wrapped/generated/wrappedkrb5types.h b/src/wrapped/generated/wrappedkrb5types.h
index 5e8fb376..90e5d8b0 100644
--- a/src/wrapped/generated/wrappedkrb5types.h
+++ b/src/wrapped/generated/wrappedkrb5types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedkrb5TYPES_H_
 #define __wrappedkrb5TYPES_H_
diff --git a/src/wrapped/generated/wrappedkrb5undefs.h b/src/wrapped/generated/wrappedkrb5undefs.h
index 555d016b..a0dfce28 100644
--- a/src/wrapped/generated/wrappedkrb5undefs.h
+++ b/src/wrapped/generated/wrappedkrb5undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedkrb5UNDEFS_H_
 #define __wrappedkrb5UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlberdefs.h b/src/wrapped/generated/wrappedlberdefs.h
index c82f0578..f8294546 100644
--- a/src/wrapped/generated/wrappedlberdefs.h
+++ b/src/wrapped/generated/wrappedlberdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlberDEFS_H_
 #define __wrappedlberDEFS_H_
diff --git a/src/wrapped/generated/wrappedlbertypes.h b/src/wrapped/generated/wrappedlbertypes.h
index 4e0ffd66..d21ddf50 100644
--- a/src/wrapped/generated/wrappedlbertypes.h
+++ b/src/wrapped/generated/wrappedlbertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlberTYPES_H_
 #define __wrappedlberTYPES_H_
diff --git a/src/wrapped/generated/wrappedlberundefs.h b/src/wrapped/generated/wrappedlberundefs.h
index 02a61ea1..2d914827 100644
--- a/src/wrapped/generated/wrappedlberundefs.h
+++ b/src/wrapped/generated/wrappedlberundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlberUNDEFS_H_
 #define __wrappedlberUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlcms2defs.h b/src/wrapped/generated/wrappedlcms2defs.h
index 01abe076..b7ee692b 100644
--- a/src/wrapped/generated/wrappedlcms2defs.h
+++ b/src/wrapped/generated/wrappedlcms2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlcms2DEFS_H_
 #define __wrappedlcms2DEFS_H_
diff --git a/src/wrapped/generated/wrappedlcms2types.h b/src/wrapped/generated/wrappedlcms2types.h
index 9fdd10bf..fb41e489 100644
--- a/src/wrapped/generated/wrappedlcms2types.h
+++ b/src/wrapped/generated/wrappedlcms2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlcms2TYPES_H_
 #define __wrappedlcms2TYPES_H_
diff --git a/src/wrapped/generated/wrappedlcms2undefs.h b/src/wrapped/generated/wrappedlcms2undefs.h
index 890088f0..f4969c13 100644
--- a/src/wrapped/generated/wrappedlcms2undefs.h
+++ b/src/wrapped/generated/wrappedlcms2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlcms2UNDEFS_H_
 #define __wrappedlcms2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedldaprdefs.h b/src/wrapped/generated/wrappedldaprdefs.h
index 0b42b5cd..b70cd0ea 100644
--- a/src/wrapped/generated/wrappedldaprdefs.h
+++ b/src/wrapped/generated/wrappedldaprdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedldaprDEFS_H_
 #define __wrappedldaprDEFS_H_
diff --git a/src/wrapped/generated/wrappedldaprtypes.h b/src/wrapped/generated/wrappedldaprtypes.h
index 8cb0a7c7..e94daa6d 100644
--- a/src/wrapped/generated/wrappedldaprtypes.h
+++ b/src/wrapped/generated/wrappedldaprtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedldaprTYPES_H_
 #define __wrappedldaprTYPES_H_
diff --git a/src/wrapped/generated/wrappedldaprundefs.h b/src/wrapped/generated/wrappedldaprundefs.h
index 1c09ce38..8c0e3e55 100644
--- a/src/wrapped/generated/wrappedldaprundefs.h
+++ b/src/wrapped/generated/wrappedldaprundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedldaprUNDEFS_H_
 #define __wrappedldaprUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedldlinuxdefs.h b/src/wrapped/generated/wrappedldlinuxdefs.h
index d7bf282c..1563667f 100644
--- a/src/wrapped/generated/wrappedldlinuxdefs.h
+++ b/src/wrapped/generated/wrappedldlinuxdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedldlinuxDEFS_H_
 #define __wrappedldlinuxDEFS_H_
diff --git a/src/wrapped/generated/wrappedldlinuxtypes.h b/src/wrapped/generated/wrappedldlinuxtypes.h
index cd8e9095..6dc287a4 100644
--- a/src/wrapped/generated/wrappedldlinuxtypes.h
+++ b/src/wrapped/generated/wrappedldlinuxtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedldlinuxTYPES_H_
 #define __wrappedldlinuxTYPES_H_
diff --git a/src/wrapped/generated/wrappedldlinuxundefs.h b/src/wrapped/generated/wrappedldlinuxundefs.h
index 2d70d2ac..7d745150 100644
--- a/src/wrapped/generated/wrappedldlinuxundefs.h
+++ b/src/wrapped/generated/wrappedldlinuxundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedldlinuxUNDEFS_H_
 #define __wrappedldlinuxUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibasounddefs.h b/src/wrapped/generated/wrappedlibasounddefs.h
index 0c3d0af1..e8712e29 100644
--- a/src/wrapped/generated/wrappedlibasounddefs.h
+++ b/src/wrapped/generated/wrappedlibasounddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibasoundDEFS_H_
 #define __wrappedlibasoundDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibasoundtypes.h b/src/wrapped/generated/wrappedlibasoundtypes.h
index cbea7846..f4c6d6ed 100644
--- a/src/wrapped/generated/wrappedlibasoundtypes.h
+++ b/src/wrapped/generated/wrappedlibasoundtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibasoundTYPES_H_
 #define __wrappedlibasoundTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibasoundundefs.h b/src/wrapped/generated/wrappedlibasoundundefs.h
index b43a3e1f..8cdc33d1 100644
--- a/src/wrapped/generated/wrappedlibasoundundefs.h
+++ b/src/wrapped/generated/wrappedlibasoundundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibasoundUNDEFS_H_
 #define __wrappedlibasoundUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibbsddefs.h b/src/wrapped/generated/wrappedlibbsddefs.h
index 6104bfc2..0e8b0ad6 100644
--- a/src/wrapped/generated/wrappedlibbsddefs.h
+++ b/src/wrapped/generated/wrappedlibbsddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibbsdDEFS_H_
 #define __wrappedlibbsdDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibbsdtypes.h b/src/wrapped/generated/wrappedlibbsdtypes.h
index b007845a..5fc338a4 100644
--- a/src/wrapped/generated/wrappedlibbsdtypes.h
+++ b/src/wrapped/generated/wrappedlibbsdtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibbsdTYPES_H_
 #define __wrappedlibbsdTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibbsdundefs.h b/src/wrapped/generated/wrappedlibbsdundefs.h
index 6f22a93e..d85acc02 100644
--- a/src/wrapped/generated/wrappedlibbsdundefs.h
+++ b/src/wrapped/generated/wrappedlibbsdundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibbsdUNDEFS_H_
 #define __wrappedlibbsdUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibcdefs.h b/src/wrapped/generated/wrappedlibcdefs.h
index 9b1434a0..19b0c685 100644
--- a/src/wrapped/generated/wrappedlibcdefs.h
+++ b/src/wrapped/generated/wrappedlibcdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcDEFS_H_
 #define __wrappedlibcDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibcmusldefs.h b/src/wrapped/generated/wrappedlibcmusldefs.h
index 44699686..4b4eb4ff 100644
--- a/src/wrapped/generated/wrappedlibcmusldefs.h
+++ b/src/wrapped/generated/wrappedlibcmusldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcmuslDEFS_H_
 #define __wrappedlibcmuslDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibcmusltypes.h b/src/wrapped/generated/wrappedlibcmusltypes.h
index dc4ac245..9cd02c19 100644
--- a/src/wrapped/generated/wrappedlibcmusltypes.h
+++ b/src/wrapped/generated/wrappedlibcmusltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcmuslTYPES_H_
 #define __wrappedlibcmuslTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibcmuslundefs.h b/src/wrapped/generated/wrappedlibcmuslundefs.h
index 71ff2c0e..a9efd9fd 100644
--- a/src/wrapped/generated/wrappedlibcmuslundefs.h
+++ b/src/wrapped/generated/wrappedlibcmuslundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcmuslUNDEFS_H_
 #define __wrappedlibcmuslUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibcryptdefs.h b/src/wrapped/generated/wrappedlibcryptdefs.h
index fc002b3b..1ad3bf07 100644
--- a/src/wrapped/generated/wrappedlibcryptdefs.h
+++ b/src/wrapped/generated/wrappedlibcryptdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcryptDEFS_H_
 #define __wrappedlibcryptDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibcrypttypes.h b/src/wrapped/generated/wrappedlibcrypttypes.h
index 41047145..3c26e75a 100644
--- a/src/wrapped/generated/wrappedlibcrypttypes.h
+++ b/src/wrapped/generated/wrappedlibcrypttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcryptTYPES_H_
 #define __wrappedlibcryptTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibcryptundefs.h b/src/wrapped/generated/wrappedlibcryptundefs.h
index 4f5de633..c695a259 100644
--- a/src/wrapped/generated/wrappedlibcryptundefs.h
+++ b/src/wrapped/generated/wrappedlibcryptundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcryptUNDEFS_H_
 #define __wrappedlibcryptUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibctypes.h b/src/wrapped/generated/wrappedlibctypes.h
index a9b5dbb1..1b899183 100644
--- a/src/wrapped/generated/wrappedlibctypes.h
+++ b/src/wrapped/generated/wrappedlibctypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcTYPES_H_
 #define __wrappedlibcTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibcundefs.h b/src/wrapped/generated/wrappedlibcundefs.h
index 9fef3263..c8b3613e 100644
--- a/src/wrapped/generated/wrappedlibcundefs.h
+++ b/src/wrapped/generated/wrappedlibcundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcUNDEFS_H_
 #define __wrappedlibcUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibcupsdefs.h b/src/wrapped/generated/wrappedlibcupsdefs.h
index 34019153..b44e4592 100644
--- a/src/wrapped/generated/wrappedlibcupsdefs.h
+++ b/src/wrapped/generated/wrappedlibcupsdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcupsDEFS_H_
 #define __wrappedlibcupsDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibcupstypes.h b/src/wrapped/generated/wrappedlibcupstypes.h
index f17b8fc0..5194024f 100644
--- a/src/wrapped/generated/wrappedlibcupstypes.h
+++ b/src/wrapped/generated/wrappedlibcupstypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcupsTYPES_H_
 #define __wrappedlibcupsTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibcupsundefs.h b/src/wrapped/generated/wrappedlibcupsundefs.h
index be8baf83..c5c81317 100644
--- a/src/wrapped/generated/wrappedlibcupsundefs.h
+++ b/src/wrapped/generated/wrappedlibcupsundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibcupsUNDEFS_H_
 #define __wrappedlibcupsUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibdldefs.h b/src/wrapped/generated/wrappedlibdldefs.h
index 75844c4a..3e3e33d3 100644
--- a/src/wrapped/generated/wrappedlibdldefs.h
+++ b/src/wrapped/generated/wrappedlibdldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdlDEFS_H_
 #define __wrappedlibdlDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibdltypes.h b/src/wrapped/generated/wrappedlibdltypes.h
index a2535e0a..260b042d 100644
--- a/src/wrapped/generated/wrappedlibdltypes.h
+++ b/src/wrapped/generated/wrappedlibdltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdlTYPES_H_
 #define __wrappedlibdlTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibdlundefs.h b/src/wrapped/generated/wrappedlibdlundefs.h
index f09b4630..8e6fcbdc 100644
--- a/src/wrapped/generated/wrappedlibdlundefs.h
+++ b/src/wrapped/generated/wrappedlibdlundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdlUNDEFS_H_
 #define __wrappedlibdlUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibdrmamdgpudefs.h b/src/wrapped/generated/wrappedlibdrmamdgpudefs.h
index bf8f9499..8404375c 100644
--- a/src/wrapped/generated/wrappedlibdrmamdgpudefs.h
+++ b/src/wrapped/generated/wrappedlibdrmamdgpudefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdrmamdgpuDEFS_H_
 #define __wrappedlibdrmamdgpuDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibdrmamdgputypes.h b/src/wrapped/generated/wrappedlibdrmamdgputypes.h
index 7ab8dd91..dfc40e7e 100644
--- a/src/wrapped/generated/wrappedlibdrmamdgputypes.h
+++ b/src/wrapped/generated/wrappedlibdrmamdgputypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdrmamdgpuTYPES_H_
 #define __wrappedlibdrmamdgpuTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibdrmamdgpuundefs.h b/src/wrapped/generated/wrappedlibdrmamdgpuundefs.h
index 7cc76dfb..4e5f460c 100644
--- a/src/wrapped/generated/wrappedlibdrmamdgpuundefs.h
+++ b/src/wrapped/generated/wrappedlibdrmamdgpuundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdrmamdgpuUNDEFS_H_
 #define __wrappedlibdrmamdgpuUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibdrmdefs.h b/src/wrapped/generated/wrappedlibdrmdefs.h
index a94ebd04..c151ce97 100644
--- a/src/wrapped/generated/wrappedlibdrmdefs.h
+++ b/src/wrapped/generated/wrappedlibdrmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdrmDEFS_H_
 #define __wrappedlibdrmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibdrmtypes.h b/src/wrapped/generated/wrappedlibdrmtypes.h
index 8c583cb2..f6d72e04 100644
--- a/src/wrapped/generated/wrappedlibdrmtypes.h
+++ b/src/wrapped/generated/wrappedlibdrmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdrmTYPES_H_
 #define __wrappedlibdrmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibdrmundefs.h b/src/wrapped/generated/wrappedlibdrmundefs.h
index b52bd362..796c820a 100644
--- a/src/wrapped/generated/wrappedlibdrmundefs.h
+++ b/src/wrapped/generated/wrappedlibdrmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibdrmUNDEFS_H_
 #define __wrappedlibdrmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibegldefs.h b/src/wrapped/generated/wrappedlibegldefs.h
index f52e5d2e..55e5fa1b 100644
--- a/src/wrapped/generated/wrappedlibegldefs.h
+++ b/src/wrapped/generated/wrappedlibegldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibeglDEFS_H_
 #define __wrappedlibeglDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibegltypes.h b/src/wrapped/generated/wrappedlibegltypes.h
index 9488b9b4..06efef25 100644
--- a/src/wrapped/generated/wrappedlibegltypes.h
+++ b/src/wrapped/generated/wrappedlibegltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibeglTYPES_H_
 #define __wrappedlibeglTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibeglundefs.h b/src/wrapped/generated/wrappedlibeglundefs.h
index 7364e25e..e3c387f7 100644
--- a/src/wrapped/generated/wrappedlibeglundefs.h
+++ b/src/wrapped/generated/wrappedlibeglundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibeglUNDEFS_H_
 #define __wrappedlibeglUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibformdefs.h b/src/wrapped/generated/wrappedlibformdefs.h
index 30a2e523..8374da7d 100644
--- a/src/wrapped/generated/wrappedlibformdefs.h
+++ b/src/wrapped/generated/wrappedlibformdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformDEFS_H_
 #define __wrappedlibformDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibformtypes.h b/src/wrapped/generated/wrappedlibformtypes.h
index 2718dd4d..ace87806 100644
--- a/src/wrapped/generated/wrappedlibformtypes.h
+++ b/src/wrapped/generated/wrappedlibformtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformTYPES_H_
 #define __wrappedlibformTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibformundefs.h b/src/wrapped/generated/wrappedlibformundefs.h
index 3c54fd75..fb380985 100644
--- a/src/wrapped/generated/wrappedlibformundefs.h
+++ b/src/wrapped/generated/wrappedlibformundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformUNDEFS_H_
 #define __wrappedlibformUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibformw6defs.h b/src/wrapped/generated/wrappedlibformw6defs.h
index 1458ae44..25d026a5 100644
--- a/src/wrapped/generated/wrappedlibformw6defs.h
+++ b/src/wrapped/generated/wrappedlibformw6defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformw6DEFS_H_
 #define __wrappedlibformw6DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibformw6types.h b/src/wrapped/generated/wrappedlibformw6types.h
index 682d248a..802c89d6 100644
--- a/src/wrapped/generated/wrappedlibformw6types.h
+++ b/src/wrapped/generated/wrappedlibformw6types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformw6TYPES_H_
 #define __wrappedlibformw6TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibformw6undefs.h b/src/wrapped/generated/wrappedlibformw6undefs.h
index 4866960f..1783e4f7 100644
--- a/src/wrapped/generated/wrappedlibformw6undefs.h
+++ b/src/wrapped/generated/wrappedlibformw6undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformw6UNDEFS_H_
 #define __wrappedlibformw6UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibformwdefs.h b/src/wrapped/generated/wrappedlibformwdefs.h
index 55a007b7..a0451f1d 100644
--- a/src/wrapped/generated/wrappedlibformwdefs.h
+++ b/src/wrapped/generated/wrappedlibformwdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformwDEFS_H_
 #define __wrappedlibformwDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibformwtypes.h b/src/wrapped/generated/wrappedlibformwtypes.h
index 19d8d750..bdf27ac5 100644
--- a/src/wrapped/generated/wrappedlibformwtypes.h
+++ b/src/wrapped/generated/wrappedlibformwtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformwTYPES_H_
 #define __wrappedlibformwTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibformwundefs.h b/src/wrapped/generated/wrappedlibformwundefs.h
index 35926a4a..817fd6d9 100644
--- a/src/wrapped/generated/wrappedlibformwundefs.h
+++ b/src/wrapped/generated/wrappedlibformwundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibformwUNDEFS_H_
 #define __wrappedlibformwUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibfusedefs.h b/src/wrapped/generated/wrappedlibfusedefs.h
index d42e7a23..bdfa32d8 100644
--- a/src/wrapped/generated/wrappedlibfusedefs.h
+++ b/src/wrapped/generated/wrappedlibfusedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibfuseDEFS_H_
 #define __wrappedlibfuseDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibfusetypes.h b/src/wrapped/generated/wrappedlibfusetypes.h
index 342a308d..be3e4c8b 100644
--- a/src/wrapped/generated/wrappedlibfusetypes.h
+++ b/src/wrapped/generated/wrappedlibfusetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibfuseTYPES_H_
 #define __wrappedlibfuseTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibfuseundefs.h b/src/wrapped/generated/wrappedlibfuseundefs.h
index 4f194898..8bcc096c 100644
--- a/src/wrapped/generated/wrappedlibfuseundefs.h
+++ b/src/wrapped/generated/wrappedlibfuseundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibfuseUNDEFS_H_
 #define __wrappedlibfuseUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibgldefs.h b/src/wrapped/generated/wrappedlibgldefs.h
index 4caba6db..c2b7cf81 100644
--- a/src/wrapped/generated/wrappedlibgldefs.h
+++ b/src/wrapped/generated/wrappedlibgldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibglDEFS_H_
 #define __wrappedlibglDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibgltypes.h b/src/wrapped/generated/wrappedlibgltypes.h
index e9d48457..c1aad887 100644
--- a/src/wrapped/generated/wrappedlibgltypes.h
+++ b/src/wrapped/generated/wrappedlibgltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibglTYPES_H_
 #define __wrappedlibglTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibgludefs.h b/src/wrapped/generated/wrappedlibgludefs.h
index f365ac3e..7f8094d1 100644
--- a/src/wrapped/generated/wrappedlibgludefs.h
+++ b/src/wrapped/generated/wrappedlibgludefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibgluDEFS_H_
 #define __wrappedlibgluDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibglundefs.h b/src/wrapped/generated/wrappedlibglundefs.h
index bca71608..af316b14 100644
--- a/src/wrapped/generated/wrappedlibglundefs.h
+++ b/src/wrapped/generated/wrappedlibglundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibglUNDEFS_H_
 #define __wrappedlibglUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibglutypes.h b/src/wrapped/generated/wrappedlibglutypes.h
index ec000dda..da9c18b5 100644
--- a/src/wrapped/generated/wrappedlibglutypes.h
+++ b/src/wrapped/generated/wrappedlibglutypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibgluTYPES_H_
 #define __wrappedlibgluTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibgluundefs.h b/src/wrapped/generated/wrappedlibgluundefs.h
index acf38042..e1bfc600 100644
--- a/src/wrapped/generated/wrappedlibgluundefs.h
+++ b/src/wrapped/generated/wrappedlibgluundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibgluUNDEFS_H_
 #define __wrappedlibgluUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibglxdefs.h b/src/wrapped/generated/wrappedlibglxdefs.h
index 1e947e9a..9e08adec 100644
--- a/src/wrapped/generated/wrappedlibglxdefs.h
+++ b/src/wrapped/generated/wrappedlibglxdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibglxDEFS_H_
 #define __wrappedlibglxDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibglxtypes.h b/src/wrapped/generated/wrappedlibglxtypes.h
index bfa19bae..5cedd91f 100644
--- a/src/wrapped/generated/wrappedlibglxtypes.h
+++ b/src/wrapped/generated/wrappedlibglxtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibglxTYPES_H_
 #define __wrappedlibglxTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibglxundefs.h b/src/wrapped/generated/wrappedlibglxundefs.h
index 3c140b5d..fe8446f5 100644
--- a/src/wrapped/generated/wrappedlibglxundefs.h
+++ b/src/wrapped/generated/wrappedlibglxundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibglxUNDEFS_H_
 #define __wrappedlibglxUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibharfbuzzdefs.h b/src/wrapped/generated/wrappedlibharfbuzzdefs.h
index c463b59d..7aa5d647 100644
--- a/src/wrapped/generated/wrappedlibharfbuzzdefs.h
+++ b/src/wrapped/generated/wrappedlibharfbuzzdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibharfbuzzDEFS_H_
 #define __wrappedlibharfbuzzDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibharfbuzztypes.h b/src/wrapped/generated/wrappedlibharfbuzztypes.h
index b6ccb205..e19ac01c 100644
--- a/src/wrapped/generated/wrappedlibharfbuzztypes.h
+++ b/src/wrapped/generated/wrappedlibharfbuzztypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibharfbuzzTYPES_H_
 #define __wrappedlibharfbuzzTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibharfbuzzundefs.h b/src/wrapped/generated/wrappedlibharfbuzzundefs.h
index 05caf5af..3f2f3556 100644
--- a/src/wrapped/generated/wrappedlibharfbuzzundefs.h
+++ b/src/wrapped/generated/wrappedlibharfbuzzundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibharfbuzzUNDEFS_H_
 #define __wrappedlibharfbuzzUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibhogweed6defs.h b/src/wrapped/generated/wrappedlibhogweed6defs.h
index 6693e71b..6c4e872a 100644
--- a/src/wrapped/generated/wrappedlibhogweed6defs.h
+++ b/src/wrapped/generated/wrappedlibhogweed6defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibhogweed6DEFS_H_
 #define __wrappedlibhogweed6DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibhogweed6types.h b/src/wrapped/generated/wrappedlibhogweed6types.h
index 60fc7159..b9a5eb68 100644
--- a/src/wrapped/generated/wrappedlibhogweed6types.h
+++ b/src/wrapped/generated/wrappedlibhogweed6types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibhogweed6TYPES_H_
 #define __wrappedlibhogweed6TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibhogweed6undefs.h b/src/wrapped/generated/wrappedlibhogweed6undefs.h
index d83b11c3..b91049c0 100644
--- a/src/wrapped/generated/wrappedlibhogweed6undefs.h
+++ b/src/wrapped/generated/wrappedlibhogweed6undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibhogweed6UNDEFS_H_
 #define __wrappedlibhogweed6UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibibusdefs.h b/src/wrapped/generated/wrappedlibibusdefs.h
index 353351f7..af902629 100644
--- a/src/wrapped/generated/wrappedlibibusdefs.h
+++ b/src/wrapped/generated/wrappedlibibusdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibibusDEFS_H_
 #define __wrappedlibibusDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibibustypes.h b/src/wrapped/generated/wrappedlibibustypes.h
index 23612c70..5074ced7 100644
--- a/src/wrapped/generated/wrappedlibibustypes.h
+++ b/src/wrapped/generated/wrappedlibibustypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibibusTYPES_H_
 #define __wrappedlibibusTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibibusundefs.h b/src/wrapped/generated/wrappedlibibusundefs.h
index 3bc6269b..2f681597 100644
--- a/src/wrapped/generated/wrappedlibibusundefs.h
+++ b/src/wrapped/generated/wrappedlibibusundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibibusUNDEFS_H_
 #define __wrappedlibibusUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibicedefs.h b/src/wrapped/generated/wrappedlibicedefs.h
index 6ee5a387..cbb71c6c 100644
--- a/src/wrapped/generated/wrappedlibicedefs.h
+++ b/src/wrapped/generated/wrappedlibicedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibiceDEFS_H_
 #define __wrappedlibiceDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibicetypes.h b/src/wrapped/generated/wrappedlibicetypes.h
index 111f9be5..f2ae1b1b 100644
--- a/src/wrapped/generated/wrappedlibicetypes.h
+++ b/src/wrapped/generated/wrappedlibicetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibiceTYPES_H_
 #define __wrappedlibiceTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibiceundefs.h b/src/wrapped/generated/wrappedlibiceundefs.h
index 052cabfd..ebda3f71 100644
--- a/src/wrapped/generated/wrappedlibiceundefs.h
+++ b/src/wrapped/generated/wrappedlibiceundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibiceUNDEFS_H_
 #define __wrappedlibiceUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibmdefs.h b/src/wrapped/generated/wrappedlibmdefs.h
index 6afe3229..6054e44c 100644
--- a/src/wrapped/generated/wrappedlibmdefs.h
+++ b/src/wrapped/generated/wrappedlibmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibmDEFS_H_
 #define __wrappedlibmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibmtypes.h b/src/wrapped/generated/wrappedlibmtypes.h
index b31e0cbc..35a7ad2e 100644
--- a/src/wrapped/generated/wrappedlibmtypes.h
+++ b/src/wrapped/generated/wrappedlibmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibmTYPES_H_
 #define __wrappedlibmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibmundefs.h b/src/wrapped/generated/wrappedlibmundefs.h
index 66b487b9..f1a81dfe 100644
--- a/src/wrapped/generated/wrappedlibmundefs.h
+++ b/src/wrapped/generated/wrappedlibmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibmUNDEFS_H_
 #define __wrappedlibmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncurses6defs.h b/src/wrapped/generated/wrappedlibncurses6defs.h
index 0d07108b..eb86d766 100644
--- a/src/wrapped/generated/wrappedlibncurses6defs.h
+++ b/src/wrapped/generated/wrappedlibncurses6defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncurses6DEFS_H_
 #define __wrappedlibncurses6DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncurses6types.h b/src/wrapped/generated/wrappedlibncurses6types.h
index 9594091e..48814b66 100644
--- a/src/wrapped/generated/wrappedlibncurses6types.h
+++ b/src/wrapped/generated/wrappedlibncurses6types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncurses6TYPES_H_
 #define __wrappedlibncurses6TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibncurses6undefs.h b/src/wrapped/generated/wrappedlibncurses6undefs.h
index 17cb535a..69893938 100644
--- a/src/wrapped/generated/wrappedlibncurses6undefs.h
+++ b/src/wrapped/generated/wrappedlibncurses6undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncurses6UNDEFS_H_
 #define __wrappedlibncurses6UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncursesdefs.h b/src/wrapped/generated/wrappedlibncursesdefs.h
index 3f1e5084..bbd6920b 100644
--- a/src/wrapped/generated/wrappedlibncursesdefs.h
+++ b/src/wrapped/generated/wrappedlibncursesdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncursesDEFS_H_
 #define __wrappedlibncursesDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncursestypes.h b/src/wrapped/generated/wrappedlibncursestypes.h
index 08e551de..17756b37 100644
--- a/src/wrapped/generated/wrappedlibncursestypes.h
+++ b/src/wrapped/generated/wrappedlibncursestypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncursesTYPES_H_
 #define __wrappedlibncursesTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibncursesundefs.h b/src/wrapped/generated/wrappedlibncursesundefs.h
index ee39f268..98b149af 100644
--- a/src/wrapped/generated/wrappedlibncursesundefs.h
+++ b/src/wrapped/generated/wrappedlibncursesundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncursesUNDEFS_H_
 #define __wrappedlibncursesUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncursesw6defs.h b/src/wrapped/generated/wrappedlibncursesw6defs.h
index 70f1a06a..19535400 100644
--- a/src/wrapped/generated/wrappedlibncursesw6defs.h
+++ b/src/wrapped/generated/wrappedlibncursesw6defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncursesw6DEFS_H_
 #define __wrappedlibncursesw6DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncursesw6types.h b/src/wrapped/generated/wrappedlibncursesw6types.h
index 275961ec..23fea565 100644
--- a/src/wrapped/generated/wrappedlibncursesw6types.h
+++ b/src/wrapped/generated/wrappedlibncursesw6types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncursesw6TYPES_H_
 #define __wrappedlibncursesw6TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibncursesw6undefs.h b/src/wrapped/generated/wrappedlibncursesw6undefs.h
index 2207fbb6..c713aba2 100644
--- a/src/wrapped/generated/wrappedlibncursesw6undefs.h
+++ b/src/wrapped/generated/wrappedlibncursesw6undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncursesw6UNDEFS_H_
 #define __wrappedlibncursesw6UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncurseswdefs.h b/src/wrapped/generated/wrappedlibncurseswdefs.h
index 59c3a163..3079d0ef 100644
--- a/src/wrapped/generated/wrappedlibncurseswdefs.h
+++ b/src/wrapped/generated/wrappedlibncurseswdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncurseswDEFS_H_
 #define __wrappedlibncurseswDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibncurseswtypes.h b/src/wrapped/generated/wrappedlibncurseswtypes.h
index 77ea4371..4196ffe9 100644
--- a/src/wrapped/generated/wrappedlibncurseswtypes.h
+++ b/src/wrapped/generated/wrappedlibncurseswtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncurseswTYPES_H_
 #define __wrappedlibncurseswTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibncurseswundefs.h b/src/wrapped/generated/wrappedlibncurseswundefs.h
index 5dc4f358..c2077716 100644
--- a/src/wrapped/generated/wrappedlibncurseswundefs.h
+++ b/src/wrapped/generated/wrappedlibncurseswundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibncurseswUNDEFS_H_
 #define __wrappedlibncurseswUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibnettle8defs.h b/src/wrapped/generated/wrappedlibnettle8defs.h
index 4b2b0004..1761717e 100644
--- a/src/wrapped/generated/wrappedlibnettle8defs.h
+++ b/src/wrapped/generated/wrappedlibnettle8defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibnettle8DEFS_H_
 #define __wrappedlibnettle8DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibnettle8types.h b/src/wrapped/generated/wrappedlibnettle8types.h
index d99fbea8..8de87b63 100644
--- a/src/wrapped/generated/wrappedlibnettle8types.h
+++ b/src/wrapped/generated/wrappedlibnettle8types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibnettle8TYPES_H_
 #define __wrappedlibnettle8TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibnettle8undefs.h b/src/wrapped/generated/wrappedlibnettle8undefs.h
index 6f345ec3..2090dea4 100644
--- a/src/wrapped/generated/wrappedlibnettle8undefs.h
+++ b/src/wrapped/generated/wrappedlibnettle8undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibnettle8UNDEFS_H_
 #define __wrappedlibnettle8UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibnumadefs.h b/src/wrapped/generated/wrappedlibnumadefs.h
index dbbf945f..11e096c7 100644
--- a/src/wrapped/generated/wrappedlibnumadefs.h
+++ b/src/wrapped/generated/wrappedlibnumadefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibnumaDEFS_H_
 #define __wrappedlibnumaDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibnumatypes.h b/src/wrapped/generated/wrappedlibnumatypes.h
index 722c2aaf..09ccac34 100644
--- a/src/wrapped/generated/wrappedlibnumatypes.h
+++ b/src/wrapped/generated/wrappedlibnumatypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibnumaTYPES_H_
 #define __wrappedlibnumaTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibnumaundefs.h b/src/wrapped/generated/wrappedlibnumaundefs.h
index 37f78933..8b58689b 100644
--- a/src/wrapped/generated/wrappedlibnumaundefs.h
+++ b/src/wrapped/generated/wrappedlibnumaundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibnumaUNDEFS_H_
 #define __wrappedlibnumaUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedliboggdefs.h b/src/wrapped/generated/wrappedliboggdefs.h
index f890dfbf..6ff95835 100644
--- a/src/wrapped/generated/wrappedliboggdefs.h
+++ b/src/wrapped/generated/wrappedliboggdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedliboggDEFS_H_
 #define __wrappedliboggDEFS_H_
diff --git a/src/wrapped/generated/wrappedliboggtypes.h b/src/wrapped/generated/wrappedliboggtypes.h
index 6ed06122..eb90f715 100644
--- a/src/wrapped/generated/wrappedliboggtypes.h
+++ b/src/wrapped/generated/wrappedliboggtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedliboggTYPES_H_
 #define __wrappedliboggTYPES_H_
diff --git a/src/wrapped/generated/wrappedliboggundefs.h b/src/wrapped/generated/wrappedliboggundefs.h
index d62105c2..b9a38bd2 100644
--- a/src/wrapped/generated/wrappedliboggundefs.h
+++ b/src/wrapped/generated/wrappedliboggundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedliboggUNDEFS_H_
 #define __wrappedliboggUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpaneldefs.h b/src/wrapped/generated/wrappedlibpaneldefs.h
index 05a0b2fa..b8607236 100644
--- a/src/wrapped/generated/wrappedlibpaneldefs.h
+++ b/src/wrapped/generated/wrappedlibpaneldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpanelDEFS_H_
 #define __wrappedlibpanelDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpaneltypes.h b/src/wrapped/generated/wrappedlibpaneltypes.h
index 6f55da2c..18418543 100644
--- a/src/wrapped/generated/wrappedlibpaneltypes.h
+++ b/src/wrapped/generated/wrappedlibpaneltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpanelTYPES_H_
 #define __wrappedlibpanelTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibpanelundefs.h b/src/wrapped/generated/wrappedlibpanelundefs.h
index 7725e7b2..9f1f1a96 100644
--- a/src/wrapped/generated/wrappedlibpanelundefs.h
+++ b/src/wrapped/generated/wrappedlibpanelundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpanelUNDEFS_H_
 #define __wrappedlibpanelUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpcidefs.h b/src/wrapped/generated/wrappedlibpcidefs.h
index cb277a05..8f9209f7 100644
--- a/src/wrapped/generated/wrappedlibpcidefs.h
+++ b/src/wrapped/generated/wrappedlibpcidefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpciDEFS_H_
 #define __wrappedlibpciDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpcitypes.h b/src/wrapped/generated/wrappedlibpcitypes.h
index 5c78181f..5e885d69 100644
--- a/src/wrapped/generated/wrappedlibpcitypes.h
+++ b/src/wrapped/generated/wrappedlibpcitypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpciTYPES_H_
 #define __wrappedlibpciTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibpciundefs.h b/src/wrapped/generated/wrappedlibpciundefs.h
index 88b3e89b..051e9d91 100644
--- a/src/wrapped/generated/wrappedlibpciundefs.h
+++ b/src/wrapped/generated/wrappedlibpciundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpciUNDEFS_H_
 #define __wrappedlibpciUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpcredefs.h b/src/wrapped/generated/wrappedlibpcredefs.h
index aebe1a8c..c841920d 100644
--- a/src/wrapped/generated/wrappedlibpcredefs.h
+++ b/src/wrapped/generated/wrappedlibpcredefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpcreDEFS_H_
 #define __wrappedlibpcreDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpcretypes.h b/src/wrapped/generated/wrappedlibpcretypes.h
index 379b86f4..2a45f0e3 100644
--- a/src/wrapped/generated/wrappedlibpcretypes.h
+++ b/src/wrapped/generated/wrappedlibpcretypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpcreTYPES_H_
 #define __wrappedlibpcreTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibpcreundefs.h b/src/wrapped/generated/wrappedlibpcreundefs.h
index d25656d8..80e51c84 100644
--- a/src/wrapped/generated/wrappedlibpcreundefs.h
+++ b/src/wrapped/generated/wrappedlibpcreundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpcreUNDEFS_H_
 #define __wrappedlibpcreUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpthreaddefs.h b/src/wrapped/generated/wrappedlibpthreaddefs.h
index c45f1077..2c8ba679 100644
--- a/src/wrapped/generated/wrappedlibpthreaddefs.h
+++ b/src/wrapped/generated/wrappedlibpthreaddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpthreadDEFS_H_
 #define __wrappedlibpthreadDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibpthreadtypes.h b/src/wrapped/generated/wrappedlibpthreadtypes.h
index c9e5b106..20fd7c84 100644
--- a/src/wrapped/generated/wrappedlibpthreadtypes.h
+++ b/src/wrapped/generated/wrappedlibpthreadtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpthreadTYPES_H_
 #define __wrappedlibpthreadTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibpthreadundefs.h b/src/wrapped/generated/wrappedlibpthreadundefs.h
index a54b5c82..89aef8c5 100644
--- a/src/wrapped/generated/wrappedlibpthreadundefs.h
+++ b/src/wrapped/generated/wrappedlibpthreadundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibpthreadUNDEFS_H_
 #define __wrappedlibpthreadUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibresolvdefs.h b/src/wrapped/generated/wrappedlibresolvdefs.h
index 5ccf7db3..2d287b20 100644
--- a/src/wrapped/generated/wrappedlibresolvdefs.h
+++ b/src/wrapped/generated/wrappedlibresolvdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibresolvDEFS_H_
 #define __wrappedlibresolvDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibresolvtypes.h b/src/wrapped/generated/wrappedlibresolvtypes.h
index 74f7c256..1a9ff8f9 100644
--- a/src/wrapped/generated/wrappedlibresolvtypes.h
+++ b/src/wrapped/generated/wrappedlibresolvtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibresolvTYPES_H_
 #define __wrappedlibresolvTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibresolvundefs.h b/src/wrapped/generated/wrappedlibresolvundefs.h
index 964f3585..ab392dc5 100644
--- a/src/wrapped/generated/wrappedlibresolvundefs.h
+++ b/src/wrapped/generated/wrappedlibresolvundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibresolvUNDEFS_H_
 #define __wrappedlibresolvUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibrtdefs.h b/src/wrapped/generated/wrappedlibrtdefs.h
index 959c4e2f..63819970 100644
--- a/src/wrapped/generated/wrappedlibrtdefs.h
+++ b/src/wrapped/generated/wrappedlibrtdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibrtDEFS_H_
 #define __wrappedlibrtDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibrttypes.h b/src/wrapped/generated/wrappedlibrttypes.h
index bf1b3fd4..b315ae7b 100644
--- a/src/wrapped/generated/wrappedlibrttypes.h
+++ b/src/wrapped/generated/wrappedlibrttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibrtTYPES_H_
 #define __wrappedlibrtTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibrtundefs.h b/src/wrapped/generated/wrappedlibrtundefs.h
index 86a1a4e9..0cdbea1d 100644
--- a/src/wrapped/generated/wrappedlibrtundefs.h
+++ b/src/wrapped/generated/wrappedlibrtundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibrtUNDEFS_H_
 #define __wrappedlibrtUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibsmdefs.h b/src/wrapped/generated/wrappedlibsmdefs.h
index 6260b394..70491367 100644
--- a/src/wrapped/generated/wrappedlibsmdefs.h
+++ b/src/wrapped/generated/wrappedlibsmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsmDEFS_H_
 #define __wrappedlibsmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibsmtypes.h b/src/wrapped/generated/wrappedlibsmtypes.h
index 0eef2429..18677b2f 100644
--- a/src/wrapped/generated/wrappedlibsmtypes.h
+++ b/src/wrapped/generated/wrappedlibsmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsmTYPES_H_
 #define __wrappedlibsmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibsmundefs.h b/src/wrapped/generated/wrappedlibsmundefs.h
index 174f1ec5..d3a8047e 100644
--- a/src/wrapped/generated/wrappedlibsmundefs.h
+++ b/src/wrapped/generated/wrappedlibsmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsmUNDEFS_H_
 #define __wrappedlibsmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibsndfiledefs.h b/src/wrapped/generated/wrappedlibsndfiledefs.h
index 32e25ee0..e6b3e9a2 100644
--- a/src/wrapped/generated/wrappedlibsndfiledefs.h
+++ b/src/wrapped/generated/wrappedlibsndfiledefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsndfileDEFS_H_
 #define __wrappedlibsndfileDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibsndfiletypes.h b/src/wrapped/generated/wrappedlibsndfiletypes.h
index 5d45b788..4f2a037a 100644
--- a/src/wrapped/generated/wrappedlibsndfiletypes.h
+++ b/src/wrapped/generated/wrappedlibsndfiletypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsndfileTYPES_H_
 #define __wrappedlibsndfileTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibsndfileundefs.h b/src/wrapped/generated/wrappedlibsndfileundefs.h
index 887c9b28..07a2aa1b 100644
--- a/src/wrapped/generated/wrappedlibsndfileundefs.h
+++ b/src/wrapped/generated/wrappedlibsndfileundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsndfileUNDEFS_H_
 #define __wrappedlibsndfileUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibsqlite3defs.h b/src/wrapped/generated/wrappedlibsqlite3defs.h
index 95e690c6..ce9dec0f 100644
--- a/src/wrapped/generated/wrappedlibsqlite3defs.h
+++ b/src/wrapped/generated/wrappedlibsqlite3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsqlite3DEFS_H_
 #define __wrappedlibsqlite3DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibsqlite3types.h b/src/wrapped/generated/wrappedlibsqlite3types.h
index b36662f6..dc02594c 100644
--- a/src/wrapped/generated/wrappedlibsqlite3types.h
+++ b/src/wrapped/generated/wrappedlibsqlite3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsqlite3TYPES_H_
 #define __wrappedlibsqlite3TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibsqlite3undefs.h b/src/wrapped/generated/wrappedlibsqlite3undefs.h
index 39570fed..da9a4c4b 100644
--- a/src/wrapped/generated/wrappedlibsqlite3undefs.h
+++ b/src/wrapped/generated/wrappedlibsqlite3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsqlite3UNDEFS_H_
 #define __wrappedlibsqlite3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibssh2defs.h b/src/wrapped/generated/wrappedlibssh2defs.h
index 96ef86f3..5493ed6f 100644
--- a/src/wrapped/generated/wrappedlibssh2defs.h
+++ b/src/wrapped/generated/wrappedlibssh2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibssh2DEFS_H_
 #define __wrappedlibssh2DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibssh2types.h b/src/wrapped/generated/wrappedlibssh2types.h
index 3363c6c8..f010c657 100644
--- a/src/wrapped/generated/wrappedlibssh2types.h
+++ b/src/wrapped/generated/wrappedlibssh2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibssh2TYPES_H_
 #define __wrappedlibssh2TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibssh2undefs.h b/src/wrapped/generated/wrappedlibssh2undefs.h
index 8c110957..07b7e7f8 100644
--- a/src/wrapped/generated/wrappedlibssh2undefs.h
+++ b/src/wrapped/generated/wrappedlibssh2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibssh2UNDEFS_H_
 #define __wrappedlibssh2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibssl3defs.h b/src/wrapped/generated/wrappedlibssl3defs.h
index 0f2f7478..579d0dd2 100644
--- a/src/wrapped/generated/wrappedlibssl3defs.h
+++ b/src/wrapped/generated/wrappedlibssl3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibssl3DEFS_H_
 #define __wrappedlibssl3DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibssl3types.h b/src/wrapped/generated/wrappedlibssl3types.h
index ec735057..f96a7938 100644
--- a/src/wrapped/generated/wrappedlibssl3types.h
+++ b/src/wrapped/generated/wrappedlibssl3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibssl3TYPES_H_
 #define __wrappedlibssl3TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibssl3undefs.h b/src/wrapped/generated/wrappedlibssl3undefs.h
index 5c86c5e0..d8127914 100644
--- a/src/wrapped/generated/wrappedlibssl3undefs.h
+++ b/src/wrapped/generated/wrappedlibssl3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibssl3UNDEFS_H_
 #define __wrappedlibssl3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibssldefs.h b/src/wrapped/generated/wrappedlibssldefs.h
index 55eceb38..8128a2d5 100644
--- a/src/wrapped/generated/wrappedlibssldefs.h
+++ b/src/wrapped/generated/wrappedlibssldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsslDEFS_H_
 #define __wrappedlibsslDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibssltypes.h b/src/wrapped/generated/wrappedlibssltypes.h
index d6d337f9..9a2e8e5b 100644
--- a/src/wrapped/generated/wrappedlibssltypes.h
+++ b/src/wrapped/generated/wrappedlibssltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsslTYPES_H_
 #define __wrappedlibsslTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibsslundefs.h b/src/wrapped/generated/wrappedlibsslundefs.h
index 12278260..a69a3b7e 100644
--- a/src/wrapped/generated/wrappedlibsslundefs.h
+++ b/src/wrapped/generated/wrappedlibsslundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibsslUNDEFS_H_
 #define __wrappedlibsslUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtasn1defs.h b/src/wrapped/generated/wrappedlibtasn1defs.h
index 6a4d7bdc..3d9e8f85 100644
--- a/src/wrapped/generated/wrappedlibtasn1defs.h
+++ b/src/wrapped/generated/wrappedlibtasn1defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtasn1DEFS_H_
 #define __wrappedlibtasn1DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtasn1types.h b/src/wrapped/generated/wrappedlibtasn1types.h
index 02a76bb5..19cd97a5 100644
--- a/src/wrapped/generated/wrappedlibtasn1types.h
+++ b/src/wrapped/generated/wrappedlibtasn1types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtasn1TYPES_H_
 #define __wrappedlibtasn1TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibtasn1undefs.h b/src/wrapped/generated/wrappedlibtasn1undefs.h
index 0e9c1681..9db62a15 100644
--- a/src/wrapped/generated/wrappedlibtasn1undefs.h
+++ b/src/wrapped/generated/wrappedlibtasn1undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtasn1UNDEFS_H_
 #define __wrappedlibtasn1UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtiff5defs.h b/src/wrapped/generated/wrappedlibtiff5defs.h
index 6e9af05d..6dbbdc55 100644
--- a/src/wrapped/generated/wrappedlibtiff5defs.h
+++ b/src/wrapped/generated/wrappedlibtiff5defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtiff5DEFS_H_
 #define __wrappedlibtiff5DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtiff5types.h b/src/wrapped/generated/wrappedlibtiff5types.h
index eb9f8ad7..5c8c8f2e 100644
--- a/src/wrapped/generated/wrappedlibtiff5types.h
+++ b/src/wrapped/generated/wrappedlibtiff5types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtiff5TYPES_H_
 #define __wrappedlibtiff5TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibtiff5undefs.h b/src/wrapped/generated/wrappedlibtiff5undefs.h
index ced3df31..07a4c602 100644
--- a/src/wrapped/generated/wrappedlibtiff5undefs.h
+++ b/src/wrapped/generated/wrappedlibtiff5undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtiff5UNDEFS_H_
 #define __wrappedlibtiff5UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtinfo6defs.h b/src/wrapped/generated/wrappedlibtinfo6defs.h
index 72facfae..8a4e4ef7 100644
--- a/src/wrapped/generated/wrappedlibtinfo6defs.h
+++ b/src/wrapped/generated/wrappedlibtinfo6defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtinfo6DEFS_H_
 #define __wrappedlibtinfo6DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtinfo6types.h b/src/wrapped/generated/wrappedlibtinfo6types.h
index e195221b..9557411e 100644
--- a/src/wrapped/generated/wrappedlibtinfo6types.h
+++ b/src/wrapped/generated/wrappedlibtinfo6types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtinfo6TYPES_H_
 #define __wrappedlibtinfo6TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibtinfo6undefs.h b/src/wrapped/generated/wrappedlibtinfo6undefs.h
index cf063deb..08206aa0 100644
--- a/src/wrapped/generated/wrappedlibtinfo6undefs.h
+++ b/src/wrapped/generated/wrappedlibtinfo6undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtinfo6UNDEFS_H_
 #define __wrappedlibtinfo6UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtinfodefs.h b/src/wrapped/generated/wrappedlibtinfodefs.h
index a04196f3..272a35f6 100644
--- a/src/wrapped/generated/wrappedlibtinfodefs.h
+++ b/src/wrapped/generated/wrappedlibtinfodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtinfoDEFS_H_
 #define __wrappedlibtinfoDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibtinfotypes.h b/src/wrapped/generated/wrappedlibtinfotypes.h
index e2762449..b82cfe84 100644
--- a/src/wrapped/generated/wrappedlibtinfotypes.h
+++ b/src/wrapped/generated/wrappedlibtinfotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtinfoTYPES_H_
 #define __wrappedlibtinfoTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibtinfoundefs.h b/src/wrapped/generated/wrappedlibtinfoundefs.h
index 03215958..4fd4058d 100644
--- a/src/wrapped/generated/wrappedlibtinfoundefs.h
+++ b/src/wrapped/generated/wrappedlibtinfoundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibtinfoUNDEFS_H_
 #define __wrappedlibtinfoUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibunistring2defs.h b/src/wrapped/generated/wrappedlibunistring2defs.h
index 52044144..507321fb 100644
--- a/src/wrapped/generated/wrappedlibunistring2defs.h
+++ b/src/wrapped/generated/wrappedlibunistring2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibunistring2DEFS_H_
 #define __wrappedlibunistring2DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibunistring2types.h b/src/wrapped/generated/wrappedlibunistring2types.h
index 25a30d9e..c09c42e0 100644
--- a/src/wrapped/generated/wrappedlibunistring2types.h
+++ b/src/wrapped/generated/wrappedlibunistring2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibunistring2TYPES_H_
 #define __wrappedlibunistring2TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibunistring2undefs.h b/src/wrapped/generated/wrappedlibunistring2undefs.h
index 88de83f1..3556a6b3 100644
--- a/src/wrapped/generated/wrappedlibunistring2undefs.h
+++ b/src/wrapped/generated/wrappedlibunistring2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibunistring2UNDEFS_H_
 #define __wrappedlibunistring2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibusb1defs.h b/src/wrapped/generated/wrappedlibusb1defs.h
index 9da71f8a..c3b82844 100644
--- a/src/wrapped/generated/wrappedlibusb1defs.h
+++ b/src/wrapped/generated/wrappedlibusb1defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibusb1DEFS_H_
 #define __wrappedlibusb1DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibusb1types.h b/src/wrapped/generated/wrappedlibusb1types.h
index 9155c25b..13227c92 100644
--- a/src/wrapped/generated/wrappedlibusb1types.h
+++ b/src/wrapped/generated/wrappedlibusb1types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibusb1TYPES_H_
 #define __wrappedlibusb1TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibusb1undefs.h b/src/wrapped/generated/wrappedlibusb1undefs.h
index 99ee492f..cf08b0e4 100644
--- a/src/wrapped/generated/wrappedlibusb1undefs.h
+++ b/src/wrapped/generated/wrappedlibusb1undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibusb1UNDEFS_H_
 #define __wrappedlibusb1UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibuuiddefs.h b/src/wrapped/generated/wrappedlibuuiddefs.h
index c20d4b63..75dfed42 100644
--- a/src/wrapped/generated/wrappedlibuuiddefs.h
+++ b/src/wrapped/generated/wrappedlibuuiddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibuuidDEFS_H_
 #define __wrappedlibuuidDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibuuidtypes.h b/src/wrapped/generated/wrappedlibuuidtypes.h
index a39b43d1..e2a35479 100644
--- a/src/wrapped/generated/wrappedlibuuidtypes.h
+++ b/src/wrapped/generated/wrappedlibuuidtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibuuidTYPES_H_
 #define __wrappedlibuuidTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibuuidundefs.h b/src/wrapped/generated/wrappedlibuuidundefs.h
index e7059700..be82d005 100644
--- a/src/wrapped/generated/wrappedlibuuidundefs.h
+++ b/src/wrapped/generated/wrappedlibuuidundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibuuidUNDEFS_H_
 #define __wrappedlibuuidUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvadefs.h b/src/wrapped/generated/wrappedlibvadefs.h
index 40decd84..c6fa8efe 100644
--- a/src/wrapped/generated/wrappedlibvadefs.h
+++ b/src/wrapped/generated/wrappedlibvadefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvaDEFS_H_
 #define __wrappedlibvaDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvadrmdefs.h b/src/wrapped/generated/wrappedlibvadrmdefs.h
index 359d7063..ee2b76f5 100644
--- a/src/wrapped/generated/wrappedlibvadrmdefs.h
+++ b/src/wrapped/generated/wrappedlibvadrmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvadrmDEFS_H_
 #define __wrappedlibvadrmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvadrmtypes.h b/src/wrapped/generated/wrappedlibvadrmtypes.h
index b1d9979b..d82ee78e 100644
--- a/src/wrapped/generated/wrappedlibvadrmtypes.h
+++ b/src/wrapped/generated/wrappedlibvadrmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvadrmTYPES_H_
 #define __wrappedlibvadrmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibvadrmundefs.h b/src/wrapped/generated/wrappedlibvadrmundefs.h
index a729302d..e01deef0 100644
--- a/src/wrapped/generated/wrappedlibvadrmundefs.h
+++ b/src/wrapped/generated/wrappedlibvadrmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvadrmUNDEFS_H_
 #define __wrappedlibvadrmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvatypes.h b/src/wrapped/generated/wrappedlibvatypes.h
index 3eac0367..fb7add4b 100644
--- a/src/wrapped/generated/wrappedlibvatypes.h
+++ b/src/wrapped/generated/wrappedlibvatypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvaTYPES_H_
 #define __wrappedlibvaTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibvaundefs.h b/src/wrapped/generated/wrappedlibvaundefs.h
index ed6dde19..78cfc81f 100644
--- a/src/wrapped/generated/wrappedlibvaundefs.h
+++ b/src/wrapped/generated/wrappedlibvaundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvaUNDEFS_H_
 #define __wrappedlibvaUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvawaylanddefs.h b/src/wrapped/generated/wrappedlibvawaylanddefs.h
index 02a7e4b1..edf641ec 100644
--- a/src/wrapped/generated/wrappedlibvawaylanddefs.h
+++ b/src/wrapped/generated/wrappedlibvawaylanddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvawaylandDEFS_H_
 #define __wrappedlibvawaylandDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvawaylandtypes.h b/src/wrapped/generated/wrappedlibvawaylandtypes.h
index 96e1861e..63d74476 100644
--- a/src/wrapped/generated/wrappedlibvawaylandtypes.h
+++ b/src/wrapped/generated/wrappedlibvawaylandtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvawaylandTYPES_H_
 #define __wrappedlibvawaylandTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibvawaylandundefs.h b/src/wrapped/generated/wrappedlibvawaylandundefs.h
index 62a23ae0..22f2d266 100644
--- a/src/wrapped/generated/wrappedlibvawaylandundefs.h
+++ b/src/wrapped/generated/wrappedlibvawaylandundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvawaylandUNDEFS_H_
 #define __wrappedlibvawaylandUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvax11defs.h b/src/wrapped/generated/wrappedlibvax11defs.h
index afa9f011..02ad44b8 100644
--- a/src/wrapped/generated/wrappedlibvax11defs.h
+++ b/src/wrapped/generated/wrappedlibvax11defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvax11DEFS_H_
 #define __wrappedlibvax11DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvax11types.h b/src/wrapped/generated/wrappedlibvax11types.h
index 118aad9b..416a2a12 100644
--- a/src/wrapped/generated/wrappedlibvax11types.h
+++ b/src/wrapped/generated/wrappedlibvax11types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvax11TYPES_H_
 #define __wrappedlibvax11TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibvax11undefs.h b/src/wrapped/generated/wrappedlibvax11undefs.h
index 265614f6..fc2e19d1 100644
--- a/src/wrapped/generated/wrappedlibvax11undefs.h
+++ b/src/wrapped/generated/wrappedlibvax11undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvax11UNDEFS_H_
 #define __wrappedlibvax11UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvdpaudefs.h b/src/wrapped/generated/wrappedlibvdpaudefs.h
index 5a073777..c4734b45 100644
--- a/src/wrapped/generated/wrappedlibvdpaudefs.h
+++ b/src/wrapped/generated/wrappedlibvdpaudefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvdpauDEFS_H_
 #define __wrappedlibvdpauDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvdpautypes.h b/src/wrapped/generated/wrappedlibvdpautypes.h
index 8c041023..a99a425e 100644
--- a/src/wrapped/generated/wrappedlibvdpautypes.h
+++ b/src/wrapped/generated/wrappedlibvdpautypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvdpauTYPES_H_
 #define __wrappedlibvdpauTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibvdpauundefs.h b/src/wrapped/generated/wrappedlibvdpauundefs.h
index 3f7baa67..96eb0b76 100644
--- a/src/wrapped/generated/wrappedlibvdpauundefs.h
+++ b/src/wrapped/generated/wrappedlibvdpauundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvdpauUNDEFS_H_
 #define __wrappedlibvdpauUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvorbisdefs.h b/src/wrapped/generated/wrappedlibvorbisdefs.h
index 73d6d3fe..4bbd1d03 100644
--- a/src/wrapped/generated/wrappedlibvorbisdefs.h
+++ b/src/wrapped/generated/wrappedlibvorbisdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvorbisDEFS_H_
 #define __wrappedlibvorbisDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibvorbistypes.h b/src/wrapped/generated/wrappedlibvorbistypes.h
index b90ae75c..a0bb9184 100644
--- a/src/wrapped/generated/wrappedlibvorbistypes.h
+++ b/src/wrapped/generated/wrappedlibvorbistypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvorbisTYPES_H_
 #define __wrappedlibvorbisTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibvorbisundefs.h b/src/wrapped/generated/wrappedlibvorbisundefs.h
index 75f1028b..5a2efb39 100644
--- a/src/wrapped/generated/wrappedlibvorbisundefs.h
+++ b/src/wrapped/generated/wrappedlibvorbisundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibvorbisUNDEFS_H_
 #define __wrappedlibvorbisUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibx11defs.h b/src/wrapped/generated/wrappedlibx11defs.h
index 9c6afd1f..ac3be5ab 100644
--- a/src/wrapped/generated/wrappedlibx11defs.h
+++ b/src/wrapped/generated/wrappedlibx11defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibx11DEFS_H_
 #define __wrappedlibx11DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibx11types.h b/src/wrapped/generated/wrappedlibx11types.h
index f712ce53..df0cc168 100644
--- a/src/wrapped/generated/wrappedlibx11types.h
+++ b/src/wrapped/generated/wrappedlibx11types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibx11TYPES_H_
 #define __wrappedlibx11TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibx11undefs.h b/src/wrapped/generated/wrappedlibx11undefs.h
index 4fe5929e..0ed9550a 100644
--- a/src/wrapped/generated/wrappedlibx11undefs.h
+++ b/src/wrapped/generated/wrappedlibx11undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibx11UNDEFS_H_
 #define __wrappedlibx11UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibx11xcbdefs.h b/src/wrapped/generated/wrappedlibx11xcbdefs.h
index ffa5c2d9..4e890617 100644
--- a/src/wrapped/generated/wrappedlibx11xcbdefs.h
+++ b/src/wrapped/generated/wrappedlibx11xcbdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibx11xcbDEFS_H_
 #define __wrappedlibx11xcbDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibx11xcbtypes.h b/src/wrapped/generated/wrappedlibx11xcbtypes.h
index 0e534c64..6c9eb729 100644
--- a/src/wrapped/generated/wrappedlibx11xcbtypes.h
+++ b/src/wrapped/generated/wrappedlibx11xcbtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibx11xcbTYPES_H_
 #define __wrappedlibx11xcbTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibx11xcbundefs.h b/src/wrapped/generated/wrappedlibx11xcbundefs.h
index ed02c592..2a75c256 100644
--- a/src/wrapped/generated/wrappedlibx11xcbundefs.h
+++ b/src/wrapped/generated/wrappedlibx11xcbundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibx11xcbUNDEFS_H_
 #define __wrappedlibx11xcbUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxaudefs.h b/src/wrapped/generated/wrappedlibxaudefs.h
index 293e4487..a62be1b7 100644
--- a/src/wrapped/generated/wrappedlibxaudefs.h
+++ b/src/wrapped/generated/wrappedlibxaudefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxauDEFS_H_
 #define __wrappedlibxauDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxautypes.h b/src/wrapped/generated/wrappedlibxautypes.h
index a19e2da6..884e6abe 100644
--- a/src/wrapped/generated/wrappedlibxautypes.h
+++ b/src/wrapped/generated/wrappedlibxautypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxauTYPES_H_
 #define __wrappedlibxauTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxauundefs.h b/src/wrapped/generated/wrappedlibxauundefs.h
index 27c78c60..76daaf80 100644
--- a/src/wrapped/generated/wrappedlibxauundefs.h
+++ b/src/wrapped/generated/wrappedlibxauundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxauUNDEFS_H_
 #define __wrappedlibxauUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbcursordefs.h b/src/wrapped/generated/wrappedlibxcbcursordefs.h
index 7db154a5..421900cb 100644
--- a/src/wrapped/generated/wrappedlibxcbcursordefs.h
+++ b/src/wrapped/generated/wrappedlibxcbcursordefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbcursorDEFS_H_
 #define __wrappedlibxcbcursorDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbcursortypes.h b/src/wrapped/generated/wrappedlibxcbcursortypes.h
index e2dfeddb..d31c26cd 100644
--- a/src/wrapped/generated/wrappedlibxcbcursortypes.h
+++ b/src/wrapped/generated/wrappedlibxcbcursortypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbcursorTYPES_H_
 #define __wrappedlibxcbcursorTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbcursorundefs.h b/src/wrapped/generated/wrappedlibxcbcursorundefs.h
index d85e57f9..5fdd7f70 100644
--- a/src/wrapped/generated/wrappedlibxcbcursorundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbcursorundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbcursorUNDEFS_H_
 #define __wrappedlibxcbcursorUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbdefs.h b/src/wrapped/generated/wrappedlibxcbdefs.h
index 62930d68..839b67cd 100644
--- a/src/wrapped/generated/wrappedlibxcbdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbDEFS_H_
 #define __wrappedlibxcbDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbdri2defs.h b/src/wrapped/generated/wrappedlibxcbdri2defs.h
index a0914c45..b834ca43 100644
--- a/src/wrapped/generated/wrappedlibxcbdri2defs.h
+++ b/src/wrapped/generated/wrappedlibxcbdri2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbdri2DEFS_H_
 #define __wrappedlibxcbdri2DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbdri2types.h b/src/wrapped/generated/wrappedlibxcbdri2types.h
index e483d455..128354df 100644
--- a/src/wrapped/generated/wrappedlibxcbdri2types.h
+++ b/src/wrapped/generated/wrappedlibxcbdri2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbdri2TYPES_H_
 #define __wrappedlibxcbdri2TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbdri2undefs.h b/src/wrapped/generated/wrappedlibxcbdri2undefs.h
index 39e96e07..6577e033 100644
--- a/src/wrapped/generated/wrappedlibxcbdri2undefs.h
+++ b/src/wrapped/generated/wrappedlibxcbdri2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbdri2UNDEFS_H_
 #define __wrappedlibxcbdri2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbdri3defs.h b/src/wrapped/generated/wrappedlibxcbdri3defs.h
index 2a1d6aa6..f2e3b3eb 100644
--- a/src/wrapped/generated/wrappedlibxcbdri3defs.h
+++ b/src/wrapped/generated/wrappedlibxcbdri3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbdri3DEFS_H_
 #define __wrappedlibxcbdri3DEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbdri3types.h b/src/wrapped/generated/wrappedlibxcbdri3types.h
index c3928807..bb9fe157 100644
--- a/src/wrapped/generated/wrappedlibxcbdri3types.h
+++ b/src/wrapped/generated/wrappedlibxcbdri3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbdri3TYPES_H_
 #define __wrappedlibxcbdri3TYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbdri3undefs.h b/src/wrapped/generated/wrappedlibxcbdri3undefs.h
index f28e6dbb..14d1a480 100644
--- a/src/wrapped/generated/wrappedlibxcbdri3undefs.h
+++ b/src/wrapped/generated/wrappedlibxcbdri3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbdri3UNDEFS_H_
 #define __wrappedlibxcbdri3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbglxdefs.h b/src/wrapped/generated/wrappedlibxcbglxdefs.h
index 892bafeb..b0337153 100644
--- a/src/wrapped/generated/wrappedlibxcbglxdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbglxdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbglxDEFS_H_
 #define __wrappedlibxcbglxDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbglxtypes.h b/src/wrapped/generated/wrappedlibxcbglxtypes.h
index fba2309c..ff4884fe 100644
--- a/src/wrapped/generated/wrappedlibxcbglxtypes.h
+++ b/src/wrapped/generated/wrappedlibxcbglxtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbglxTYPES_H_
 #define __wrappedlibxcbglxTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbglxundefs.h b/src/wrapped/generated/wrappedlibxcbglxundefs.h
index 03aa022e..639cf6be 100644
--- a/src/wrapped/generated/wrappedlibxcbglxundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbglxundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbglxUNDEFS_H_
 #define __wrappedlibxcbglxUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbicccmdefs.h b/src/wrapped/generated/wrappedlibxcbicccmdefs.h
index 553bf71c..0b7816f5 100644
--- a/src/wrapped/generated/wrappedlibxcbicccmdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbicccmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbicccmDEFS_H_
 #define __wrappedlibxcbicccmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbicccmtypes.h b/src/wrapped/generated/wrappedlibxcbicccmtypes.h
index baeff95c..04d024ea 100644
--- a/src/wrapped/generated/wrappedlibxcbicccmtypes.h
+++ b/src/wrapped/generated/wrappedlibxcbicccmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbicccmTYPES_H_
 #define __wrappedlibxcbicccmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbicccmundefs.h b/src/wrapped/generated/wrappedlibxcbicccmundefs.h
index 85117de9..18d7a156 100644
--- a/src/wrapped/generated/wrappedlibxcbicccmundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbicccmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbicccmUNDEFS_H_
 #define __wrappedlibxcbicccmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbimagedefs.h b/src/wrapped/generated/wrappedlibxcbimagedefs.h
index 851c2f02..13bd75c5 100644
--- a/src/wrapped/generated/wrappedlibxcbimagedefs.h
+++ b/src/wrapped/generated/wrappedlibxcbimagedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbimageDEFS_H_
 #define __wrappedlibxcbimageDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbimagetypes.h b/src/wrapped/generated/wrappedlibxcbimagetypes.h
index cde1840e..72664ecd 100644
--- a/src/wrapped/generated/wrappedlibxcbimagetypes.h
+++ b/src/wrapped/generated/wrappedlibxcbimagetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbimageTYPES_H_
 #define __wrappedlibxcbimageTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbimageundefs.h b/src/wrapped/generated/wrappedlibxcbimageundefs.h
index bbcba65f..9efd0f0d 100644
--- a/src/wrapped/generated/wrappedlibxcbimageundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbimageundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbimageUNDEFS_H_
 #define __wrappedlibxcbimageUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbkeysymsdefs.h b/src/wrapped/generated/wrappedlibxcbkeysymsdefs.h
index dacaad5a..62616851 100644
--- a/src/wrapped/generated/wrappedlibxcbkeysymsdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbkeysymsdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbkeysymsDEFS_H_
 #define __wrappedlibxcbkeysymsDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbkeysymstypes.h b/src/wrapped/generated/wrappedlibxcbkeysymstypes.h
index e2772cc2..58ede945 100644
--- a/src/wrapped/generated/wrappedlibxcbkeysymstypes.h
+++ b/src/wrapped/generated/wrappedlibxcbkeysymstypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbkeysymsTYPES_H_
 #define __wrappedlibxcbkeysymsTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbkeysymsundefs.h b/src/wrapped/generated/wrappedlibxcbkeysymsundefs.h
index 28e2aba8..0f3f41dd 100644
--- a/src/wrapped/generated/wrappedlibxcbkeysymsundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbkeysymsundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbkeysymsUNDEFS_H_
 #define __wrappedlibxcbkeysymsUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbpresentdefs.h b/src/wrapped/generated/wrappedlibxcbpresentdefs.h
index bc8a3af8..3940e9aa 100644
--- a/src/wrapped/generated/wrappedlibxcbpresentdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbpresentdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbpresentDEFS_H_
 #define __wrappedlibxcbpresentDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbpresenttypes.h b/src/wrapped/generated/wrappedlibxcbpresenttypes.h
index 23250753..7cba6b43 100644
--- a/src/wrapped/generated/wrappedlibxcbpresenttypes.h
+++ b/src/wrapped/generated/wrappedlibxcbpresenttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbpresentTYPES_H_
 #define __wrappedlibxcbpresentTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbpresentundefs.h b/src/wrapped/generated/wrappedlibxcbpresentundefs.h
index 0443c7a8..4f004da4 100644
--- a/src/wrapped/generated/wrappedlibxcbpresentundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbpresentundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbpresentUNDEFS_H_
 #define __wrappedlibxcbpresentUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrandrdefs.h b/src/wrapped/generated/wrappedlibxcbrandrdefs.h
index 9b44fc06..68059940 100644
--- a/src/wrapped/generated/wrappedlibxcbrandrdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbrandrdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrandrDEFS_H_
 #define __wrappedlibxcbrandrDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrandrtypes.h b/src/wrapped/generated/wrappedlibxcbrandrtypes.h
index dad5eee1..4a3a5288 100644
--- a/src/wrapped/generated/wrappedlibxcbrandrtypes.h
+++ b/src/wrapped/generated/wrappedlibxcbrandrtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrandrTYPES_H_
 #define __wrappedlibxcbrandrTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrandrundefs.h b/src/wrapped/generated/wrappedlibxcbrandrundefs.h
index 5c329360..5e43aef2 100644
--- a/src/wrapped/generated/wrappedlibxcbrandrundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbrandrundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrandrUNDEFS_H_
 #define __wrappedlibxcbrandrUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrenderdefs.h b/src/wrapped/generated/wrappedlibxcbrenderdefs.h
index da0f8736..0944592c 100644
--- a/src/wrapped/generated/wrappedlibxcbrenderdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbrenderdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrenderDEFS_H_
 #define __wrappedlibxcbrenderDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrendertypes.h b/src/wrapped/generated/wrappedlibxcbrendertypes.h
index 750fd616..275f7d5e 100644
--- a/src/wrapped/generated/wrappedlibxcbrendertypes.h
+++ b/src/wrapped/generated/wrappedlibxcbrendertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrenderTYPES_H_
 #define __wrappedlibxcbrenderTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrenderundefs.h b/src/wrapped/generated/wrappedlibxcbrenderundefs.h
index 2a14ad1b..2e51c59b 100644
--- a/src/wrapped/generated/wrappedlibxcbrenderundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbrenderundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrenderUNDEFS_H_
 #define __wrappedlibxcbrenderUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrenderutildefs.h b/src/wrapped/generated/wrappedlibxcbrenderutildefs.h
index 5270f1f7..d4708a91 100644
--- a/src/wrapped/generated/wrappedlibxcbrenderutildefs.h
+++ b/src/wrapped/generated/wrappedlibxcbrenderutildefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrenderutilDEFS_H_
 #define __wrappedlibxcbrenderutilDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrenderutiltypes.h b/src/wrapped/generated/wrappedlibxcbrenderutiltypes.h
index 2ce0dd81..7c112ef1 100644
--- a/src/wrapped/generated/wrappedlibxcbrenderutiltypes.h
+++ b/src/wrapped/generated/wrappedlibxcbrenderutiltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrenderutilTYPES_H_
 #define __wrappedlibxcbrenderutilTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbrenderutilundefs.h b/src/wrapped/generated/wrappedlibxcbrenderutilundefs.h
index 3b556168..b8265adc 100644
--- a/src/wrapped/generated/wrappedlibxcbrenderutilundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbrenderutilundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbrenderutilUNDEFS_H_
 #define __wrappedlibxcbrenderutilUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbshapedefs.h b/src/wrapped/generated/wrappedlibxcbshapedefs.h
index 23f5ccb6..bd0a7339 100644
--- a/src/wrapped/generated/wrappedlibxcbshapedefs.h
+++ b/src/wrapped/generated/wrappedlibxcbshapedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbshapeDEFS_H_
 #define __wrappedlibxcbshapeDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbshapetypes.h b/src/wrapped/generated/wrappedlibxcbshapetypes.h
index c794e0be..d5115139 100644
--- a/src/wrapped/generated/wrappedlibxcbshapetypes.h
+++ b/src/wrapped/generated/wrappedlibxcbshapetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbshapeTYPES_H_
 #define __wrappedlibxcbshapeTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbshapeundefs.h b/src/wrapped/generated/wrappedlibxcbshapeundefs.h
index 1ec642f0..e60eafe2 100644
--- a/src/wrapped/generated/wrappedlibxcbshapeundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbshapeundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbshapeUNDEFS_H_
 #define __wrappedlibxcbshapeUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbshmdefs.h b/src/wrapped/generated/wrappedlibxcbshmdefs.h
index 584c4710..89cf28e0 100644
--- a/src/wrapped/generated/wrappedlibxcbshmdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbshmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbshmDEFS_H_
 #define __wrappedlibxcbshmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbshmtypes.h b/src/wrapped/generated/wrappedlibxcbshmtypes.h
index 82a85b4a..12e67ffe 100644
--- a/src/wrapped/generated/wrappedlibxcbshmtypes.h
+++ b/src/wrapped/generated/wrappedlibxcbshmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbshmTYPES_H_
 #define __wrappedlibxcbshmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbshmundefs.h b/src/wrapped/generated/wrappedlibxcbshmundefs.h
index eccdb49e..f62fc3de 100644
--- a/src/wrapped/generated/wrappedlibxcbshmundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbshmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbshmUNDEFS_H_
 #define __wrappedlibxcbshmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbsyncdefs.h b/src/wrapped/generated/wrappedlibxcbsyncdefs.h
index 91787f30..5df44751 100644
--- a/src/wrapped/generated/wrappedlibxcbsyncdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbsyncdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbsyncDEFS_H_
 #define __wrappedlibxcbsyncDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbsynctypes.h b/src/wrapped/generated/wrappedlibxcbsynctypes.h
index ef4d5445..30d58c27 100644
--- a/src/wrapped/generated/wrappedlibxcbsynctypes.h
+++ b/src/wrapped/generated/wrappedlibxcbsynctypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbsyncTYPES_H_
 #define __wrappedlibxcbsyncTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbsyncundefs.h b/src/wrapped/generated/wrappedlibxcbsyncundefs.h
index 14b58ac8..0be1a6cd 100644
--- a/src/wrapped/generated/wrappedlibxcbsyncundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbsyncundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbsyncUNDEFS_H_
 #define __wrappedlibxcbsyncUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbtypes.h b/src/wrapped/generated/wrappedlibxcbtypes.h
index 61e03f24..44df68c0 100644
--- a/src/wrapped/generated/wrappedlibxcbtypes.h
+++ b/src/wrapped/generated/wrappedlibxcbtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbTYPES_H_
 #define __wrappedlibxcbTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbundefs.h b/src/wrapped/generated/wrappedlibxcbundefs.h
index 679ee161..73e29a50 100644
--- a/src/wrapped/generated/wrappedlibxcbundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbUNDEFS_H_
 #define __wrappedlibxcbUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbutildefs.h b/src/wrapped/generated/wrappedlibxcbutildefs.h
index 5eaeeaaa..9db8639b 100644
--- a/src/wrapped/generated/wrappedlibxcbutildefs.h
+++ b/src/wrapped/generated/wrappedlibxcbutildefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbutilDEFS_H_
 #define __wrappedlibxcbutilDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbutiltypes.h b/src/wrapped/generated/wrappedlibxcbutiltypes.h
index 5d9e6437..f0bbf43d 100644
--- a/src/wrapped/generated/wrappedlibxcbutiltypes.h
+++ b/src/wrapped/generated/wrappedlibxcbutiltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbutilTYPES_H_
 #define __wrappedlibxcbutilTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbutilundefs.h b/src/wrapped/generated/wrappedlibxcbutilundefs.h
index d1776c6e..21a8362e 100644
--- a/src/wrapped/generated/wrappedlibxcbutilundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbutilundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbutilUNDEFS_H_
 #define __wrappedlibxcbutilUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxfixesdefs.h b/src/wrapped/generated/wrappedlibxcbxfixesdefs.h
index 580a33eb..17d266ab 100644
--- a/src/wrapped/generated/wrappedlibxcbxfixesdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxfixesdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxfixesDEFS_H_
 #define __wrappedlibxcbxfixesDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxfixestypes.h b/src/wrapped/generated/wrappedlibxcbxfixestypes.h
index 4bcc9780..ee9d5714 100644
--- a/src/wrapped/generated/wrappedlibxcbxfixestypes.h
+++ b/src/wrapped/generated/wrappedlibxcbxfixestypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxfixesTYPES_H_
 #define __wrappedlibxcbxfixesTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxfixesundefs.h b/src/wrapped/generated/wrappedlibxcbxfixesundefs.h
index 9976a687..f5422947 100644
--- a/src/wrapped/generated/wrappedlibxcbxfixesundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxfixesundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxfixesUNDEFS_H_
 #define __wrappedlibxcbxfixesUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxineramadefs.h b/src/wrapped/generated/wrappedlibxcbxineramadefs.h
index ad273109..ce8da0a0 100644
--- a/src/wrapped/generated/wrappedlibxcbxineramadefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxineramadefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxineramaDEFS_H_
 #define __wrappedlibxcbxineramaDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxineramatypes.h b/src/wrapped/generated/wrappedlibxcbxineramatypes.h
index 98d9667e..95b263a8 100644
--- a/src/wrapped/generated/wrappedlibxcbxineramatypes.h
+++ b/src/wrapped/generated/wrappedlibxcbxineramatypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxineramaTYPES_H_
 #define __wrappedlibxcbxineramaTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxineramaundefs.h b/src/wrapped/generated/wrappedlibxcbxineramaundefs.h
index 70103e11..d4f053f2 100644
--- a/src/wrapped/generated/wrappedlibxcbxineramaundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxineramaundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxineramaUNDEFS_H_
 #define __wrappedlibxcbxineramaUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxinputdefs.h b/src/wrapped/generated/wrappedlibxcbxinputdefs.h
index 0811efbe..0cffa83b 100644
--- a/src/wrapped/generated/wrappedlibxcbxinputdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxinputdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxinputDEFS_H_
 #define __wrappedlibxcbxinputDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxinputtypes.h b/src/wrapped/generated/wrappedlibxcbxinputtypes.h
index 366fe68c..c4f50505 100644
--- a/src/wrapped/generated/wrappedlibxcbxinputtypes.h
+++ b/src/wrapped/generated/wrappedlibxcbxinputtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxinputTYPES_H_
 #define __wrappedlibxcbxinputTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxinputundefs.h b/src/wrapped/generated/wrappedlibxcbxinputundefs.h
index 8e638afa..9fdcc397 100644
--- a/src/wrapped/generated/wrappedlibxcbxinputundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxinputundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxinputUNDEFS_H_
 #define __wrappedlibxcbxinputUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxkbdefs.h b/src/wrapped/generated/wrappedlibxcbxkbdefs.h
index 21f98e20..8bfe9206 100644
--- a/src/wrapped/generated/wrappedlibxcbxkbdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxkbdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxkbDEFS_H_
 #define __wrappedlibxcbxkbDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxkbtypes.h b/src/wrapped/generated/wrappedlibxcbxkbtypes.h
index cb2f33bd..8a8b36cf 100644
--- a/src/wrapped/generated/wrappedlibxcbxkbtypes.h
+++ b/src/wrapped/generated/wrappedlibxcbxkbtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxkbTYPES_H_
 #define __wrappedlibxcbxkbTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxkbundefs.h b/src/wrapped/generated/wrappedlibxcbxkbundefs.h
index 7fa787a4..68fbc5c8 100644
--- a/src/wrapped/generated/wrappedlibxcbxkbundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxkbundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxkbUNDEFS_H_
 #define __wrappedlibxcbxkbUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxtestdefs.h b/src/wrapped/generated/wrappedlibxcbxtestdefs.h
index a68e8d86..3c0cc193 100644
--- a/src/wrapped/generated/wrappedlibxcbxtestdefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxtestdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxtestDEFS_H_
 #define __wrappedlibxcbxtestDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxtesttypes.h b/src/wrapped/generated/wrappedlibxcbxtesttypes.h
index 3583dd74..9c6baf70 100644
--- a/src/wrapped/generated/wrappedlibxcbxtesttypes.h
+++ b/src/wrapped/generated/wrappedlibxcbxtesttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxtestTYPES_H_
 #define __wrappedlibxcbxtestTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcbxtestundefs.h b/src/wrapped/generated/wrappedlibxcbxtestundefs.h
index 552c01ad..d914996e 100644
--- a/src/wrapped/generated/wrappedlibxcbxtestundefs.h
+++ b/src/wrapped/generated/wrappedlibxcbxtestundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcbxtestUNDEFS_H_
 #define __wrappedlibxcbxtestUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcompositedefs.h b/src/wrapped/generated/wrappedlibxcompositedefs.h
index 4228a448..d4ee2b28 100644
--- a/src/wrapped/generated/wrappedlibxcompositedefs.h
+++ b/src/wrapped/generated/wrappedlibxcompositedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcompositeDEFS_H_
 #define __wrappedlibxcompositeDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcompositetypes.h b/src/wrapped/generated/wrappedlibxcompositetypes.h
index 0cda0e12..b6bd6f39 100644
--- a/src/wrapped/generated/wrappedlibxcompositetypes.h
+++ b/src/wrapped/generated/wrappedlibxcompositetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcompositeTYPES_H_
 #define __wrappedlibxcompositeTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcompositeundefs.h b/src/wrapped/generated/wrappedlibxcompositeundefs.h
index 98be8e62..18b0a1a5 100644
--- a/src/wrapped/generated/wrappedlibxcompositeundefs.h
+++ b/src/wrapped/generated/wrappedlibxcompositeundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcompositeUNDEFS_H_
 #define __wrappedlibxcompositeUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcursordefs.h b/src/wrapped/generated/wrappedlibxcursordefs.h
index 1394578d..ff65d89a 100644
--- a/src/wrapped/generated/wrappedlibxcursordefs.h
+++ b/src/wrapped/generated/wrappedlibxcursordefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcursorDEFS_H_
 #define __wrappedlibxcursorDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxcursortypes.h b/src/wrapped/generated/wrappedlibxcursortypes.h
index cb21afd2..ec5a698a 100644
--- a/src/wrapped/generated/wrappedlibxcursortypes.h
+++ b/src/wrapped/generated/wrappedlibxcursortypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcursorTYPES_H_
 #define __wrappedlibxcursorTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxcursorundefs.h b/src/wrapped/generated/wrappedlibxcursorundefs.h
index e64c2503..58ac2dad 100644
--- a/src/wrapped/generated/wrappedlibxcursorundefs.h
+++ b/src/wrapped/generated/wrappedlibxcursorundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxcursorUNDEFS_H_
 #define __wrappedlibxcursorUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxdamagedefs.h b/src/wrapped/generated/wrappedlibxdamagedefs.h
index f9ffdd4e..9e2b0859 100644
--- a/src/wrapped/generated/wrappedlibxdamagedefs.h
+++ b/src/wrapped/generated/wrappedlibxdamagedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxdamageDEFS_H_
 #define __wrappedlibxdamageDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxdamagetypes.h b/src/wrapped/generated/wrappedlibxdamagetypes.h
index 4aa79cfc..49b77975 100644
--- a/src/wrapped/generated/wrappedlibxdamagetypes.h
+++ b/src/wrapped/generated/wrappedlibxdamagetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxdamageTYPES_H_
 #define __wrappedlibxdamageTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxdamageundefs.h b/src/wrapped/generated/wrappedlibxdamageundefs.h
index 3a0c70eb..df52ab20 100644
--- a/src/wrapped/generated/wrappedlibxdamageundefs.h
+++ b/src/wrapped/generated/wrappedlibxdamageundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxdamageUNDEFS_H_
 #define __wrappedlibxdamageUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxdmcpdefs.h b/src/wrapped/generated/wrappedlibxdmcpdefs.h
index df3bff9b..e8b79847 100644
--- a/src/wrapped/generated/wrappedlibxdmcpdefs.h
+++ b/src/wrapped/generated/wrappedlibxdmcpdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxdmcpDEFS_H_
 #define __wrappedlibxdmcpDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxdmcptypes.h b/src/wrapped/generated/wrappedlibxdmcptypes.h
index fec3d45d..72085512 100644
--- a/src/wrapped/generated/wrappedlibxdmcptypes.h
+++ b/src/wrapped/generated/wrappedlibxdmcptypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxdmcpTYPES_H_
 #define __wrappedlibxdmcpTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxdmcpundefs.h b/src/wrapped/generated/wrappedlibxdmcpundefs.h
index 9158ebe6..af18a05e 100644
--- a/src/wrapped/generated/wrappedlibxdmcpundefs.h
+++ b/src/wrapped/generated/wrappedlibxdmcpundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxdmcpUNDEFS_H_
 #define __wrappedlibxdmcpUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxextdefs.h b/src/wrapped/generated/wrappedlibxextdefs.h
index f10ce9b7..fbb5b4ed 100644
--- a/src/wrapped/generated/wrappedlibxextdefs.h
+++ b/src/wrapped/generated/wrappedlibxextdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxextDEFS_H_
 #define __wrappedlibxextDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxexttypes.h b/src/wrapped/generated/wrappedlibxexttypes.h
index 75f71c1d..b8e1ec5d 100644
--- a/src/wrapped/generated/wrappedlibxexttypes.h
+++ b/src/wrapped/generated/wrappedlibxexttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxextTYPES_H_
 #define __wrappedlibxextTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxextundefs.h b/src/wrapped/generated/wrappedlibxextundefs.h
index f80c8e02..2d5e227d 100644
--- a/src/wrapped/generated/wrappedlibxextundefs.h
+++ b/src/wrapped/generated/wrappedlibxextundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxextUNDEFS_H_
 #define __wrappedlibxextUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxfixesdefs.h b/src/wrapped/generated/wrappedlibxfixesdefs.h
index 71736ae8..1d30a1be 100644
--- a/src/wrapped/generated/wrappedlibxfixesdefs.h
+++ b/src/wrapped/generated/wrappedlibxfixesdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxfixesDEFS_H_
 #define __wrappedlibxfixesDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxfixestypes.h b/src/wrapped/generated/wrappedlibxfixestypes.h
index 38ebb612..855dbece 100644
--- a/src/wrapped/generated/wrappedlibxfixestypes.h
+++ b/src/wrapped/generated/wrappedlibxfixestypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxfixesTYPES_H_
 #define __wrappedlibxfixesTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxfixesundefs.h b/src/wrapped/generated/wrappedlibxfixesundefs.h
index a6c33724..0cebf98f 100644
--- a/src/wrapped/generated/wrappedlibxfixesundefs.h
+++ b/src/wrapped/generated/wrappedlibxfixesundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxfixesUNDEFS_H_
 #define __wrappedlibxfixesUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxftdefs.h b/src/wrapped/generated/wrappedlibxftdefs.h
index bce3a592..a0bb91d9 100644
--- a/src/wrapped/generated/wrappedlibxftdefs.h
+++ b/src/wrapped/generated/wrappedlibxftdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxftDEFS_H_
 #define __wrappedlibxftDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxfttypes.h b/src/wrapped/generated/wrappedlibxfttypes.h
index f2a1391a..85d9e4f0 100644
--- a/src/wrapped/generated/wrappedlibxfttypes.h
+++ b/src/wrapped/generated/wrappedlibxfttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxftTYPES_H_
 #define __wrappedlibxftTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxftundefs.h b/src/wrapped/generated/wrappedlibxftundefs.h
index 04b418cf..21ad8824 100644
--- a/src/wrapped/generated/wrappedlibxftundefs.h
+++ b/src/wrapped/generated/wrappedlibxftundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxftUNDEFS_H_
 #define __wrappedlibxftUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxidefs.h b/src/wrapped/generated/wrappedlibxidefs.h
index 685eb51a..1913040f 100644
--- a/src/wrapped/generated/wrappedlibxidefs.h
+++ b/src/wrapped/generated/wrappedlibxidefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxiDEFS_H_
 #define __wrappedlibxiDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxitypes.h b/src/wrapped/generated/wrappedlibxitypes.h
index fc4bcdd7..135510ee 100644
--- a/src/wrapped/generated/wrappedlibxitypes.h
+++ b/src/wrapped/generated/wrappedlibxitypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxiTYPES_H_
 #define __wrappedlibxiTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxiundefs.h b/src/wrapped/generated/wrappedlibxiundefs.h
index 0278ade6..abb1a099 100644
--- a/src/wrapped/generated/wrappedlibxiundefs.h
+++ b/src/wrapped/generated/wrappedlibxiundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxiUNDEFS_H_
 #define __wrappedlibxiUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxmudefs.h b/src/wrapped/generated/wrappedlibxmudefs.h
index 22d0c803..800af8a8 100644
--- a/src/wrapped/generated/wrappedlibxmudefs.h
+++ b/src/wrapped/generated/wrappedlibxmudefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxmuDEFS_H_
 #define __wrappedlibxmuDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxmutypes.h b/src/wrapped/generated/wrappedlibxmutypes.h
index 4661c307..0a4fd97a 100644
--- a/src/wrapped/generated/wrappedlibxmutypes.h
+++ b/src/wrapped/generated/wrappedlibxmutypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxmuTYPES_H_
 #define __wrappedlibxmuTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxmuundefs.h b/src/wrapped/generated/wrappedlibxmuundefs.h
index 9539c36c..f60f6ae0 100644
--- a/src/wrapped/generated/wrappedlibxmuundefs.h
+++ b/src/wrapped/generated/wrappedlibxmuundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxmuUNDEFS_H_
 #define __wrappedlibxmuUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxpmdefs.h b/src/wrapped/generated/wrappedlibxpmdefs.h
index df70f671..5148905a 100644
--- a/src/wrapped/generated/wrappedlibxpmdefs.h
+++ b/src/wrapped/generated/wrappedlibxpmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxpmDEFS_H_
 #define __wrappedlibxpmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxpmtypes.h b/src/wrapped/generated/wrappedlibxpmtypes.h
index d2e9f2c4..e2021373 100644
--- a/src/wrapped/generated/wrappedlibxpmtypes.h
+++ b/src/wrapped/generated/wrappedlibxpmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxpmTYPES_H_
 #define __wrappedlibxpmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxpmundefs.h b/src/wrapped/generated/wrappedlibxpmundefs.h
index 895939f1..d77caa76 100644
--- a/src/wrapped/generated/wrappedlibxpmundefs.h
+++ b/src/wrapped/generated/wrappedlibxpmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxpmUNDEFS_H_
 #define __wrappedlibxpmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxpresentdefs.h b/src/wrapped/generated/wrappedlibxpresentdefs.h
index de654739..9d704b70 100644
--- a/src/wrapped/generated/wrappedlibxpresentdefs.h
+++ b/src/wrapped/generated/wrappedlibxpresentdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxpresentDEFS_H_
 #define __wrappedlibxpresentDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxpresenttypes.h b/src/wrapped/generated/wrappedlibxpresenttypes.h
index b5cc5243..7817a24a 100644
--- a/src/wrapped/generated/wrappedlibxpresenttypes.h
+++ b/src/wrapped/generated/wrappedlibxpresenttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxpresentTYPES_H_
 #define __wrappedlibxpresentTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxpresentundefs.h b/src/wrapped/generated/wrappedlibxpresentundefs.h
index c22f0993..0511657d 100644
--- a/src/wrapped/generated/wrappedlibxpresentundefs.h
+++ b/src/wrapped/generated/wrappedlibxpresentundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxpresentUNDEFS_H_
 #define __wrappedlibxpresentUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxrandrdefs.h b/src/wrapped/generated/wrappedlibxrandrdefs.h
index 1f94ada8..845d0f81 100644
--- a/src/wrapped/generated/wrappedlibxrandrdefs.h
+++ b/src/wrapped/generated/wrappedlibxrandrdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxrandrDEFS_H_
 #define __wrappedlibxrandrDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxrandrtypes.h b/src/wrapped/generated/wrappedlibxrandrtypes.h
index d50c72ff..3a6d9825 100644
--- a/src/wrapped/generated/wrappedlibxrandrtypes.h
+++ b/src/wrapped/generated/wrappedlibxrandrtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxrandrTYPES_H_
 #define __wrappedlibxrandrTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxrandrundefs.h b/src/wrapped/generated/wrappedlibxrandrundefs.h
index f353738f..24e48dfe 100644
--- a/src/wrapped/generated/wrappedlibxrandrundefs.h
+++ b/src/wrapped/generated/wrappedlibxrandrundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxrandrUNDEFS_H_
 #define __wrappedlibxrandrUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxrenderdefs.h b/src/wrapped/generated/wrappedlibxrenderdefs.h
index d4360e47..cfd28a74 100644
--- a/src/wrapped/generated/wrappedlibxrenderdefs.h
+++ b/src/wrapped/generated/wrappedlibxrenderdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxrenderDEFS_H_
 #define __wrappedlibxrenderDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxrendertypes.h b/src/wrapped/generated/wrappedlibxrendertypes.h
index 3cc99069..c35d2e83 100644
--- a/src/wrapped/generated/wrappedlibxrendertypes.h
+++ b/src/wrapped/generated/wrappedlibxrendertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxrenderTYPES_H_
 #define __wrappedlibxrenderTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxrenderundefs.h b/src/wrapped/generated/wrappedlibxrenderundefs.h
index 23a53a4c..7af5ff6d 100644
--- a/src/wrapped/generated/wrappedlibxrenderundefs.h
+++ b/src/wrapped/generated/wrappedlibxrenderundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxrenderUNDEFS_H_
 #define __wrappedlibxrenderUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxssdefs.h b/src/wrapped/generated/wrappedlibxssdefs.h
index b9eb4edb..0d2028da 100644
--- a/src/wrapped/generated/wrappedlibxssdefs.h
+++ b/src/wrapped/generated/wrappedlibxssdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxssDEFS_H_
 #define __wrappedlibxssDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxsstypes.h b/src/wrapped/generated/wrappedlibxsstypes.h
index a7e0e255..b29b9cf7 100644
--- a/src/wrapped/generated/wrappedlibxsstypes.h
+++ b/src/wrapped/generated/wrappedlibxsstypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxssTYPES_H_
 #define __wrappedlibxssTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxssundefs.h b/src/wrapped/generated/wrappedlibxssundefs.h
index 0fd1e949..7e0f7512 100644
--- a/src/wrapped/generated/wrappedlibxssundefs.h
+++ b/src/wrapped/generated/wrappedlibxssundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxssUNDEFS_H_
 #define __wrappedlibxssUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxtdefs.h b/src/wrapped/generated/wrappedlibxtdefs.h
index 60eff6d3..ac0a1c26 100644
--- a/src/wrapped/generated/wrappedlibxtdefs.h
+++ b/src/wrapped/generated/wrappedlibxtdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxtDEFS_H_
 #define __wrappedlibxtDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxtstdefs.h b/src/wrapped/generated/wrappedlibxtstdefs.h
index fa195cba..cfe3b4f9 100644
--- a/src/wrapped/generated/wrappedlibxtstdefs.h
+++ b/src/wrapped/generated/wrappedlibxtstdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxtstDEFS_H_
 #define __wrappedlibxtstDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxtsttypes.h b/src/wrapped/generated/wrappedlibxtsttypes.h
index f7cac5a2..f6ea0780 100644
--- a/src/wrapped/generated/wrappedlibxtsttypes.h
+++ b/src/wrapped/generated/wrappedlibxtsttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxtstTYPES_H_
 #define __wrappedlibxtstTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxtstundefs.h b/src/wrapped/generated/wrappedlibxtstundefs.h
index 2e5eec46..6c03f68f 100644
--- a/src/wrapped/generated/wrappedlibxtstundefs.h
+++ b/src/wrapped/generated/wrappedlibxtstundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxtstUNDEFS_H_
 #define __wrappedlibxtstUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxttypes.h b/src/wrapped/generated/wrappedlibxttypes.h
index bfa25435..354df5dc 100644
--- a/src/wrapped/generated/wrappedlibxttypes.h
+++ b/src/wrapped/generated/wrappedlibxttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxtTYPES_H_
 #define __wrappedlibxtTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxtundefs.h b/src/wrapped/generated/wrappedlibxtundefs.h
index 04d8349d..178faf66 100644
--- a/src/wrapped/generated/wrappedlibxtundefs.h
+++ b/src/wrapped/generated/wrappedlibxtundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxtUNDEFS_H_
 #define __wrappedlibxtUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxxf86vmdefs.h b/src/wrapped/generated/wrappedlibxxf86vmdefs.h
index 04dc5139..4e40aa11 100644
--- a/src/wrapped/generated/wrappedlibxxf86vmdefs.h
+++ b/src/wrapped/generated/wrappedlibxxf86vmdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxxf86vmDEFS_H_
 #define __wrappedlibxxf86vmDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibxxf86vmtypes.h b/src/wrapped/generated/wrappedlibxxf86vmtypes.h
index fb1b4ee4..f6ad5d57 100644
--- a/src/wrapped/generated/wrappedlibxxf86vmtypes.h
+++ b/src/wrapped/generated/wrappedlibxxf86vmtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxxf86vmTYPES_H_
 #define __wrappedlibxxf86vmTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibxxf86vmundefs.h b/src/wrapped/generated/wrappedlibxxf86vmundefs.h
index 836a2db4..efbf6be8 100644
--- a/src/wrapped/generated/wrappedlibxxf86vmundefs.h
+++ b/src/wrapped/generated/wrappedlibxxf86vmundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibxxf86vmUNDEFS_H_
 #define __wrappedlibxxf86vmUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibzdefs.h b/src/wrapped/generated/wrappedlibzdefs.h
index 8d486b81..ae5dd593 100644
--- a/src/wrapped/generated/wrappedlibzdefs.h
+++ b/src/wrapped/generated/wrappedlibzdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibzDEFS_H_
 #define __wrappedlibzDEFS_H_
diff --git a/src/wrapped/generated/wrappedlibztypes.h b/src/wrapped/generated/wrappedlibztypes.h
index 49e8dc90..2af79058 100644
--- a/src/wrapped/generated/wrappedlibztypes.h
+++ b/src/wrapped/generated/wrappedlibztypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibzTYPES_H_
 #define __wrappedlibzTYPES_H_
diff --git a/src/wrapped/generated/wrappedlibzundefs.h b/src/wrapped/generated/wrappedlibzundefs.h
index 72708785..a4b90b85 100644
--- a/src/wrapped/generated/wrappedlibzundefs.h
+++ b/src/wrapped/generated/wrappedlibzundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlibzUNDEFS_H_
 #define __wrappedlibzUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedlzmadefs.h b/src/wrapped/generated/wrappedlzmadefs.h
index 7d2830d1..c62e1836 100644
--- a/src/wrapped/generated/wrappedlzmadefs.h
+++ b/src/wrapped/generated/wrappedlzmadefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlzmaDEFS_H_
 #define __wrappedlzmaDEFS_H_
diff --git a/src/wrapped/generated/wrappedlzmatypes.h b/src/wrapped/generated/wrappedlzmatypes.h
index da923ef2..a6853ba5 100644
--- a/src/wrapped/generated/wrappedlzmatypes.h
+++ b/src/wrapped/generated/wrappedlzmatypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlzmaTYPES_H_
 #define __wrappedlzmaTYPES_H_
diff --git a/src/wrapped/generated/wrappedlzmaundefs.h b/src/wrapped/generated/wrappedlzmaundefs.h
index c50459a9..d77484ca 100644
--- a/src/wrapped/generated/wrappedlzmaundefs.h
+++ b/src/wrapped/generated/wrappedlzmaundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedlzmaUNDEFS_H_
 #define __wrappedlzmaUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedmpg123defs.h b/src/wrapped/generated/wrappedmpg123defs.h
index 0a797a11..f83bd201 100644
--- a/src/wrapped/generated/wrappedmpg123defs.h
+++ b/src/wrapped/generated/wrappedmpg123defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedmpg123DEFS_H_
 #define __wrappedmpg123DEFS_H_
diff --git a/src/wrapped/generated/wrappedmpg123types.h b/src/wrapped/generated/wrappedmpg123types.h
index 6f65c02f..e2cf6352 100644
--- a/src/wrapped/generated/wrappedmpg123types.h
+++ b/src/wrapped/generated/wrappedmpg123types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedmpg123TYPES_H_
 #define __wrappedmpg123TYPES_H_
diff --git a/src/wrapped/generated/wrappedmpg123undefs.h b/src/wrapped/generated/wrappedmpg123undefs.h
index f243812b..7e2c120e 100644
--- a/src/wrapped/generated/wrappedmpg123undefs.h
+++ b/src/wrapped/generated/wrappedmpg123undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedmpg123UNDEFS_H_
 #define __wrappedmpg123UNDEFS_H_
diff --git a/src/wrapped/generated/wrappednotifydefs.h b/src/wrapped/generated/wrappednotifydefs.h
index 57f99943..62406def 100644
--- a/src/wrapped/generated/wrappednotifydefs.h
+++ b/src/wrapped/generated/wrappednotifydefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednotifyDEFS_H_
 #define __wrappednotifyDEFS_H_
diff --git a/src/wrapped/generated/wrappednotifytypes.h b/src/wrapped/generated/wrappednotifytypes.h
index 4c470cba..6f9e6ba0 100644
--- a/src/wrapped/generated/wrappednotifytypes.h
+++ b/src/wrapped/generated/wrappednotifytypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednotifyTYPES_H_
 #define __wrappednotifyTYPES_H_
diff --git a/src/wrapped/generated/wrappednotifyundefs.h b/src/wrapped/generated/wrappednotifyundefs.h
index b9e8effb..f9fe753f 100644
--- a/src/wrapped/generated/wrappednotifyundefs.h
+++ b/src/wrapped/generated/wrappednotifyundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednotifyUNDEFS_H_
 #define __wrappednotifyUNDEFS_H_
diff --git a/src/wrapped/generated/wrappednsldefs.h b/src/wrapped/generated/wrappednsldefs.h
index ba88d8a3..0bff5c1b 100644
--- a/src/wrapped/generated/wrappednsldefs.h
+++ b/src/wrapped/generated/wrappednsldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednslDEFS_H_
 #define __wrappednslDEFS_H_
diff --git a/src/wrapped/generated/wrappednsltypes.h b/src/wrapped/generated/wrappednsltypes.h
index 12a6ff94..7e4e5880 100644
--- a/src/wrapped/generated/wrappednsltypes.h
+++ b/src/wrapped/generated/wrappednsltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednslTYPES_H_
 #define __wrappednslTYPES_H_
diff --git a/src/wrapped/generated/wrappednslundefs.h b/src/wrapped/generated/wrappednslundefs.h
index a0380d7b..40adacbf 100644
--- a/src/wrapped/generated/wrappednslundefs.h
+++ b/src/wrapped/generated/wrappednslundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednslUNDEFS_H_
 #define __wrappednslUNDEFS_H_
diff --git a/src/wrapped/generated/wrappednspr4defs.h b/src/wrapped/generated/wrappednspr4defs.h
index fe8445a6..acd5c4df 100644
--- a/src/wrapped/generated/wrappednspr4defs.h
+++ b/src/wrapped/generated/wrappednspr4defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednspr4DEFS_H_
 #define __wrappednspr4DEFS_H_
diff --git a/src/wrapped/generated/wrappednspr4types.h b/src/wrapped/generated/wrappednspr4types.h
index d61c83f1..47501ba8 100644
--- a/src/wrapped/generated/wrappednspr4types.h
+++ b/src/wrapped/generated/wrappednspr4types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednspr4TYPES_H_
 #define __wrappednspr4TYPES_H_
diff --git a/src/wrapped/generated/wrappednspr4undefs.h b/src/wrapped/generated/wrappednspr4undefs.h
index 39cb34c4..5270d0ef 100644
--- a/src/wrapped/generated/wrappednspr4undefs.h
+++ b/src/wrapped/generated/wrappednspr4undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednspr4UNDEFS_H_
 #define __wrappednspr4UNDEFS_H_
diff --git a/src/wrapped/generated/wrappednss3defs.h b/src/wrapped/generated/wrappednss3defs.h
index 7df348cb..b4bb82d3 100644
--- a/src/wrapped/generated/wrappednss3defs.h
+++ b/src/wrapped/generated/wrappednss3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednss3DEFS_H_
 #define __wrappednss3DEFS_H_
diff --git a/src/wrapped/generated/wrappednss3types.h b/src/wrapped/generated/wrappednss3types.h
index cdc8a875..3b374665 100644
--- a/src/wrapped/generated/wrappednss3types.h
+++ b/src/wrapped/generated/wrappednss3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednss3TYPES_H_
 #define __wrappednss3TYPES_H_
diff --git a/src/wrapped/generated/wrappednss3undefs.h b/src/wrapped/generated/wrappednss3undefs.h
index 19e156eb..7d7f8f8c 100644
--- a/src/wrapped/generated/wrappednss3undefs.h
+++ b/src/wrapped/generated/wrappednss3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednss3UNDEFS_H_
 #define __wrappednss3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappednssutil3defs.h b/src/wrapped/generated/wrappednssutil3defs.h
index bcaf6bc0..163b0f6a 100644
--- a/src/wrapped/generated/wrappednssutil3defs.h
+++ b/src/wrapped/generated/wrappednssutil3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednssutil3DEFS_H_
 #define __wrappednssutil3DEFS_H_
diff --git a/src/wrapped/generated/wrappednssutil3types.h b/src/wrapped/generated/wrappednssutil3types.h
index 4e0b0e48..239f2eb3 100644
--- a/src/wrapped/generated/wrappednssutil3types.h
+++ b/src/wrapped/generated/wrappednssutil3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednssutil3TYPES_H_
 #define __wrappednssutil3TYPES_H_
diff --git a/src/wrapped/generated/wrappednssutil3undefs.h b/src/wrapped/generated/wrappednssutil3undefs.h
index c5d687e0..a15abd45 100644
--- a/src/wrapped/generated/wrappednssutil3undefs.h
+++ b/src/wrapped/generated/wrappednssutil3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappednssutil3UNDEFS_H_
 #define __wrappednssutil3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedopenaldefs.h b/src/wrapped/generated/wrappedopenaldefs.h
index f49934b9..fef536a2 100644
--- a/src/wrapped/generated/wrappedopenaldefs.h
+++ b/src/wrapped/generated/wrappedopenaldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedopenalDEFS_H_
 #define __wrappedopenalDEFS_H_
diff --git a/src/wrapped/generated/wrappedopenaltypes.h b/src/wrapped/generated/wrappedopenaltypes.h
index 1bd88ca3..33f4403d 100644
--- a/src/wrapped/generated/wrappedopenaltypes.h
+++ b/src/wrapped/generated/wrappedopenaltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedopenalTYPES_H_
 #define __wrappedopenalTYPES_H_
diff --git a/src/wrapped/generated/wrappedopenalundefs.h b/src/wrapped/generated/wrappedopenalundefs.h
index 020eec65..978152b9 100644
--- a/src/wrapped/generated/wrappedopenalundefs.h
+++ b/src/wrapped/generated/wrappedopenalundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedopenalUNDEFS_H_
 #define __wrappedopenalUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedopencldefs.h b/src/wrapped/generated/wrappedopencldefs.h
index 2536f0ff..93f2321a 100644
--- a/src/wrapped/generated/wrappedopencldefs.h
+++ b/src/wrapped/generated/wrappedopencldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedopenclDEFS_H_
 #define __wrappedopenclDEFS_H_
diff --git a/src/wrapped/generated/wrappedopencltypes.h b/src/wrapped/generated/wrappedopencltypes.h
index f631b04b..9a28f3a2 100644
--- a/src/wrapped/generated/wrappedopencltypes.h
+++ b/src/wrapped/generated/wrappedopencltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedopenclTYPES_H_
 #define __wrappedopenclTYPES_H_
diff --git a/src/wrapped/generated/wrappedopenclundefs.h b/src/wrapped/generated/wrappedopenclundefs.h
index 282406b5..a07ea0ab 100644
--- a/src/wrapped/generated/wrappedopenclundefs.h
+++ b/src/wrapped/generated/wrappedopenclundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedopenclUNDEFS_H_
 #define __wrappedopenclUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedp11kitdefs.h b/src/wrapped/generated/wrappedp11kitdefs.h
index ec4bd05c..527d5e96 100644
--- a/src/wrapped/generated/wrappedp11kitdefs.h
+++ b/src/wrapped/generated/wrappedp11kitdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedp11kitDEFS_H_
 #define __wrappedp11kitDEFS_H_
diff --git a/src/wrapped/generated/wrappedp11kittypes.h b/src/wrapped/generated/wrappedp11kittypes.h
index 46e988c8..d94f3b95 100644
--- a/src/wrapped/generated/wrappedp11kittypes.h
+++ b/src/wrapped/generated/wrappedp11kittypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedp11kitTYPES_H_
 #define __wrappedp11kitTYPES_H_
diff --git a/src/wrapped/generated/wrappedp11kitundefs.h b/src/wrapped/generated/wrappedp11kitundefs.h
index 38b4ca53..8074f91f 100644
--- a/src/wrapped/generated/wrappedp11kitundefs.h
+++ b/src/wrapped/generated/wrappedp11kitundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedp11kitUNDEFS_H_
 #define __wrappedp11kitUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpamdefs.h b/src/wrapped/generated/wrappedpamdefs.h
index 31a659b9..fa896a00 100644
--- a/src/wrapped/generated/wrappedpamdefs.h
+++ b/src/wrapped/generated/wrappedpamdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpamDEFS_H_
 #define __wrappedpamDEFS_H_
diff --git a/src/wrapped/generated/wrappedpamtypes.h b/src/wrapped/generated/wrappedpamtypes.h
index 98b7782e..3328e356 100644
--- a/src/wrapped/generated/wrappedpamtypes.h
+++ b/src/wrapped/generated/wrappedpamtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpamTYPES_H_
 #define __wrappedpamTYPES_H_
diff --git a/src/wrapped/generated/wrappedpamundefs.h b/src/wrapped/generated/wrappedpamundefs.h
index 092a7b67..bd22bc16 100644
--- a/src/wrapped/generated/wrappedpamundefs.h
+++ b/src/wrapped/generated/wrappedpamundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpamUNDEFS_H_
 #define __wrappedpamUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpangocairodefs.h b/src/wrapped/generated/wrappedpangocairodefs.h
index b552e7f5..1db27b48 100644
--- a/src/wrapped/generated/wrappedpangocairodefs.h
+++ b/src/wrapped/generated/wrappedpangocairodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangocairoDEFS_H_
 #define __wrappedpangocairoDEFS_H_
diff --git a/src/wrapped/generated/wrappedpangocairotypes.h b/src/wrapped/generated/wrappedpangocairotypes.h
index c2462c1b..6bfc8769 100644
--- a/src/wrapped/generated/wrappedpangocairotypes.h
+++ b/src/wrapped/generated/wrappedpangocairotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangocairoTYPES_H_
 #define __wrappedpangocairoTYPES_H_
diff --git a/src/wrapped/generated/wrappedpangocairoundefs.h b/src/wrapped/generated/wrappedpangocairoundefs.h
index 40d338a0..c7085728 100644
--- a/src/wrapped/generated/wrappedpangocairoundefs.h
+++ b/src/wrapped/generated/wrappedpangocairoundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangocairoUNDEFS_H_
 #define __wrappedpangocairoUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpangodefs.h b/src/wrapped/generated/wrappedpangodefs.h
index a7e8d0c1..f2a1984d 100644
--- a/src/wrapped/generated/wrappedpangodefs.h
+++ b/src/wrapped/generated/wrappedpangodefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangoDEFS_H_
 #define __wrappedpangoDEFS_H_
diff --git a/src/wrapped/generated/wrappedpangoft2defs.h b/src/wrapped/generated/wrappedpangoft2defs.h
index c987b41f..7083edaf 100644
--- a/src/wrapped/generated/wrappedpangoft2defs.h
+++ b/src/wrapped/generated/wrappedpangoft2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangoft2DEFS_H_
 #define __wrappedpangoft2DEFS_H_
diff --git a/src/wrapped/generated/wrappedpangoft2types.h b/src/wrapped/generated/wrappedpangoft2types.h
index 616fc38a..04678d8a 100644
--- a/src/wrapped/generated/wrappedpangoft2types.h
+++ b/src/wrapped/generated/wrappedpangoft2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangoft2TYPES_H_
 #define __wrappedpangoft2TYPES_H_
diff --git a/src/wrapped/generated/wrappedpangoft2undefs.h b/src/wrapped/generated/wrappedpangoft2undefs.h
index 941a16a7..1ff51b54 100644
--- a/src/wrapped/generated/wrappedpangoft2undefs.h
+++ b/src/wrapped/generated/wrappedpangoft2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangoft2UNDEFS_H_
 #define __wrappedpangoft2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpangotypes.h b/src/wrapped/generated/wrappedpangotypes.h
index d874436c..f745705e 100644
--- a/src/wrapped/generated/wrappedpangotypes.h
+++ b/src/wrapped/generated/wrappedpangotypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangoTYPES_H_
 #define __wrappedpangoTYPES_H_
diff --git a/src/wrapped/generated/wrappedpangoundefs.h b/src/wrapped/generated/wrappedpangoundefs.h
index ffe11184..5761812e 100644
--- a/src/wrapped/generated/wrappedpangoundefs.h
+++ b/src/wrapped/generated/wrappedpangoundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpangoUNDEFS_H_
 #define __wrappedpangoUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedplc4defs.h b/src/wrapped/generated/wrappedplc4defs.h
index ba22678e..aa0cc8d0 100644
--- a/src/wrapped/generated/wrappedplc4defs.h
+++ b/src/wrapped/generated/wrappedplc4defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedplc4DEFS_H_
 #define __wrappedplc4DEFS_H_
diff --git a/src/wrapped/generated/wrappedplc4types.h b/src/wrapped/generated/wrappedplc4types.h
index 5ca8ff94..6167c6ee 100644
--- a/src/wrapped/generated/wrappedplc4types.h
+++ b/src/wrapped/generated/wrappedplc4types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedplc4TYPES_H_
 #define __wrappedplc4TYPES_H_
diff --git a/src/wrapped/generated/wrappedplc4undefs.h b/src/wrapped/generated/wrappedplc4undefs.h
index 3da2719b..673dcbb2 100644
--- a/src/wrapped/generated/wrappedplc4undefs.h
+++ b/src/wrapped/generated/wrappedplc4undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedplc4UNDEFS_H_
 #define __wrappedplc4UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedplds4defs.h b/src/wrapped/generated/wrappedplds4defs.h
index c0620741..45fad0ec 100644
--- a/src/wrapped/generated/wrappedplds4defs.h
+++ b/src/wrapped/generated/wrappedplds4defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedplds4DEFS_H_
 #define __wrappedplds4DEFS_H_
diff --git a/src/wrapped/generated/wrappedplds4types.h b/src/wrapped/generated/wrappedplds4types.h
index aaf83eb9..462311ce 100644
--- a/src/wrapped/generated/wrappedplds4types.h
+++ b/src/wrapped/generated/wrappedplds4types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedplds4TYPES_H_
 #define __wrappedplds4TYPES_H_
diff --git a/src/wrapped/generated/wrappedplds4undefs.h b/src/wrapped/generated/wrappedplds4undefs.h
index 9d0868f9..6e56852f 100644
--- a/src/wrapped/generated/wrappedplds4undefs.h
+++ b/src/wrapped/generated/wrappedplds4undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedplds4UNDEFS_H_
 #define __wrappedplds4UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpng16defs.h b/src/wrapped/generated/wrappedpng16defs.h
index 11d1e26a..9dc16f6a 100644
--- a/src/wrapped/generated/wrappedpng16defs.h
+++ b/src/wrapped/generated/wrappedpng16defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpng16DEFS_H_
 #define __wrappedpng16DEFS_H_
diff --git a/src/wrapped/generated/wrappedpng16types.h b/src/wrapped/generated/wrappedpng16types.h
index 367c19e4..282ab6a3 100644
--- a/src/wrapped/generated/wrappedpng16types.h
+++ b/src/wrapped/generated/wrappedpng16types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpng16TYPES_H_
 #define __wrappedpng16TYPES_H_
diff --git a/src/wrapped/generated/wrappedpng16undefs.h b/src/wrapped/generated/wrappedpng16undefs.h
index bbe21245..83d017e5 100644
--- a/src/wrapped/generated/wrappedpng16undefs.h
+++ b/src/wrapped/generated/wrappedpng16undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpng16UNDEFS_H_
 #define __wrappedpng16UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpsl5defs.h b/src/wrapped/generated/wrappedpsl5defs.h
index 274c347d..0bdfd9a0 100644
--- a/src/wrapped/generated/wrappedpsl5defs.h
+++ b/src/wrapped/generated/wrappedpsl5defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpsl5DEFS_H_
 #define __wrappedpsl5DEFS_H_
diff --git a/src/wrapped/generated/wrappedpsl5types.h b/src/wrapped/generated/wrappedpsl5types.h
index 44310fa3..914eedef 100644
--- a/src/wrapped/generated/wrappedpsl5types.h
+++ b/src/wrapped/generated/wrappedpsl5types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpsl5TYPES_H_
 #define __wrappedpsl5TYPES_H_
diff --git a/src/wrapped/generated/wrappedpsl5undefs.h b/src/wrapped/generated/wrappedpsl5undefs.h
index 0db6f2e0..a9c9dbb4 100644
--- a/src/wrapped/generated/wrappedpsl5undefs.h
+++ b/src/wrapped/generated/wrappedpsl5undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpsl5UNDEFS_H_
 #define __wrappedpsl5UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpulsedefs.h b/src/wrapped/generated/wrappedpulsedefs.h
index 1562e319..16a6b492 100644
--- a/src/wrapped/generated/wrappedpulsedefs.h
+++ b/src/wrapped/generated/wrappedpulsedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulseDEFS_H_
 #define __wrappedpulseDEFS_H_
diff --git a/src/wrapped/generated/wrappedpulsemainloopglibdefs.h b/src/wrapped/generated/wrappedpulsemainloopglibdefs.h
index 41195f93..e34537ea 100644
--- a/src/wrapped/generated/wrappedpulsemainloopglibdefs.h
+++ b/src/wrapped/generated/wrappedpulsemainloopglibdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulsemainloopglibDEFS_H_
 #define __wrappedpulsemainloopglibDEFS_H_
diff --git a/src/wrapped/generated/wrappedpulsemainloopglibtypes.h b/src/wrapped/generated/wrappedpulsemainloopglibtypes.h
index f5d96cf0..cd536c9b 100644
--- a/src/wrapped/generated/wrappedpulsemainloopglibtypes.h
+++ b/src/wrapped/generated/wrappedpulsemainloopglibtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulsemainloopglibTYPES_H_
 #define __wrappedpulsemainloopglibTYPES_H_
diff --git a/src/wrapped/generated/wrappedpulsemainloopglibundefs.h b/src/wrapped/generated/wrappedpulsemainloopglibundefs.h
index d70aa31e..b00c51b1 100644
--- a/src/wrapped/generated/wrappedpulsemainloopglibundefs.h
+++ b/src/wrapped/generated/wrappedpulsemainloopglibundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulsemainloopglibUNDEFS_H_
 #define __wrappedpulsemainloopglibUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpulsesimpledefs.h b/src/wrapped/generated/wrappedpulsesimpledefs.h
index 30e5fbe7..0bb9c602 100644
--- a/src/wrapped/generated/wrappedpulsesimpledefs.h
+++ b/src/wrapped/generated/wrappedpulsesimpledefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulsesimpleDEFS_H_
 #define __wrappedpulsesimpleDEFS_H_
diff --git a/src/wrapped/generated/wrappedpulsesimpletypes.h b/src/wrapped/generated/wrappedpulsesimpletypes.h
index 2a463851..f8a7e48e 100644
--- a/src/wrapped/generated/wrappedpulsesimpletypes.h
+++ b/src/wrapped/generated/wrappedpulsesimpletypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulsesimpleTYPES_H_
 #define __wrappedpulsesimpleTYPES_H_
diff --git a/src/wrapped/generated/wrappedpulsesimpleundefs.h b/src/wrapped/generated/wrappedpulsesimpleundefs.h
index 03614239..3d1c3bf2 100644
--- a/src/wrapped/generated/wrappedpulsesimpleundefs.h
+++ b/src/wrapped/generated/wrappedpulsesimpleundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulsesimpleUNDEFS_H_
 #define __wrappedpulsesimpleUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedpulsetypes.h b/src/wrapped/generated/wrappedpulsetypes.h
index e3ed948f..23af496b 100644
--- a/src/wrapped/generated/wrappedpulsetypes.h
+++ b/src/wrapped/generated/wrappedpulsetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulseTYPES_H_
 #define __wrappedpulseTYPES_H_
diff --git a/src/wrapped/generated/wrappedpulseundefs.h b/src/wrapped/generated/wrappedpulseundefs.h
index 4472c935..9d96e5c4 100644
--- a/src/wrapped/generated/wrappedpulseundefs.h
+++ b/src/wrapped/generated/wrappedpulseundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedpulseUNDEFS_H_
 #define __wrappedpulseUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1defs.h b/src/wrapped/generated/wrappedsdl1defs.h
index a3219d5e..6f69f9de 100644
--- a/src/wrapped/generated/wrappedsdl1defs.h
+++ b/src/wrapped/generated/wrappedsdl1defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1DEFS_H_
 #define __wrappedsdl1DEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1imagedefs.h b/src/wrapped/generated/wrappedsdl1imagedefs.h
index e7c98144..d40763d7 100644
--- a/src/wrapped/generated/wrappedsdl1imagedefs.h
+++ b/src/wrapped/generated/wrappedsdl1imagedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1imageDEFS_H_
 #define __wrappedsdl1imageDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1imagetypes.h b/src/wrapped/generated/wrappedsdl1imagetypes.h
index 27a2fb0b..ec092a0d 100644
--- a/src/wrapped/generated/wrappedsdl1imagetypes.h
+++ b/src/wrapped/generated/wrappedsdl1imagetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1imageTYPES_H_
 #define __wrappedsdl1imageTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1imageundefs.h b/src/wrapped/generated/wrappedsdl1imageundefs.h
index 8588d278..b1466758 100644
--- a/src/wrapped/generated/wrappedsdl1imageundefs.h
+++ b/src/wrapped/generated/wrappedsdl1imageundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1imageUNDEFS_H_
 #define __wrappedsdl1imageUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1mixerdefs.h b/src/wrapped/generated/wrappedsdl1mixerdefs.h
index c1ee043d..e02cc67c 100644
--- a/src/wrapped/generated/wrappedsdl1mixerdefs.h
+++ b/src/wrapped/generated/wrappedsdl1mixerdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1mixerDEFS_H_
 #define __wrappedsdl1mixerDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1mixertypes.h b/src/wrapped/generated/wrappedsdl1mixertypes.h
index 3998e3d0..a3e00b6e 100644
--- a/src/wrapped/generated/wrappedsdl1mixertypes.h
+++ b/src/wrapped/generated/wrappedsdl1mixertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1mixerTYPES_H_
 #define __wrappedsdl1mixerTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1mixerundefs.h b/src/wrapped/generated/wrappedsdl1mixerundefs.h
index f943ef63..c3721126 100644
--- a/src/wrapped/generated/wrappedsdl1mixerundefs.h
+++ b/src/wrapped/generated/wrappedsdl1mixerundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1mixerUNDEFS_H_
 #define __wrappedsdl1mixerUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1netdefs.h b/src/wrapped/generated/wrappedsdl1netdefs.h
index 8bef12a5..18c7699a 100644
--- a/src/wrapped/generated/wrappedsdl1netdefs.h
+++ b/src/wrapped/generated/wrappedsdl1netdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1netDEFS_H_
 #define __wrappedsdl1netDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1nettypes.h b/src/wrapped/generated/wrappedsdl1nettypes.h
index df143a1e..e6af4d35 100644
--- a/src/wrapped/generated/wrappedsdl1nettypes.h
+++ b/src/wrapped/generated/wrappedsdl1nettypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1netTYPES_H_
 #define __wrappedsdl1netTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1netundefs.h b/src/wrapped/generated/wrappedsdl1netundefs.h
index e2492ddb..71c97045 100644
--- a/src/wrapped/generated/wrappedsdl1netundefs.h
+++ b/src/wrapped/generated/wrappedsdl1netundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1netUNDEFS_H_
 #define __wrappedsdl1netUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1sounddefs.h b/src/wrapped/generated/wrappedsdl1sounddefs.h
index eb8bfa2d..b7fc5451 100644
--- a/src/wrapped/generated/wrappedsdl1sounddefs.h
+++ b/src/wrapped/generated/wrappedsdl1sounddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1soundDEFS_H_
 #define __wrappedsdl1soundDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1soundtypes.h b/src/wrapped/generated/wrappedsdl1soundtypes.h
index a093993f..9c93da65 100644
--- a/src/wrapped/generated/wrappedsdl1soundtypes.h
+++ b/src/wrapped/generated/wrappedsdl1soundtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1soundTYPES_H_
 #define __wrappedsdl1soundTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1soundundefs.h b/src/wrapped/generated/wrappedsdl1soundundefs.h
index 86a4a190..69839b0f 100644
--- a/src/wrapped/generated/wrappedsdl1soundundefs.h
+++ b/src/wrapped/generated/wrappedsdl1soundundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1soundUNDEFS_H_
 #define __wrappedsdl1soundUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1ttfdefs.h b/src/wrapped/generated/wrappedsdl1ttfdefs.h
index 431c6274..84b89528 100644
--- a/src/wrapped/generated/wrappedsdl1ttfdefs.h
+++ b/src/wrapped/generated/wrappedsdl1ttfdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1ttfDEFS_H_
 #define __wrappedsdl1ttfDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1ttftypes.h b/src/wrapped/generated/wrappedsdl1ttftypes.h
index 7ce6d58b..73a1906b 100644
--- a/src/wrapped/generated/wrappedsdl1ttftypes.h
+++ b/src/wrapped/generated/wrappedsdl1ttftypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1ttfTYPES_H_
 #define __wrappedsdl1ttfTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1ttfundefs.h b/src/wrapped/generated/wrappedsdl1ttfundefs.h
index 3643349f..16b96ad2 100644
--- a/src/wrapped/generated/wrappedsdl1ttfundefs.h
+++ b/src/wrapped/generated/wrappedsdl1ttfundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1ttfUNDEFS_H_
 #define __wrappedsdl1ttfUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl1types.h b/src/wrapped/generated/wrappedsdl1types.h
index 49567622..6fa183a9 100644
--- a/src/wrapped/generated/wrappedsdl1types.h
+++ b/src/wrapped/generated/wrappedsdl1types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1TYPES_H_
 #define __wrappedsdl1TYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl1undefs.h b/src/wrapped/generated/wrappedsdl1undefs.h
index 6a49a255..a52dc164 100644
--- a/src/wrapped/generated/wrappedsdl1undefs.h
+++ b/src/wrapped/generated/wrappedsdl1undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl1UNDEFS_H_
 #define __wrappedsdl1UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2defs.h b/src/wrapped/generated/wrappedsdl2defs.h
index b9a45cf1..3171e5d1 100644
--- a/src/wrapped/generated/wrappedsdl2defs.h
+++ b/src/wrapped/generated/wrappedsdl2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2DEFS_H_
 #define __wrappedsdl2DEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2imagedefs.h b/src/wrapped/generated/wrappedsdl2imagedefs.h
index fd8334fa..e1e3266b 100644
--- a/src/wrapped/generated/wrappedsdl2imagedefs.h
+++ b/src/wrapped/generated/wrappedsdl2imagedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2imageDEFS_H_
 #define __wrappedsdl2imageDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2imagetypes.h b/src/wrapped/generated/wrappedsdl2imagetypes.h
index a7c3b66b..ebd187a6 100644
--- a/src/wrapped/generated/wrappedsdl2imagetypes.h
+++ b/src/wrapped/generated/wrappedsdl2imagetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2imageTYPES_H_
 #define __wrappedsdl2imageTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2imageundefs.h b/src/wrapped/generated/wrappedsdl2imageundefs.h
index b4b175e5..ed340281 100644
--- a/src/wrapped/generated/wrappedsdl2imageundefs.h
+++ b/src/wrapped/generated/wrappedsdl2imageundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2imageUNDEFS_H_
 #define __wrappedsdl2imageUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2mixerdefs.h b/src/wrapped/generated/wrappedsdl2mixerdefs.h
index 1f3a729c..c1cae3d3 100644
--- a/src/wrapped/generated/wrappedsdl2mixerdefs.h
+++ b/src/wrapped/generated/wrappedsdl2mixerdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2mixerDEFS_H_
 #define __wrappedsdl2mixerDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2mixertypes.h b/src/wrapped/generated/wrappedsdl2mixertypes.h
index d48871c2..ec14346f 100644
--- a/src/wrapped/generated/wrappedsdl2mixertypes.h
+++ b/src/wrapped/generated/wrappedsdl2mixertypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2mixerTYPES_H_
 #define __wrappedsdl2mixerTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2mixerundefs.h b/src/wrapped/generated/wrappedsdl2mixerundefs.h
index 15074b60..9f34126b 100644
--- a/src/wrapped/generated/wrappedsdl2mixerundefs.h
+++ b/src/wrapped/generated/wrappedsdl2mixerundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2mixerUNDEFS_H_
 #define __wrappedsdl2mixerUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2netdefs.h b/src/wrapped/generated/wrappedsdl2netdefs.h
index 8b2cc63a..f2177ebd 100644
--- a/src/wrapped/generated/wrappedsdl2netdefs.h
+++ b/src/wrapped/generated/wrappedsdl2netdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2netDEFS_H_
 #define __wrappedsdl2netDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2nettypes.h b/src/wrapped/generated/wrappedsdl2nettypes.h
index 58ebd638..39d11e65 100644
--- a/src/wrapped/generated/wrappedsdl2nettypes.h
+++ b/src/wrapped/generated/wrappedsdl2nettypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2netTYPES_H_
 #define __wrappedsdl2netTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2netundefs.h b/src/wrapped/generated/wrappedsdl2netundefs.h
index 81e16b36..f6e51834 100644
--- a/src/wrapped/generated/wrappedsdl2netundefs.h
+++ b/src/wrapped/generated/wrappedsdl2netundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2netUNDEFS_H_
 #define __wrappedsdl2netUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2ttfdefs.h b/src/wrapped/generated/wrappedsdl2ttfdefs.h
index bb8ffb64..71e407f5 100644
--- a/src/wrapped/generated/wrappedsdl2ttfdefs.h
+++ b/src/wrapped/generated/wrappedsdl2ttfdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2ttfDEFS_H_
 #define __wrappedsdl2ttfDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2ttftypes.h b/src/wrapped/generated/wrappedsdl2ttftypes.h
index 6d4e02b9..ab13457a 100644
--- a/src/wrapped/generated/wrappedsdl2ttftypes.h
+++ b/src/wrapped/generated/wrappedsdl2ttftypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2ttfTYPES_H_
 #define __wrappedsdl2ttfTYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2ttfundefs.h b/src/wrapped/generated/wrappedsdl2ttfundefs.h
index 0ff8e537..d52b2d44 100644
--- a/src/wrapped/generated/wrappedsdl2ttfundefs.h
+++ b/src/wrapped/generated/wrappedsdl2ttfundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2ttfUNDEFS_H_
 #define __wrappedsdl2ttfUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsdl2types.h b/src/wrapped/generated/wrappedsdl2types.h
index 8386e999..4b20e0db 100644
--- a/src/wrapped/generated/wrappedsdl2types.h
+++ b/src/wrapped/generated/wrappedsdl2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2TYPES_H_
 #define __wrappedsdl2TYPES_H_
diff --git a/src/wrapped/generated/wrappedsdl2undefs.h b/src/wrapped/generated/wrappedsdl2undefs.h
index e27f5aee..a66d4875 100644
--- a/src/wrapped/generated/wrappedsdl2undefs.h
+++ b/src/wrapped/generated/wrappedsdl2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsdl2UNDEFS_H_
 #define __wrappedsdl2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsecret1defs.h b/src/wrapped/generated/wrappedsecret1defs.h
index d71edbcc..7e13a0c7 100644
--- a/src/wrapped/generated/wrappedsecret1defs.h
+++ b/src/wrapped/generated/wrappedsecret1defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsecret1DEFS_H_
 #define __wrappedsecret1DEFS_H_
diff --git a/src/wrapped/generated/wrappedsecret1types.h b/src/wrapped/generated/wrappedsecret1types.h
index f9a32229..7e8ede38 100644
--- a/src/wrapped/generated/wrappedsecret1types.h
+++ b/src/wrapped/generated/wrappedsecret1types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsecret1TYPES_H_
 #define __wrappedsecret1TYPES_H_
diff --git a/src/wrapped/generated/wrappedsecret1undefs.h b/src/wrapped/generated/wrappedsecret1undefs.h
index 1ca2fefe..af8c3acf 100644
--- a/src/wrapped/generated/wrappedsecret1undefs.h
+++ b/src/wrapped/generated/wrappedsecret1undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsecret1UNDEFS_H_
 #define __wrappedsecret1UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedselinuxdefs.h b/src/wrapped/generated/wrappedselinuxdefs.h
index bc11a101..5d005bd4 100644
--- a/src/wrapped/generated/wrappedselinuxdefs.h
+++ b/src/wrapped/generated/wrappedselinuxdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedselinuxDEFS_H_
 #define __wrappedselinuxDEFS_H_
diff --git a/src/wrapped/generated/wrappedselinuxtypes.h b/src/wrapped/generated/wrappedselinuxtypes.h
index b79ee173..89e4aa5e 100644
--- a/src/wrapped/generated/wrappedselinuxtypes.h
+++ b/src/wrapped/generated/wrappedselinuxtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedselinuxTYPES_H_
 #define __wrappedselinuxTYPES_H_
diff --git a/src/wrapped/generated/wrappedselinuxundefs.h b/src/wrapped/generated/wrappedselinuxundefs.h
index 8562c7db..e6c6a409 100644
--- a/src/wrapped/generated/wrappedselinuxundefs.h
+++ b/src/wrapped/generated/wrappedselinuxundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedselinuxUNDEFS_H_
 #define __wrappedselinuxUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsmime3defs.h b/src/wrapped/generated/wrappedsmime3defs.h
index 7f730ae2..a2b7059a 100644
--- a/src/wrapped/generated/wrappedsmime3defs.h
+++ b/src/wrapped/generated/wrappedsmime3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmime3DEFS_H_
 #define __wrappedsmime3DEFS_H_
diff --git a/src/wrapped/generated/wrappedsmime3types.h b/src/wrapped/generated/wrappedsmime3types.h
index 6d382ecc..fdeaa8ae 100644
--- a/src/wrapped/generated/wrappedsmime3types.h
+++ b/src/wrapped/generated/wrappedsmime3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmime3TYPES_H_
 #define __wrappedsmime3TYPES_H_
diff --git a/src/wrapped/generated/wrappedsmime3undefs.h b/src/wrapped/generated/wrappedsmime3undefs.h
index 9e4d66a7..f5812057 100644
--- a/src/wrapped/generated/wrappedsmime3undefs.h
+++ b/src/wrapped/generated/wrappedsmime3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmime3UNDEFS_H_
 #define __wrappedsmime3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsmpeg2defs.h b/src/wrapped/generated/wrappedsmpeg2defs.h
index 87313f8b..bc4058b8 100644
--- a/src/wrapped/generated/wrappedsmpeg2defs.h
+++ b/src/wrapped/generated/wrappedsmpeg2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmpeg2DEFS_H_
 #define __wrappedsmpeg2DEFS_H_
diff --git a/src/wrapped/generated/wrappedsmpeg2types.h b/src/wrapped/generated/wrappedsmpeg2types.h
index e9cb40d7..544d9122 100644
--- a/src/wrapped/generated/wrappedsmpeg2types.h
+++ b/src/wrapped/generated/wrappedsmpeg2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmpeg2TYPES_H_
 #define __wrappedsmpeg2TYPES_H_
diff --git a/src/wrapped/generated/wrappedsmpeg2undefs.h b/src/wrapped/generated/wrappedsmpeg2undefs.h
index 962f137d..6c96b222 100644
--- a/src/wrapped/generated/wrappedsmpeg2undefs.h
+++ b/src/wrapped/generated/wrappedsmpeg2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmpeg2UNDEFS_H_
 #define __wrappedsmpeg2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsmpegdefs.h b/src/wrapped/generated/wrappedsmpegdefs.h
index 2c6beebc..68505b19 100644
--- a/src/wrapped/generated/wrappedsmpegdefs.h
+++ b/src/wrapped/generated/wrappedsmpegdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmpegDEFS_H_
 #define __wrappedsmpegDEFS_H_
diff --git a/src/wrapped/generated/wrappedsmpegtypes.h b/src/wrapped/generated/wrappedsmpegtypes.h
index 15d7494d..339866ea 100644
--- a/src/wrapped/generated/wrappedsmpegtypes.h
+++ b/src/wrapped/generated/wrappedsmpegtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmpegTYPES_H_
 #define __wrappedsmpegTYPES_H_
diff --git a/src/wrapped/generated/wrappedsmpegundefs.h b/src/wrapped/generated/wrappedsmpegundefs.h
index d7682a7d..bd435470 100644
--- a/src/wrapped/generated/wrappedsmpegundefs.h
+++ b/src/wrapped/generated/wrappedsmpegundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsmpegUNDEFS_H_
 #define __wrappedsmpegUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedsoftokn3defs.h b/src/wrapped/generated/wrappedsoftokn3defs.h
index 8c8fa0ee..1a627329 100644
--- a/src/wrapped/generated/wrappedsoftokn3defs.h
+++ b/src/wrapped/generated/wrappedsoftokn3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsoftokn3DEFS_H_
 #define __wrappedsoftokn3DEFS_H_
diff --git a/src/wrapped/generated/wrappedsoftokn3types.h b/src/wrapped/generated/wrappedsoftokn3types.h
index 1cc54de9..8eeb435a 100644
--- a/src/wrapped/generated/wrappedsoftokn3types.h
+++ b/src/wrapped/generated/wrappedsoftokn3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsoftokn3TYPES_H_
 #define __wrappedsoftokn3TYPES_H_
diff --git a/src/wrapped/generated/wrappedsoftokn3undefs.h b/src/wrapped/generated/wrappedsoftokn3undefs.h
index 2566450b..6f6a57d3 100644
--- a/src/wrapped/generated/wrappedsoftokn3undefs.h
+++ b/src/wrapped/generated/wrappedsoftokn3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedsoftokn3UNDEFS_H_
 #define __wrappedsoftokn3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedssl3defs.h b/src/wrapped/generated/wrappedssl3defs.h
index ae087e0a..89771c8a 100644
--- a/src/wrapped/generated/wrappedssl3defs.h
+++ b/src/wrapped/generated/wrappedssl3defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedssl3DEFS_H_
 #define __wrappedssl3DEFS_H_
diff --git a/src/wrapped/generated/wrappedssl3types.h b/src/wrapped/generated/wrappedssl3types.h
index 1927a230..1bd0eabd 100644
--- a/src/wrapped/generated/wrappedssl3types.h
+++ b/src/wrapped/generated/wrappedssl3types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedssl3TYPES_H_
 #define __wrappedssl3TYPES_H_
diff --git a/src/wrapped/generated/wrappedssl3undefs.h b/src/wrapped/generated/wrappedssl3undefs.h
index 16eb9faa..254450b5 100644
--- a/src/wrapped/generated/wrappedssl3undefs.h
+++ b/src/wrapped/generated/wrappedssl3undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedssl3UNDEFS_H_
 #define __wrappedssl3UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedtbbbinddefs.h b/src/wrapped/generated/wrappedtbbbinddefs.h
index aba756fb..d51741a6 100644
--- a/src/wrapped/generated/wrappedtbbbinddefs.h
+++ b/src/wrapped/generated/wrappedtbbbinddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbbindDEFS_H_
 #define __wrappedtbbbindDEFS_H_
diff --git a/src/wrapped/generated/wrappedtbbbindtypes.h b/src/wrapped/generated/wrappedtbbbindtypes.h
index c898ebce..75f04714 100644
--- a/src/wrapped/generated/wrappedtbbbindtypes.h
+++ b/src/wrapped/generated/wrappedtbbbindtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbbindTYPES_H_
 #define __wrappedtbbbindTYPES_H_
diff --git a/src/wrapped/generated/wrappedtbbbindundefs.h b/src/wrapped/generated/wrappedtbbbindundefs.h
index 408e8fb0..af6e6d16 100644
--- a/src/wrapped/generated/wrappedtbbbindundefs.h
+++ b/src/wrapped/generated/wrappedtbbbindundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbbindUNDEFS_H_
 #define __wrappedtbbbindUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedtbbmallocdefs.h b/src/wrapped/generated/wrappedtbbmallocdefs.h
index b0fe962a..bd7b74cd 100644
--- a/src/wrapped/generated/wrappedtbbmallocdefs.h
+++ b/src/wrapped/generated/wrappedtbbmallocdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbmallocDEFS_H_
 #define __wrappedtbbmallocDEFS_H_
diff --git a/src/wrapped/generated/wrappedtbbmallocproxydefs.h b/src/wrapped/generated/wrappedtbbmallocproxydefs.h
index fab8b48a..09056e97 100644
--- a/src/wrapped/generated/wrappedtbbmallocproxydefs.h
+++ b/src/wrapped/generated/wrappedtbbmallocproxydefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbmallocproxyDEFS_H_
 #define __wrappedtbbmallocproxyDEFS_H_
diff --git a/src/wrapped/generated/wrappedtbbmallocproxytypes.h b/src/wrapped/generated/wrappedtbbmallocproxytypes.h
index 661340a0..28214d00 100644
--- a/src/wrapped/generated/wrappedtbbmallocproxytypes.h
+++ b/src/wrapped/generated/wrappedtbbmallocproxytypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbmallocproxyTYPES_H_
 #define __wrappedtbbmallocproxyTYPES_H_
diff --git a/src/wrapped/generated/wrappedtbbmallocproxyundefs.h b/src/wrapped/generated/wrappedtbbmallocproxyundefs.h
index ed68ff0e..c77870f6 100644
--- a/src/wrapped/generated/wrappedtbbmallocproxyundefs.h
+++ b/src/wrapped/generated/wrappedtbbmallocproxyundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbmallocproxyUNDEFS_H_
 #define __wrappedtbbmallocproxyUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedtbbmalloctypes.h b/src/wrapped/generated/wrappedtbbmalloctypes.h
index caec388b..19fc878c 100644
--- a/src/wrapped/generated/wrappedtbbmalloctypes.h
+++ b/src/wrapped/generated/wrappedtbbmalloctypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbmallocTYPES_H_
 #define __wrappedtbbmallocTYPES_H_
diff --git a/src/wrapped/generated/wrappedtbbmallocundefs.h b/src/wrapped/generated/wrappedtbbmallocundefs.h
index 0e22b278..7085778d 100644
--- a/src/wrapped/generated/wrappedtbbmallocundefs.h
+++ b/src/wrapped/generated/wrappedtbbmallocundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtbbmallocUNDEFS_H_
 #define __wrappedtbbmallocUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedtcmallocminimaldefs.h b/src/wrapped/generated/wrappedtcmallocminimaldefs.h
index c22b54d0..85a2658c 100644
--- a/src/wrapped/generated/wrappedtcmallocminimaldefs.h
+++ b/src/wrapped/generated/wrappedtcmallocminimaldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtcmallocminimalDEFS_H_
 #define __wrappedtcmallocminimalDEFS_H_
diff --git a/src/wrapped/generated/wrappedtcmallocminimaltypes.h b/src/wrapped/generated/wrappedtcmallocminimaltypes.h
index 52e03b2d..964363e0 100644
--- a/src/wrapped/generated/wrappedtcmallocminimaltypes.h
+++ b/src/wrapped/generated/wrappedtcmallocminimaltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtcmallocminimalTYPES_H_
 #define __wrappedtcmallocminimalTYPES_H_
diff --git a/src/wrapped/generated/wrappedtcmallocminimalundefs.h b/src/wrapped/generated/wrappedtcmallocminimalundefs.h
index 2dc85a79..d3f6349b 100644
--- a/src/wrapped/generated/wrappedtcmallocminimalundefs.h
+++ b/src/wrapped/generated/wrappedtcmallocminimalundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedtcmallocminimalUNDEFS_H_
 #define __wrappedtcmallocminimalUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedudev0defs.h b/src/wrapped/generated/wrappedudev0defs.h
index 23e9251e..99837005 100644
--- a/src/wrapped/generated/wrappedudev0defs.h
+++ b/src/wrapped/generated/wrappedudev0defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedudev0DEFS_H_
 #define __wrappedudev0DEFS_H_
diff --git a/src/wrapped/generated/wrappedudev0types.h b/src/wrapped/generated/wrappedudev0types.h
index 9226453b..4577d427 100644
--- a/src/wrapped/generated/wrappedudev0types.h
+++ b/src/wrapped/generated/wrappedudev0types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedudev0TYPES_H_
 #define __wrappedudev0TYPES_H_
diff --git a/src/wrapped/generated/wrappedudev0undefs.h b/src/wrapped/generated/wrappedudev0undefs.h
index ca9b005c..5a52481c 100644
--- a/src/wrapped/generated/wrappedudev0undefs.h
+++ b/src/wrapped/generated/wrappedudev0undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedudev0UNDEFS_H_
 #define __wrappedudev0UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedudev1defs.h b/src/wrapped/generated/wrappedudev1defs.h
index 040be66a..899f57fb 100644
--- a/src/wrapped/generated/wrappedudev1defs.h
+++ b/src/wrapped/generated/wrappedudev1defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedudev1DEFS_H_
 #define __wrappedudev1DEFS_H_
diff --git a/src/wrapped/generated/wrappedudev1types.h b/src/wrapped/generated/wrappedudev1types.h
index 7d1681bf..c56a3635 100644
--- a/src/wrapped/generated/wrappedudev1types.h
+++ b/src/wrapped/generated/wrappedudev1types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedudev1TYPES_H_
 #define __wrappedudev1TYPES_H_
diff --git a/src/wrapped/generated/wrappedudev1undefs.h b/src/wrapped/generated/wrappedudev1undefs.h
index 814025c7..f5ff3583 100644
--- a/src/wrapped/generated/wrappedudev1undefs.h
+++ b/src/wrapped/generated/wrappedudev1undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedudev1UNDEFS_H_
 #define __wrappedudev1UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedunwinddefs.h b/src/wrapped/generated/wrappedunwinddefs.h
index 6b5b16e6..3518970a 100644
--- a/src/wrapped/generated/wrappedunwinddefs.h
+++ b/src/wrapped/generated/wrappedunwinddefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedunwindDEFS_H_
 #define __wrappedunwindDEFS_H_
diff --git a/src/wrapped/generated/wrappedunwindtypes.h b/src/wrapped/generated/wrappedunwindtypes.h
index 78977ea6..f554d503 100644
--- a/src/wrapped/generated/wrappedunwindtypes.h
+++ b/src/wrapped/generated/wrappedunwindtypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedunwindTYPES_H_
 #define __wrappedunwindTYPES_H_
diff --git a/src/wrapped/generated/wrappedunwindundefs.h b/src/wrapped/generated/wrappedunwindundefs.h
index 13d2afbb..818ce97f 100644
--- a/src/wrapped/generated/wrappedunwindundefs.h
+++ b/src/wrapped/generated/wrappedunwindundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedunwindUNDEFS_H_
 #define __wrappedunwindUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedutildefs.h b/src/wrapped/generated/wrappedutildefs.h
index 14920bc0..8531b62c 100644
--- a/src/wrapped/generated/wrappedutildefs.h
+++ b/src/wrapped/generated/wrappedutildefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedutilDEFS_H_
 #define __wrappedutilDEFS_H_
diff --git a/src/wrapped/generated/wrappedutiltypes.h b/src/wrapped/generated/wrappedutiltypes.h
index 8b462767..d21cb30b 100644
--- a/src/wrapped/generated/wrappedutiltypes.h
+++ b/src/wrapped/generated/wrappedutiltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedutilTYPES_H_
 #define __wrappedutilTYPES_H_
diff --git a/src/wrapped/generated/wrappedutilundefs.h b/src/wrapped/generated/wrappedutilundefs.h
index 69632e8d..4f029787 100644
--- a/src/wrapped/generated/wrappedutilundefs.h
+++ b/src/wrapped/generated/wrappedutilundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedutilUNDEFS_H_
 #define __wrappedutilUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedvorbisfiledefs.h b/src/wrapped/generated/wrappedvorbisfiledefs.h
index 50057e6d..12eb528a 100644
--- a/src/wrapped/generated/wrappedvorbisfiledefs.h
+++ b/src/wrapped/generated/wrappedvorbisfiledefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedvorbisfileDEFS_H_
 #define __wrappedvorbisfileDEFS_H_
diff --git a/src/wrapped/generated/wrappedvorbisfiletypes.h b/src/wrapped/generated/wrappedvorbisfiletypes.h
index 1533cbac..3d3ca086 100644
--- a/src/wrapped/generated/wrappedvorbisfiletypes.h
+++ b/src/wrapped/generated/wrappedvorbisfiletypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedvorbisfileTYPES_H_
 #define __wrappedvorbisfileTYPES_H_
diff --git a/src/wrapped/generated/wrappedvorbisfileundefs.h b/src/wrapped/generated/wrappedvorbisfileundefs.h
index 329c731d..63edd380 100644
--- a/src/wrapped/generated/wrappedvorbisfileundefs.h
+++ b/src/wrapped/generated/wrappedvorbisfileundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedvorbisfileUNDEFS_H_
 #define __wrappedvorbisfileUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedvulkandefs.h b/src/wrapped/generated/wrappedvulkandefs.h
index f976c2da..35af1f42 100644
--- a/src/wrapped/generated/wrappedvulkandefs.h
+++ b/src/wrapped/generated/wrappedvulkandefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedvulkanDEFS_H_
 #define __wrappedvulkanDEFS_H_
diff --git a/src/wrapped/generated/wrappedvulkantypes.h b/src/wrapped/generated/wrappedvulkantypes.h
index fd784391..0a60dc11 100644
--- a/src/wrapped/generated/wrappedvulkantypes.h
+++ b/src/wrapped/generated/wrappedvulkantypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedvulkanTYPES_H_
 #define __wrappedvulkanTYPES_H_
diff --git a/src/wrapped/generated/wrappedvulkanundefs.h b/src/wrapped/generated/wrappedvulkanundefs.h
index a43e9a6d..6c55b09f 100644
--- a/src/wrapped/generated/wrappedvulkanundefs.h
+++ b/src/wrapped/generated/wrappedvulkanundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedvulkanUNDEFS_H_
 #define __wrappedvulkanUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedwaylandclientdefs.h b/src/wrapped/generated/wrappedwaylandclientdefs.h
index b1aa284e..ce7bef17 100644
--- a/src/wrapped/generated/wrappedwaylandclientdefs.h
+++ b/src/wrapped/generated/wrappedwaylandclientdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandclientDEFS_H_
 #define __wrappedwaylandclientDEFS_H_
diff --git a/src/wrapped/generated/wrappedwaylandclienttypes.h b/src/wrapped/generated/wrappedwaylandclienttypes.h
index fe0f4d8e..c08ac376 100644
--- a/src/wrapped/generated/wrappedwaylandclienttypes.h
+++ b/src/wrapped/generated/wrappedwaylandclienttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandclientTYPES_H_
 #define __wrappedwaylandclientTYPES_H_
diff --git a/src/wrapped/generated/wrappedwaylandclientundefs.h b/src/wrapped/generated/wrappedwaylandclientundefs.h
index 3848289a..11e55f1c 100644
--- a/src/wrapped/generated/wrappedwaylandclientundefs.h
+++ b/src/wrapped/generated/wrappedwaylandclientundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandclientUNDEFS_H_
 #define __wrappedwaylandclientUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedwaylandcursordefs.h b/src/wrapped/generated/wrappedwaylandcursordefs.h
index 0a3c0aef..054580ed 100644
--- a/src/wrapped/generated/wrappedwaylandcursordefs.h
+++ b/src/wrapped/generated/wrappedwaylandcursordefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandcursorDEFS_H_
 #define __wrappedwaylandcursorDEFS_H_
diff --git a/src/wrapped/generated/wrappedwaylandcursortypes.h b/src/wrapped/generated/wrappedwaylandcursortypes.h
index b04183af..b9ef07e6 100644
--- a/src/wrapped/generated/wrappedwaylandcursortypes.h
+++ b/src/wrapped/generated/wrappedwaylandcursortypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandcursorTYPES_H_
 #define __wrappedwaylandcursorTYPES_H_
diff --git a/src/wrapped/generated/wrappedwaylandcursorundefs.h b/src/wrapped/generated/wrappedwaylandcursorundefs.h
index 88cfda9f..38056633 100644
--- a/src/wrapped/generated/wrappedwaylandcursorundefs.h
+++ b/src/wrapped/generated/wrappedwaylandcursorundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandcursorUNDEFS_H_
 #define __wrappedwaylandcursorUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedwaylandegldefs.h b/src/wrapped/generated/wrappedwaylandegldefs.h
index 7887ffc1..55a102c5 100644
--- a/src/wrapped/generated/wrappedwaylandegldefs.h
+++ b/src/wrapped/generated/wrappedwaylandegldefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandeglDEFS_H_
 #define __wrappedwaylandeglDEFS_H_
diff --git a/src/wrapped/generated/wrappedwaylandegltypes.h b/src/wrapped/generated/wrappedwaylandegltypes.h
index 91c5de4d..08da258d 100644
--- a/src/wrapped/generated/wrappedwaylandegltypes.h
+++ b/src/wrapped/generated/wrappedwaylandegltypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandeglTYPES_H_
 #define __wrappedwaylandeglTYPES_H_
diff --git a/src/wrapped/generated/wrappedwaylandeglundefs.h b/src/wrapped/generated/wrappedwaylandeglundefs.h
index 84f92a37..e2c625d1 100644
--- a/src/wrapped/generated/wrappedwaylandeglundefs.h
+++ b/src/wrapped/generated/wrappedwaylandeglundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedwaylandeglUNDEFS_H_
 #define __wrappedwaylandeglUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedxineramadefs.h b/src/wrapped/generated/wrappedxineramadefs.h
index 5d869c98..5eac29c8 100644
--- a/src/wrapped/generated/wrappedxineramadefs.h
+++ b/src/wrapped/generated/wrappedxineramadefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxineramaDEFS_H_
 #define __wrappedxineramaDEFS_H_
diff --git a/src/wrapped/generated/wrappedxineramatypes.h b/src/wrapped/generated/wrappedxineramatypes.h
index 111c7e7e..b33b6c63 100644
--- a/src/wrapped/generated/wrappedxineramatypes.h
+++ b/src/wrapped/generated/wrappedxineramatypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxineramaTYPES_H_
 #define __wrappedxineramaTYPES_H_
diff --git a/src/wrapped/generated/wrappedxineramaundefs.h b/src/wrapped/generated/wrappedxineramaundefs.h
index 8c55ca09..ecc0660b 100644
--- a/src/wrapped/generated/wrappedxineramaundefs.h
+++ b/src/wrapped/generated/wrappedxineramaundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxineramaUNDEFS_H_
 #define __wrappedxineramaUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedxkbcommondefs.h b/src/wrapped/generated/wrappedxkbcommondefs.h
index 692dd5ca..a3ce1209 100644
--- a/src/wrapped/generated/wrappedxkbcommondefs.h
+++ b/src/wrapped/generated/wrappedxkbcommondefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbcommonDEFS_H_
 #define __wrappedxkbcommonDEFS_H_
diff --git a/src/wrapped/generated/wrappedxkbcommontypes.h b/src/wrapped/generated/wrappedxkbcommontypes.h
index 8ed4d900..dede9085 100644
--- a/src/wrapped/generated/wrappedxkbcommontypes.h
+++ b/src/wrapped/generated/wrappedxkbcommontypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbcommonTYPES_H_
 #define __wrappedxkbcommonTYPES_H_
diff --git a/src/wrapped/generated/wrappedxkbcommonundefs.h b/src/wrapped/generated/wrappedxkbcommonundefs.h
index 50f35582..c5555c37 100644
--- a/src/wrapped/generated/wrappedxkbcommonundefs.h
+++ b/src/wrapped/generated/wrappedxkbcommonundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbcommonUNDEFS_H_
 #define __wrappedxkbcommonUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedxkbcommonx11defs.h b/src/wrapped/generated/wrappedxkbcommonx11defs.h
index d182bec9..66f2eae6 100644
--- a/src/wrapped/generated/wrappedxkbcommonx11defs.h
+++ b/src/wrapped/generated/wrappedxkbcommonx11defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbcommonx11DEFS_H_
 #define __wrappedxkbcommonx11DEFS_H_
diff --git a/src/wrapped/generated/wrappedxkbcommonx11types.h b/src/wrapped/generated/wrappedxkbcommonx11types.h
index 790d388e..64f5facb 100644
--- a/src/wrapped/generated/wrappedxkbcommonx11types.h
+++ b/src/wrapped/generated/wrappedxkbcommonx11types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbcommonx11TYPES_H_
 #define __wrappedxkbcommonx11TYPES_H_
diff --git a/src/wrapped/generated/wrappedxkbcommonx11undefs.h b/src/wrapped/generated/wrappedxkbcommonx11undefs.h
index 3d21600a..93ba7b62 100644
--- a/src/wrapped/generated/wrappedxkbcommonx11undefs.h
+++ b/src/wrapped/generated/wrappedxkbcommonx11undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbcommonx11UNDEFS_H_
 #define __wrappedxkbcommonx11UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedxkbregistrydefs.h b/src/wrapped/generated/wrappedxkbregistrydefs.h
index 2a054780..a417dd0a 100644
--- a/src/wrapped/generated/wrappedxkbregistrydefs.h
+++ b/src/wrapped/generated/wrappedxkbregistrydefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbregistryDEFS_H_
 #define __wrappedxkbregistryDEFS_H_
diff --git a/src/wrapped/generated/wrappedxkbregistrytypes.h b/src/wrapped/generated/wrappedxkbregistrytypes.h
index 51cfef34..07078d1d 100644
--- a/src/wrapped/generated/wrappedxkbregistrytypes.h
+++ b/src/wrapped/generated/wrappedxkbregistrytypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbregistryTYPES_H_
 #define __wrappedxkbregistryTYPES_H_
diff --git a/src/wrapped/generated/wrappedxkbregistryundefs.h b/src/wrapped/generated/wrappedxkbregistryundefs.h
index f106d4af..e5ae5c3b 100644
--- a/src/wrapped/generated/wrappedxkbregistryundefs.h
+++ b/src/wrapped/generated/wrappedxkbregistryundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxkbregistryUNDEFS_H_
 #define __wrappedxkbregistryUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedxml2defs.h b/src/wrapped/generated/wrappedxml2defs.h
index 9e06efca..8c6db69a 100644
--- a/src/wrapped/generated/wrappedxml2defs.h
+++ b/src/wrapped/generated/wrappedxml2defs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxml2DEFS_H_
 #define __wrappedxml2DEFS_H_
diff --git a/src/wrapped/generated/wrappedxml2types.h b/src/wrapped/generated/wrappedxml2types.h
index bed5ff59..47edb9d7 100644
--- a/src/wrapped/generated/wrappedxml2types.h
+++ b/src/wrapped/generated/wrappedxml2types.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxml2TYPES_H_
 #define __wrappedxml2TYPES_H_
diff --git a/src/wrapped/generated/wrappedxml2undefs.h b/src/wrapped/generated/wrappedxml2undefs.h
index cb9cbb73..19339c57 100644
--- a/src/wrapped/generated/wrappedxml2undefs.h
+++ b/src/wrapped/generated/wrappedxml2undefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxml2UNDEFS_H_
 #define __wrappedxml2UNDEFS_H_
diff --git a/src/wrapped/generated/wrappedxshmfencedefs.h b/src/wrapped/generated/wrappedxshmfencedefs.h
index 38ffbde4..85daaf5f 100644
--- a/src/wrapped/generated/wrappedxshmfencedefs.h
+++ b/src/wrapped/generated/wrappedxshmfencedefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxshmfenceDEFS_H_
 #define __wrappedxshmfenceDEFS_H_
diff --git a/src/wrapped/generated/wrappedxshmfencetypes.h b/src/wrapped/generated/wrappedxshmfencetypes.h
index 01c92a21..1cda4799 100644
--- a/src/wrapped/generated/wrappedxshmfencetypes.h
+++ b/src/wrapped/generated/wrappedxshmfencetypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxshmfenceTYPES_H_
 #define __wrappedxshmfenceTYPES_H_
diff --git a/src/wrapped/generated/wrappedxshmfenceundefs.h b/src/wrapped/generated/wrappedxshmfenceundefs.h
index 57603fd9..51ab1383 100644
--- a/src/wrapped/generated/wrappedxshmfenceundefs.h
+++ b/src/wrapped/generated/wrappedxshmfenceundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxshmfenceUNDEFS_H_
 #define __wrappedxshmfenceUNDEFS_H_
diff --git a/src/wrapped/generated/wrappedxsltdefs.h b/src/wrapped/generated/wrappedxsltdefs.h
index bc87e360..22873927 100644
--- a/src/wrapped/generated/wrappedxsltdefs.h
+++ b/src/wrapped/generated/wrappedxsltdefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxsltDEFS_H_
 #define __wrappedxsltDEFS_H_
diff --git a/src/wrapped/generated/wrappedxslttypes.h b/src/wrapped/generated/wrappedxslttypes.h
index c96a3646..ff2d23b7 100644
--- a/src/wrapped/generated/wrappedxslttypes.h
+++ b/src/wrapped/generated/wrappedxslttypes.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxsltTYPES_H_
 #define __wrappedxsltTYPES_H_
diff --git a/src/wrapped/generated/wrappedxsltundefs.h b/src/wrapped/generated/wrappedxsltundefs.h
index 057facc4..f9d72dfd 100644
--- a/src/wrapped/generated/wrappedxsltundefs.h
+++ b/src/wrapped/generated/wrappedxsltundefs.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __wrappedxsltUNDEFS_H_
 #define __wrappedxsltUNDEFS_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index ed48f1f4..bacb0849 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #include <stdio.h>
 #include <stdlib.h>
@@ -6358,6 +6358,7 @@ void iFEpuvvppp(x64emu_t *emu, uintptr_t fcn) { iFEpuppp_t fn = (iFEpuppp_t)fcn;
 
 #if defined(ARM64)
 int isSimpleWrapper(wrapper_t fun) {
+	if (box64_is32bits) return 0;
 	if (fun == &vFv) return 1;
 	if (fun == &vFc) return 1;
 	if (fun == &vFw) return 1;
@@ -8222,6 +8223,7 @@ int isSimpleWrapper(wrapper_t fun) {
 }
 #elif defined(RV64)
 int isSimpleWrapper(wrapper_t fun) {
+	if (box64_is32bits) return 0;
 	if (fun == &vFv) return 1;
 	if (fun == &vFC) return 1;
 	if (fun == &vFW) return 1;
@@ -8573,13 +8575,19 @@ int isSimpleWrapper(wrapper_t fun) {
 	if (fun == &vFpppffff) return 9;
 	return 0;
 }
-
 #else
 int isSimpleWrapper(wrapper_t fun) {
 	return 0;
 }
 #endif
 
+int isRetX87Wrapper32(wrapper_t fun)
+#ifndef BOX32
+{ return 0; }
+#else
+ ;
+#endif
+
 int isRetX87Wrapper(wrapper_t fun) {
 	if (fun == &DFDi) return 1;
 	if (fun == &DFDD) return 1;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index b1d0158a..a1f2bb2b 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1,5 +1,5 @@
 /*******************************************************************
- * File automatically generated by rebuild_wrappers.py (v2.4.0.21) *
+ * File automatically generated by rebuild_wrappers.py (v2.4.0.23) *
  *******************************************************************/
 #ifndef __WRAPPER_H_
 #define __WRAPPER_H_
diff --git a/src/wrapped/wrappedlibdl.c b/src/wrapped/wrappedlibdl.c
index 27252850..62744466 100644
--- a/src/wrapped/wrappedlibdl.c
+++ b/src/wrapped/wrappedlibdl.c
@@ -64,6 +64,47 @@ int my_dlinfo(x64emu_t* emu, void* handle, int request, void* info) EXPORT;
 #endif
 
 #define CLEARERR    if(dl->last_error) {box_free(dl->last_error); dl->last_error = NULL;}
+void dl_clear_error()
+{
+    dlprivate_t *dl = my_context->dlprivate;
+    CLEARERR;
+}
+
+void dl_set_error(const char* msg)
+{
+    dlprivate_t *dl = my_context->dlprivate;
+    if(!dl->last_error)
+        dl->last_error = box_calloc(1, 129);
+    snprintf(dl->last_error, 129, "%s", msg);
+}
+
+library_t* dl_get_library(void* handle)
+{
+    dlprivate_t *dl = my_context->dlprivate;
+    CLEARERR
+    size_t nlib = (size_t)handle;
+    --nlib;
+    // size_t is unsigned
+    if(nlib>=dl->lib_sz) {
+        if(!dl->last_error)
+            dl->last_error = box_calloc(1, 129);
+        snprintf(dl->last_error, 129, "Bad handle %p)\n", handle);
+        return (void*)-1LL;
+    }
+    if(!dl->dllibs[nlib].count || !dl->dllibs[nlib].full) {
+        if(!dl->last_error)
+            dl->last_error = box_calloc(1, 129);
+        snprintf(dl->last_error, 129, "Bad handle %p (already closed))\n", handle);
+        return (void*)-1LL;
+    }
+    return dl->dllibs[nlib].lib;
+}
+
+char* dl_last_error()
+{
+    dlprivate_t *dl = my_context->dlprivate;
+    return dl->last_error;
+}
 
 void RemoveDlopen(library_t** lib, size_t idx)
 {
@@ -613,6 +654,11 @@ void closeAllDLOpenned()
 //extern void* _dlfcn_hook;
 #endif
 
+#define PRE_INIT\
+    if(1)                                                           \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);    \
+    else
+
 #define CUSTOM_FINI \
     closeAllDLOpenned();
 
diff --git a/src/wrapped/wrappedlibrt.c b/src/wrapped/wrappedlibrt.c
index 1ca32859..438b3312 100644
--- a/src/wrapped/wrappedlibrt.c
+++ b/src/wrapped/wrappedlibrt.c
@@ -162,4 +162,9 @@ EXPORT int my_lio_listio(x64emu_t* emu, int mode, void* list[], int nent, struct
 extern int __mq_open_2(const char*, int);
 #endif
 
+#define PRE_INIT\
+    if(1)                                                   \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL); \
+    else
+
 #include "wrappedlib_init.h"
diff --git a/src/wrapped32/generated/converter32.c b/src/wrapped32/generated/converter32.c
new file mode 100644
index 00000000..e098645a
--- /dev/null
+++ b/src/wrapped32/generated/converter32.c
@@ -0,0 +1,61 @@
+// Manually created for now
+#include "converter32.h"
+
+void from_struct_p(struct_p_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->p0 = from_ptrv(*(ptr_t*)src); src += 4;
+}
+void to_struct_p(ptr_t d, const struct_p_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(ptr_t*)dest = to_ptrv(src->p0); dest += 4;
+}
+
+void from_struct_L(struct_L_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->L0 = from_ulong(*(ulong_t*)src); src += 4;
+}
+void to_struct_L(ptr_t d, const struct_L_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(ulong_t*)dest = to_ulong(src->L0); dest += 4;
+}
+
+
+void from_struct_h(struct_h_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->h0 = from_hash(*(ulong_t*)src); src += 4;
+}
+void to_struct_h(ptr_t d, const struct_h_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(ulong_t*)dest = to_hash(src->h0); dest += 4;
+}
+
+void from_struct_H(struct_H_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->H0 = from_hash_d(*(ulong_t*)src); src += 4;
+}
+void to_struct_H(ptr_t d, const struct_H_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(ulong_t*)dest = to_hash_d(src->H0); dest += 4;
+}
+
+void from_struct_ppppp(struct_ppppp_t *dest, ptr_t s) {
+	uint8_t* src = (uint8_t*)from_ptrv(s);
+	dest->p0 = *(void**)src; src += 4;
+	dest->p1 = *(void**)src; src += 4;
+	dest->p2 = *(void**)src; src += 4;
+	dest->p3 = *(void**)src; src += 4;
+	dest->p4 = *(void**)src; src += 4;
+}
+void to_struct_ppppp(ptr_t d, const struct_ppppp_t *src) {
+	if (!src) return;
+	uint8_t* dest = (uint8_t*)from_ptrv(d);
+	*(ptr_t*)dest = to_ptrv(src->p0); dest += 4;
+	*(ptr_t*)dest = to_ptrv(src->p1); dest += 4;
+	*(ptr_t*)dest = to_ptrv(src->p2); dest += 4;
+	*(ptr_t*)dest = to_ptrv(src->p3); dest += 4;
+	*(ptr_t*)dest = to_ptrv(src->p4); dest += 4;
+}
diff --git a/src/wrapped32/generated/converter32.h b/src/wrapped32/generated/converter32.h
new file mode 100644
index 00000000..86dd3e21
--- /dev/null
+++ b/src/wrapped32/generated/converter32.h
@@ -0,0 +1,37 @@
+// Manually created for now
+#ifndef __CONVERTER_H_
+#define __CONVERTER_H_
+
+#include "box32.h"
+
+typedef struct struct_p_s {
+	void *p0;
+} struct_p_t;
+void from_struct_p(struct_p_t *dest, ptr_t src);
+void to_struct_p(ptr_t dest, const struct_p_t *src);
+typedef struct struct_L_s {
+	unsigned long L0;
+} struct_L_t;
+void from_struct_L(struct_L_t *dest, ptr_t src);
+void to_struct_L(ptr_t dest, const struct_L_t *src);
+typedef struct struct_h_s {
+	uintptr_t h0;
+} struct_h_t;
+void from_struct_h(struct_h_t *dest, ptr_t src);
+void to_struct_h(ptr_t dest, const struct_h_t *src);
+typedef struct struct_H_s {
+	uintptr_t H0;
+} struct_H_t;
+void from_struct_H(struct_H_t *dest, ptr_t src);
+void to_struct_H(ptr_t dest, const struct_H_t *src);
+typedef struct struct_ppppp_s {
+	void* p0;
+	void* p1;
+	void* p2;
+	void* p3;
+	void* p4;
+} struct_ppppp_t;
+void from_struct_ppppp(struct_ppppp_t *dest, ptr_t src);
+void to_struct_ppppp(ptr_t dest, const struct_ppppp_t *src);
+
+#endif // __CONVERTER_H_
diff --git a/src/wrapped32/generated/functions_list.txt b/src/wrapped32/generated/functions_list.txt
new file mode 100644
index 00000000..28592269
--- /dev/null
+++ b/src/wrapped32/generated/functions_list.txt
@@ -0,0 +1,365 @@
+#() vFv -> vFv
+#() vFi -> vFi
+#() vFu -> vFu
+#() vFp -> vFp
+#() vFA -> vFA
+#() iFv -> iFv
+#() iFi -> iFi
+#() iFI -> iFI
+#() iFu -> iFu
+#() iFf -> iFf
+#() iFd -> iFd
+#() iFL -> iFL
+#() iFp -> iFp
+#() iFh -> iFh
+#() iFH -> iFH
+#() IFf -> IFf
+#() IFd -> IFd
+#() uFv -> uFv
+#() uFu -> uFu
+#() uFU -> uFU
+#() UFs -> UFs
+#() fFf -> fFf
+#() dFv -> dFv
+#() dFd -> dFd
+#() lFi -> lFi
+#() lFp -> lFp
+#() LFv -> LFv
+#() LFL -> LFL
+#() pFu -> pFu
+#() pFL -> pFL
+#() pFp -> pFp
+#() hFv -> hFv
+#() aFa -> aFa
+#() vFEv -> vFEv
+#() vFEp -> vFEp
+#() iFEv -> iFEv
+#() iFEi -> iFEi
+#() iFEL -> iFEL
+#() iFEp -> iFEp
+#() iFEh -> iFEh
+#() iFEO -> iFEO
+#() iFii -> iFii
+#() iFiI -> iFiI
+#() iFiu -> iFiu
+#() iFip -> iFip
+#() iFuu -> iFuu
+#() iFup -> iFup
+#() iFli -> iFli
+#() iFpi -> iFpi
+#() iFpp -> iFpp
+#() iFhp -> iFhp
+#() iFhh -> iFhh
+#() IFII -> IFII
+#() uFEu -> uFEu
+#() uFEV -> uFEV
+#() uFpa -> uFpa
+#() UFii -> UFii
+#() UFUU -> UFUU
+#() UFss -> UFss
+#() fFif -> fFif
+#() fFfi -> fFfi
+#() fFff -> fFff
+#() fFfD -> fFfD
+#() fFfp -> fFfp
+#() dFid -> dFid
+#() dFdi -> dFdi
+#() dFdd -> dFdd
+#() dFdD -> dFdD
+#() dFdp -> dFdp
+#() LFpp -> LFpp
+#() pFEv -> pFEv
+#() pFEp -> pFEp
+#() pFLL -> pFLL
+#() aFia -> aFia
+#() iFHBp_ -> iFHB
+#() vFEip -> vFEip
+#() vFEpi -> vFEpi
+#() vFEpu -> vFEpu
+#() vFfpp -> vFfpp
+#() vFdpp -> vFdpp
+#() iFEpi -> iFEpi
+#() iFEpL -> iFEpL
+#() iFEpp -> iFEpp
+#() iFEpV -> iFEpV
+#() iFiii -> iFiii
+#() iFiiI -> iFiiI
+#() iFiiu -> iFiiu
+#() iFiiO -> iFiiO
+#() iFiII -> iFiII
+#() iFiuu -> iFiuu
+#() iFiLN -> iFiLN
+#() iFipp -> iFipp
+#() iFuii -> iFuii
+#() iFuip -> iFuip
+#() iFuui -> iFuui
+#() iFuuu -> iFuuu
+#() iFuLp -> iFuLp
+#() iFupp -> iFupp
+#() iFpiu -> iFpiu
+#() iFpip -> iFpip
+#() iFpuu -> iFpuu
+#() iFppu -> iFppu
+#() iFppL -> iFppL
+#() iFppp -> iFppp
+#() iFpOu -> iFpOu
+#() IFiIi -> IFiIi
+#() fFfff -> fFfff
+#() fFffp -> fFffp
+#() dFddd -> dFddd
+#() dFddp -> dFddp
+#() pFEip -> pFEip
+#() pFEpi -> pFEpi
+#() pFEpp -> pFEpp
+#() pFppL -> pFppL
+#() pFpOM -> pFpOM
+#() hFEpp -> hFEpp
+#() aFipa -> aFipa
+#() lFpBp_i -> lFpBi
+#() vFEipV -> vFEipV
+#() vFEppp -> vFEppp
+#() iFEiiN -> iFEiiN
+#() iFEipp -> iFEipp
+#() iFELup -> iFELup
+#() iFEpip -> iFEpip
+#() iFEpup -> iFEpup
+#() iFEppu -> iFEppu
+#() iFEppL -> iFEppL
+#() iFEppp -> iFEppp
+#() iFiiII -> iFiiII
+#() iFiuui -> iFiuui
+#() LFpLLh -> LFpLLh
+#() pFEppi -> pFEppi
+#() pFEppp -> pFEppp
+#() pFppuL -> pFppuL
+#() pFppLL -> pFppLL
+#() iFEppiV -> iFEppiV
+#() iFEpppi -> iFEpppi
+#() iFiLLLL -> iFiLLLL
+#() iFEBh_ppp -> iFEBppp
+#() iFEpippppp -> iFEpippppp
+#defined(ANDROID) pFv -> pFv
+#defined(ANDROID) vFEpppp -> vFEpppp
+#defined(HAVE_LD80BITS) DFD -> DFD
+#defined(HAVE_LD80BITS) DFDD -> DFDD
+#defined(HAVE_LD80BITS) DFDp -> DFDp
+#!defined(HAVE_LD80BITS) KFK -> KFK
+#!defined(HAVE_LD80BITS) KFKK -> KFKK
+#!defined(HAVE_LD80BITS) KFKp -> KFKp
+#() iFEvpV -> iFEpV
+#() UFsvvs -> UFss
+wrappedcrashhandler:
+wrappedldlinux:
+- pFv:
+  - ___tls_get_addr
+- pFp:
+  - __tls_get_addr
+wrappedlibc:
+- vFv:
+- vFp:
+- iFv:
+- iFi:
+  - __close_nocancel
+- iFL:
+- iFp:
+- iFO:
+- uFu:
+- uFV:
+- LFL:
+- pFL:
+- vFip:
+- vFpi:
+- vFpu:
+- iFpp:
+- iFpV:
+- IFII:
+- UFUU:
+- pFip:
+  - signal
+- hFpp:
+- vFipV:
+- iFvpV:
+- iFiiN:
+- iFipp:
+- iFppp:
+- vFpppp:
+  - __libc_init
+- iFiiII:
+- iFppiV:
+- iFpippppp:
+wrappedlibdl:
+- iFp:
+  - dlclose
+- pFv:
+  - dlerror
+- iFpp:
+  - _dl_find_object
+  - dladdr
+- pFpi:
+  - dlopen
+- pFpp:
+  - dlsym
+- iFpip:
+  - dlinfo
+- pFppi:
+  - dlmopen
+- pFppp:
+  - dlvsym
+- iFpppi:
+  - dladdr1
+wrappedlibm:
+- UFs:
+  - cacosf
+  - cacoshf
+  - casinf
+  - casinhf
+  - catanf
+  - catanhf
+  - ccosf
+  - ccoshf
+  - cexpf
+  - clogf
+  - cprojf
+  - csinf
+  - csinhf
+  - csqrtf
+  - ctanf
+  - ctanhf
+- fFf:
+  - __acosf_finite
+  - __acoshf_finite
+  - __asinf_finite
+  - __coshf_finite
+  - __exp2f_finite
+  - __expf_finite
+  - __log10f_finite
+  - __log2f_finite
+  - __logf_finite
+  - __sinhf_finite
+  - __sqrtf_finite
+- dFd:
+  - __acos_finite
+  - __acosh_finite
+  - __asin_finite
+  - __cosh_finite
+  - __exp2_finite
+  - __exp_finite
+  - __log10_finite
+  - __log2_finite
+  - __log_finite
+  - __sinh_finite
+  - __sqrt_finite
+- DFD:
+  - pow10l
+- KFK:
+  - acoshl
+  - acosl
+  - asinhl
+  - asinl
+  - atanhl
+  - cbrtl
+  - erfcl
+  - erfl
+  - ldexpl
+  - lgammal
+  - logl
+  - pow10l
+  - tgammal
+- fFff:
+  - __atan2f_finite
+  - __hypotf_finite
+  - __powf_finite
+- dFdd:
+  - __atan2_finite
+  - __hypot_finite
+  - __pow_finite
+- KFKK:
+  - fmodl
+  - powl
+- KFKp:
+  - frexpl
+  - lgammal_r
+- UFsvvs:
+  - cpowf
+wrappedlibpthread:
+- vFv:
+  - __pthread_initialize
+- vFp:
+  - __pthread_register_cancel
+  - __pthread_unregister_cancel
+  - __pthread_unwind_next
+- iFp:
+  - __pthread_mutex_destroy
+  - __pthread_mutex_lock
+  - __pthread_mutex_trylock
+  - __pthread_mutex_unlock
+  - pthread_attr_destroy
+  - pthread_attr_init
+  - pthread_cond_broadcast@GLIBC_2.0
+  - pthread_cond_destroy@GLIBC_2.0
+  - pthread_cond_signal@GLIBC_2.0
+  - pthread_mutex_destroy
+  - pthread_mutex_lock
+  - pthread_mutex_trylock
+  - pthread_mutex_unlock
+  - pthread_rwlock_rdlock
+  - pthread_rwlock_unlock
+  - pthread_rwlock_wrlock
+- iFh:
+  - pthread_detach
+- vFpi:
+  - _pthread_cleanup_pop
+  - _pthread_cleanup_pop_restore
+- iFpi:
+  - pthread_attr_setdetachstate
+  - pthread_attr_setinheritsched
+  - pthread_attr_setschedpolicy
+  - pthread_attr_setscope
+  - pthread_kill
+  - pthread_mutexattr_setkind_np
+- iFpL:
+  - pthread_attr_setguardsize
+  - pthread_attr_setstacksize
+- iFpp:
+  - __pthread_key_create
+  - __pthread_mutex_init
+  - __pthread_once
+  - pthread_attr_getdetachstate
+  - pthread_attr_getguardsize
+  - pthread_attr_getinheritsched
+  - pthread_attr_getschedparam
+  - pthread_attr_getschedpolicy
+  - pthread_attr_getscope
+  - pthread_attr_getstackaddr
+  - pthread_attr_getstacksize
+  - pthread_attr_setschedparam
+  - pthread_attr_setstackaddr
+  - pthread_cond_init@GLIBC_2.0
+  - pthread_cond_wait
+  - pthread_cond_wait@GLIBC_2.0
+  - pthread_key_create
+  - pthread_mutex_init
+  - pthread_mutex_timedlock
+  - pthread_once
+  - pthread_setname_np
+- vFppp:
+  - _pthread_cleanup_push
+  - _pthread_cleanup_push_defer
+- iFLup:
+  - pthread_setaffinity_np
+- iFpup:
+  - pthread_attr_setaffinity_np
+  - pthread_getaffinity_np
+- iFppu:
+  - pthread_getname_np
+- iFppL:
+  - pthread_attr_setstack
+- iFppp:
+  - __pthread_atfork
+  - pthread_atfork
+  - pthread_attr_getstack
+  - pthread_cond_timedwait
+  - pthread_cond_timedwait@GLIBC_2.0
+- iFhppp:
+  - pthread_create
+wrappedlibrt:
diff --git a/src/wrapped32/generated/wrappedcrashhandlerdefs32.h b/src/wrapped32/generated/wrappedcrashhandlerdefs32.h
new file mode 100644
index 00000000..83e132a1
--- /dev/null
+++ b/src/wrapped32/generated/wrappedcrashhandlerdefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedcrashhandlerDEFS32_H_
+#define __wrappedcrashhandlerDEFS32_H_
+
+
+#endif // __wrappedcrashhandlerDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedcrashhandlertypes32.h b/src/wrapped32/generated/wrappedcrashhandlertypes32.h
new file mode 100644
index 00000000..5b75966f
--- /dev/null
+++ b/src/wrapped32/generated/wrappedcrashhandlertypes32.h
@@ -0,0 +1,17 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedcrashhandlerTYPES32_H_
+#define __wrappedcrashhandlerTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedcrashhandlerTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedcrashhandlerundefs32.h b/src/wrapped32/generated/wrappedcrashhandlerundefs32.h
new file mode 100644
index 00000000..d70f6207
--- /dev/null
+++ b/src/wrapped32/generated/wrappedcrashhandlerundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedcrashhandlerUNDEFS32_H_
+#define __wrappedcrashhandlerUNDEFS32_H_
+
+
+#endif // __wrappedcrashhandlerUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedldlinuxdefs32.h b/src/wrapped32/generated/wrappedldlinuxdefs32.h
new file mode 100644
index 00000000..24962643
--- /dev/null
+++ b/src/wrapped32/generated/wrappedldlinuxdefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedldlinuxDEFS32_H_
+#define __wrappedldlinuxDEFS32_H_
+
+
+#endif // __wrappedldlinuxDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedldlinuxtypes32.h b/src/wrapped32/generated/wrappedldlinuxtypes32.h
new file mode 100644
index 00000000..e010f126
--- /dev/null
+++ b/src/wrapped32/generated/wrappedldlinuxtypes32.h
@@ -0,0 +1,21 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedldlinuxTYPES32_H_
+#define __wrappedldlinuxTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef void* (*pFv_t)(void);
+typedef void* (*pFp_t)(void*);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(___tls_get_addr, pFv_t) \
+	GO(__tls_get_addr, pFp_t)
+
+#endif // __wrappedldlinuxTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedldlinuxundefs32.h b/src/wrapped32/generated/wrappedldlinuxundefs32.h
new file mode 100644
index 00000000..0ab4c7e3
--- /dev/null
+++ b/src/wrapped32/generated/wrappedldlinuxundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedldlinuxUNDEFS32_H_
+#define __wrappedldlinuxUNDEFS32_H_
+
+
+#endif // __wrappedldlinuxUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibcdefs32.h b/src/wrapped32/generated/wrappedlibcdefs32.h
new file mode 100644
index 00000000..bcd18301
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibcdefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibcDEFS32_H_
+#define __wrappedlibcDEFS32_H_
+
+
+#endif // __wrappedlibcDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibctypes32.h b/src/wrapped32/generated/wrappedlibctypes32.h
new file mode 100644
index 00000000..1b3d5ab3
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibctypes32.h
@@ -0,0 +1,49 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibcTYPES32_H_
+#define __wrappedlibcTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef void (*vFv_t)(void);
+typedef void (*vFp_t)(void*);
+typedef int32_t (*iFv_t)(void);
+typedef int32_t (*iFi_t)(int32_t);
+typedef int32_t (*iFL_t)(uintptr_t);
+typedef int32_t (*iFp_t)(void*);
+typedef int32_t (*iFO_t)(int32_t);
+typedef uint32_t (*uFu_t)(uint32_t);
+typedef uint32_t (*uFV_t)(...);
+typedef uintptr_t (*LFL_t)(uintptr_t);
+typedef void* (*pFL_t)(uintptr_t);
+typedef void (*vFip_t)(int32_t, void*);
+typedef void (*vFpi_t)(void*, int32_t);
+typedef void (*vFpu_t)(void*, uint32_t);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef int32_t (*iFpV_t)(void*, ...);
+typedef int64_t (*IFII_t)(int64_t, int64_t);
+typedef uint64_t (*UFUU_t)(uint64_t, uint64_t);
+typedef void* (*pFip_t)(int32_t, void*);
+typedef uintptr_t (*hFpp_t)(void*, void*);
+typedef void (*vFipV_t)(int32_t, void*, ...);
+typedef int32_t (*iFvpV_t)(void, void*, ...);
+typedef int32_t (*iFiiN_t)(int32_t, int32_t, ...);
+typedef int32_t (*iFipp_t)(int32_t, void*, void*);
+typedef int32_t (*iFppp_t)(void*, void*, void*);
+typedef void (*vFpppp_t)(void*, void*, void*, void*);
+typedef int32_t (*iFiiII_t)(int32_t, int32_t, int64_t, int64_t);
+typedef int32_t (*iFppiV_t)(void*, void*, int32_t, ...);
+typedef int32_t (*iFpippppp_t)(void*, int32_t, void*, void*, void*, void*, void*);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(__close_nocancel, iFi_t) \
+	GO(signal, pFip_t) \
+	GO(__libc_init, vFpppp_t)
+
+#endif // __wrappedlibcTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedlibcundefs32.h b/src/wrapped32/generated/wrappedlibcundefs32.h
new file mode 100644
index 00000000..13e37512
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibcundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibcUNDEFS32_H_
+#define __wrappedlibcUNDEFS32_H_
+
+
+#endif // __wrappedlibcUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibdldefs32.h b/src/wrapped32/generated/wrappedlibdldefs32.h
new file mode 100644
index 00000000..a817cc31
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibdldefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibdlDEFS32_H_
+#define __wrappedlibdlDEFS32_H_
+
+
+#endif // __wrappedlibdlDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibdltypes32.h b/src/wrapped32/generated/wrappedlibdltypes32.h
new file mode 100644
index 00000000..6368b9a1
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibdltypes32.h
@@ -0,0 +1,36 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibdlTYPES32_H_
+#define __wrappedlibdlTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef int32_t (*iFp_t)(void*);
+typedef void* (*pFv_t)(void);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef void* (*pFpi_t)(void*, int32_t);
+typedef void* (*pFpp_t)(void*, void*);
+typedef int32_t (*iFpip_t)(void*, int32_t, void*);
+typedef void* (*pFppi_t)(void*, void*, int32_t);
+typedef void* (*pFppp_t)(void*, void*, void*);
+typedef int32_t (*iFpppi_t)(void*, void*, void*, int32_t);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(dlclose, iFp_t) \
+	GO(dlerror, pFv_t) \
+	GO(_dl_find_object, iFpp_t) \
+	GO(dladdr, iFpp_t) \
+	GO(dlopen, pFpi_t) \
+	GO(dlsym, pFpp_t) \
+	GO(dlinfo, iFpip_t) \
+	GO(dlmopen, pFppi_t) \
+	GO(dlvsym, pFppp_t) \
+	GO(dladdr1, iFpppi_t)
+
+#endif // __wrappedlibdlTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedlibdlundefs32.h b/src/wrapped32/generated/wrappedlibdlundefs32.h
new file mode 100644
index 00000000..1a512d1a
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibdlundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibdlUNDEFS32_H_
+#define __wrappedlibdlUNDEFS32_H_
+
+
+#endif // __wrappedlibdlUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibmdefs32.h b/src/wrapped32/generated/wrappedlibmdefs32.h
new file mode 100644
index 00000000..abfcbb76
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibmdefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibmDEFS32_H_
+#define __wrappedlibmDEFS32_H_
+
+
+#endif // __wrappedlibmDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibmtypes32.h b/src/wrapped32/generated/wrappedlibmtypes32.h
new file mode 100644
index 00000000..589a2f45
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibmtypes32.h
@@ -0,0 +1,90 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibmTYPES32_H_
+#define __wrappedlibmTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef uint64_t (*UFs_t)(void*);
+typedef float (*fFf_t)(float);
+typedef double (*dFd_t)(double);
+typedef long double (*DFD_t)(long double);
+typedef double (*KFK_t)(double);
+typedef float (*fFff_t)(float, float);
+typedef double (*dFdd_t)(double, double);
+typedef double (*KFKK_t)(double, double);
+typedef double (*KFKp_t)(double, void*);
+typedef uint64_t (*UFsvvs_t)(void*, void, void, void*);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(cacosf, UFs_t) \
+	GO(cacoshf, UFs_t) \
+	GO(casinf, UFs_t) \
+	GO(casinhf, UFs_t) \
+	GO(catanf, UFs_t) \
+	GO(catanhf, UFs_t) \
+	GO(ccosf, UFs_t) \
+	GO(ccoshf, UFs_t) \
+	GO(cexpf, UFs_t) \
+	GO(clogf, UFs_t) \
+	GO(cprojf, UFs_t) \
+	GO(csinf, UFs_t) \
+	GO(csinhf, UFs_t) \
+	GO(csqrtf, UFs_t) \
+	GO(ctanf, UFs_t) \
+	GO(ctanhf, UFs_t) \
+	GO(__acosf_finite, fFf_t) \
+	GO(__acoshf_finite, fFf_t) \
+	GO(__asinf_finite, fFf_t) \
+	GO(__coshf_finite, fFf_t) \
+	GO(__exp2f_finite, fFf_t) \
+	GO(__expf_finite, fFf_t) \
+	GO(__log10f_finite, fFf_t) \
+	GO(__log2f_finite, fFf_t) \
+	GO(__logf_finite, fFf_t) \
+	GO(__sinhf_finite, fFf_t) \
+	GO(__sqrtf_finite, fFf_t) \
+	GO(__acos_finite, dFd_t) \
+	GO(__acosh_finite, dFd_t) \
+	GO(__asin_finite, dFd_t) \
+	GO(__cosh_finite, dFd_t) \
+	GO(__exp2_finite, dFd_t) \
+	GO(__exp_finite, dFd_t) \
+	GO(__log10_finite, dFd_t) \
+	GO(__log2_finite, dFd_t) \
+	GO(__log_finite, dFd_t) \
+	GO(__sinh_finite, dFd_t) \
+	GO(__sqrt_finite, dFd_t) \
+	GO(pow10l, DFD_t) \
+	GO(acoshl, KFK_t) \
+	GO(acosl, KFK_t) \
+	GO(asinhl, KFK_t) \
+	GO(asinl, KFK_t) \
+	GO(atanhl, KFK_t) \
+	GO(cbrtl, KFK_t) \
+	GO(erfcl, KFK_t) \
+	GO(erfl, KFK_t) \
+	GO(ldexpl, KFK_t) \
+	GO(lgammal, KFK_t) \
+	GO(logl, KFK_t) \
+	GO(pow10l, KFK_t) \
+	GO(tgammal, KFK_t) \
+	GO(__atan2f_finite, fFff_t) \
+	GO(__hypotf_finite, fFff_t) \
+	GO(__powf_finite, fFff_t) \
+	GO(__atan2_finite, dFdd_t) \
+	GO(__hypot_finite, dFdd_t) \
+	GO(__pow_finite, dFdd_t) \
+	GO(fmodl, KFKK_t) \
+	GO(powl, KFKK_t) \
+	GO(frexpl, KFKp_t) \
+	GO(lgammal_r, KFKp_t) \
+	GO(cpowf, UFsvvs_t)
+
+#endif // __wrappedlibmTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedlibmundefs32.h b/src/wrapped32/generated/wrappedlibmundefs32.h
new file mode 100644
index 00000000..f9a4b404
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibmundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibmUNDEFS32_H_
+#define __wrappedlibmUNDEFS32_H_
+
+
+#endif // __wrappedlibmUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibpthreaddefs32.h b/src/wrapped32/generated/wrappedlibpthreaddefs32.h
new file mode 100644
index 00000000..4192688c
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibpthreaddefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibpthreadDEFS32_H_
+#define __wrappedlibpthreadDEFS32_H_
+
+
+#endif // __wrappedlibpthreadDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibpthreadtypes32.h b/src/wrapped32/generated/wrappedlibpthreadtypes32.h
new file mode 100644
index 00000000..74b615de
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibpthreadtypes32.h
@@ -0,0 +1,97 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibpthreadTYPES32_H_
+#define __wrappedlibpthreadTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+typedef void (*vFv_t)(void);
+typedef void (*vFp_t)(void*);
+typedef int32_t (*iFp_t)(void*);
+typedef int32_t (*iFh_t)(uintptr_t);
+typedef void (*vFpi_t)(void*, int32_t);
+typedef int32_t (*iFpi_t)(void*, int32_t);
+typedef int32_t (*iFpL_t)(void*, uintptr_t);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef void (*vFppp_t)(void*, void*, void*);
+typedef int32_t (*iFLup_t)(uintptr_t, uint32_t, void*);
+typedef int32_t (*iFpup_t)(void*, uint32_t, void*);
+typedef int32_t (*iFppu_t)(void*, void*, uint32_t);
+typedef int32_t (*iFppL_t)(void*, void*, uintptr_t);
+typedef int32_t (*iFppp_t)(void*, void*, void*);
+typedef int32_t (*iFhppp_t)(uintptr_t, void*, void*, void*);
+
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(__pthread_initialize, vFv_t) \
+	GO(__pthread_register_cancel, vFp_t) \
+	GO(__pthread_unregister_cancel, vFp_t) \
+	GO(__pthread_unwind_next, vFp_t) \
+	GO(__pthread_mutex_destroy, iFp_t) \
+	GO(__pthread_mutex_lock, iFp_t) \
+	GO(__pthread_mutex_trylock, iFp_t) \
+	GO(__pthread_mutex_unlock, iFp_t) \
+	GO(pthread_attr_destroy, iFp_t) \
+	GO(pthread_attr_init, iFp_t) \
+	GO(pthread_cond_broadcast@GLIBC_2.0, iFp_t) \
+	GO(pthread_cond_destroy@GLIBC_2.0, iFp_t) \
+	GO(pthread_cond_signal@GLIBC_2.0, iFp_t) \
+	GO(pthread_mutex_destroy, iFp_t) \
+	GO(pthread_mutex_lock, iFp_t) \
+	GO(pthread_mutex_trylock, iFp_t) \
+	GO(pthread_mutex_unlock, iFp_t) \
+	GO(pthread_rwlock_rdlock, iFp_t) \
+	GO(pthread_rwlock_unlock, iFp_t) \
+	GO(pthread_rwlock_wrlock, iFp_t) \
+	GO(pthread_detach, iFh_t) \
+	GO(_pthread_cleanup_pop, vFpi_t) \
+	GO(_pthread_cleanup_pop_restore, vFpi_t) \
+	GO(pthread_attr_setdetachstate, iFpi_t) \
+	GO(pthread_attr_setinheritsched, iFpi_t) \
+	GO(pthread_attr_setschedpolicy, iFpi_t) \
+	GO(pthread_attr_setscope, iFpi_t) \
+	GO(pthread_kill, iFpi_t) \
+	GO(pthread_mutexattr_setkind_np, iFpi_t) \
+	GO(pthread_attr_setguardsize, iFpL_t) \
+	GO(pthread_attr_setstacksize, iFpL_t) \
+	GO(__pthread_key_create, iFpp_t) \
+	GO(__pthread_mutex_init, iFpp_t) \
+	GO(__pthread_once, iFpp_t) \
+	GO(pthread_attr_getdetachstate, iFpp_t) \
+	GO(pthread_attr_getguardsize, iFpp_t) \
+	GO(pthread_attr_getinheritsched, iFpp_t) \
+	GO(pthread_attr_getschedparam, iFpp_t) \
+	GO(pthread_attr_getschedpolicy, iFpp_t) \
+	GO(pthread_attr_getscope, iFpp_t) \
+	GO(pthread_attr_getstackaddr, iFpp_t) \
+	GO(pthread_attr_getstacksize, iFpp_t) \
+	GO(pthread_attr_setschedparam, iFpp_t) \
+	GO(pthread_attr_setstackaddr, iFpp_t) \
+	GO(pthread_cond_init@GLIBC_2.0, iFpp_t) \
+	GO(pthread_cond_wait, iFpp_t) \
+	GO(pthread_cond_wait@GLIBC_2.0, iFpp_t) \
+	GO(pthread_key_create, iFpp_t) \
+	GO(pthread_mutex_init, iFpp_t) \
+	GO(pthread_mutex_timedlock, iFpp_t) \
+	GO(pthread_once, iFpp_t) \
+	GO(pthread_setname_np, iFpp_t) \
+	GO(_pthread_cleanup_push, vFppp_t) \
+	GO(_pthread_cleanup_push_defer, vFppp_t) \
+	GO(pthread_setaffinity_np, iFLup_t) \
+	GO(pthread_attr_setaffinity_np, iFpup_t) \
+	GO(pthread_getaffinity_np, iFpup_t) \
+	GO(pthread_getname_np, iFppu_t) \
+	GO(pthread_attr_setstack, iFppL_t) \
+	GO(__pthread_atfork, iFppp_t) \
+	GO(pthread_atfork, iFppp_t) \
+	GO(pthread_attr_getstack, iFppp_t) \
+	GO(pthread_cond_timedwait, iFppp_t) \
+	GO(pthread_cond_timedwait@GLIBC_2.0, iFppp_t) \
+	GO(pthread_create, iFhppp_t)
+
+#endif // __wrappedlibpthreadTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedlibpthreadundefs32.h b/src/wrapped32/generated/wrappedlibpthreadundefs32.h
new file mode 100644
index 00000000..687cec63
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibpthreadundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibpthreadUNDEFS32_H_
+#define __wrappedlibpthreadUNDEFS32_H_
+
+
+#endif // __wrappedlibpthreadUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibrtdefs32.h b/src/wrapped32/generated/wrappedlibrtdefs32.h
new file mode 100644
index 00000000..5c2c26cb
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibrtdefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibrtDEFS32_H_
+#define __wrappedlibrtDEFS32_H_
+
+
+#endif // __wrappedlibrtDEFS32_H_
diff --git a/src/wrapped32/generated/wrappedlibrttypes32.h b/src/wrapped32/generated/wrappedlibrttypes32.h
new file mode 100644
index 00000000..41bb06d3
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibrttypes32.h
@@ -0,0 +1,17 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibrtTYPES32_H_
+#define __wrappedlibrtTYPES32_H_
+
+#ifndef LIBNAME
+#error You should only #include this file inside a wrapped*.c file
+#endif
+#ifndef ADDED_FUNCTIONS
+#define ADDED_FUNCTIONS() 
+#endif
+
+
+#define SUPER() ADDED_FUNCTIONS()
+
+#endif // __wrappedlibrtTYPES32_H_
diff --git a/src/wrapped32/generated/wrappedlibrtundefs32.h b/src/wrapped32/generated/wrappedlibrtundefs32.h
new file mode 100644
index 00000000..13b52f67
--- /dev/null
+++ b/src/wrapped32/generated/wrappedlibrtundefs32.h
@@ -0,0 +1,8 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __wrappedlibrtUNDEFS32_H_
+#define __wrappedlibrtUNDEFS32_H_
+
+
+#endif // __wrappedlibrtUNDEFS32_H_
diff --git a/src/wrapped32/generated/wrapper32.c b/src/wrapped32/generated/wrapper32.c
new file mode 100644
index 00000000..1d8c2890
--- /dev/null
+++ b/src/wrapped32/generated/wrapper32.c
@@ -0,0 +1,423 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+#include "wrapper32.h"
+#include "emu/x64emu_private.h"
+#include "emu/x87emu_private.h"
+#include "regs.h"
+#include "x64emu.h"
+#include "box32.h"
+#include "converter32.h"
+
+typedef union ui64_s {
+    int64_t     i;
+    uint64_t    u;
+    uint32_t    d[2];
+} ui64_t;
+
+typedef struct _2uint_struct_s {
+	uint32_t	a;
+	uint32_t	b;
+} _2uint_struct_t;
+
+extern void* my__IO_2_1_stderr_;
+extern void* my__IO_2_1_stdin_ ;
+extern void* my__IO_2_1_stdout_;
+
+static void* io_convert(void* v)
+{
+	if(!v)
+		return v;
+	if(v==my__IO_2_1_stderr_)
+		return stderr;
+	if(v==my__IO_2_1_stdin_)
+		return stdin;
+	if(v==my__IO_2_1_stdout_)
+		return stdout;
+	return v;
+}
+
+typedef struct my_GValue_s
+{
+  int         g_type;
+  union {
+    int        v_int;
+    int64_t    v_int64;
+    uint64_t   v_uint64;
+    float      v_float;
+    double     v_double;
+    void*      v_pointer;
+  } data[2];
+} my_GValue_t;
+
+static void alignGValue(my_GValue_t* v, void* value)
+{
+    v->g_type = *(int*)value;
+    memcpy(v->data, value+4, 2*sizeof(double));
+}
+static void unalignGValue(void* value, my_GValue_t* v)
+{
+    *(int*)value = v->g_type;
+    memcpy(value+4, v->data, 2*sizeof(double));
+}
+
+void* VulkanFromx86(void* src, void** save);
+void VulkanTox86(void* src, void* save);
+
+#define ST0val ST0.d
+
+int of_convert32(int);
+
+typedef void (*vFv_t)(void);
+typedef void (*vFi_t)(int32_t);
+typedef void (*vFu_t)(uint32_t);
+typedef void (*vFp_t)(void*);
+typedef void (*vFA_t)(void*);
+typedef int32_t (*iFv_t)(void);
+typedef int32_t (*iFi_t)(int32_t);
+typedef int32_t (*iFI_t)(int64_t);
+typedef int32_t (*iFu_t)(uint32_t);
+typedef int32_t (*iFf_t)(float);
+typedef int32_t (*iFd_t)(double);
+typedef int32_t (*iFL_t)(uintptr_t);
+typedef int32_t (*iFp_t)(void*);
+typedef int32_t (*iFh_t)(uintptr_t);
+typedef int32_t (*iFH_t)(uintptr_t);
+typedef int64_t (*IFf_t)(float);
+typedef int64_t (*IFd_t)(double);
+typedef uint32_t (*uFv_t)(void);
+typedef uint32_t (*uFu_t)(uint32_t);
+typedef uint32_t (*uFU_t)(uint64_t);
+typedef uint64_t (*UFs_t)(void*);
+typedef float (*fFf_t)(float);
+typedef double (*dFv_t)(void);
+typedef double (*dFd_t)(double);
+typedef intptr_t (*lFi_t)(int32_t);
+typedef intptr_t (*lFp_t)(void*);
+typedef uintptr_t (*LFv_t)(void);
+typedef uintptr_t (*LFL_t)(uintptr_t);
+typedef void* (*pFu_t)(uint32_t);
+typedef void* (*pFL_t)(uintptr_t);
+typedef void* (*pFp_t)(void*);
+typedef uintptr_t (*hFv_t)(void);
+typedef void* (*aFa_t)(void*);
+typedef void (*vFEv_t)(x64emu_t*);
+typedef void (*vFEp_t)(x64emu_t*, void*);
+typedef int32_t (*iFEv_t)(x64emu_t*);
+typedef int32_t (*iFEi_t)(x64emu_t*, int32_t);
+typedef int32_t (*iFEL_t)(x64emu_t*, uintptr_t);
+typedef int32_t (*iFEp_t)(x64emu_t*, void*);
+typedef int32_t (*iFEh_t)(x64emu_t*, uintptr_t);
+typedef int32_t (*iFEO_t)(x64emu_t*, int32_t);
+typedef int32_t (*iFii_t)(int32_t, int32_t);
+typedef int32_t (*iFiI_t)(int32_t, int64_t);
+typedef int32_t (*iFiu_t)(int32_t, uint32_t);
+typedef int32_t (*iFip_t)(int32_t, void*);
+typedef int32_t (*iFuu_t)(uint32_t, uint32_t);
+typedef int32_t (*iFup_t)(uint32_t, void*);
+typedef int32_t (*iFli_t)(intptr_t, int32_t);
+typedef int32_t (*iFpi_t)(void*, int32_t);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef int32_t (*iFhp_t)(uintptr_t, void*);
+typedef int32_t (*iFhh_t)(uintptr_t, uintptr_t);
+typedef int64_t (*IFII_t)(int64_t, int64_t);
+typedef uint32_t (*uFEu_t)(x64emu_t*, uint32_t);
+typedef uint32_t (*uFEV_t)(x64emu_t*, void*);
+typedef uint32_t (*uFpa_t)(void*, void*);
+typedef uint64_t (*UFii_t)(int32_t, int32_t);
+typedef uint64_t (*UFUU_t)(uint64_t, uint64_t);
+typedef uint64_t (*UFss_t)(void*, void*);
+typedef float (*fFif_t)(int32_t, float);
+typedef float (*fFfi_t)(float, int32_t);
+typedef float (*fFff_t)(float, float);
+typedef float (*fFfD_t)(float, long double);
+typedef float (*fFfp_t)(float, void*);
+typedef double (*dFid_t)(int32_t, double);
+typedef double (*dFdi_t)(double, int32_t);
+typedef double (*dFdd_t)(double, double);
+typedef double (*dFdD_t)(double, long double);
+typedef double (*dFdp_t)(double, void*);
+typedef uintptr_t (*LFpp_t)(void*, void*);
+typedef void* (*pFEv_t)(x64emu_t*);
+typedef void* (*pFEp_t)(x64emu_t*, void*);
+typedef void* (*pFLL_t)(uintptr_t, uintptr_t);
+typedef void* (*aFia_t)(int32_t, void*);
+typedef int32_t (*iFHBp__t)(uintptr_t, struct_p_t*);
+typedef void (*vFEip_t)(x64emu_t*, int32_t, void*);
+typedef void (*vFEpi_t)(x64emu_t*, void*, int32_t);
+typedef void (*vFEpu_t)(x64emu_t*, void*, uint32_t);
+typedef void (*vFfpp_t)(float, void*, void*);
+typedef void (*vFdpp_t)(double, void*, void*);
+typedef int32_t (*iFEpi_t)(x64emu_t*, void*, int32_t);
+typedef int32_t (*iFEpL_t)(x64emu_t*, void*, uintptr_t);
+typedef int32_t (*iFEpp_t)(x64emu_t*, void*, void*);
+typedef int32_t (*iFEpV_t)(x64emu_t*, void*, void*);
+typedef int32_t (*iFiii_t)(int32_t, int32_t, int32_t);
+typedef int32_t (*iFiiI_t)(int32_t, int32_t, int64_t);
+typedef int32_t (*iFiiu_t)(int32_t, int32_t, uint32_t);
+typedef int32_t (*iFiiO_t)(int32_t, int32_t, int32_t);
+typedef int32_t (*iFiII_t)(int32_t, int64_t, int64_t);
+typedef int32_t (*iFiuu_t)(int32_t, uint32_t, uint32_t);
+typedef int32_t (*iFiLN_t)(int32_t, uintptr_t, ...);
+typedef int32_t (*iFipp_t)(int32_t, void*, void*);
+typedef int32_t (*iFuii_t)(uint32_t, int32_t, int32_t);
+typedef int32_t (*iFuip_t)(uint32_t, int32_t, void*);
+typedef int32_t (*iFuui_t)(uint32_t, uint32_t, int32_t);
+typedef int32_t (*iFuuu_t)(uint32_t, uint32_t, uint32_t);
+typedef int32_t (*iFuLp_t)(uint32_t, uintptr_t, void*);
+typedef int32_t (*iFupp_t)(uint32_t, void*, void*);
+typedef int32_t (*iFpiu_t)(void*, int32_t, uint32_t);
+typedef int32_t (*iFpip_t)(void*, int32_t, void*);
+typedef int32_t (*iFpuu_t)(void*, uint32_t, uint32_t);
+typedef int32_t (*iFppu_t)(void*, void*, uint32_t);
+typedef int32_t (*iFppL_t)(void*, void*, uintptr_t);
+typedef int32_t (*iFppp_t)(void*, void*, void*);
+typedef int32_t (*iFpOu_t)(void*, int32_t, uint32_t);
+typedef int64_t (*IFiIi_t)(int32_t, int64_t, int32_t);
+typedef float (*fFfff_t)(float, float, float);
+typedef float (*fFffp_t)(float, float, void*);
+typedef double (*dFddd_t)(double, double, double);
+typedef double (*dFddp_t)(double, double, void*);
+typedef void* (*pFEip_t)(x64emu_t*, int32_t, void*);
+typedef void* (*pFEpi_t)(x64emu_t*, void*, int32_t);
+typedef void* (*pFEpp_t)(x64emu_t*, void*, void*);
+typedef void* (*pFppL_t)(void*, void*, uintptr_t);
+typedef void* (*pFpOM_t)(void*, int32_t, ...);
+typedef uintptr_t (*hFEpp_t)(x64emu_t*, void*, void*);
+typedef void* (*aFipa_t)(int32_t, void*, void*);
+typedef intptr_t (*lFpBp_i_t)(void*, struct_p_t*, int32_t);
+typedef void (*vFEipV_t)(x64emu_t*, int32_t, void*, void*);
+typedef void (*vFEppp_t)(x64emu_t*, void*, void*, void*);
+typedef int32_t (*iFEiiN_t)(x64emu_t*, int32_t, int32_t, ...);
+typedef int32_t (*iFEipp_t)(x64emu_t*, int32_t, void*, void*);
+typedef int32_t (*iFELup_t)(x64emu_t*, uintptr_t, uint32_t, void*);
+typedef int32_t (*iFEpip_t)(x64emu_t*, void*, int32_t, void*);
+typedef int32_t (*iFEpup_t)(x64emu_t*, void*, uint32_t, void*);
+typedef int32_t (*iFEppu_t)(x64emu_t*, void*, void*, uint32_t);
+typedef int32_t (*iFEppL_t)(x64emu_t*, void*, void*, uintptr_t);
+typedef int32_t (*iFEppp_t)(x64emu_t*, void*, void*, void*);
+typedef int32_t (*iFiiII_t)(int32_t, int32_t, int64_t, int64_t);
+typedef int32_t (*iFiuui_t)(int32_t, uint32_t, uint32_t, int32_t);
+typedef uintptr_t (*LFpLLh_t)(void*, uintptr_t, uintptr_t, uintptr_t);
+typedef void* (*pFEppi_t)(x64emu_t*, void*, void*, int32_t);
+typedef void* (*pFEppp_t)(x64emu_t*, void*, void*, void*);
+typedef void* (*pFppuL_t)(void*, void*, uint32_t, uintptr_t);
+typedef void* (*pFppLL_t)(void*, void*, uintptr_t, uintptr_t);
+typedef int32_t (*iFEppiV_t)(x64emu_t*, void*, void*, int32_t, void*);
+typedef int32_t (*iFEpppi_t)(x64emu_t*, void*, void*, void*, int32_t);
+typedef int32_t (*iFiLLLL_t)(int32_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
+typedef int32_t (*iFEBh_ppp_t)(x64emu_t*, struct_h_t*, void*, void*, void*);
+typedef int32_t (*iFEpippppp_t)(x64emu_t*, void*, int32_t, void*, void*, void*, void*, void*);
+
+#if defined(ANDROID)
+typedef void* (*pFv_t)(void);
+typedef void (*vFEpppp_t)(x64emu_t*, void*, void*, void*, void*);
+#endif
+
+#if defined(HAVE_LD80BITS)
+typedef long double (*DFD_t)(long double);
+typedef long double (*DFDD_t)(long double, long double);
+typedef long double (*DFDp_t)(long double, void*);
+#endif
+
+#if !defined(HAVE_LD80BITS)
+typedef double (*KFK_t)(double);
+typedef double (*KFKK_t)(double, double);
+typedef double (*KFKp_t)(double, void*);
+#endif
+
+void vFv_32(x64emu_t *emu, uintptr_t fcn) { vFv_t fn = (vFv_t)fcn; fn(); }
+void vFi_32(x64emu_t *emu, uintptr_t fcn) { vFi_t fn = (vFi_t)fcn; fn(from_ptri(int32_t, R_ESP + 4)); }
+void vFu_32(x64emu_t *emu, uintptr_t fcn) { vFu_t fn = (vFu_t)fcn; fn(from_ptri(uint32_t, R_ESP + 4)); }
+void vFp_32(x64emu_t *emu, uintptr_t fcn) { vFp_t fn = (vFp_t)fcn; fn(from_ptriv(R_ESP + 4)); }
+void vFA_32(x64emu_t *emu, uintptr_t fcn) { vFA_t fn = (vFA_t)fcn; fn(from_locale_d(from_ptri(ptr_t, R_ESP + 4))); }
+void iFv_32(x64emu_t *emu, uintptr_t fcn) { iFv_t fn = (iFv_t)fcn; R_EAX = fn(); }
+void iFi_32(x64emu_t *emu, uintptr_t fcn) { iFi_t fn = (iFi_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4)); }
+void iFI_32(x64emu_t *emu, uintptr_t fcn) { iFI_t fn = (iFI_t)fcn; R_EAX = fn(from_ptri(int64_t, R_ESP + 4)); }
+void iFu_32(x64emu_t *emu, uintptr_t fcn) { iFu_t fn = (iFu_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4)); }
+void iFf_32(x64emu_t *emu, uintptr_t fcn) { iFf_t fn = (iFf_t)fcn; R_EAX = fn(from_ptri(float, R_ESP + 4)); }
+void iFd_32(x64emu_t *emu, uintptr_t fcn) { iFd_t fn = (iFd_t)fcn; R_EAX = fn(from_ptri(double, R_ESP + 4)); }
+void iFL_32(x64emu_t *emu, uintptr_t fcn) { iFL_t fn = (iFL_t)fcn; R_EAX = fn(to_ulong(from_ptri(ulong_t, R_ESP + 4))); }
+void iFp_32(x64emu_t *emu, uintptr_t fcn) { iFp_t fn = (iFp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4)); }
+void iFh_32(x64emu_t *emu, uintptr_t fcn) { iFh_t fn = (iFh_t)fcn; R_EAX = fn(from_hash(from_ptri(ptr_t, R_ESP + 4))); }
+void iFH_32(x64emu_t *emu, uintptr_t fcn) { iFH_t fn = (iFH_t)fcn; R_EAX = fn(from_hash_d(from_ptri(ptr_t, R_ESP + 4))); }
+void IFf_32(x64emu_t *emu, uintptr_t fcn) { IFf_t fn = (IFf_t)fcn; ui64_t r; r.i = fn(from_ptri(float, R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void IFd_32(x64emu_t *emu, uintptr_t fcn) { IFd_t fn = (IFd_t)fcn; ui64_t r; r.i = fn(from_ptri(double, R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void uFv_32(x64emu_t *emu, uintptr_t fcn) { uFv_t fn = (uFv_t)fcn; R_EAX = (uint32_t)fn(); }
+void uFu_32(x64emu_t *emu, uintptr_t fcn) { uFu_t fn = (uFu_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint32_t, R_ESP + 4)); }
+void uFU_32(x64emu_t *emu, uintptr_t fcn) { uFU_t fn = (uFU_t)fcn; R_EAX = (uint32_t)fn(from_ptri(uint64_t, R_ESP + 4)); }
+void UFs_32(x64emu_t *emu, uintptr_t fcn) { UFs_t fn = (UFs_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptrv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void fFf_32(x64emu_t *emu, uintptr_t fcn) { fFf_t fn = (fFf_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4)); fpu_do_push(emu); ST0val = fl; }
+void dFv_32(x64emu_t *emu, uintptr_t fcn) { dFv_t fn = (dFv_t)fcn; double db = fn(); fpu_do_push(emu); ST0val = db; }
+void dFd_32(x64emu_t *emu, uintptr_t fcn) { dFd_t fn = (dFd_t)fcn; double db = fn(from_ptri(double, R_ESP + 4)); fpu_do_push(emu); ST0val = db; }
+void lFi_32(x64emu_t *emu, uintptr_t fcn) { lFi_t fn = (lFi_t)fcn; R_EAX = to_long(fn(from_ptri(int32_t, R_ESP + 4))); }
+void lFp_32(x64emu_t *emu, uintptr_t fcn) { lFp_t fn = (lFp_t)fcn; R_EAX = to_long(fn(from_ptriv(R_ESP + 4))); }
+void LFv_32(x64emu_t *emu, uintptr_t fcn) { LFv_t fn = (LFv_t)fcn; R_EAX = to_ulong(fn()); }
+void LFL_32(x64emu_t *emu, uintptr_t fcn) { LFL_t fn = (LFL_t)fcn; R_EAX = to_ulong(fn(to_ulong(from_ptri(ulong_t, R_ESP + 4)))); }
+void pFu_32(x64emu_t *emu, uintptr_t fcn) { pFu_t fn = (pFu_t)fcn; R_EAX = to_ptrv(fn(from_ptri(uint32_t, R_ESP + 4))); }
+void pFL_32(x64emu_t *emu, uintptr_t fcn) { pFL_t fn = (pFL_t)fcn; R_EAX = to_ptrv(fn(to_ulong(from_ptri(ulong_t, R_ESP + 4)))); }
+void pFp_32(x64emu_t *emu, uintptr_t fcn) { pFp_t fn = (pFp_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4))); }
+void hFv_32(x64emu_t *emu, uintptr_t fcn) { hFv_t fn = (hFv_t)fcn; R_EAX = to_hash(fn()); }
+void aFa_32(x64emu_t *emu, uintptr_t fcn) { aFa_t fn = (aFa_t)fcn; R_EAX = to_locale(fn(from_locale(from_ptri(ptr_t, R_ESP + 4)))); }
+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 iFEv_32(x64emu_t *emu, uintptr_t fcn) { iFEv_t fn = (iFEv_t)fcn; R_EAX = fn(emu); }
+void iFEi_32(x64emu_t *emu, uintptr_t fcn) { iFEi_t fn = (iFEi_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4)); }
+void iFEL_32(x64emu_t *emu, uintptr_t fcn) { iFEL_t fn = (iFEL_t)fcn; R_EAX = fn(emu, to_ulong(from_ptri(ulong_t, R_ESP + 4))); }
+void iFEp_32(x64emu_t *emu, uintptr_t fcn) { iFEp_t fn = (iFEp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4)); }
+void iFEh_32(x64emu_t *emu, uintptr_t fcn) { iFEh_t fn = (iFEh_t)fcn; R_EAX = fn(emu, from_hash(from_ptri(ptr_t, R_ESP + 4))); }
+void iFEO_32(x64emu_t *emu, uintptr_t fcn) { iFEO_t fn = (iFEO_t)fcn; R_EAX = fn(emu, of_convert32(from_ptri(int32_t, R_ESP + 4))); }
+void iFii_32(x64emu_t *emu, uintptr_t fcn) { iFii_t fn = (iFii_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
+void iFiI_32(x64emu_t *emu, uintptr_t fcn) { iFiI_t fn = (iFiI_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int64_t, R_ESP + 8)); }
+void iFiu_32(x64emu_t *emu, uintptr_t fcn) { iFiu_t fn = (iFiu_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8)); }
+void iFip_32(x64emu_t *emu, uintptr_t fcn) { iFip_t fn = (iFip_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); }
+void iFuu_32(x64emu_t *emu, uintptr_t fcn) { iFuu_t fn = (iFuu_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8)); }
+void iFup_32(x64emu_t *emu, uintptr_t fcn) { iFup_t fn = (iFup_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); }
+void iFli_32(x64emu_t *emu, uintptr_t fcn) { iFli_t fn = (iFli_t)fcn; R_EAX = fn(to_long(from_ptri(long_t, R_ESP + 4)), from_ptri(int32_t, R_ESP + 8)); }
+void iFpi_32(x64emu_t *emu, uintptr_t fcn) { iFpi_t fn = (iFpi_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
+void iFpp_32(x64emu_t *emu, uintptr_t fcn) { iFpp_t fn = (iFpp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); }
+void iFhp_32(x64emu_t *emu, uintptr_t fcn) { iFhp_t fn = (iFhp_t)fcn; R_EAX = fn(from_hash(from_ptri(ptr_t, R_ESP + 4)), from_ptriv(R_ESP + 8)); }
+void iFhh_32(x64emu_t *emu, uintptr_t fcn) { iFhh_t fn = (iFhh_t)fcn; R_EAX = fn(from_hash(from_ptri(ptr_t, R_ESP + 4)), from_hash(from_ptri(ptr_t, R_ESP + 8))); }
+void IFII_32(x64emu_t *emu, uintptr_t fcn) { IFII_t fn = (IFII_t)fcn; ui64_t r; r.i = fn(from_ptri(int64_t, R_ESP + 4), from_ptri(int64_t, R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void uFEu_32(x64emu_t *emu, uintptr_t fcn) { uFEu_t fn = (uFEu_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptri(uint32_t, R_ESP + 4)); }
+void uFEV_32(x64emu_t *emu, uintptr_t fcn) { uFEV_t fn = (uFEV_t)fcn; R_EAX = (uint32_t)fn(emu, from_ptrv(R_ESP + 4)); }
+void uFpa_32(x64emu_t *emu, uintptr_t fcn) { uFpa_t fn = (uFpa_t)fcn; R_EAX = (uint32_t)fn(from_ptriv(R_ESP + 4), from_locale(from_ptri(ptr_t, R_ESP + 8))); }
+void UFii_32(x64emu_t *emu, uintptr_t fcn) { UFii_t fn = (UFii_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void UFUU_32(x64emu_t *emu, uintptr_t fcn) { UFUU_t fn = (UFUU_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptri(uint64_t, R_ESP + 4), from_ptri(uint64_t, R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void UFss_32(x64emu_t *emu, uintptr_t fcn) { UFss_t fn = (UFss_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptrv(R_ESP + 4), from_ptrv(R_ESP + 4)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void fFif_32(x64emu_t *emu, uintptr_t fcn) { fFif_t fn = (fFif_t)fcn; float fl = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(float, R_ESP + 8)); fpu_do_push(emu); ST0val = fl; }
+void fFfi_32(x64emu_t *emu, uintptr_t fcn) { fFfi_t fn = (fFfi_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); fpu_do_push(emu); ST0val = fl; }
+void fFff_32(x64emu_t *emu, uintptr_t fcn) { fFff_t fn = (fFff_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8)); fpu_do_push(emu); ST0val = fl; }
+void fFfD_32(x64emu_t *emu, uintptr_t fcn) { fFfD_t fn = (fFfD_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4), LD2localLD(from_ptrv(R_ESP + 8))); fpu_do_push(emu); ST0val = fl; }
+void fFfp_32(x64emu_t *emu, uintptr_t fcn) { fFfp_t fn = (fFfp_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4), from_ptriv(R_ESP + 8)); fpu_do_push(emu); ST0val = fl; }
+void dFid_32(x64emu_t *emu, uintptr_t fcn) { dFid_t fn = (dFid_t)fcn; double db = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(double, R_ESP + 8)); fpu_do_push(emu); ST0val = db; }
+void dFdi_32(x64emu_t *emu, uintptr_t fcn) { dFdi_t fn = (dFdi_t)fcn; double db = fn(from_ptri(double, R_ESP + 4), from_ptri(int32_t, R_ESP + 12)); fpu_do_push(emu); ST0val = db; }
+void dFdd_32(x64emu_t *emu, uintptr_t fcn) { dFdd_t fn = (dFdd_t)fcn; double db = fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12)); fpu_do_push(emu); ST0val = db; }
+void dFdD_32(x64emu_t *emu, uintptr_t fcn) { dFdD_t fn = (dFdD_t)fcn; double db = fn(from_ptri(double, R_ESP + 4), LD2localLD(from_ptrv(R_ESP + 12))); fpu_do_push(emu); ST0val = db; }
+void dFdp_32(x64emu_t *emu, uintptr_t fcn) { dFdp_t fn = (dFdp_t)fcn; double db = fn(from_ptri(double, R_ESP + 4), from_ptriv(R_ESP + 12)); fpu_do_push(emu); ST0val = db; }
+void LFpp_32(x64emu_t *emu, uintptr_t fcn) { LFpp_t fn = (LFpp_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); }
+void pFEv_32(x64emu_t *emu, uintptr_t fcn) { pFEv_t fn = (pFEv_t)fcn; R_EAX = to_ptrv(fn(emu)); }
+void pFEp_32(x64emu_t *emu, uintptr_t fcn) { pFEp_t fn = (pFEp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4))); }
+void pFLL_32(x64emu_t *emu, uintptr_t fcn) { pFLL_t fn = (pFLL_t)fcn; R_EAX = to_ptrv(fn(to_ulong(from_ptri(ulong_t, R_ESP + 4)), to_ulong(from_ptri(ulong_t, R_ESP + 8)))); }
+void aFia_32(x64emu_t *emu, uintptr_t fcn) { aFia_t fn = (aFia_t)fcn; R_EAX = to_locale(fn(from_ptri(int32_t, R_ESP + 4), from_locale(from_ptri(ptr_t, R_ESP + 8)))); }
+void iFHBp__32(x64emu_t *emu, uintptr_t fcn) { iFHBp__t fn = (iFHBp__t)fcn; struct_p_t arg_8; R_EAX = fn(from_hash_d(from_ptri(ptr_t, R_ESP + 4)), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
+void vFEip_32(x64emu_t *emu, uintptr_t fcn) { vFEip_t fn = (vFEip_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8)); }
+void vFEpi_32(x64emu_t *emu, uintptr_t fcn) { vFEpi_t fn = (vFEpi_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
+void vFEpu_32(x64emu_t *emu, uintptr_t fcn) { vFEpu_t fn = (vFEpu_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8)); }
+void vFfpp_32(x64emu_t *emu, uintptr_t fcn) { vFfpp_t fn = (vFfpp_t)fcn; fn(from_ptri(float, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void vFdpp_32(x64emu_t *emu, uintptr_t fcn) { vFdpp_t fn = (vFdpp_t)fcn; fn(from_ptri(double, R_ESP + 4), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
+void iFEpi_32(x64emu_t *emu, uintptr_t fcn) { iFEpi_t fn = (iFEpi_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8)); }
+void iFEpL_32(x64emu_t *emu, uintptr_t fcn) { iFEpL_t fn = (iFEpL_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8))); }
+void iFEpp_32(x64emu_t *emu, uintptr_t fcn) { iFEpp_t fn = (iFEpp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8)); }
+void iFEpV_32(x64emu_t *emu, uintptr_t fcn) { iFEpV_t fn = (iFEpV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptrv(R_ESP + 8)); }
+void iFiii_32(x64emu_t *emu, uintptr_t fcn) { iFiii_t fn = (iFiii_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); }
+void iFiiI_32(x64emu_t *emu, uintptr_t fcn) { iFiiI_t fn = (iFiiI_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 12)); }
+void iFiiu_32(x64emu_t *emu, uintptr_t fcn) { iFiiu_t fn = (iFiiu_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFiiO_32(x64emu_t *emu, uintptr_t fcn) { iFiiO_t fn = (iFiiO_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), of_convert32(from_ptri(int32_t, R_ESP + 12))); }
+void iFiII_32(x64emu_t *emu, uintptr_t fcn) { iFiII_t fn = (iFiII_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int64_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 16)); }
+void iFiuu_32(x64emu_t *emu, uintptr_t fcn) { iFiuu_t fn = (iFiuu_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFiLN_32(x64emu_t *emu, uintptr_t fcn) { iFiLN_t fn = (iFiLN_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12)); }
+void iFipp_32(x64emu_t *emu, uintptr_t fcn) { iFipp_t fn = (iFipp_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFuii_32(x64emu_t *emu, uintptr_t fcn) { iFuii_t fn = (iFuii_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)); }
+void iFuip_32(x64emu_t *emu, uintptr_t fcn) { iFuip_t fn = (iFuip_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFuui_32(x64emu_t *emu, uintptr_t fcn) { iFuui_t fn = (iFuui_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 12)); }
+void iFuuu_32(x64emu_t *emu, uintptr_t fcn) { iFuuu_t fn = (iFuuu_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFuLp_32(x64emu_t *emu, uintptr_t fcn) { iFuLp_t fn = (iFuLp_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), from_ptriv(R_ESP + 12)); }
+void iFupp_32(x64emu_t *emu, uintptr_t fcn) { iFupp_t fn = (iFupp_t)fcn; R_EAX = fn(from_ptri(uint32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFpiu_32(x64emu_t *emu, uintptr_t fcn) { iFpiu_t fn = (iFpiu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFpip_32(x64emu_t *emu, uintptr_t fcn) { iFpip_t fn = (iFpip_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFpuu_32(x64emu_t *emu, uintptr_t fcn) { iFpuu_t fn = (iFpuu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFppu_32(x64emu_t *emu, uintptr_t fcn) { iFppu_t fn = (iFppu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFppL_32(x64emu_t *emu, uintptr_t fcn) { iFppL_t fn = (iFppL_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12))); }
+void iFppp_32(x64emu_t *emu, uintptr_t fcn) { iFppp_t fn = (iFppp_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFpOu_32(x64emu_t *emu, uintptr_t fcn) { iFpOu_t fn = (iFpOu_t)fcn; R_EAX = fn(from_ptriv(R_ESP + 4), of_convert32(from_ptri(int32_t, R_ESP + 8)), from_ptri(uint32_t, R_ESP + 12)); }
+void IFiIi_32(x64emu_t *emu, uintptr_t fcn) { IFiIi_t fn = (IFiIi_t)fcn; ui64_t r; r.i = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int64_t, R_ESP + 8), from_ptri(int32_t, R_ESP + 16)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+void fFfff_32(x64emu_t *emu, uintptr_t fcn) { fFfff_t fn = (fFfff_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptri(float, R_ESP + 12)); fpu_do_push(emu); ST0val = fl; }
+void fFffp_32(x64emu_t *emu, uintptr_t fcn) { fFffp_t fn = (fFffp_t)fcn; float fl = fn(from_ptri(float, R_ESP + 4), from_ptri(float, R_ESP + 8), from_ptriv(R_ESP + 12)); fpu_do_push(emu); ST0val = fl; }
+void dFddd_32(x64emu_t *emu, uintptr_t fcn) { dFddd_t fn = (dFddd_t)fcn; double db = fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptri(double, R_ESP + 20)); fpu_do_push(emu); ST0val = db; }
+void dFddp_32(x64emu_t *emu, uintptr_t fcn) { dFddp_t fn = (dFddp_t)fcn; double db = fn(from_ptri(double, R_ESP + 4), from_ptri(double, R_ESP + 12), from_ptriv(R_ESP + 20)); fpu_do_push(emu); ST0val = db; }
+void pFEip_32(x64emu_t *emu, uintptr_t fcn) { pFEip_t fn = (pFEip_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8))); }
+void pFEpi_32(x64emu_t *emu, uintptr_t fcn) { pFEpi_t fn = (pFEpi_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8))); }
+void pFEpp_32(x64emu_t *emu, uintptr_t fcn) { pFEpp_t fn = (pFEpp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); }
+void pFppL_32(x64emu_t *emu, uintptr_t fcn) { pFppL_t fn = (pFppL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)))); }
+void pFpOM_32(x64emu_t *emu, uintptr_t fcn) { pFpOM_t fn = (pFpOM_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), of_convert32(from_ptri(int32_t, R_ESP + 8)), from_ptriv(R_ESP + 12),from_ptriv(R_ESP + 12 + 4))); }
+void hFEpp_32(x64emu_t *emu, uintptr_t fcn) { hFEpp_t fn = (hFEpp_t)fcn; R_EAX = to_hash(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8))); }
+void aFipa_32(x64emu_t *emu, uintptr_t fcn) { aFipa_t fn = (aFipa_t)fcn; R_EAX = to_locale(fn(from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_locale(from_ptri(ptr_t, R_ESP + 12)))); }
+void lFpBp_i_32(x64emu_t *emu, uintptr_t fcn) { lFpBp_i_t fn = (lFpBp_i_t)fcn; struct_p_t arg_8; R_EAX = to_long(fn(from_ptriv(R_ESP + 4), *(ptr_t*)(from_ptr((R_ESP + 8))) ? &arg_8 : NULL, from_ptri(int32_t, R_ESP + 12))); if (*(ptr_t*)(from_ptr((R_ESP + 8)))) to_struct_p(*(ptr_t*)(from_ptr((R_ESP + 8))), &arg_8); }
+void vFEipV_32(x64emu_t *emu, uintptr_t fcn) { vFEipV_t fn = (vFEipV_t)fcn; fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptrv(R_ESP + 12)); }
+void vFEppp_32(x64emu_t *emu, uintptr_t fcn) { vFEppp_t fn = (vFEppp_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFEiiN_32(x64emu_t *emu, uintptr_t fcn) { iFEiiN_t fn = (iFEiiN_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFEipp_32(x64emu_t *emu, uintptr_t fcn) { iFEipp_t fn = (iFEipp_t)fcn; R_EAX = fn(emu, from_ptri(int32_t, R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFELup_32(x64emu_t *emu, uintptr_t fcn) { iFELup_t fn = (iFELup_t)fcn; R_EAX = fn(emu, to_ulong(from_ptri(ulong_t, R_ESP + 4)), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFEpip_32(x64emu_t *emu, uintptr_t fcn) { iFEpip_t fn = (iFEpip_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFEpup_32(x64emu_t *emu, uintptr_t fcn) { iFEpup_t fn = (iFEpup_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFEppu_32(x64emu_t *emu, uintptr_t fcn) { iFEppu_t fn = (iFEppu_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12)); }
+void iFEppL_32(x64emu_t *emu, uintptr_t fcn) { iFEppL_t fn = (iFEppL_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12))); }
+void iFEppp_32(x64emu_t *emu, uintptr_t fcn) { iFEppp_t fn = (iFEppp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12)); }
+void iFiiII_32(x64emu_t *emu, uintptr_t fcn) { iFiiII_t fn = (iFiiII_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptri(int64_t, R_ESP + 12), from_ptri(int64_t, R_ESP + 20)); }
+void iFiuui_32(x64emu_t *emu, uintptr_t fcn) { iFiuui_t fn = (iFiuui_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), from_ptri(uint32_t, R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
+void LFpLLh_32(x64emu_t *emu, uintptr_t fcn) { LFpLLh_t fn = (LFpLLh_t)fcn; R_EAX = to_ulong(fn(from_ptriv(R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), from_hash(from_ptri(ptr_t, R_ESP + 16)))); }
+void pFEppi_32(x64emu_t *emu, uintptr_t fcn) { pFEppi_t fn = (pFEppi_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))); }
+void pFEppp_32(x64emu_t *emu, uintptr_t fcn) { pFEppp_t fn = (pFEppp_t)fcn; R_EAX = to_ptrv(fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12))); }
+void pFppuL_32(x64emu_t *emu, uintptr_t fcn) { pFppuL_t fn = (pFppuL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(uint32_t, R_ESP + 12), to_ulong(from_ptri(ulong_t, R_ESP + 16)))); }
+void pFppLL_32(x64emu_t *emu, uintptr_t fcn) { pFppLL_t fn = (pFppLL_t)fcn; R_EAX = to_ptrv(fn(from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)))); }
+void iFEppiV_32(x64emu_t *emu, uintptr_t fcn) { iFEppiV_t fn = (iFEppiV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptri(int32_t, R_ESP + 12), from_ptrv(R_ESP + 16)); }
+void iFEpppi_32(x64emu_t *emu, uintptr_t fcn) { iFEpppi_t fn = (iFEpppi_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptri(int32_t, R_ESP + 16)); }
+void iFiLLLL_32(x64emu_t *emu, uintptr_t fcn) { iFiLLLL_t fn = (iFiLLLL_t)fcn; R_EAX = fn(from_ptri(int32_t, R_ESP + 4), to_ulong(from_ptri(ulong_t, R_ESP + 8)), to_ulong(from_ptri(ulong_t, R_ESP + 12)), to_ulong(from_ptri(ulong_t, R_ESP + 16)), to_ulong(from_ptri(ulong_t, R_ESP + 20))); }
+void iFEBh_ppp_32(x64emu_t *emu, uintptr_t fcn) { iFEBh_ppp_t fn = (iFEBh_ppp_t)fcn; struct_h_t arg_4; R_EAX = fn(emu, *(ptr_t*)(from_ptr((R_ESP + 4))) ? &arg_4 : NULL, from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); if (*(ptr_t*)(from_ptr((R_ESP + 4)))) to_struct_h(*(ptr_t*)(from_ptr((R_ESP + 4))), &arg_4); }
+void iFEpippppp_32(x64emu_t *emu, uintptr_t fcn) { iFEpippppp_t fn = (iFEpippppp_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 4), from_ptri(int32_t, R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16), from_ptriv(R_ESP + 20), from_ptriv(R_ESP + 24), from_ptriv(R_ESP + 28)); }
+
+#if defined(ANDROID)
+void pFv_32(x64emu_t *emu, uintptr_t fcn) { pFv_t fn = (pFv_t)fcn; R_EAX = to_ptrv(fn()); }
+void vFEpppp_32(x64emu_t *emu, uintptr_t fcn) { vFEpppp_t fn = (vFEpppp_t)fcn; fn(emu, from_ptriv(R_ESP + 4), from_ptriv(R_ESP + 8), from_ptriv(R_ESP + 12), from_ptriv(R_ESP + 16)); }
+#endif
+
+#if defined(HAVE_LD80BITS)
+void DFD_32(x64emu_t *emu, uintptr_t fcn) { DFD_t fn = (DFD_t)fcn; long double ld = fn(LD2localLD(from_ptrv(R_ESP + 4))); fpu_do_push(emu); ST0val = ld; }
+void DFDD_32(x64emu_t *emu, uintptr_t fcn) { DFDD_t fn = (DFDD_t)fcn; long double ld = fn(LD2localLD(from_ptrv(R_ESP + 4)), LD2localLD(from_ptrv(R_ESP + 16))); fpu_do_push(emu); ST0val = ld; }
+void DFDp_32(x64emu_t *emu, uintptr_t fcn) { DFDp_t fn = (DFDp_t)fcn; long double ld = fn(LD2localLD(from_ptrv(R_ESP + 4)), from_ptriv(R_ESP + 16)); fpu_do_push(emu); ST0val = ld; }
+#endif
+
+#if !defined(HAVE_LD80BITS)
+void KFK_32(x64emu_t *emu, uintptr_t fcn) { KFK_t fn = (KFK_t)fcn; double db = fn(FromLD(from_ptrv(R_ESP + 4))); fpu_do_push(emu); ST0val = db; }
+void KFKK_32(x64emu_t *emu, uintptr_t fcn) { KFKK_t fn = (KFKK_t)fcn; double db = fn(FromLD(from_ptrv(R_ESP + 4)), FromLD(from_ptrv(R_ESP + 16))); fpu_do_push(emu); ST0val = db; }
+void KFKp_32(x64emu_t *emu, uintptr_t fcn) { KFKp_t fn = (KFKp_t)fcn; double db = fn(FromLD(from_ptrv(R_ESP + 4)), from_ptriv(R_ESP + 16)); fpu_do_push(emu); ST0val = db; }
+#endif
+
+void iFEvpV_32(x64emu_t *emu, uintptr_t fcn) { iFEpV_t fn = (iFEpV_t)fcn; R_EAX = fn(emu, from_ptriv(R_ESP + 8), from_ptrv(R_ESP + 12)); }
+void UFsvvs_32(x64emu_t *emu, uintptr_t fcn) { UFss_t fn = (UFss_t)fcn; ui64_t r; r.u = (uint64_t)fn(from_ptrv(R_ESP + 4), from_ptrv(R_ESP + 12)); R_EAX = r.d[0]; R_EDX = r.d[1]; }
+
+int isRetX87Wrapper32(wrapper_t fun) {
+	if (fun == &fFf_32) return 1;
+	if (fun == &dFv_32) return 1;
+	if (fun == &dFd_32) return 1;
+	if (fun == &fFif_32) return 1;
+	if (fun == &fFfi_32) return 1;
+	if (fun == &fFff_32) return 1;
+	if (fun == &fFfD_32) return 1;
+	if (fun == &fFfp_32) return 1;
+	if (fun == &dFid_32) return 1;
+	if (fun == &dFdi_32) return 1;
+	if (fun == &dFdd_32) return 1;
+	if (fun == &dFdD_32) return 1;
+	if (fun == &dFdp_32) return 1;
+	if (fun == &fFfff_32) return 1;
+	if (fun == &fFffp_32) return 1;
+	if (fun == &dFddd_32) return 1;
+	if (fun == &dFddp_32) return 1;
+#if defined(HAVE_LD80BITS)
+	if (fun == &DFD_32) return 1;
+	if (fun == &DFDD_32) return 1;
+	if (fun == &DFDp_32) return 1;
+#endif
+#if !defined(HAVE_LD80BITS)
+	if (fun == &KFK_32) return 1;
+	if (fun == &KFKK_32) return 1;
+	if (fun == &KFKp_32) return 1;
+#endif
+	return 0;
+}
diff --git a/src/wrapped32/generated/wrapper32.h b/src/wrapped32/generated/wrapper32.h
new file mode 100644
index 00000000..3496a5ea
--- /dev/null
+++ b/src/wrapped32/generated/wrapper32.h
@@ -0,0 +1,200 @@
+/******************************************************************
+ * File automatically generated by rebuild_wrappers_32.py (v0.0.1.1) *
+ ******************************************************************/
+#ifndef __WRAPPER32_H_
+#define __WRAPPER32_H_
+#include <stdint.h>
+#include <string.h>
+
+typedef struct x64emu_s x64emu_t;
+
+// the generic wrapper pointer functions
+typedef void (*wrapper_t)(x64emu_t* emu, uintptr_t fnc);
+
+// list of defined wrappers
+// E = current x64emu struct
+// v = void
+// C = unsigned byte c = char
+// W = unsigned short w = short
+// u = uint32, i = int32
+// U = uint64, I = int64
+// L = unsigned long, l = signed long (long is an int with the size of a pointer)
+// p = pointer
+// h = hash (32<->64bits)
+// H = hash (32<->64bits) that will be deleted from hashmaps
+// a = locale
+// A = locale that will be deleted from hashmaps
+// f = float, d = double, D = long double, K = fake long double
+// V = vaargs, s = address on the stack (doesn't move forward the pointer)
+// O = libc O_ flags bitfield
+// o = stdout
+// S = _IO_2_1_stdXXX_ pointer (or FILE*)
+// 2 = struct of 2 uint
+// N = ... automatically sending 1 arg
+// M = ... automatically sending 2 args
+// P = Vulkan struct pointer
+// s..._ = pointer to read-only structure
+// B..._ = pointer to write-only structure
+// b..._ = pointer to read-write structure
+
+void vFv_32(x64emu_t *emu, uintptr_t fnc);
+void vFi_32(x64emu_t *emu, uintptr_t fnc);
+void vFu_32(x64emu_t *emu, uintptr_t fnc);
+void vFp_32(x64emu_t *emu, uintptr_t fnc);
+void vFA_32(x64emu_t *emu, uintptr_t fnc);
+void iFv_32(x64emu_t *emu, uintptr_t fnc);
+void iFi_32(x64emu_t *emu, uintptr_t fnc);
+void iFI_32(x64emu_t *emu, uintptr_t fnc);
+void iFu_32(x64emu_t *emu, uintptr_t fnc);
+void iFf_32(x64emu_t *emu, uintptr_t fnc);
+void iFd_32(x64emu_t *emu, uintptr_t fnc);
+void iFL_32(x64emu_t *emu, uintptr_t fnc);
+void iFp_32(x64emu_t *emu, uintptr_t fnc);
+void iFh_32(x64emu_t *emu, uintptr_t fnc);
+void iFH_32(x64emu_t *emu, uintptr_t fnc);
+void IFf_32(x64emu_t *emu, uintptr_t fnc);
+void IFd_32(x64emu_t *emu, uintptr_t fnc);
+void uFv_32(x64emu_t *emu, uintptr_t fnc);
+void uFu_32(x64emu_t *emu, uintptr_t fnc);
+void uFU_32(x64emu_t *emu, uintptr_t fnc);
+void UFs_32(x64emu_t *emu, uintptr_t fnc);
+void fFf_32(x64emu_t *emu, uintptr_t fnc);
+void dFv_32(x64emu_t *emu, uintptr_t fnc);
+void dFd_32(x64emu_t *emu, uintptr_t fnc);
+void lFi_32(x64emu_t *emu, uintptr_t fnc);
+void lFp_32(x64emu_t *emu, uintptr_t fnc);
+void LFv_32(x64emu_t *emu, uintptr_t fnc);
+void LFL_32(x64emu_t *emu, uintptr_t fnc);
+void pFu_32(x64emu_t *emu, uintptr_t fnc);
+void pFL_32(x64emu_t *emu, uintptr_t fnc);
+void pFp_32(x64emu_t *emu, uintptr_t fnc);
+void hFv_32(x64emu_t *emu, uintptr_t fnc);
+void aFa_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 iFEv_32(x64emu_t *emu, uintptr_t fnc);
+void iFEi_32(x64emu_t *emu, uintptr_t fnc);
+void iFEL_32(x64emu_t *emu, uintptr_t fnc);
+void iFEp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEh_32(x64emu_t *emu, uintptr_t fnc);
+void iFEO_32(x64emu_t *emu, uintptr_t fnc);
+void iFii_32(x64emu_t *emu, uintptr_t fnc);
+void iFiI_32(x64emu_t *emu, uintptr_t fnc);
+void iFiu_32(x64emu_t *emu, uintptr_t fnc);
+void iFip_32(x64emu_t *emu, uintptr_t fnc);
+void iFuu_32(x64emu_t *emu, uintptr_t fnc);
+void iFup_32(x64emu_t *emu, uintptr_t fnc);
+void iFli_32(x64emu_t *emu, uintptr_t fnc);
+void iFpi_32(x64emu_t *emu, uintptr_t fnc);
+void iFpp_32(x64emu_t *emu, uintptr_t fnc);
+void iFhp_32(x64emu_t *emu, uintptr_t fnc);
+void iFhh_32(x64emu_t *emu, uintptr_t fnc);
+void IFII_32(x64emu_t *emu, uintptr_t fnc);
+void uFEu_32(x64emu_t *emu, uintptr_t fnc);
+void uFEV_32(x64emu_t *emu, uintptr_t fnc);
+void uFpa_32(x64emu_t *emu, uintptr_t fnc);
+void UFii_32(x64emu_t *emu, uintptr_t fnc);
+void UFUU_32(x64emu_t *emu, uintptr_t fnc);
+void UFss_32(x64emu_t *emu, uintptr_t fnc);
+void fFif_32(x64emu_t *emu, uintptr_t fnc);
+void fFfi_32(x64emu_t *emu, uintptr_t fnc);
+void fFff_32(x64emu_t *emu, uintptr_t fnc);
+void fFfD_32(x64emu_t *emu, uintptr_t fnc);
+void fFfp_32(x64emu_t *emu, uintptr_t fnc);
+void dFid_32(x64emu_t *emu, uintptr_t fnc);
+void dFdi_32(x64emu_t *emu, uintptr_t fnc);
+void dFdd_32(x64emu_t *emu, uintptr_t fnc);
+void dFdD_32(x64emu_t *emu, uintptr_t fnc);
+void dFdp_32(x64emu_t *emu, uintptr_t fnc);
+void LFpp_32(x64emu_t *emu, uintptr_t fnc);
+void pFEv_32(x64emu_t *emu, uintptr_t fnc);
+void pFEp_32(x64emu_t *emu, uintptr_t fnc);
+void pFLL_32(x64emu_t *emu, uintptr_t fnc);
+void aFia_32(x64emu_t *emu, uintptr_t fnc);
+void iFHBp__32(x64emu_t *emu, uintptr_t fnc);
+void vFEip_32(x64emu_t *emu, uintptr_t fnc);
+void vFEpi_32(x64emu_t *emu, uintptr_t fnc);
+void vFEpu_32(x64emu_t *emu, uintptr_t fnc);
+void vFfpp_32(x64emu_t *emu, uintptr_t fnc);
+void vFdpp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpi_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpL_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpV_32(x64emu_t *emu, uintptr_t fnc);
+void iFiii_32(x64emu_t *emu, uintptr_t fnc);
+void iFiiI_32(x64emu_t *emu, uintptr_t fnc);
+void iFiiu_32(x64emu_t *emu, uintptr_t fnc);
+void iFiiO_32(x64emu_t *emu, uintptr_t fnc);
+void iFiII_32(x64emu_t *emu, uintptr_t fnc);
+void iFiuu_32(x64emu_t *emu, uintptr_t fnc);
+void iFiLN_32(x64emu_t *emu, uintptr_t fnc);
+void iFipp_32(x64emu_t *emu, uintptr_t fnc);
+void iFuii_32(x64emu_t *emu, uintptr_t fnc);
+void iFuip_32(x64emu_t *emu, uintptr_t fnc);
+void iFuui_32(x64emu_t *emu, uintptr_t fnc);
+void iFuuu_32(x64emu_t *emu, uintptr_t fnc);
+void iFuLp_32(x64emu_t *emu, uintptr_t fnc);
+void iFupp_32(x64emu_t *emu, uintptr_t fnc);
+void iFpiu_32(x64emu_t *emu, uintptr_t fnc);
+void iFpip_32(x64emu_t *emu, uintptr_t fnc);
+void iFpuu_32(x64emu_t *emu, uintptr_t fnc);
+void iFppu_32(x64emu_t *emu, uintptr_t fnc);
+void iFppL_32(x64emu_t *emu, uintptr_t fnc);
+void iFppp_32(x64emu_t *emu, uintptr_t fnc);
+void iFpOu_32(x64emu_t *emu, uintptr_t fnc);
+void IFiIi_32(x64emu_t *emu, uintptr_t fnc);
+void fFfff_32(x64emu_t *emu, uintptr_t fnc);
+void fFffp_32(x64emu_t *emu, uintptr_t fnc);
+void dFddd_32(x64emu_t *emu, uintptr_t fnc);
+void dFddp_32(x64emu_t *emu, uintptr_t fnc);
+void pFEip_32(x64emu_t *emu, uintptr_t fnc);
+void pFEpi_32(x64emu_t *emu, uintptr_t fnc);
+void pFEpp_32(x64emu_t *emu, uintptr_t fnc);
+void pFppL_32(x64emu_t *emu, uintptr_t fnc);
+void pFpOM_32(x64emu_t *emu, uintptr_t fnc);
+void hFEpp_32(x64emu_t *emu, uintptr_t fnc);
+void aFipa_32(x64emu_t *emu, uintptr_t fnc);
+void lFpBp_i_32(x64emu_t *emu, uintptr_t fnc);
+void vFEipV_32(x64emu_t *emu, uintptr_t fnc);
+void vFEppp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEiiN_32(x64emu_t *emu, uintptr_t fnc);
+void iFEipp_32(x64emu_t *emu, uintptr_t fnc);
+void iFELup_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpip_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpup_32(x64emu_t *emu, uintptr_t fnc);
+void iFEppu_32(x64emu_t *emu, uintptr_t fnc);
+void iFEppL_32(x64emu_t *emu, uintptr_t fnc);
+void iFEppp_32(x64emu_t *emu, uintptr_t fnc);
+void iFiiII_32(x64emu_t *emu, uintptr_t fnc);
+void iFiuui_32(x64emu_t *emu, uintptr_t fnc);
+void LFpLLh_32(x64emu_t *emu, uintptr_t fnc);
+void pFEppi_32(x64emu_t *emu, uintptr_t fnc);
+void pFEppp_32(x64emu_t *emu, uintptr_t fnc);
+void pFppuL_32(x64emu_t *emu, uintptr_t fnc);
+void pFppLL_32(x64emu_t *emu, uintptr_t fnc);
+void iFEppiV_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpppi_32(x64emu_t *emu, uintptr_t fnc);
+void iFiLLLL_32(x64emu_t *emu, uintptr_t fnc);
+void iFEBh_ppp_32(x64emu_t *emu, uintptr_t fnc);
+void iFEpippppp_32(x64emu_t *emu, uintptr_t fnc);
+
+#if defined(ANDROID)
+void pFv_32(x64emu_t *emu, uintptr_t fnc);
+void vFEpppp_32(x64emu_t *emu, uintptr_t fnc);
+#endif
+
+#if defined(HAVE_LD80BITS)
+void DFD_32(x64emu_t *emu, uintptr_t fnc);
+void DFDD_32(x64emu_t *emu, uintptr_t fnc);
+void DFDp_32(x64emu_t *emu, uintptr_t fnc);
+#endif
+
+#if !defined(HAVE_LD80BITS)
+void KFK_32(x64emu_t *emu, uintptr_t fnc);
+void KFKK_32(x64emu_t *emu, uintptr_t fnc);
+void KFKp_32(x64emu_t *emu, uintptr_t fnc);
+#endif
+
+void iFEvpV_32(x64emu_t *emu, uintptr_t fnc);
+void UFsvvs_32(x64emu_t *emu, uintptr_t fnc);
+#endif // __WRAPPER32_H_
diff --git a/src/wrapped32/wrappedcrashhandler.c b/src/wrapped32/wrappedcrashhandler.c
new file mode 100755
index 00000000..ed9b3b1e
--- /dev/null
+++ b/src/wrapped32/wrappedcrashhandler.c
@@ -0,0 +1,32 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box32context.h"
+#include "emu/x64emu_private.h"
+
+static const char* crashhandlerName = "crashhandler.so";
+#define LIBNAME crashhandler
+
+#define PRE_INIT                                                \
+    if(!box64_steam)                                            \
+        return -1;                                              \
+    if(1)                                                       \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);\
+    else
+
+
+#include "wrappedlib_init32.h"
+
diff --git a/src/wrapped32/wrappedcrashhandler_private.h b/src/wrapped32/wrappedcrashhandler_private.h
new file mode 100755
index 00000000..52ed57d6
--- /dev/null
+++ b/src/wrapped32/wrappedcrashhandler_private.h
@@ -0,0 +1,49 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh....
+#endif
+
+//GO(Breakpad_SetSteamID, 
+//DATAB(__bss_start, 
+//GO(CreateInterface, 
+//DATAB(_edata, 
+//DATAB(_end, 
+//GO(_fini, 
+//GO(_init, 
+//GO(SteamRealPath, 
+//GO(__wrap_access, 
+//GO(__wrap_chmod, 
+//GO(__wrap_chown, 
+//GO(__wrap_dlmopen, 
+//GO(__wrap_dlopen, 
+//GO(__wrap_fopen, 
+//GO(__wrap_fopen64, 
+//GO(__wrap_freopen, 
+//GO(__wrap_lchown, 
+//GO(__wrap_link, 
+//GO(__wrap_lstat, 
+//GO(__wrap_lstat64, 
+//GO(__wrap___lxstat, 
+//GO(__wrap___lxstat64, 
+//GO(__wrap_mkdir, 
+//GO(__wrap_mkfifo, 
+//GO(__wrap_mknod, 
+//GO(__wrap_mount, 
+//GO(__wrap_open, 
+//GO(__wrap_open64, 
+//GO(__wrap_opendir, 
+//GO(__wrap_rename, 
+//GO(__wrap_rmdir, 
+//GO(__wrap_scandir, 
+//GO(__wrap_scandir64, 
+//GO(__wrap_stat, 
+//GO(__wrap_stat64, 
+//GO(__wrap_statfs, 
+//GO(__wrap_statfs64, 
+//GO(__wrap_statvfs, 
+//GO(__wrap_statvfs64, 
+//GO(__wrap_symlink, 
+//GO(__wrap_unlink, 
+//GO(__wrap_utime, 
+//GO(__wrap_utimes, 
+//GO(__wrap___xstat, 
+//GO(__wrap___xstat64, 
diff --git a/src/wrapped32/wrappedldlinux.c b/src/wrapped32/wrappedldlinux.c
new file mode 100755
index 00000000..f0c8bf89
--- /dev/null
+++ b/src/wrapped32/wrappedldlinux.c
@@ -0,0 +1,58 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "elfloader.h"
+#include "box32context.h"
+
+typedef struct my32_tls_s {
+    int         i;
+    uint32_t     o;
+} my32_tls_t;
+
+EXPORT void* my32___tls_get_addr(x64emu_t* emu, void* p)
+{
+    my32_tls_t *t = (my32_tls_t*)p;
+    return GetDTatOffset(emu->context, t->i, t->o);
+}
+
+EXPORT void* my32____tls_get_addr(x64emu_t* emu)
+{
+    // the GNU version (with 3 '_') use register for the parameter!
+    my32_tls_t *t = (my32_tls_t*)from_ptrv(R_EAX);
+    return GetDTatOffset(emu->context, t->i, t->o);
+}
+
+EXPORT ptr_t my32___libc_stack_end;
+static void stSetup32(box64context_t* context)
+{
+    my32___libc_stack_end = to_ptrv(context->stack);   // is this the end, or should I add stasz?
+}
+
+// don't try to load the actual ld-linux (because name is variable), just use box64 itself, as it's linked to ld-linux
+static const char* ldlinuxName = "ld-linux.so.3";
+#define LIBNAME ldlinux
+
+// fake (ignored) _r_data structure
+EXPORT void* my32__r_debug[5];
+
+#define PRE_INIT\
+    if(1)                                                           \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);    \
+    else
+
+#define CUSTOM_INIT         \
+    stSetup32(box64);         \
+
+#include "wrappedlib_init32.h"
+
diff --git a/src/wrapped32/wrappedldlinux_private.h b/src/wrapped32/wrappedldlinux_private.h
new file mode 100755
index 00000000..cfff7731
--- /dev/null
+++ b/src/wrapped32/wrappedldlinux_private.h
@@ -0,0 +1,25 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+// _dl_allocate_tls
+// _dl_allocate_tls_init
+// _dl_argv //type B
+// _dl_cache_libcmp
+// _dl_deallocate_tls
+// _dl_debug_state
+// _dl_get_tls_static_info
+// _dl_make_stack_executable
+// _dl_mcount
+// _dl_rtld_di_serinfo
+// _dl_tls_setup
+DATA(__libc_enable_secure, 4)
+DATA(__libc_stack_end, 4)
+DATA(__pointer_chk_guard, 4)
+DATAM(_r_debug, 20) //type B
+DATA(_rtld_global, 4)
+DATA(_rtld_global_ro, 4)
+DATA(__stack_chk_guard, 4)
+// defini dans glibc/sysdeps/i386/dl-tls.h
+GOM(___tls_get_addr, pFEv)       //the parameter tls_index is in a register (EAX?)
+GOM(__tls_get_addr, pFEp)        //same, but the parameter is in the stack
diff --git a/src/wrapped32/wrappedlib_init32.h b/src/wrapped32/wrappedlib_init32.h
new file mode 100644
index 00000000..65736fa2
--- /dev/null
+++ b/src/wrapped32/wrappedlib_init32.h
@@ -0,0 +1,325 @@
+#ifndef LIBNAME
+#error Meh
+#endif
+
+#include "debug.h"
+#include "librarian/library_inner.h"
+
+#define FUNC3(M,N) wrapped##M##N
+#define FUNC2(M,N) FUNC3(M,N)
+#define FUNC(N) FUNC2(LIBNAME,N)
+#define QUOTE(M) #M
+#define PRIVATE2(P) QUOTE(wrapped##P##_private.h)
+#define PRIVATE(P) PRIVATE2(P)
+#define MAPNAME3(N,M) N##M
+#define MAPNAME2(N,M) MAPNAME3(N,M)
+#define MAPNAME(N) MAPNAME2(LIBNAME,N)
+
+// prepare the maps
+#define _DOIT(P,Q) QUOTE(generated/wrapped##P##Q.h)
+#define DOIT(P,Q) _DOIT(P,Q)
+#include DOIT(LIBNAME,defs32)
+
+// regular symbol mapped to itself
+#define GO(N, W)
+// regular symbol mapped to itself, but weak
+#define GOW(N, W)
+// symbol mapped to my32_symbol
+#define GOM(N, W)
+// symbol mapped to my32_symbol, but weak
+#define GOWM(N, W)
+// regular symbol mapped to itself, that returns a structure
+#define GOS(N, W)
+// symbol mapped to another one
+#define GO2(N, W, O)
+// weak symbol mapped to another one
+#define GOW2(N, W, O)
+// data
+#define DATA(N, S)
+// data, Weak (type V)
+#define DATAV(N, S)
+// data, Uninitialized (type B)
+#define DATAB(N, S)
+// data, "my32_" type
+#define DATAM(N, S)
+
+// #define the 4 maps first
+#undef GO
+#undef GOW
+#ifdef STATICBUILD
+#define GO(N, W) {#N, W##_32, 0, &N},
+#define GOW(N, W) {#N, W##_32, 1, &N},
+#else
+#define GO(N, W) {#N, W##_32, 0},
+#define GOW(N, W) {#N, W##_32, 1},
+#endif
+static const map_onesymbol_t MAPNAME(symbolmap)[] = {
+    #include PRIVATE(LIBNAME)
+};
+#undef GO
+#undef GOW
+#undef GOM
+#undef GOWM
+#define GO(N, W)
+#define GOW(N, W)
+#ifdef STATICBUILD
+#define GOM(N, W) {#N, W##_32, 0, &my32_##N},
+#define GOWM(N, W) {#N, W##_32, 1, &my32_##N},
+#else
+#define GOM(N, W) {#N, W##_32, 0},
+#define GOWM(N, W) {#N, W##_32, 1},
+#endif
+static const map_onesymbol_t MAPNAME(mysymbolmap)[] = {
+    #include PRIVATE(LIBNAME)
+};
+#undef GOM
+#undef GOWM
+#undef GOS
+#define GOM(N, W)
+#define GOWM(N, W)
+#ifdef STATICBUILD
+#define GOS(N, W) {#N, W##_32, 0, &my32_##N},
+#else
+#define GOS(N, W) {#N, W##_32, 0},
+#endif
+static const map_onesymbol_t MAPNAME(stsymbolmap)[] = {
+    #include PRIVATE(LIBNAME)
+};
+#undef GOS
+#define GOS(N, W)
+#undef GO2
+#undef GOW2
+#ifdef STATICBUILD
+#define GO2(N, W, O) {#N, W##_32, 0, #O, &O},
+#define GOW2(N, W, O) {#N, W##_32, 1, #O, &O},
+#else
+#define GO2(N, W, O) {#N, W##_32, 0, #O},
+#define GOW2(N, W, O) {#N, W##_32, 1, #O},
+#endif
+static const map_onesymbol2_t MAPNAME(symbol2map)[] = {
+    #include PRIVATE(LIBNAME)
+};
+#undef GO2
+#define GO2(N, W, O)
+#undef GOW2
+#define GOW2(N, W, O)
+#undef DATA
+#undef DATAV
+#undef DATAB
+#ifdef STATICBUILD
+#define DATA(N, S) {#N, S, 0, (void*)&N},
+#define DATAV(N, S) {#N, S, 1, (void*)&N},
+#define DATAB(N, S) {#N, S, 0, (void*)&N},
+#else
+#define DATA(N, S) {#N, S, 0},
+#define DATAV(N, S) {#N, S, 1},
+#define DATAB(N, S) {#N, S, 0},
+#endif
+static const map_onedata_t MAPNAME(datamap)[] = {
+    #include PRIVATE(LIBNAME)
+};
+#undef DATA
+#undef DATAV
+#undef DATAB
+#define DATA(N, S)
+#define DATAV(N, S)
+#define DATAB(N, S)
+#undef DATAM
+#ifdef STATICBUILD
+#define DATAM(N, S) {#N, S, 0, &my32_##N},
+#else
+#define DATAM(N, S) {#N, S, 0},
+#endif
+static const map_onedata_t MAPNAME(mydatamap)[] = {
+    #include PRIVATE(LIBNAME)
+};
+
+#undef GO
+#undef GOW
+#undef GOM
+#undef GOWM
+#undef GO2
+#undef GOS
+#undef DATA
+#undef DATAV
+#undef DATAB
+#undef DATAM
+
+#include DOIT(LIBNAME,undefs32)
+#undef DOIT
+#undef _DOIT
+
+#if !defined(ALTNAME) && defined(ALTNAME2)
+#error Please define ALTNAME before defining ALTNAME2
+#endif
+
+#define COUNT_NARGS(...) COUNT_NARGS_AUX(__VA_ARGS__, 5, 4, 3, 2, 1, 0)
+#define COUNT_NARGS_AUX(_1, _2, _3, _4, _5, n, ...) COUNT_NARGS_AUX##n(This should not appear, too many libraries)
+#define COUNT_NARGS_AUX1(v1, v2) 1
+#define COUNT_NARGS_AUX2(v1, v2) 2
+#define COUNT_NARGS_AUX3(v1, v2) 3
+#define COUNT_NARGS_AUX4(v1, v2) 4
+#define COUNT_NARGS_AUX5(v1, v2) 5
+
+int FUNC(_init32)(library_t* lib, box64context_t* box64)
+{
+    (void)box64;
+
+    // Init first
+    free(lib->path); lib->path=NULL;
+#ifdef PRE_INIT
+    PRE_INIT
+#endif
+    {
+#ifndef STATICBUILD
+        lib->w.lib = dlopen(MAPNAME(Name), RTLD_LAZY | RTLD_GLOBAL);
+        if(!lib->w.lib) {
+#ifdef ALTNAME
+            lib->w.lib = dlopen(ALTNAME, RTLD_LAZY | RTLD_GLOBAL);
+            if(!lib->w.lib) {
+#ifdef ALTNAME2
+                lib->w.lib = dlopen(ALTNAME2, RTLD_LAZY | RTLD_GLOBAL);
+                if(!lib->w.lib)
+#endif
+#endif
+                return -1;
+#ifdef ALTNAME
+#ifdef ALTNAME2
+                else lib->path = box_strdup(ALTNAME2);
+#endif
+            } else lib->path = box_strdup(ALTNAME);
+#endif
+        } else lib->path = box_strdup(MAPNAME(Name));
+#else
+        lib->path = box_strdup(MAPNAME(Name));
+#endif
+    }
+    WrappedLib_CommonInit(lib);
+
+    khint_t k;
+    int ret;
+    int cnt;
+
+    // populates maps...
+#ifdef STATICBUILD
+#define DOIT(mapname) \
+    cnt = sizeof(MAPNAME(mapname))/sizeof(map_onesymbol_t);                         \
+    for (int i = 0; i < cnt; ++i) {                                                 \
+        if (MAPNAME(mapname)[i].weak) {                                             \
+            k = kh_put(symbolmap, lib->w.w##mapname, MAPNAME(mapname)[i].name, &ret); \
+            kh_value(lib->w.w##mapname, k).w = MAPNAME(mapname)[i].w;               \
+            kh_value(lib->w.w##mapname, k).resolved = 0;                            \
+            kh_value(lib->w.w##mapname, k).addr = (uintptr_t)MAPNAME(mapname)[i].addr; \
+        } else {                                                                    \
+            k = kh_put(symbolmap, lib->w.mapname, MAPNAME(mapname)[i].name, &ret);  \
+            kh_value(lib->w.mapname, k).w = MAPNAME(mapname)[i].w;                  \
+            kh_value(lib->w.mapname, k).resolved = 0;                               \
+            kh_value(lib->w.mapname, k).addr = (uintptr_t)MAPNAME(mapname)[i].addr; \
+        }                                                                           \
+        if (strchr(MAPNAME(mapname)[i].name, '@'))                                  \
+            AddDictionnary(box64->versym, MAPNAME(mapname)[i].name);                \
+    }
+#else
+#define DOIT(mapname) \
+    cnt = sizeof(MAPNAME(mapname))/sizeof(map_onesymbol_t);                         \
+    for (int i = 0; i < cnt; ++i) {                                                 \
+        if (MAPNAME(mapname)[i].weak) {                                             \
+            k = kh_put(symbolmap, lib->w.w##mapname, MAPNAME(mapname)[i].name, &ret); \
+            kh_value(lib->w.w##mapname, k).w = MAPNAME(mapname)[i].w;               \
+            kh_value(lib->w.w##mapname, k).resolved = 0;                            \
+        } else {                                                                    \
+            k = kh_put(symbolmap, lib->w.mapname, MAPNAME(mapname)[i].name, &ret);  \
+            kh_value(lib->w.mapname, k).w = MAPNAME(mapname)[i].w;                  \
+            kh_value(lib->w.mapname, k).resolved = 0;                               \
+        }                                                                           \
+        if (strchr(MAPNAME(mapname)[i].name, '@'))                                  \
+            AddDictionnary(box64->versym, MAPNAME(mapname)[i].name);                \
+    }
+#endif
+    DOIT(symbolmap)
+    DOIT(mysymbolmap)
+#undef DOIT
+    cnt = sizeof(MAPNAME(stsymbolmap))/sizeof(map_onesymbol_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbolmap, lib->w.stsymbolmap, MAPNAME(stsymbolmap)[i].name, &ret);
+        kh_value(lib->w.stsymbolmap, k).w = MAPNAME(stsymbolmap)[i].w;
+        #ifdef STATICBUILD
+        kh_value(lib->w.stsymbolmap, k).resolved = 1;
+        kh_value(lib->w.stsymbolmap, k).addr = (uintptr_t)MAPNAME(stsymbolmap)[i].addr;
+        #else
+        kh_value(lib->w.stsymbolmap, k).resolved = 0;
+        #endif
+        if(strchr(MAPNAME(stsymbolmap)[i].name, '@'))
+            AddDictionnary(box64->versym, MAPNAME(stsymbolmap)[i].name);
+    }
+    cnt = sizeof(MAPNAME(symbol2map))/sizeof(map_onesymbol2_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(symbol2map, lib->w.symbol2map, MAPNAME(symbol2map)[i].name, &ret);
+        kh_value(lib->w.symbol2map, k).name = MAPNAME(symbol2map)[i].name2;
+        kh_value(lib->w.symbol2map, k).w = MAPNAME(symbol2map)[i].w;
+        kh_value(lib->w.symbol2map, k).weak = MAPNAME(symbol2map)[i].weak;
+        #ifdef STATICBUILD
+        kh_value(lib->w.symbol2map, k).resolved = 1;
+        kh_value(lib->w.symbol2map, k).addr = (uintptr_t)MAPNAME(symbol2map)[i].addr;
+        #else
+        kh_value(lib->w.symbol2map, k).resolved = 0;
+        #endif
+        if(strchr(MAPNAME(symbol2map)[i].name, '@'))
+            AddDictionnary(box64->versym, MAPNAME(symbol2map)[i].name);
+    }
+    cnt = sizeof(MAPNAME(datamap))/sizeof(map_onedata_t);
+    for (int i=0; i<cnt; ++i) {
+        if(MAPNAME(datamap)[i].weak) {
+            k = kh_put(datamap, lib->w.wdatamap, MAPNAME(datamap)[i].name, &ret);
+            #ifdef STATICBUILD
+            kh_value(lib->w.wdatamap, k).size = MAPNAME(datamap)[i].sz;
+            kh_value(lib->w.wdatamap, k).addr = (uintptr_t)MAPNAME(datamap)[i].addr;
+            #else
+            kh_value(lib->w.wdatamap, k) = MAPNAME(datamap)[i].sz;
+            #endif
+        } else {
+            k = kh_put(datamap, lib->w.datamap, MAPNAME(datamap)[i].name, &ret);
+            #ifdef STATICBUILD
+            kh_value(lib->w.datamap, k).size = MAPNAME(datamap)[i].sz;
+            kh_value(lib->w.datamap, k).addr = (uintptr_t)MAPNAME(datamap)[i].addr;
+            #else
+            kh_value(lib->w.datamap, k) = MAPNAME(datamap)[i].sz;
+            #endif
+        }
+    }
+    cnt = sizeof(MAPNAME(mydatamap))/sizeof(map_onedata_t);
+    for (int i=0; i<cnt; ++i) {
+        k = kh_put(datamap, lib->w.mydatamap, MAPNAME(mydatamap)[i].name, &ret);
+        #ifdef STATICBUILD
+        kh_value(lib->w.mydatamap, k).size = MAPNAME(mydatamap)[i].sz;
+        kh_value(lib->w.mydatamap, k).addr = (uintptr_t)MAPNAME(mydatamap)[i].addr;
+        #else
+        kh_value(lib->w.mydatamap, k) = MAPNAME(mydatamap)[i].sz;
+        #endif
+    }
+#ifdef ALTMY
+    SETALT(ALTMY);
+#endif
+#ifdef HAS_MY
+    getMy(lib);
+#endif
+#ifdef CUSTOM_INIT
+    CUSTOM_INIT
+#endif
+#ifdef NEEDED_LIBS
+    setNeededLibs(lib, COUNT_NARGS(NEEDED_LIBS), NEEDED_LIBS);
+#endif
+
+    return 0;
+}
+
+void FUNC(_fini32)(library_t* lib)
+{
+#ifdef HAS_MY
+    freeMy();
+#endif
+#ifdef CUSTOM_FINI
+    CUSTOM_FINI
+#endif
+    WrappedLib_FinishFini(lib);
+}
diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c
new file mode 100755
index 00000000..952d7f7f
--- /dev/null
+++ b/src/wrapped32/wrappedlibc.c
@@ -0,0 +1,2867 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <stdlib.h>
+#include <stdio.h>
+#include <stddef.h>
+#include <string.h>
+#include <wchar.h>
+#include <dlfcn.h>
+#include <signal.h>
+#include <errno.h>
+#include <err.h>
+#include <stdarg.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/select.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <glob.h>
+#include <ctype.h>
+#include <dirent.h>
+#include <search.h>
+#include <sys/types.h>
+#include <poll.h>
+#include <sys/epoll.h>
+#include <ftw.h>
+#include <sys/syscall.h> 
+#include <sys/socket.h>
+#include <sys/utsname.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/sem.h>
+#include <setjmp.h>
+#include <sys/vfs.h>
+#include <spawn.h>
+#include <getopt.h>
+#include <pwd.h>
+#include <locale.h>
+
+#include "wrappedlibs.h"
+
+#include "box64stack.h"
+#include "x64emu.h"
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "callback.h"
+#include "librarian.h"
+#include "librarian/library_private.h"
+#include "emu/x64emu_private.h"
+#include "box32context.h"
+#include "myalign32.h"
+#include "signals.h"
+#include "fileutils.h"
+#include "auxval.h"
+#include "elfloader.h"
+#include "bridge.h"
+#include "globalsymbols.h"
+#include "box32.h"
+
+#ifdef PANDORA
+#ifndef __NR_preadv
+#define __NR_preadv                     (__NR_SYSCALL_BASE+361)
+#endif
+#ifndef __NR_pwritev
+#define __NR_pwritev                    (__NR_SYSCALL_BASE+362)
+#endif
+#ifndef __NR_accept4
+#define __NR_accept4                    (__NR_SYSCALL_BASE+366)
+#endif
+#ifndef __NR_sendmmsg
+#define __NR_sendmmsg			        (__NR_SYSCALL_BASE+374)
+#endif
+#ifndef __NR_prlimit64
+#define __NR_prlimit64                  (__NR_SYSCALL_BASE+369)
+#endif
+#ifndef __NR_recvmmsg
+#define __NR_recvmmsg                   (__NR_SYSCALL_BASE+365)
+#endif
+#elif defined(__arm__)
+#ifndef __NR_accept4
+#define __NR_accept4                    (__NR_SYSCALL_BASE+366)
+#endif
+#endif
+
+// need to undef all read / read64 stuffs!
+#undef pread
+#undef pwrite
+#undef lseek
+#undef fseeko
+#undef ftello
+#undef fseekpos
+#undef fsetpos
+#undef fgetpos
+#undef fopen
+#undef statfs
+#undef fstatfs
+#undef freopen
+#undef truncate
+#undef ftruncate
+#undef tmpfile
+#undef lockf
+#undef fscanf
+#undef scanf
+#undef sscanf
+#undef vfscanf
+#undef vscanf
+#undef vsscanf
+#undef getc
+#undef putc
+#undef mkstemp
+#undef mkstemps
+#undef mkostemp
+#undef mkostemps
+#undef open
+#undef openat
+#undef read
+#undef write
+#undef creat
+#undef scandir
+#undef mmap
+#undef fcntl
+#undef stat
+#undef __xstat
+#undef xstat
+#undef scandir
+#undef ftw
+#undef nftw
+#undef glob
+
+#define LIBNAME libc
+
+static const char* libcName =
+#ifdef ANDROID
+    "libc.so"
+#else
+    "libc.so.6"
+#endif
+    ;
+
+static library_t* my_lib = NULL;
+
+extern int fix_64bit_inodes;
+#if 0
+typedef int (*iFL_t)(unsigned long);
+typedef void (*vFpp_t)(void*, void*);
+typedef void (*vFpp_t)(void*, void*);
+typedef void (*vFipp_t)(int32_t, void*, void*);
+typedef int32_t (*iFpi_t)(void*, int32_t);
+typedef int32_t (*iFpp_t)(void*, void*);
+typedef int32_t (*iFpL_t)(void*, size_t);
+typedef int32_t (*iFiip_t)(int32_t, int32_t, void*);
+typedef int32_t (*iFipp_t)(int32_t, void*, void*);
+typedef int32_t (*iFppi_t)(void*, void*, int32_t);
+typedef int32_t (*iFpup_t)(void*, uint32_t, void*);
+typedef int32_t (*iFpuu_t)(void*, uint32_t, uint32_t);
+typedef int32_t (*iFiiII_t)(int, int, int64_t, int64_t);
+typedef int32_t (*iFiiiV_t)(int, int, int, ...);
+typedef int32_t (*iFippi_t)(int32_t, void*, void*, int32_t);
+typedef int32_t (*iFpppp_t)(void*, void*, void*, void*);
+typedef int32_t (*iFpipp_t)(void*, int32_t, void*, void*);
+typedef int32_t (*iFpLpp_t)(void*, size_t, void*, void*);
+typedef int32_t (*iFppii_t)(void*, void*, int32_t, int32_t);
+typedef int32_t (*iFipuu_t)(int32_t, void*, uint32_t, uint32_t);
+typedef int32_t (*iFipiI_t)(int32_t, void*, int32_t, int64_t);
+typedef int32_t (*iFipuup_t)(int32_t, void*, uint32_t, uint32_t, void*);
+typedef int32_t (*iFiiV_t)(int32_t, int32_t, ...);
+typedef void* (*pFp_t)(void*);
+typedef void* (*pFu_t)(uint32_t);
+#define SUPER() \
+    GO(_ITM_addUserCommitAction, iFpup_t)   \
+    GO(_IO_file_stat, iFpp_t)
+
+#endif
+
+//#include "wrappercallback.h"
+
+#if 0
+// utility functions
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)   \
+GO(4)   \
+GO(5)   \
+GO(6)   \
+GO(7)   \
+GO(8)   \
+GO(9)   \
+GO(10)  \
+GO(11)  \
+GO(12)  \
+GO(13)  \
+GO(14)  \
+GO(15)
+
+// compare
+#define GO(A)   \
+static uintptr_t my32_compare_fct_##A = 0;        \
+static int my32_compare_##A(void* a, void* b)     \
+{                                               \
+    return (int)RunFunction(my_context, my32_compare_fct_##A, 2, a, b);\
+}
+SUPER()
+#undef GO
+static void* findcompareFct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_compare_fct_##A == (uintptr_t)fct) return my32_compare_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_compare_fct_##A == 0) {my32_compare_fct_##A = (uintptr_t)fct; return my32_compare_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc compare callback\n");
+    return NULL;
+}
+
+// ftw
+#define GO(A)   \
+static uintptr_t my32_ftw_fct_##A = 0;                                      \
+static int my32_ftw_##A(void* fpath, void* sb, int flag)                       \
+{                                                                               \
+    return (int)RunFunction(my_context, my32_ftw_fct_##A, 3, fpath, sb, flag);   \
+}
+SUPER()
+#undef GO
+static void* findftwFct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_ftw_fct_##A == (uintptr_t)fct) return my32_ftw_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_ftw_fct_##A == 0) {my32_ftw_fct_##A = (uintptr_t)fct; return my32_ftw_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc ftw callback\n");
+    return NULL;
+}
+
+// ftw64
+#define GO(A)   \
+static uintptr_t my32_ftw64_fct_##A = 0;                      \
+static int my32_ftw64_##A(void* fpath, void* sb, int flag)    \
+{                                                           \
+    struct i386_stat64 i386st;                              \
+    UnalignStat64(sb, &i386st);                             \
+    return (int)RunFunction(my_context, my32_ftw64_fct_##A, 3, fpath, &i386st, flag);  \
+}
+SUPER()
+#undef GO
+static void* findftw64Fct(void* fct)
+{
+    if(!fct) return NULL;
+    #define GO(A) if(my32_ftw64_fct_##A == (uintptr_t)fct) return my32_ftw64_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_ftw64_fct_##A == 0) {my32_ftw64_fct_##A = (uintptr_t)fct; return my32_ftw64_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc ftw64 callback\n");
+    return NULL;
+}
+
+// nftw
+#define GO(A)   \
+static uintptr_t my32_nftw_fct_##A = 0;                                   \
+static int my32_nftw_##A(void* fpath, void* sb, int flag, void* ftwbuff)  \
+{                                                                       \
+    return (int)RunFunction(my_context, my32_nftw_fct_##A, 4, fpath, sb, flag, ftwbuff);   \
+}
+SUPER()
+#undef GO
+static void* findnftwFct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_nftw_fct_##A == (uintptr_t)fct) return my32_nftw_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_nftw_fct_##A == 0) {my32_nftw_fct_##A = (uintptr_t)fct; return my32_nftw_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc nftw callback\n");
+    return NULL;
+}
+
+// nftw64
+#define GO(A)   \
+static uintptr_t my32_nftw64_fct_##A = 0;                                     \
+static int my32_nftw64_##A(void* fpath, void* sb, int flag, void* ftwbuff)    \
+{                                                                           \
+    struct i386_stat64 i386st;                                              \
+    UnalignStat64(sb, &i386st);                                             \
+    return (int)RunFunction(my_context, my32_nftw64_fct_##A, 4, fpath, &i386st, flag, ftwbuff);   \
+}
+SUPER()
+#undef GO
+static void* findnftw64Fct(void* fct)
+{
+    if(!fct) return NULL;
+    #define GO(A) if(my32_nftw64_fct_##A == (uintptr_t)fct) return my32_nftw64_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_nftw64_fct_##A == 0) {my32_nftw64_fct_##A = (uintptr_t)fct; return my32_nftw64_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc nftw64 callback\n");
+    return NULL;
+}
+
+// globerr
+#define GO(A)   \
+static uintptr_t my32_globerr_fct_##A = 0;                                        \
+static int my32_globerr_##A(void* epath, int eerrno)                              \
+{                                                                               \
+    return (int)RunFunction(my_context, my32_globerr_fct_##A, 2, epath, eerrno);  \
+}
+SUPER()
+#undef GO
+static void* findgloberrFct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_globerr_fct_##A == (uintptr_t)fct) return my32_globerr_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_globerr_fct_##A == 0) {my32_globerr_fct_##A = (uintptr_t)fct; return my32_globerr_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc globerr callback\n");
+    return NULL;
+}
+#undef dirent
+// filter_dir
+#define GO(A)   \
+static uintptr_t my32_filter_dir_fct_##A = 0;                               \
+static int my32_filter_dir_##A(const struct dirent* a)                    \
+{                                                                       \
+    return (int)RunFunction(my_context, my32_filter_dir_fct_##A, 1, a);     \
+}
+SUPER()
+#undef GO
+static void* findfilter_dirFct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_filter_dir_fct_##A == (uintptr_t)fct) return my32_filter_dir_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_filter_dir_fct_##A == 0) {my32_filter_dir_fct_##A = (uintptr_t)fct; return my32_filter_dir_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc filter_dir callback\n");
+    return NULL;
+}
+// compare_dir
+#define GO(A)   \
+static uintptr_t my32_compare_dir_fct_##A = 0;                                  \
+static int my32_compare_dir_##A(const struct dirent* a, const struct dirent* b)    \
+{                                                                           \
+    return (int)RunFunction(my_context, my32_compare_dir_fct_##A, 2, a, b);     \
+}
+SUPER()
+#undef GO
+static void* findcompare_dirFct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_compare_dir_fct_##A == (uintptr_t)fct) return my32_compare_dir_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_compare_dir_fct_##A == 0) {my32_compare_dir_fct_##A = (uintptr_t)fct; return my32_compare_dir_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc compare_dir callback\n");
+    return NULL;
+}
+
+// filter64
+#define GO(A)   \
+static uintptr_t my32_filter64_fct_##A = 0;                               \
+static int my32_filter64_##A(const struct dirent64* a)                    \
+{                                                                       \
+    return (int)RunFunction(my_context, my32_filter64_fct_##A, 1, a);     \
+}
+SUPER()
+#undef GO
+static void* findfilter64Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_filter64_fct_##A == (uintptr_t)fct) return my32_filter64_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_filter64_fct_##A == 0) {my32_filter64_fct_##A = (uintptr_t)fct; return my32_filter64_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc filter64 callback\n");
+    return NULL;
+}
+// compare64
+#define GO(A)   \
+static uintptr_t my32_compare64_fct_##A = 0;                                      \
+static int my32_compare64_##A(const struct dirent64* a, const struct dirent64* b) \
+{                                                                               \
+    return (int)RunFunction(my_context, my32_compare64_fct_##A, 2, a, b);         \
+}
+SUPER()
+#undef GO
+static void* findcompare64Fct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_compare64_fct_##A == (uintptr_t)fct) return my32_compare64_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_compare64_fct_##A == 0) {my32_compare64_fct_##A = (uintptr_t)fct; return my32_compare64_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc compare64 callback\n");
+    return NULL;
+}
+// on_exit
+#define GO(A)   \
+static uintptr_t my32_on_exit_fct_##A = 0;                    \
+static void my32_on_exit_##A(int a, const void* b)            \
+{                                                           \
+    RunFunction(my_context, my32_on_exit_fct_##A, 2, a, b);   \
+}
+SUPER()
+#undef GO
+static void* findon_exitFct(void* fct)
+{
+    if(!fct) return NULL;
+    void* p;
+    if((p = GetNativeFnc((uintptr_t)fct))) return p;
+    #define GO(A) if(my32_on_exit_fct_##A == (uintptr_t)fct) return my32_on_exit_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_on_exit_fct_##A == 0) {my32_on_exit_fct_##A = (uintptr_t)fct; return my32_on_exit_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libc on_exit callback\n");
+    return NULL;
+}
+#undef SUPER
+#endif
+
+// some my32_XXX declare and defines
+int32_t my32___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, char * *), 
+    int argc, char * * ubp_av, void (*init) (void), void (*fini) (void), 
+    void (*rtld_fini) (void), void (* stack_end)); // implemented in x64run_private.c
+EXPORT void my32___libc_init_first(x64emu_t* emu, int argc, char* arg0, char** b)
+{
+    // do nothing specific for now
+    return;
+}
+uint32_t my32_syscall(x64emu_t *emu); // implemented in x64syscall.c
+void EXPORT my32___stack_chk_fail(x64emu_t* emu)
+{
+    char buff[200];
+    #ifdef HAVE_TRACE
+    sprintf(buff, "%p: Stack is corrupted, aborting (prev IP=%p)\n", (void*)emu->old_ip, (void*)emu->prev2_ip);
+    #else
+    sprintf(buff, "%p: Stack is corrupted, aborting\n", (void*)emu->old_ip);
+    #endif
+    StopEmu(emu, buff, 1);
+}
+void EXPORT my32___gmon_start__(x64emu_t *emu)
+{
+    printf_log(LOG_DEBUG, "__gmon_start__ called (dummy call)\n");
+}
+int EXPORT my32___cxa_atexit(x64emu_t* emu, void* p, void* a, void* d)
+{
+    AddCleanup1Arg(emu, p, a,FindElfAddress(my_context, (uintptr_t)d));
+    return 0;
+}
+void EXPORT my32___cxa_finalize(x64emu_t* emu, void* p)
+{
+    if(!p) {
+        // p is null, call (and remove) all Cleanup functions
+        CallAllCleanup(emu);
+        return;
+    }
+        CallCleanup(emu, p);
+}
+int EXPORT my32_atexit(x64emu_t* emu, void *p)
+{
+    AddCleanup(emu, p);
+    return 0;
+}
+
+
+int my32_getcontext(x64emu_t* emu, void* ucp);
+int my32_setcontext(x64emu_t* emu, void* ucp);
+int my32_makecontext(x64emu_t* emu, void* ucp, void* fnc, int32_t argc, void* argv);
+int my32_swapcontext(x64emu_t* emu, void* ucp1, void* ucp2);
+
+// All signal and context functions defined in signals.c
+
+// All fts function defined in myfts.c
+
+// getauxval implemented in auxval.c
+
+
+// this one is defined in elfloader.c
+int my32_dl_iterate_phdr(x64emu_t *emu, void* F, void *data);
+
+pid_t EXPORT my32_fork(x64emu_t* emu)
+{
+/*    #if 1
+    emu->quit = 1;
+    emu->fork = 1;
+    return 0;
+    #else
+    return 0;
+    #endif*/
+    // execute atforks prepare functions, in reverse order
+    for (int i=my_context->atfork_sz-1; i>=0; --i)
+        if(my_context->atforks[i].prepare)
+            RunFunctionWithEmu(emu, 0, my_context->atforks[i].prepare, 0);
+    int type = emu->type;
+    pid_t v;
+    v = fork();
+    if(type == EMUTYPE_MAIN)
+        thread_set_emu(emu);
+    if(v<0) {
+        printf_log(LOG_NONE, "BOX32: Warning, fork errored... (%d)\n", v);
+        // error...
+    } else if(v>0) {  
+        // execute atforks parent functions
+        for (int i=0; i<my_context->atfork_sz; --i)
+            if(my_context->atforks[i].parent)
+                RunFunctionWithEmu(emu, 0, my_context->atforks[i].parent, 0);
+
+    } else /*if(v==0)*/ {
+        // execute atforks child functions
+        for (int i=0; i<my_context->atfork_sz; --i)
+            if(my_context->atforks[i].child)
+                RunFunctionWithEmu(emu, 0, my_context->atforks[i].child, 0);
+    }
+    return v;
+}
+pid_t EXPORT my32___fork(x64emu_t* emu) __attribute__((alias("my32_fork")));
+pid_t EXPORT my32_vfork(x64emu_t* emu)
+{
+    #if 1
+    emu->quit = 1;
+    emu->fork = 1;  // use regular fork...
+    return 0;
+    #else
+    return 0;
+    #endif
+}
+
+int EXPORT my32_uname(struct utsname *buf)
+{
+    //TODO: check sizeof(struct utsname) == 390
+    int ret = uname(buf);
+    strcpy(buf->machine, "x86_64");
+    return ret;
+}
+
+// X86_O_RDONLY 0x00
+#define X86_O_WRONLY       0x01     // octal     01
+#define X86_O_RDWR         0x02     // octal     02
+#define X86_O_CREAT        0x40     // octal     0100
+#define X86_O_EXCL         0x80     // octal     0200
+#define X86_O_NOCTTY       0x100    // octal     0400
+#define X86_O_TRUNC        0x200    // octal    01000
+#define X86_O_APPEND       0x400    // octal    02000
+#define X86_O_NONBLOCK     0x800    // octal    04000
+#define X86_O_SYNC         0x101000 // octal 04010000
+#define X86_O_DSYNC        0x1000   // octal   010000
+#define X86_O_RSYNC        O_SYNC
+#define X86_FASYNC         020000
+#define X86_O_DIRECT       040000
+#define X86_O_LARGEFILE    0100000
+#define X86_O_DIRECTORY    0200000
+#define X86_O_NOFOLLOW     0400000
+#define X86_O_NOATIME      01000000
+#define X86_O_CLOEXEC      02000000
+#define X86_O_PATH         010000000
+#define X86_O_TMPFILE      020200000
+
+#ifndef O_TMPFILE
+#define O_TMPFILE (020000000 | O_DIRECTORY)
+#endif
+#ifndef O_PATH
+#define O_PATH     010000000
+#endif
+
+#define SUPER()     \
+    GO(O_WRONLY)    \
+    GO(O_RDWR)      \
+    GO(O_CREAT)     \
+    GO(O_EXCL)      \
+    GO(O_NOCTTY)    \
+    GO(O_TRUNC)     \
+    GO(O_APPEND)    \
+    GO(O_NONBLOCK)  \
+    GO(O_SYNC)      \
+    GO(O_DSYNC)     \
+    GO(O_RSYNC)     \
+    GO(FASYNC)      \
+    GO(O_DIRECT)    \
+    GO(O_LARGEFILE) \
+    GO(O_TMPFILE)   \
+    GO(O_DIRECTORY) \
+    GO(O_NOFOLLOW)  \
+    GO(O_NOATIME)   \
+    GO(O_CLOEXEC)   \
+    GO(O_PATH)      \
+
+// x86->arm
+int of_convert32(int a)
+{
+    if(!a || a==-1) return a;
+    int b=0;
+    #define GO(A) if((a&X86_##A)==X86_##A) {a&=~X86_##A; b|=A;}
+    SUPER();
+    #undef GO
+    if(a) {
+        printf_log(LOG_NONE, "Warning, of_convert32(...) left over 0x%x, converted 0x%x\n", a, b);
+    }
+    return a|b;
+}
+
+// arm->x86
+int of_unconvert32(int a)
+{
+    if(!a || a==-1) return a;
+    int b=0;
+    #define GO(A) if((a&A)==A) {a&=~A; b|=X86_##A;}
+    SUPER();
+    #undef GO
+    if(a) {
+        printf_log(LOG_NONE, "Warning, of_unconvert32(...) left over 0x%x, converted 0x%x\n", a, b);
+    }
+    return a|b;
+}
+#undef SUPER
+
+#if 0
+EXPORT void* my32__ZGTtnaX (size_t a) { printf("warning _ZGTtnaX called\n"); return NULL; }
+EXPORT void my32__ZGTtdlPv (void* a) { printf("warning _ZGTtdlPv called\n"); }
+EXPORT uint8_t my32__ITM_RU1(const uint8_t * a) { printf("warning _ITM_RU1 called\n"); return 0; }
+EXPORT uint32_t my32__ITM_RU4(const uint32_t * a) { printf("warning _ITM_RU4 called\n"); return 0; }
+EXPORT uint64_t my32__ITM_RU8(const uint64_t * a) { printf("warning _ITM_RU8 called\n"); return 0; }
+EXPORT void my32__ITM_memcpyRtWn(void * a, const void * b, size_t c) {printf("warning _ITM_memcpyRtWn called\n");  }
+EXPORT void my32__ITM_memcpyRnWt(void * a, const void * b, size_t c) {printf("warning _ITM_memcpyRtWn called\n"); }
+#endif
+EXPORT void my32_longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val);
+EXPORT void my32__longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val) __attribute__((alias("my32_longjmp")));
+EXPORT void my32_siglongjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val) __attribute__((alias("my32_longjmp")));
+EXPORT void my32___longjmp_chk(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val) __attribute__((alias("my32_longjmp")));
+
+//EXPORT int32_t my32_setjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p);
+//EXPORT int32_t my32__setjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p) __attribute__((alias("my32_setjmp")));
+//EXPORT int32_t my32___sigsetjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p) __attribute__((alias("my32_setjmp")));
+#if 0
+EXPORT void my32_exit(x64emu_t *emu, int32_t status)
+{
+    R_EAX = (uint32_t)status;
+    emu->quit = 1;
+}
+EXPORT void my32__exit(x64emu_t *emu, int32_t status) __attribute__((alias("my32_exit")));
+EXPORT void my32__Exit(x64emu_t *emu, int32_t status) __attribute__((alias("my32_exit")));
+#endif
+void myStackAlign32(const char* fmt, uint32_t* st, uint64_t* mystack); // align st into mystack according to fmt (for v(f)printf(...))
+typedef int (*iFpp_t)(void*, void*);
+typedef int (*iFppp_t)(void*, void*, void*);
+typedef int (*iFpupp_t)(void*, uint32_t, void*, void*);
+EXPORT int my32_printf(x64emu_t *emu, void* fmt, void* b) {
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    return vprintf((const char*)fmt, VARARGS_32);
+}
+EXPORT int my32___printf_chk(x64emu_t *emu, void* fmt, void* b) __attribute__((alias("my32_printf")));
+#if 0
+
+EXPORT int my32_vprintf(x64emu_t *emu, void* fmt, void* b) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vprintf;
+    return ((iFpp_t)f)(fmt, VARARGS_32);
+    #else
+    // other platform don't need that
+    return vprintf(fmt, b);
+    #endif
+}
+EXPORT int my32___vprintf_chk(x64emu_t *emu, void* fmt, void* b) __attribute__((alias("my32_vprintf")));
+
+EXPORT int my32_vfprintf(x64emu_t *emu, void* F, void* fmt, void* b) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vfprintf;
+    return ((iFppp_t)f)(F, fmt, VARARGS_32);
+    #else
+    // other platform don't need that
+    return vfprintf(F, fmt, b);
+    #endif
+}
+EXPORT int my32___vfprintf_chk(x64emu_t *emu, void* F, void* fmt, void* b) __attribute__((alias("my32_vfprintf")));
+EXPORT int my32__IO_vfprintf(x64emu_t *emu, void* F, void* fmt, void* b) __attribute__((alias("my32_vfprintf")));
+
+EXPORT int my32_dprintf(x64emu_t *emu, int fd, void* fmt, void* V)  {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, V, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vdprintf;
+    return ((iFipp_t)f)(fd, fmt, VARARGS_32);
+    #else
+    return vdprintf(fd, (const char*)fmt, (va_list)V);
+    #endif
+}
+EXPORT int my32___dprintf_chk(x64emu_t *emu, int fd, void* fmt, void* V) __attribute__((alias("my32_dprintf")));
+
+EXPORT int my32_fprintf(x64emu_t *emu, void* F, void* fmt, void* V)  {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, V, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vfprintf;
+    return ((iFppp_t)f)(F, fmt, VARARGS_32);
+    #else
+    return vfprintf((FILE*)F, (const char*)fmt, (va_list)V);
+    #endif
+}
+EXPORT int my32___fprintf_chk(x64emu_t *emu, void* F, void* fmt, void* V) __attribute__((alias("my32_fprintf")));
+
+EXPORT int my32_wprintf(x64emu_t *emu, void* fmt, void* V) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlignW((const char*)fmt, V, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vwprintf;
+    return ((iFpp_t)f)(fmt, VARARGS_32);
+    #else
+    // other platform don't need that
+    return vwprintf((const wchar_t*)fmt, (va_list)V);
+    #endif
+}
+EXPORT int my32___wprintf_chk(x64emu_t *emu, int flag, void* fmt, void* V) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlignW((const char*)fmt, V, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vwprintf;
+    return ((iFpp_t)f)(fmt, VARARGS_32);
+    #else
+    // other platform don't need that
+    return vwprintf((const wchar_t*)fmt, (va_list)V);
+    #endif
+}
+EXPORT int my32_fwprintf(x64emu_t *emu, void* F, void* fmt, void* V)  {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlignW((const char*)fmt, V, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vfwprintf;
+    return ((iFppp_t)f)(F, fmt, VARARGS_32);
+    #else
+    // other platform don't need that
+    return vfwprintf((FILE*)F, (const wchar_t*)fmt, V);
+    #endif
+}
+EXPORT int my32___fwprintf_chk(x64emu_t *emu, void* F, void* fmt, void* V) __attribute__((alias("my32_fwprintf")));
+
+EXPORT int my32_vfwprintf(x64emu_t *emu, void* F, void* fmt, void* b) {
+    #ifndef NOALIGN
+    myStackAlignW((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vfwprintf;
+    return ((iFppp_t)f)(F, fmt, VARARGS_32);
+    #else
+    return vfwprintf(F, fmt, b);
+    #endif
+}
+
+EXPORT int my32_vwprintf(x64emu_t *emu, void* fmt, void* b) {
+    #ifndef NOALIGN
+    myStackAlignW((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vwprintf;
+    return ((iFpp_t)f)(fmt, VARARGS_32);
+    #else
+    void* f = vwprintf;
+    return ((iFpp_t)f)(fmt, b);
+    #endif
+}
+
+EXPORT void *my32_div(void *result, int numerator, int denominator) {
+    *(div_t *)result = div(numerator, denominator);
+    return result;
+}
+
+EXPORT int my32_snprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, void * b) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vsnprintf;
+    return ((iFpLpp_t)f)(buff, s, fmt, VARARGS_32);
+    #else
+    return vsnprintf((char*)buff, s, (char*)fmt, b);
+    #endif
+}
+EXPORT int my32___snprintf(x64emu_t* emu, void* buff, size_t s, void * fmt, void * b) __attribute__((alias("my32_snprintf")));
+
+EXPORT int my32___snprintf_chk(x64emu_t* emu, void* buff, size_t s, int f1, int f2, void * fmt, void * b) {
+    (void)f1; (void)f2;
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vsnprintf;
+    return ((iFpLpp_t)f)(buff, s, fmt, VARARGS_32);
+    #else
+    return vsnprintf((char*)buff, s, (char*)fmt, b);
+    #endif
+}
+
+
+EXPORT int my32_sprintf(x64emu_t* emu, void* buff, void * fmt, void * b) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vsprintf;
+    return ((iFppp_t)f)(buff, fmt, VARARGS_32);
+    #else
+    return vsprintf((char*)buff, (char*)fmt, b);
+    #endif
+}
+EXPORT int my32___sprintf_chk(x64emu_t* emu, void* buff, void * fmt, void * b) __attribute__((alias("my32_sprintf")));
+
+EXPORT int my32_asprintf(x64emu_t* emu, void** buff, void * fmt, void * b) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vasprintf;
+    return ((iFppp_t)f)(buff, fmt, VARARGS_32);
+    #else
+    return vasprintf((char**)buff, (char*)fmt, b);
+    #endif
+}
+EXPORT int my32___asprintf(x64emu_t* emu, void** buff, void * fmt, void * b) __attribute__((alias("my32_asprintf")));
+
+EXPORT int my32_vsprintf(x64emu_t* emu, void* buff,  void * fmt, uint32_t * b) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vsprintf;
+    int r = ((iFppp_t)f)(buff, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vsprintf;
+    int r = ((iFppp_t)f)(buff, fmt, b);
+    return r;
+    #endif
+}
+EXPORT int my32___vsprintf_chk(x64emu_t* emu, void* buff, int flags, size_t len, void * fmt, uint32_t * b)  {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vsprintf;
+    int r = ((iFppp_t)f)(buff, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vsprintf;
+    int r = ((iFppp_t)f)(buff, fmt, b);
+    return r;
+    #endif
+}
+
+#ifdef POWERPCLE
+EXPORT int my32_vfscanf(x64emu_t* emu, void* stream, void* fmt, void* b) // probably uneeded to do a GOM, a simple wrap should enough
+{
+    //myStackAlign32((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32_(b);
+    void* f = vfscanf;
+
+    return ((iFppp_t)f)(stream, fmt, VARARGS_32_(b));
+}
+
+
+
+EXPORT int my32_vsscanf(x64emu_t* emu, void* stream, void* fmt, void* b)
+{
+    //myStackAlign32((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32_(b);
+    void* f = vsscanf;
+
+    return ((iFppp_t)f)(stream, fmt, VARARGS_32_(b));
+}
+
+EXPORT int my32__vsscanf(x64emu_t* emu, void* stream, void* fmt, void* b) __attribute__((alias("my32_vsscanf")));
+EXPORT int my32_sscanf(x64emu_t* emu, void* stream, void* fmt, void* b) __attribute__((alias("my32_vsscanf")));
+
+EXPORT int my32__IO_vfscanf(x64emu_t* emu, void* stream, void* fmt, void* b) __attribute__((alias("my32_vfscanf")));
+EXPORT int my32___isoc99_vsscanf(x64emu_t* emu, void* stream, void* fmt, void* b) __attribute__((alias("my32_vsscanf")));
+
+EXPORT int my32___isoc99_vfscanf(x64emu_t* emu, void* stream, void* fmt, void* b) __attribute__((alias("my32_vfscanf")));
+EXPORT int my32___isoc99_fscanf(x64emu_t* emu, void* stream, void* fmt, void* b) __attribute__((alias("my32_vfscanf")));
+
+EXPORT int my32___isoc99_sscanf(x64emu_t* emu, void* stream, void* fmt, void* b)
+{
+  void* f = sscanf;
+  PREPARE_VALIST_32;
+
+  return ((iFppp_t)f)(stream, fmt, VARARGS_32);
+}
+#endif
+
+EXPORT int my32_vsnprintf(x64emu_t* emu, void* buff, uint32_t s, void * fmt, void * b, va_list V) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vsnprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vsnprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, (uint32_t*)b);
+    return r;
+    #endif
+}
+EXPORT int my32___vsnprintf(x64emu_t* emu, void* buff, uint32_t s, void * fmt, void * b, va_list V) __attribute__((alias("my32_vsnprintf")));
+EXPORT int my32___vsnprintf_chk(x64emu_t* emu, void* buff, uint32_t s, void * fmt, void * b, va_list V) __attribute__((alias("my32_vsnprintf")));
+
+EXPORT int my32_vasprintf(x64emu_t* emu, void* strp, void* fmt, void* b, va_list V)
+{
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vasprintf;
+    int r = ((iFppp_t)f)(strp, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vasprintf;
+    int r = ((iFppp_t)f)(strp, fmt, (uint32_t*)b);
+    return r;
+    #endif
+}
+EXPORT int my32___vasprintf_chk(x64emu_t* emu, void* strp, int flags, void* fmt, void* b, va_list V)
+{
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlign32((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vasprintf;
+    int r = ((iFppp_t)f)(strp, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vasprintf;
+    int r = ((iFppp_t)f)(strp, fmt, (uint32_t*)b);
+    return r;
+    #endif
+}
+
+EXPORT int my32___asprintf_chk(x64emu_t* emu, void* result_ptr, int flags, void* fmt, void* b)
+{
+    #ifndef NOALIGN
+    myStackAlign32((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vasprintf;
+    return ((iFppp_t)f)(result_ptr, fmt, VARARGS_32);
+    #else
+    return vasprintf((char**)result_ptr, (char*)fmt, b);
+    #endif
+}
+
+EXPORT int my32_vswprintf(x64emu_t* emu, void* buff, uint32_t s, void * fmt, void * b, va_list V) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlignW((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, (uint32_t*)b);
+    return r;
+    #endif
+}
+EXPORT int my32___vswprintf(x64emu_t* emu, void* buff, uint32_t s, void * fmt, void * b, va_list V) __attribute__((alias("my32_vswprintf")));
+EXPORT int my32___vswprintf_chk(x64emu_t* emu, void* buff, size_t s, int flags, size_t m, void * fmt, void * b, va_list V) {
+    #ifndef NOALIGN
+    // need to align on arm
+    myStackAlignW((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(buff, s, fmt, (uint32_t*)b);
+    return r;
+    #endif
+}
+
+EXPORT void my32_verr(x64emu_t* emu, int eval, void* fmt, void* b) {
+    #ifndef NOALIGN
+    myStackAlignW((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = verr;
+    ((vFipp_t)f)(eval, fmt, VARARGS_32);
+    #else
+    void* f = verr;
+    ((vFipp_t)f)(eval, fmt, (uint32_t*)b);
+    #endif
+}
+
+EXPORT void my32_vwarn(x64emu_t* emu, void* fmt, void* b) {
+    #ifndef NOALIGN
+    myStackAlignW((const char*)fmt, (uint32_t*)b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vwarn;
+    ((vFpp_t)f)(fmt, VARARGS_32);
+    #else
+    void* f = vwarn;
+    ((vFpp_t)f)(fmt, (uint32_t*)b);
+    #endif
+}
+
+EXPORT int my32___swprintf_chk(x64emu_t* emu, void* s, uint32_t n, int32_t flag, uint32_t slen, void* fmt, void * b)
+{
+    #ifndef NOALIGN
+    myStackAlignW((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(s, n, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(s, n, fmt, b);
+    return r;
+    #endif
+}
+EXPORT int my32_swprintf(x64emu_t* emu, void* s, uint32_t n, void* fmt, void *b)
+{
+    #ifndef NOALIGN
+    myStackAlignW((const char*)fmt, b, emu->scratch);
+    PREPARE_VALIST_32;
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(s, n, fmt, VARARGS_32);
+    return r;
+    #else
+    void* f = vswprintf;
+    int r = ((iFpupp_t)f)(s, n, fmt, b);
+    return r;
+    #endif
+}
+
+EXPORT void my32__ITM_addUserCommitAction(x64emu_t* emu, void* cb, uint32_t b, void* c)
+{
+    // disabled for now... Are all this _ITM_ stuff really mendatory?
+    #if 0
+    // quick and dirty... Should store the callback to be removed later....
+    libc_my32_t *my = (libc_my32_t *)emu->context->libclib->priv.w.p2;
+    x64emu_t *cbemu = AddCallback(emu, (uintptr_t)cb, 1, c, NULL, NULL, NULL);
+    my->_ITM_addUserCommitAction(libc1ArgCallback, b, cbemu);
+    // should keep track of cbemu to remove at some point...
+    #else
+    printf("warning _ITM_addUserCommitAction called\n");
+    #endif
+}
+#endif
+EXPORT void my32__ITM_registerTMCloneTable(x64emu_t* emu, void* p, uint32_t s) {}
+EXPORT void my32__ITM_deregisterTMCloneTable(x64emu_t* emu, void* p) {}
+
+
+struct i386_stat {
+	uint64_t  st_dev;
+	uint32_t  __pad1;
+	uint32_t  st_ino;
+	uint32_t  st_mode;
+	uint32_t  st_nlink;
+	uint32_t  st_uid;
+	uint32_t  st_gid;
+	uint64_t  st_rdev;
+	uint32_t  __pad2;
+	int32_t   st_size;
+	int32_t   st_blksize;
+	int32_t   st_blocks;
+	int32_t   st_atime_sec;
+	uint32_t  st_atime_nsec;
+	int32_t   st_mtime_sec;
+	uint32_t  st_mtime_nsec;
+	int32_t   st_ctime_sec;
+	uint32_t  st_ctime_nsec;
+	uint32_t  __unused4;
+	uint32_t  __unused5;
+} __attribute__((packed));
+
+static int FillStatFromStat64(int vers, const struct stat64 *st64, void *st32)
+{
+    struct i386_stat *i386st = (struct i386_stat *)st32;
+
+    if (vers != 3)
+    {
+        errno = EINVAL;
+        return -1;
+    }
+
+    i386st->st_dev = st64->st_dev;
+    i386st->__pad1 = 0;
+    if (fix_64bit_inodes)
+    {
+        i386st->st_ino = st64->st_ino ^ (st64->st_ino >> 32);
+    }
+    else
+    {
+        i386st->st_ino = st64->st_ino;
+        if ((st64->st_ino >> 32) != 0)
+        {
+            errno = EOVERFLOW;
+            return -1;
+        }
+    }
+    i386st->st_mode = st64->st_mode;
+    i386st->st_nlink = st64->st_nlink;
+    i386st->st_uid = st64->st_uid;
+    i386st->st_gid = st64->st_gid;
+    i386st->st_rdev = st64->st_rdev;
+    i386st->__pad2 = 0;
+    i386st->st_size = st64->st_size;
+    if ((i386st->st_size >> 31) != (int32_t)(st64->st_size >> 32))
+    {
+        errno = EOVERFLOW;
+        return -1;
+    }
+    i386st->st_blksize = st64->st_blksize;
+    i386st->st_blocks = st64->st_blocks;
+    if ((i386st->st_blocks >> 31) != (int32_t)(st64->st_blocks >> 32))
+    {
+        errno = EOVERFLOW;
+        return -1;
+    }
+    i386st->st_atime_sec = st64->st_atim.tv_sec;
+    i386st->st_atime_nsec = st64->st_atim.tv_nsec;
+    i386st->st_mtime_sec = st64->st_mtim.tv_sec;
+    i386st->st_mtime_nsec = st64->st_mtim.tv_nsec;
+    i386st->st_ctime_sec = st64->st_ctim.tv_sec;
+    i386st->st_ctime_nsec = st64->st_ctim.tv_nsec;
+    i386st->__unused4 = 0;
+    i386st->__unused5 = 0;
+    return 0;
+}
+#if 0
+#ifdef ANDROID
+EXPORT int my32_stat(char* path, void* buf)
+{
+    struct stat64 st;
+    int r = stat64(path, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32_fstat(int fd, void* buf)
+{
+    struct stat64 st;
+    int r = fstat64(fd, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32_lstat(char* path, void* buf)
+{
+    struct stat64 st;
+    int r = lstat64(path, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+#endif
+
+EXPORT int my32___fxstat(x64emu_t *emu, int vers, int fd, void* buf)
+{
+    if (vers == 1)
+    {
+        static iFiip_t f = NULL;
+        if(!f) {
+            library_t* lib = my_lib;
+            if(!lib)
+            {
+                errno = EINVAL;
+                return -1;
+            }
+            f = (iFiip_t)dlsym(lib->priv.w.lib, "__fxstat");
+        }
+
+        return f(vers, fd, buf);
+    }
+    struct stat64 st;
+    int r = fstat64(fd, &st);
+    if (r) return r;
+    r = FillStatFromStat64(vers, &st, buf);
+    return r;
+}
+
+EXPORT int my32___fxstat64(x64emu_t *emu, int vers, int fd, void* buf)
+{
+    struct stat64 st;
+    int r = fstat64(fd, &st);
+    //int r = syscall(__NR_stat64, fd, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32_stat64(x64emu_t* emu, void* path, void* buf)
+{
+    struct stat64 st;
+    int r = stat64(path, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+EXPORT int my32_lstat64(x64emu_t* emu, void* path, void* buf)
+{
+    struct stat64 st;
+    int r = lstat64(path, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32___xstat(x64emu_t* emu, int v, void* path, void* buf)
+{
+    if (v == 1)
+    {
+        static iFipp_t f = NULL;
+        if(!f) {
+            library_t* lib = my_lib;
+            if(!lib)
+            {
+                errno = EINVAL;
+                return -1;
+            }
+            f = (iFipp_t)dlsym(lib->priv.w.lib, "__xstat");
+        }
+
+        return f(v, path, buf);
+    }
+    struct stat64 st;
+    int r = stat64((const char*)path, &st);
+    if (r) return r;
+    r = FillStatFromStat64(v, &st, buf);
+    return r;
+}
+
+EXPORT int my32___xstat64(x64emu_t* emu, int v, void* path, void* buf)
+{
+    struct stat64 st;
+    int r = stat64((const char*)path, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32___lxstat(x64emu_t* emu, int v, void* name, void* buf)
+{
+    if (v == 1)
+    {
+        static iFipp_t f = NULL;
+        if(!f) {
+            library_t* lib = my_lib;
+            if(!lib)
+            {
+                errno = EINVAL;
+                return -1;
+            }
+            f = (iFipp_t)dlsym(lib->priv.w.lib, "__lxstat");
+        }
+
+        return f(v, name, buf);
+    }
+    struct stat64 st;
+    int r = lstat64((const char*)name, &st);
+    if (r) return r;
+    r = FillStatFromStat64(v, &st, buf);
+    return r;
+}
+
+EXPORT int my32___lxstat64(x64emu_t* emu, int v, void* name, void* buf)
+{
+    struct stat64 st;
+    int r = lstat64((const char*)name, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32___fxstatat(x64emu_t* emu, int v, int d, void* path, void* buf, int flags)
+{
+    struct  stat64 st;
+    int r = fstatat64(d, path, &st, flags);
+    if (r) return r;
+    r = FillStatFromStat64(v, &st, buf);
+    return r;
+}
+
+EXPORT int my32___fxstatat64(x64emu_t* emu, int v, int d, void* path, void* buf, int flags)
+{
+    struct  stat64 st;
+    int r = fstatat64(d, path, &st, flags);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32__IO_file_stat(x64emu_t* emu, void* f, void* buf)
+{
+    struct stat64 st;
+    libc_my32_t *my = (libc_my32_t *)emu->context->libclib->priv.w.p2;
+    int r = my->_IO_file_stat(f, &st);
+    UnalignStat64(&st, buf);
+    return r;
+}
+
+EXPORT int my32_fstatfs64(int fd, void* buf)
+{
+    struct statfs64 st;
+    int r = fstatfs64(fd, &st);
+    UnalignStatFS64(&st, buf);
+    return r;
+}
+
+EXPORT int my32_statfs64(const char* path, void* buf)
+{
+    struct statfs64 st;
+    int r = statfs64(path, &st);
+    UnalignStatFS64(&st, buf);
+    return r;
+}
+
+
+#ifdef ANDROID
+typedef int (*__compar_d_fn_t)(const void*, const void*, void*);
+
+static size_t qsort_r_partition(void* base, size_t size, __compar_d_fn_t compar, void* arg, size_t lo, size_t hi)
+{
+    void* tmp = malloc(size);
+    void* pivot = ((char*)base) + lo * size;
+    size_t i = lo;
+    for (size_t j = lo; j <= hi; j++)
+    {
+        void* base_i = ((char*)base) + i * size;
+        void* base_j = ((char*)base) + j * size;
+        if (compar(base_j, pivot, arg) < 0)
+        {
+            memcpy(tmp, base_i, size);
+            memcpy(base_i, base_j, size);
+            memcpy(base_j, tmp, size);
+            i++;
+        }
+    }
+    void* base_i = ((char *)base) + i * size;
+    void* base_hi = ((char *)base) + hi * size;
+    memcpy(tmp, base_i, size);
+    memcpy(base_i, base_hi, size);
+    memcpy(base_hi, tmp, size);
+    free(tmp);
+    return i;
+}
+
+static void qsort_r_helper(void* base, size_t size, __compar_d_fn_t compar, void* arg, ssize_t lo, ssize_t hi)
+{
+    if (lo < hi)
+    {
+        size_t p = qsort_r_partition(base, size, compar, arg, lo, hi);
+        qsort_r_helper(base, size, compar, arg, lo, p - 1);
+        qsort_r_helper(base, size, compar, arg, p + 1, hi);
+    }
+}
+
+static void qsort_r(void* base, size_t nmemb, size_t size, __compar_d_fn_t compar, void* arg)
+{
+    return qsort_r_helper(base, size, compar, arg, 0, nmemb - 1);
+}
+#endif
+
+typedef struct compare_r_s {
+    x64emu_t* emu;
+    uintptr_t f;
+    void*     data;
+    int       r;
+} compare_r_t;
+
+static int my32_compare_r_cb(void* a, void* b, compare_r_t* arg)
+{
+    return (int)RunFunctionWithEmu(arg->emu, 0, arg->f, 2+arg->r, a, b, arg->data);
+}
+EXPORT void my32_qsort(x64emu_t* emu, void* base, size_t nmemb, size_t size, void* fnc)
+{
+    compare_r_t args;
+    args.emu = emu; args.f = (uintptr_t)fnc; args.r = 0; args.data = NULL;
+    qsort_r(base, nmemb, size, (__compar_d_fn_t)my32_compare_r_cb, &args);
+}
+EXPORT void my32_qsort_r(x64emu_t* emu, void* base, size_t nmemb, size_t size, void* fnc, void* data)
+{
+    compare_r_t args;
+    args.emu = emu; args.f = (uintptr_t)fnc; args.r = 1; args.data = data;
+    qsort_r(base, nmemb, size, (__compar_d_fn_t)my32_compare_r_cb, &args);
+}
+
+EXPORT void* my32_bsearch(x64emu_t* emu, void* key, void* base, size_t nmemb, size_t size, void* fnc)
+{
+    return bsearch(key, base, nmemb, size, findcompareFct(fnc));
+}
+
+EXPORT void* my32_lsearch(x64emu_t* emu, void* key, void* base, size_t* nmemb, size_t size, void* fnc)
+{
+    return lsearch(key, base, nmemb, size, findcompareFct(fnc));
+}
+EXPORT void* my32_lfind(x64emu_t* emu, void* key, void* base, size_t* nmemb, size_t size, void* fnc)
+{
+    return lfind(key, base, nmemb, size, findcompareFct(fnc));
+}
+
+
+struct i386_dirent {
+    uint32_t d_ino;
+    int32_t  d_off;
+    uint16_t d_reclen;
+    uint8_t  d_type;
+    char     d_name[256];
+};
+
+EXPORT void* my32_readdir(x64emu_t* emu, void* dirp)
+{
+    if (fix_64bit_inodes)
+    {
+        struct dirent64 *dp64 = readdir64((DIR *)dirp);
+        if (!dp64) return NULL;
+        uint32_t ino32 = dp64->d_ino ^ (dp64->d_ino >> 32);
+        int32_t off32 = dp64->d_off;
+        struct i386_dirent *dp32 = (struct i386_dirent *)&(dp64->d_off);
+        dp32->d_ino = ino32;
+        dp32->d_off = off32;
+        dp32->d_reclen -= 8;
+        return dp32;
+    }
+    else
+    {
+        static pFp_t f = NULL;
+        if(!f) {
+            library_t* lib = my_lib;
+            if(!lib) return NULL;
+            f = (pFp_t)dlsym(lib->priv.w.lib, "readdir");
+        }
+
+        return f(dirp);
+    }
+}
+
+EXPORT int32_t my32_readdir_r(x64emu_t* emu, void* dirp, void* entry, void** result)
+{
+    struct dirent64 d64, *dp64;
+    if (fix_64bit_inodes && (sizeof(d64.d_name) > 1))
+    {
+        static iFppp_t f = NULL;
+        if(!f) {
+            library_t* lib = my_lib;
+            if(!lib)
+            {
+                *result = NULL;
+                return 0;
+            }
+            f = (iFppp_t)dlsym(lib->priv.w.lib, "readdir64_r");
+        }
+
+        int r = f(dirp, &d64, &dp64);
+        if (r || !dp64 || !entry)
+        {
+            *result = NULL;
+            return r;
+        }
+
+        struct i386_dirent *dp32 = (struct i386_dirent *)entry;
+        int namelen = dp64->d_reclen - offsetof(struct dirent64, d_name);
+        if (namelen > sizeof(dp32->d_name))
+        {
+            *result = NULL;
+            return ENAMETOOLONG;
+        }
+
+        dp32->d_ino = dp64->d_ino ^ (dp64->d_ino >> 32);
+        dp32->d_off = dp64->d_off;
+        dp32->d_reclen = namelen + offsetof(struct i386_dirent, d_name);
+        dp32->d_type = dp64->d_type;
+        memcpy(dp32->d_name, dp64->d_name, namelen);
+        *result = dp32;
+        return 0;
+    }
+    else
+    {
+        static iFppp_t f = NULL;
+        if(!f) {
+            library_t* lib = my_lib;
+            if(!lib)
+            {
+                *result = NULL;
+                return 0;
+            }
+            f = (iFppp_t)dlsym(lib->priv.w.lib, "readdir_r");
+        }
+
+        return f(dirp, entry, result);
+    }
+}
+#endif
+static int isProcSelf(const char *path, const char* w)
+{
+    if(strncmp(path, "/proc/", 6)==0) {
+        char tmp[64];
+        // check if self ....
+        sprintf(tmp, "/proc/self/%s", w);
+        if(strcmp((const char*)path, tmp)==0)
+            return 1;
+        // check if self PID ....
+        pid_t pid = getpid();
+        sprintf(tmp, "/proc/%d/%s", pid, w);
+        if(strcmp((const char*)path, tmp)==0)
+            return 1;
+    }
+    return 0;
+}
+
+EXPORT int32_t my32_readlink(x64emu_t* emu, void* path, void* buf, uint32_t sz)
+{
+    if(isProcSelf((const char*)path, "exe")) {
+        // special case for self...
+        return strlen(strncpy((char*)buf, emu->context->fullpath, sz));
+    }
+    return readlink((const char*)path, (char*)buf, sz);
+}
+#ifndef NOALIGN
+
+void CreateCPUInfoFile(int fd);
+int getNCpu();
+static int isCpuTopology(const char* p) {
+    if(strstr(p, "/sys/devices/system/cpu/cpu")!=p)
+        return -1;  //nope
+    if( FileExist(p, -1))
+        return -1;  //no need to fake it
+    char buf[512];
+    const char* p2 = p + strlen("/sys/devices/system/cpu/cpu");
+    int n = 0;
+    while(*p2>='0' && *p2<='9') {
+        n = n*10+ *p2 - '0';
+        ++p2;
+    }
+    if(n>=getNCpu()) // filter for non existing cpu
+        return -1;
+    snprintf(buf, 512, "/sys/devices/system/cpu/cpu%d/topology/core_id", n);
+    if(!strcmp(p, buf))
+        return n;
+    return -1;
+}
+static void CreateCPUTopologyCoreID(int fd, int cpu)
+{
+    char buf[512];
+    snprintf(buf, 512, "%d\n", cpu);
+    size_t dummy = write(fd, buf, strlen(buf));
+    (void)dummy;
+}
+
+
+#ifdef ANDROID
+static int shm_open(const char *name, int oflag, mode_t mode) {
+    return -1;
+}
+static int shm_unlink(const char *name) {
+    return -1;
+}
+#endif
+#endif
+#define TMP_CPUINFO "box32_tmpcpuinfo"
+#define TMP_CPUTOPO "box32_tmpcputopo%d"
+
+#define TMP_MEMMAP  "box32_tmpmemmap"
+#define TMP_CMDLINE "box32_tmpcmdline"
+EXPORT int32_t my32_open(x64emu_t* emu, void* pathname, int32_t flags, uint32_t mode)
+{
+    if(isProcSelf((const char*) pathname, "cmdline")) {
+        // special case for self command line...
+        #if 0
+        char tmpcmdline[200] = {0};
+        char tmpbuff[100] = {0};
+        sprintf(tmpbuff, "%s/cmdlineXXXXXX", getenv("TMP")?getenv("TMP"):".");
+        int tmp = mkstemp(tmpbuff);
+        int dummy;
+        if(tmp<0) return open(pathname, flags, mode);
+        dummy = write(tmp, emu->context->fullpath, strlen(emu->context->fullpath)+1);
+        for (int i=1; i<emu->context->argc; ++i)
+            dummy = write(tmp, emu->context->argv[i], strlen(emu->context->argv[i])+1);
+        lseek(tmp, 0, SEEK_SET);
+        #else
+        int tmp = shm_open(TMP_CMDLINE, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return open(pathname, flags, mode);
+        shm_unlink(TMP_CMDLINE);    // remove the shm file, but it will still exist because it's currently in use
+        int dummy = write(tmp, emu->context->fullpath, strlen(emu->context->fullpath)+1);
+        (void)dummy;
+        for (int i=1; i<emu->context->argc; ++i)
+            dummy = write(tmp, emu->context->argv[i], strlen(emu->context->argv[i])+1);
+        lseek(tmp, 0, SEEK_SET);
+        #endif
+        return tmp;
+    }
+    if(isProcSelf((const char*)pathname, "exe")) {
+        return open(emu->context->fullpath, flags, mode);
+    }
+    #ifndef NOALIGN
+    if(strcmp((const char*)pathname, "/proc/cpuinfo")==0) {
+        // special case for cpuinfo
+        int tmp = shm_open(TMP_CPUINFO, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return open(pathname, flags, mode); // error fallback
+        shm_unlink(TMP_CPUINFO);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUInfoFile(tmp);
+        lseek(tmp, 0, SEEK_SET);
+        return tmp;
+    }
+    if(isCpuTopology((const char*)pathname)!=-1) {
+        int n = isCpuTopology((const char*)pathname);
+        char buf[512];
+        snprintf(buf, 512, TMP_CPUTOPO, n);
+        int tmp = shm_open(buf, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return open(pathname, flags, mode); // error fallback
+        shm_unlink(buf);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUTopologyCoreID(tmp, n);
+        lseek(tmp, 0, SEEK_SET);
+        return tmp;
+    }
+    #endif
+    int ret = open(pathname, flags, mode);
+    return ret;
+}
+EXPORT int32_t my32___open(x64emu_t* emu, void* pathname, int32_t flags, uint32_t mode) __attribute__((alias("my32_open")));
+
+#ifdef DYNAREC
+static int hasDBFromAddress(uintptr_t addr)
+{
+    int idx = (addr>>DYNAMAP_SHIFT);
+    return getDB(idx)?1:0;
+}
+#endif
+
+EXPORT int32_t my32_read(int fd, void* buf, uint32_t count)
+{
+    int ret = read(fd, buf, count);
+#ifdef DYNAREC
+    if(ret!=count && ret>0) {
+        // continue reading...
+        void* p = buf+ret;
+        if(hasDBFromAddress((uintptr_t)p)) {
+            // allow writing the whole block (this happens with HalfLife, libMiles load code directly from .mix and other file like that)
+            unprotectDB((uintptr_t)p, count-ret, 1);
+            int l;
+            do {
+                l = read(fd, p, count-ret); 
+                if(l>0) {
+                    p+=l; ret+=l;
+                }
+            } while(l>0);
+        }
+    }
+#endif
+    return ret;
+}
+
+EXPORT int32_t my32_open64(x64emu_t* emu, void* pathname, int32_t flags, uint32_t mode)
+{
+    if(isProcSelf((const char*)pathname, "cmdline")) {
+        // special case for self command line...
+        #if 0
+        char tmpcmdline[200] = {0};
+        char tmpbuff[100] = {0};
+        sprintf(tmpbuff, "%s/cmdlineXXXXXX", getenv("TMP")?getenv("TMP"):".");
+        int tmp = mkstemp64(tmpbuff);
+        int dummy;
+        if(tmp<0) return open64(pathname, flags, mode);
+        dummy = write(tmp, emu->context->fullpath, strlen(emu->context->fullpath)+1);
+        for (int i=1; i<emu->context->argc; ++i)
+            dummy = write(tmp, emu->context->argv[i], strlen(emu->context->argv[i])+1);
+        lseek64(tmp, 0, SEEK_SET);
+        #else
+        int tmp = shm_open(TMP_CMDLINE, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return open64(pathname, flags, mode);
+        shm_unlink(TMP_CMDLINE);    // remove the shm file, but it will still exist because it's currently in use
+        int dummy = write(tmp, emu->context->fullpath, strlen(emu->context->fullpath)+1);
+        (void)dummy;
+        for (int i=1; i<emu->context->argc; ++i)
+            dummy = write(tmp, emu->context->argv[i], strlen(emu->context->argv[i])+1);
+        lseek(tmp, 0, SEEK_SET);
+        #endif
+        return tmp;
+    }
+    if(isProcSelf((const char*)pathname, "exe")) {
+        return open64(emu->context->fullpath, flags, mode);
+    }
+    #ifndef NOALIGN
+    if(strcmp((const char*)pathname, "/proc/cpuinfo")==0) {
+        // special case for cpuinfo
+        int tmp = shm_open(TMP_CPUINFO, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return open64(pathname, flags, mode); // error fallback
+        shm_unlink(TMP_CPUINFO);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUInfoFile(tmp);
+        lseek(tmp, 0, SEEK_SET);
+        return tmp;
+    }
+    if(isCpuTopology((const char*)pathname)!=-1) {
+        int n = isCpuTopology((const char*)pathname);
+        char buf[512];
+        snprintf(buf, 512, TMP_CPUTOPO, n);
+        int tmp = shm_open(buf, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return open64(pathname, flags, mode); // error fallback
+        shm_unlink(buf);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUTopologyCoreID(tmp, n);
+        lseek(tmp, 0, SEEK_SET);
+        return tmp;
+    }
+    #endif
+    return open64(pathname, flags, mode);
+}
+
+EXPORT FILE* my32_fopen(x64emu_t* emu, const char* path, const char* mode)
+{
+    if(isProcSelf(path, "maps")) {
+        // special case for self memory map
+        int tmp = shm_open(TMP_MEMMAP, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return fopen(path, mode); // error fallback
+        shm_unlink(TMP_MEMMAP);    // remove the shm file, but it will still exist because it's currently in use
+        CreateMemorymapFile(emu->context, tmp);
+        lseek(tmp, 0, SEEK_SET);
+        return fdopen(tmp, mode);
+    }
+    #ifndef NOALIGN
+    if(strcmp(path, "/proc/cpuinfo")==0) {
+        // special case for cpuinfo
+        int tmp = shm_open(TMP_CPUINFO, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return fopen(path, mode); // error fallback
+        shm_unlink(TMP_CPUINFO);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUInfoFile(tmp);
+        lseek(tmp, 0, SEEK_SET);
+        return fdopen(tmp, mode);
+    }
+    if(isCpuTopology(path)!=-1) {
+        int n = isCpuTopology(path);
+        char buf[512];
+        snprintf(buf, 512, TMP_CPUTOPO, n);
+        int tmp = shm_open(buf, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return fopen(path, mode); // error fallback
+        shm_unlink(buf);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUTopologyCoreID(tmp, n);
+        lseek(tmp, 0, SEEK_SET);
+        return fdopen(tmp, mode);;
+    }
+    #endif
+    if(isProcSelf(path, "exe")) {
+        return fopen(emu->context->fullpath, mode);
+    }
+    return fopen(path, mode);
+}
+
+EXPORT FILE* my32_fopen64(x64emu_t* emu, const char* path, const char* mode)
+{
+    if(isProcSelf(path, "maps")) {
+        // special case for self memory map
+        int tmp = shm_open(TMP_MEMMAP, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return fopen64(path, mode); // error fallback
+        shm_unlink(TMP_MEMMAP);    // remove the shm file, but it will still exist because it's currently in use
+        CreateMemorymapFile(emu->context, tmp);
+        lseek(tmp, 0, SEEK_SET);
+        return fdopen(tmp, mode);
+    }
+    #ifndef NOALIGN
+    if(strcmp(path, "/proc/cpuinfo")==0) {
+        // special case for cpuinfo
+        int tmp = shm_open(TMP_CPUINFO, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return fopen64(path, mode); // error fallback
+        shm_unlink(TMP_CPUINFO);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUInfoFile(tmp);
+        lseek(tmp, 0, SEEK_SET);
+        return fdopen(tmp, mode);
+    }
+    if(isCpuTopology(path)!=-1) {
+        int n = isCpuTopology(path);
+        char buf[512];
+        snprintf(buf, 512, TMP_CPUTOPO, n);
+        int tmp = shm_open(buf, O_RDWR | O_CREAT, S_IRWXU);
+        if(tmp<0) return fopen(path, mode); // error fallback
+        shm_unlink(buf);    // remove the shm file, but it will still exist because it's currently in use
+        CreateCPUTopologyCoreID(tmp, n);
+        lseek(tmp, 0, SEEK_SET);
+        return fdopen(tmp, mode);;
+    }
+    #endif
+    if(isProcSelf(path, "exe")) {
+        return fopen64(emu->context->fullpath, mode);
+    }
+    return fopen64(path, mode);
+}
+
+#if 0
+EXPORT int my32_mkstemps64(x64emu_t* emu, char* template, int suffixlen)
+{
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "mkstemps64");
+    if(f)
+        return ((iFpi_t)f)(template, suffixlen);
+    // implement own version...
+    // TODO: check size of template, and if really XXXXXX is there
+    char* fname = strdup(template);
+    do {
+        strcpy(fname, template);
+        char num[8];
+        sprintf(num, "%06d", rand()%999999);
+        memcpy(fname+strlen(fname)-suffixlen-6, num, 6);
+    } while(!FileExist(fname, -1));
+    int ret = open64(fname, O_EXCL);
+    free(fname);
+    return ret;
+}
+
+EXPORT int32_t my32_ftw(x64emu_t* emu, void* pathname, void* B, int32_t nopenfd)
+{
+    static iFppi_t f = NULL;
+    if(!f) {
+        library_t* lib = my_lib;
+        if(!lib) return 0;
+        f = (iFppi_t)dlsym(lib->priv.w.lib, "ftw");
+    }
+
+    return f(pathname, findftwFct(B), nopenfd);
+}
+
+EXPORT int32_t my32_nftw(x64emu_t* emu, void* pathname, void* B, int32_t nopenfd, int32_t flags)
+{
+    static iFppii_t f = NULL;
+    if(!f) {
+        library_t* lib = my_lib;
+        if(!lib) return 0;
+        f = (iFppii_t)dlsym(lib->priv.w.lib, "nftw");
+    }
+
+    return f(pathname, findnftwFct(B), nopenfd, flags);
+}
+
+EXPORT void* my32_ldiv(x64emu_t* emu, void* p, int32_t num, int32_t den)
+{
+    *((ldiv_t*)p) = ldiv(num, den);
+    return p;
+}
+
+#ifndef NOALIGN
+EXPORT int my32_epoll_create(x64emu_t* emu, int size)
+{
+    return epoll_create(size);
+}
+EXPORT int my32_epoll_create1(x64emu_t* emu, int flags)
+{
+    return epoll_create1(flags);
+}
+EXPORT int32_t my32_epoll_ctl(x64emu_t* emu, int32_t epfd, int32_t op, int32_t fd, void* event)
+{
+    struct epoll_event _event[1] = {0};
+    if(event && (op!=EPOLL_CTL_DEL))
+        AlignEpollEvent(_event, event, 1);
+    return epoll_ctl(epfd, op, fd, event?_event:event);
+}
+EXPORT int32_t my32_epoll_wait(x64emu_t* emu, int32_t epfd, void* events, int32_t maxevents, int32_t timeout)
+{
+    struct epoll_event _events[maxevents];
+    //AlignEpollEvent(_events, events, maxevents);
+    int32_t ret = epoll_wait(epfd, events?_events:NULL, maxevents, timeout);
+    if(ret>0)
+        UnalignEpollEvent(events, _events, ret);
+    return ret;
+}
+#endif
+
+EXPORT int32_t my32_glob(x64emu_t *emu, void* pat, int32_t flags, void* errfnc, void* pglob)
+{
+    static iFpipp_t f = NULL;
+    if(!f) {
+        library_t* lib = my_lib;
+        if(!lib) return 0;
+        f = (iFpipp_t)dlsym(lib->priv.w.lib, "glob");
+    }
+
+    return f(pat, flags, findgloberrFct(errfnc), pglob);
+}
+
+#ifndef ANDROID
+EXPORT int32_t my32_glob64(x64emu_t *emu, void* pat, int32_t flags, void* errfnc, void* pglob)
+{
+    return glob64(pat, flags, findgloberrFct(errfnc), pglob);
+}
+#endif
+
+EXPORT int my32_scandir64(x64emu_t *emu, void* dir, void* namelist, void* sel, void* comp)
+{
+    return scandir64(dir, namelist, findfilter64Fct(sel), findcompare64Fct(comp));
+}
+
+EXPORT int my32_scandir(x64emu_t *emu, void* dir, void* namelist, void* sel, void* comp)
+{
+    static iFpppp_t f = NULL;
+    if(!f) {
+        library_t* lib = my_lib;
+        if(!lib) return 0;
+        f = (iFpppp_t)dlsym(lib->priv.w.lib, "scandir");
+    }
+
+    return f(dir, namelist, findfilter_dirFct(sel), findcompare_dirFct(comp));
+}
+
+EXPORT int my32_ftw64(x64emu_t* emu, void* filename, void* func, int descriptors)
+{
+    return ftw64(filename, findftw64Fct(func), descriptors);
+}
+
+EXPORT int32_t my32_nftw64(x64emu_t* emu, void* pathname, void* B, int32_t nopenfd, int32_t flags)
+{
+    return nftw64(pathname, findnftw64Fct(B), nopenfd, flags);
+}
+
+EXPORT int32_t my32_execv(x64emu_t* emu, const char* path, char* const argv[])
+{
+    int self = isProcSelf(path, "exe");
+    int x86 = FileIsX86ELF(path);
+    int x64 = my_context->box64path?FileIsX64ELF(path):0;
+    printf_log(LOG_DEBUG, "execv(\"%s\", %p) is x86=%d\n", path, argv, x86);
+    if (x86 || x64 || self) {
+        int skip_first = 0;
+        if(strlen(path)>=strlen("wine-preloader") && strcmp(path+strlen(path)-strlen("wine-preloader"), "wine-preloader")==0)
+            skip_first++;
+        // count argv...
+        int n=skip_first;
+        while(argv[n]) ++n;
+        const char** newargv = (const char**)calloc(n+2, sizeof(char*));
+        newargv[0] = x64?emu->context->box64path:emu->context->box64path;
+        memcpy(newargv+1, argv+skip_first, sizeof(char*)*(n+1));
+        if(self) newargv[1] = emu->context->fullpath;
+        printf_log(LOG_DEBUG, " => execv(\"%s\", %p [\"%s\", \"%s\", \"%s\"...:%d])\n", emu->context->box64path, newargv, newargv[0], n?newargv[1]:"", (n>1)?newargv[2]:"",n);
+        int ret = execv(newargv[0], (char* const*)newargv);
+        free(newargv);
+        return ret;
+    }
+    return execv(path, argv);
+}
+#endif
+EXPORT int32_t my32_execve(x64emu_t* emu, const char* path, char* const argv[], char* const envp[])
+{
+    int self = isProcSelf(path, "exe");
+    int x86 = FileIsX86ELF(path);
+    int x64 = my_context->box64path?FileIsX64ELF(path):0;
+    // hack to update the environ var if needed
+    if(envp == my_context->envv && environ) {
+        envp = environ;
+    }
+    printf_log(LOG_DEBUG, "execve(\"%s\", %p, %p) is x86=%d\n", path, argv, envp, x86);
+    if (x86 || x64 || self) {
+        int skip_first = 0;
+        if(strlen(path)>=strlen("wine-preloader") && strcmp(path+strlen(path)-strlen("wine-preloader"), "wine-preloader")==0)
+            skip_first++;
+        // count argv...
+        int n=skip_first;
+        while(argv[n]) ++n;
+        const char** newargv = (const char**)calloc(n+2, sizeof(char*));
+        newargv[0] = x64?emu->context->box64path:emu->context->box64path;
+        memcpy(newargv+1, argv+skip_first, sizeof(char*)*(n+1));
+        if(self) newargv[1] = emu->context->fullpath;
+        printf_log(LOG_DEBUG, " => execve(\"%s\", %p [\"%s\", \"%s\", \"%s\"...:%d])\n", emu->context->box64path, newargv, newargv[0], n?newargv[1]:"", (n>1)?newargv[2]:"",n);
+        int ret = execve(newargv[0], (char* const*)newargv, envp);
+        free(newargv);
+        return ret;
+    }
+    if(!strcmp(path + strlen(path) - strlen("/uname"), "/uname")
+     && argv[1] && (!strcmp(argv[1], "-m") || !strcmp(argv[1], "-p") || !strcmp(argv[1], "-i"))
+     && !argv[2]) {
+        // uname -m is redirected to box32 -m
+        path = my_context->box64path;
+        char *argv2[3] = { my_context->box64path, argv[1], NULL };
+        return execve(path, argv2, envp);
+    }
+
+    return execve(path, argv, envp);
+}
+#if 0
+// execvp should use PATH to search for the program first
+EXPORT int32_t my32_execvp(x64emu_t* emu, const char* path, char* const argv[])
+{
+    // need to use BOX32_PATH / PATH here...
+    char* fullpath = ResolveFile(path, &my_context->box32_path);
+    // use fullpath...
+    int self = isProcSelf(fullpath, "exe");
+    int x86 = FileIsX86ELF(fullpath);
+    int x64 = my_context->box64path?FileIsX64ELF(path):0;
+    printf_log(LOG_DEBUG, "execvp(\"%s\", %p), IsX86=%d / fullpath=\"%s\"\n", path, argv, x86, fullpath);
+    free(fullpath);
+    if (x86 || self) {
+        // count argv...
+        int i=0;
+        while(argv[i]) ++i;
+        char** newargv = (char**)calloc(i+2, sizeof(char*));
+        newargv[0] = x64?emu->context->box64path:emu->context->box64path;
+        for (int j=0; j<i; ++j)
+            newargv[j+1] = argv[j];
+        if(self) newargv[1] = emu->context->fullpath;
+        printf_log(LOG_DEBUG, " => execvp(\"%s\", %p [\"%s\", \"%s\"...:%d])\n", newargv[0], newargv, newargv[1], i?newargv[2]:"", i);
+        int ret = execvp(newargv[0], newargv);
+        free(newargv);
+        return ret;
+    }
+    if((!strcmp(path + strlen(path) - strlen("/uname"), "/uname") || !strcmp(path, "uname"))
+     && argv[1] && (!strcmp(argv[1], "-m") || !strcmp(argv[1], "-p") || !strcmp(argv[1], "-i"))
+     && !argv[2]) {
+        // uname -m is redirected to box32 -m
+        path = my_context->box64path;
+        char *argv2[3] = { my_context->box64path, argv[1], NULL };
+        return execvp(path, argv2);
+    }
+
+    // fullpath is gone, so the search will only be on PATH, not on BOX32_PATH (is that an issue?)
+    return execvp(path, argv);
+}
+
+// execvp should use PATH to search for the program first
+EXPORT int32_t my32_posix_spawnp(x64emu_t* emu, pid_t* pid, const char* path, 
+    const posix_spawn_file_actions_t *actions, const posix_spawnattr_t* attrp,  char* const argv[], char* const envp[])
+{
+    // need to use BOX32_PATH / PATH here...
+    char* fullpath = ResolveFile(path, &my_context->box32_path);
+    // use fullpath...
+    int self = isProcSelf(fullpath, "exe");
+    int x86 = FileIsX86ELF(fullpath);
+    int x64 = my_context->box64path?FileIsX64ELF(path):0;
+    printf_log(LOG_DEBUG, "posix_spawnp(%p, \"%s\", %p, %p, %p, %p), IsX86=%d / fullpath=\"%s\"\n", pid, path, actions, attrp, argv, envp, x86, fullpath);
+    free(fullpath);
+    if ((x86 || self)) {
+        // count argv...
+        int i=0;
+        while(argv[i]) ++i;
+        char** newargv = (char**)calloc(i+2, sizeof(char*));
+        newargv[0] = x64?emu->context->box64path:emu->context->box64path;
+        for (int j=0; j<i; ++j)
+            newargv[j+1] = argv[j];
+        if(self) newargv[1] = emu->context->fullpath;
+        printf_log(LOG_DEBUG, " => posix_spawnp(%p, \"%s\", %p, %p, %p [\"%s\", \"%s\"...:%d], %p)\n", pid, newargv[0], actions, attrp, newargv, newargv[1], i?newargv[2]:"", i, envp);
+        int ret = posix_spawnp(pid, newargv[0], actions, attrp, newargv, envp);
+        printf_log(LOG_DEBUG, "posix_spawnp returned %d\n", ret);
+        //free(newargv);
+        return ret;
+    }
+    // fullpath is gone, so the search will only be on PATH, not on BOX32_PATH (is that an issue?)
+    return posix_spawnp(pid, path, actions, attrp, argv, envp);
+}
+#endif
+EXPORT void my32__Jv_RegisterClasses() {}
+
+EXPORT int32_t my32___cxa_thread_atexit_impl(x64emu_t* emu, void* dtor, void* obj, void* dso)
+{
+    printf_log(LOG_INFO, "Warning, call to __cxa_thread_atexit_impl(%p, %p, %p) ignored\n", dtor, obj, dso);
+    return 0;
+}
+#if 0
+#ifndef ANDROID
+extern void __chk_fail();
+EXPORT unsigned long int my32___fdelt_chk (unsigned long int d)
+{
+  if (d >= FD_SETSIZE)
+    __chk_fail ();
+
+  return d / __NFDBITS;
+}
+#endif
+
+EXPORT int32_t my32_getrandom(x64emu_t* emu, void* buf, uint32_t buflen, uint32_t flags)
+{
+    // not always implemented on old linux version...
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "getrandom");
+    if(f)
+        return ((iFpuu_t)f)(buf, buflen, flags);
+    // do what should not be done, but it's better then nothing....
+    FILE * rnd = fopen("/dev/urandom", "rb");
+    uint32_t r = fread(buf, 1, buflen, rnd);
+    fclose(rnd);
+    return r;
+}
+
+static struct passwd fakepwd = {};
+EXPORT void* my32_getpwuid(x64emu_t* emu, uint32_t uid)
+{
+    void *ret = NULL;
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "getpwuid");
+    if(f)
+        ret = ((pFu_t)f)(uid);
+    
+    // In case of failure, provide a fake one. Evil hack :/
+    if (!ret && !fakepwd.pw_name) {
+        fakepwd.pw_name = strdup("root");
+        fakepwd.pw_passwd = strdup("fakehash");
+        fakepwd.pw_uid = 0;
+        fakepwd.pw_gid = 0;
+        fakepwd.pw_gecos = strdup("root");
+        fakepwd.pw_dir = getenv("HOME");
+        fakepwd.pw_shell = strdup("/bin/bash");
+    }
+
+    return ret ? ret : (void*)&fakepwd;
+}
+
+EXPORT int32_t my32_recvmmsg(x64emu_t* emu, int32_t fd, void* msgvec, uint32_t vlen, uint32_t flags, void* timeout)
+{
+    // Implemented starting glibc 2.12+
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "recvmmsg");
+    if(f)
+        return ((iFipuup_t)f)(fd, msgvec, vlen, flags, timeout);
+    // Use the syscall
+    return syscall(__NR_recvmmsg, fd, msgvec, vlen, flags, timeout);
+}
+
+EXPORT int32_t my32___sendmmsg(x64emu_t* emu, int32_t fd, void* msgvec, uint32_t vlen, uint32_t flags)
+{
+    // Implemented starting glibc 2.14+
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "__sendmmsg");
+    if(f)
+        return ((iFipuu_t)f)(fd, msgvec, vlen, flags);
+    // Use the syscall
+    return syscall(__NR_sendmmsg, fd, msgvec, vlen, flags);
+}
+
+EXPORT int32_t my32___register_atfork(x64emu_t *emu, void* prepare, void* parent, void* child, void* handle)
+{
+    // this is partly incorrect, because the emulated funcionts should be executed by actual fork and not by my32_atfork...
+    if(my_context->atfork_sz==my_context->atfork_cap) {
+        my_context->atfork_cap += 4;
+        my_context->atforks = (atfork_fnc_t*)realloc(my_context->atforks, my_context->atfork_cap*sizeof(atfork_fnc_t));
+    }
+    my_context->atforks[my_context->atfork_sz].prepare = (uintptr_t)prepare;
+    my_context->atforks[my_context->atfork_sz].parent = (uintptr_t)parent;
+    my_context->atforks[my_context->atfork_sz].child = (uintptr_t)child;
+    my_context->atforks[my_context->atfork_sz].handle = handle;
+    return 0;
+}
+
+EXPORT uint64_t my32___umoddi3(uint64_t a, uint64_t b)
+{
+    return a%b;
+}
+EXPORT uint64_t my32___udivdi3(uint64_t a, uint64_t b)
+{
+    return a/b;
+}
+EXPORT int64_t my32___divdi3(int64_t a, int64_t b)
+{
+    return a/b;
+}
+
+EXPORT int32_t my32___poll_chk(void* a, uint32_t b, int c, int l)
+{
+    return poll(a, b, c);   // no check...
+}
+
+EXPORT int32_t my32_fcntl64(x64emu_t* emu, int32_t a, int32_t b, uint32_t d1, uint32_t d2, uint32_t d3, uint32_t d4, uint32_t d5, uint32_t d6)
+{
+    // Implemented starting glibc 2.14+
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    iFiiV_t f = dlsym(lib->priv.w.lib, "fcntl64");
+    if(b==F_SETFL)
+        d1 = of_convert32(d1);
+    if(b==F_GETLK64 || b==F_SETLK64 || b==F_SETLKW64)
+    {
+        my32_flock64_t fl;
+        AlignFlock64(&fl, (void*)d1);
+        int ret = f?f(a, b, &fl):fcntl(a, b, &fl);
+        UnalignFlock64((void*)d1, &fl);
+        return ret;
+    }
+    //TODO: check if better to use the syscall or regular fcntl?
+    //return syscall(__NR_fcntl64, a, b, d1);   // should be enough
+    int ret = f?f(a, b, d1):fcntl(a, b, d1);
+
+    if(b==F_GETFL && ret!=-1)
+        ret = of_unconvert32(ret);
+
+    return ret;
+}
+
+EXPORT int32_t my32_fcntl(x64emu_t* emu, int32_t a, int32_t b, uint32_t d1, uint32_t d2, uint32_t d3, uint32_t d4, uint32_t d5, uint32_t d6)
+{
+    if(b==F_SETFL && d1==0xFFFFF7FF) {
+        // special case for ~O_NONBLOCK...
+        int flags = fcntl(a, F_GETFL);
+        if(flags&X86_O_NONBLOCK) {
+            flags &= ~O_NONBLOCK;
+            return fcntl(a, b, flags);
+        }
+        return 0;
+    }
+    if(b==F_SETFL)
+        d1 = of_convert32(d1);
+    if(b==F_GETLK64 || b==F_SETLK64 || b==F_SETLKW64)
+    {
+        my32_flock64_t fl;
+        AlignFlock64(&fl, (void*)d1);
+        int ret = fcntl(a, b, &fl);
+        UnalignFlock64((void*)d1, &fl);
+        return ret;
+    }
+    int ret = fcntl(a, b, d1);
+    if(b==F_GETFL && ret!=-1)
+        ret = of_unconvert32(ret);
+    
+    return ret;    
+}
+EXPORT int32_t my32___fcntl(x64emu_t* emu, int32_t a, int32_t b, uint32_t d1, uint32_t d2, uint32_t d3, uint32_t d4, uint32_t d5, uint32_t d6) __attribute__((alias("my32_fcntl")));
+
+EXPORT int32_t my32_preadv64(x64emu_t* emu, int32_t fd, void* v, int32_t c, int64_t o)
+{
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "preadv64");
+    if(f)
+        return ((iFipiI_t)f)(fd, v, c, o);
+    return syscall(__NR_preadv, fd, v, c,(uint32_t)(o&0xffffffff), (uint32_t)((o>>32)&0xffffffff));
+}
+
+EXPORT int32_t my32_pwritev64(x64emu_t* emu, int32_t fd, void* v, int32_t c, int64_t o)
+{
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "pwritev64");
+    if(f)
+        return ((iFipiI_t)f)(fd, v, c, o);
+    #ifdef __arm__
+    return syscall(__NR_pwritev, fd, v, c, 0, (uint32_t)(o&0xffffffff), (uint32_t)((o>>32)&0xffffffff));
+    // on arm, 64bits args needs to be on even/odd register, so need to put a 0 for aligment
+    #else
+    return syscall(__NR_pwritev, fd, v, c,(uint32_t)(o&0xffffffff), (uint32_t)((o>>32)&0xffffffff));
+    #endif
+}
+
+EXPORT int32_t my32_accept4(x64emu_t* emu, int32_t fd, void* a, void* l, int32_t flags)
+{
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "accept4");
+    if(f)
+        return ((iFippi_t)f)(fd, a, l, flags);
+    if(!flags)
+        return accept(fd, a, l);
+    return syscall(__NR_accept4, fd, a, l, flags);
+}
+
+EXPORT  int32_t my32_fallocate64(int fd, int mode, int64_t offs, int64_t len)
+{
+    iFiiII_t f = NULL;
+    static int done = 0;
+    if(!done) {
+        library_t* lib = my_lib;
+        f = (iFiiII_t)dlsym(lib->priv.w.lib, "fallocate64");
+        done = 1;
+    }
+    if(f)
+        return f(fd, mode, offs, len);
+    else
+        return syscall(__NR_fallocate, fd, mode, (uint32_t)(offs&0xffffffff), (uint32_t)((offs>>32)&0xffffffff), (uint32_t)(len&0xffffffff), (uint32_t)((len>>32)&0xffffffff));
+        //return posix_fallocate64(fd, offs, len);
+}
+
+EXPORT int my32_getopt(int argc, char* const argv[], const char *optstring)
+{
+    int ret = getopt(argc, argv, optstring);
+    my32_checkGlobalOpt();
+    return ret;
+}
+
+EXPORT int my32_getopt_long(int argc, char* const argv[], const char* optstring, const struct option *longopts, int *longindex)
+{
+    int ret = getopt_long(argc, argv, optstring, longopts, longindex);
+    my32_checkGlobalOpt();
+    return ret;
+}
+
+EXPORT int my32_getopt_long_only(int argc, char* const argv[], const char* optstring, const struct option *longopts, int *longindex)
+{
+    int ret = getopt_long_only(argc, argv, optstring, longopts, longindex);
+    my32_checkGlobalOpt();
+    return ret;
+}
+#endif
+
+EXPORT struct __processor_model
+{
+  unsigned int __cpu_vendor;
+  unsigned int __cpu_type;
+  unsigned int __cpu_subtype;
+  unsigned int __cpu_features[1];
+} my32___cpu_model;
+
+#include "cpu_info.h"
+void InitCpuModel()
+{
+    // some pseudo random cpu info...
+    my32___cpu_model.__cpu_vendor = VENDOR_INTEL;
+    my32___cpu_model.__cpu_type = INTEL_PENTIUM_M;
+    my32___cpu_model.__cpu_subtype = 0; // N/A
+    my32___cpu_model.__cpu_features[0] = (1<<FEATURE_CMOV) 
+                                     | (1<<FEATURE_MMX) 
+                                     | (1<<FEATURE_SSE) 
+                                     | (1<<FEATURE_SSE2) 
+                                     | (1<<FEATURE_SSE3)
+                                     | (1<<FEATURE_SSSE3)
+                                     | (1<<FEATURE_MOVBE)
+                                     | (1<<FEATURE_ADX);
+}
+
+EXPORT const unsigned short int *my32___ctype_b;
+EXPORT const int32_t *my32___ctype_tolower;
+EXPORT const int32_t *my32___ctype_toupper;
+
+#ifdef ANDROID
+static void ctSetup()
+{
+}
+#else
+static void ctSetup()
+{
+    my32___ctype_b = *(__ctype_b_loc());
+    my32___ctype_toupper = *(__ctype_toupper_loc());
+    my32___ctype_tolower = *(__ctype_tolower_loc());
+}
+#endif
+
+#if 0
+EXPORT void my32___register_frame_info(void* a, void* b)
+{
+    // nothing
+}
+EXPORT void* my32___deregister_frame_info(void* a)
+{
+    return NULL;
+}
+
+EXPORT void* my32____brk_addr = NULL;
+#endif
+// longjmp / setjmp
+typedef struct jump_buff_i386_s {
+ uint32_t save_ebx;
+ uint32_t save_esi;
+ uint32_t save_edi;
+ uint32_t save_ebp;
+ uint32_t save_esp;
+ uint32_t save_eip;
+} jump_buff_i386_t;
+
+typedef struct __jmp_buf_tag_s {
+    jump_buff_i386_t __jmpbuf;
+    int              __mask_was_saved;
+    sigset_t         __saved_mask;
+} __jmp_buf_tag_t;
+
+void EXPORT my32_longjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int32_t __val)
+{
+    jump_buff_i386_t *jpbuff = &((__jmp_buf_tag_t*)p)->__jmpbuf;
+    //restore  regs
+    R_EBX = jpbuff->save_ebx;
+    R_ESI = jpbuff->save_esi;
+    R_EDI = jpbuff->save_edi;
+    R_EBP = jpbuff->save_ebp;
+    R_ESP = jpbuff->save_esp;
+    // jmp to saved location, plus restore val to eax
+    R_EAX = __val;
+    R_EIP = jpbuff->save_eip;
+    if(((__jmp_buf_tag_t*)p)->__mask_was_saved) {
+        sigprocmask(SIG_SETMASK, &((__jmp_buf_tag_t*)p)->__saved_mask, NULL);
+    }
+    if(emu->flags.quitonlongjmp) {
+        emu->flags.longjmp = 1;
+        emu->quit = 1;
+    }
+}
+
+EXPORT int32_t my32___sigsetjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p, int savesigs)
+{
+    jump_buff_i386_t *jpbuff = &((__jmp_buf_tag_t*)p)->__jmpbuf;
+    // save the buffer
+    jpbuff->save_ebx = R_EBX;
+    jpbuff->save_esi = R_ESI;
+    jpbuff->save_edi = R_EDI;
+    jpbuff->save_ebp = R_EBP;
+    jpbuff->save_esp = R_ESP+4; // include "return address"
+    jpbuff->save_eip = *(uint32_t*)from_ptr(R_ESP);
+    if(savesigs) {
+        if(sigprocmask(SIG_SETMASK, NULL, &((__jmp_buf_tag_t*)p)->__saved_mask))
+            ((__jmp_buf_tag_t*)p)->__mask_was_saved = 0;
+        else
+            ((__jmp_buf_tag_t*)p)->__mask_was_saved = 1;
+    } else
+        ((__jmp_buf_tag_t*)p)->__mask_was_saved = 0;
+    return 0;
+}
+
+EXPORT int32_t my32__setjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p)
+{
+    return  my32___sigsetjmp(emu, p, 0);
+}
+EXPORT int32_t my32_setjmp(x64emu_t* emu, /*struct __jmp_buf_tag __env[1]*/void *p)
+{
+    return  my32___sigsetjmp(emu, p, 1);
+}
+#if 0
+EXPORT void my32___explicit_bzero_chk(x64emu_t* emu, void* dst, uint32_t len, uint32_t dstlen)
+{
+    memset(dst, 0, len);
+}
+
+EXPORT void* my32_realpath(x64emu_t* emu, void* path, void* resolved_path)
+{
+
+    if(isProcSelf(path, "exe")) {
+        return realpath(emu->context->fullpath, resolved_path);
+    }
+        return realpath(path, resolved_path);
+}
+
+EXPORT int my32_readlinkat(x64emu_t* emu, int fd, void* path, void* buf, size_t bufsize)
+{
+    if(isProcSelf(path, "exe")) {
+        strncpy(buf, emu->context->fullpath, bufsize);
+        size_t l = strlen(emu->context->fullpath);
+        return (l>bufsize)?bufsize:(l+1);
+    }
+    return readlinkat(fd, path, buf, bufsize);
+}
+
+#endif
+EXPORT void* my32_mmap(x64emu_t* emu, void *addr, size_t length, int prot, int flags, int fd, int offset)
+{
+    if(prot&PROT_WRITE) 
+        prot|=PROT_READ;    // PROT_READ is implicit with PROT_WRITE on i386
+    #ifdef __x86_64__
+    flags |= MAP_32BIT;
+    #endif
+    if(box64_log<LOG_DEBUG) {dynarec_log(LOG_DEBUG, "mmap(%p, %zu, 0x%x, 0x%x, %d, %d) =>", addr, length, prot, flags, fd, offset);}
+    void* new_addr = addr?addr:find32bitBlock(length);
+    void* ret = mmap(new_addr, length, prot, flags, fd, offset);
+    if(!addr && ret!=new_addr && ret!=(void*)-1) {
+        munmap(ret, length);
+        loadProtectionFromMap();    // reload map, because something went wrong previously
+        new_addr = find31bitBlockNearHint(addr, length, 0); // is this the best way?
+        ret = mmap(new_addr, length, prot, flags, fd, offset);
+    }
+    if(box64_log<LOG_DEBUG) {dynarec_log(LOG_DEBUG, "%p\n", ret);}
+    #ifdef DYNAREC
+    if(box64_dynarec && ret!=(void*)-1) {
+        if(flags&0x100000 && addr!=ret)
+        {
+            // program used MAP_FIXED_NOREPLACE but the host linux didn't support it
+            // and responded with a different address, so ignore it
+        } else {
+            if(prot& PROT_EXEC)
+                addDBFromAddressRange((uintptr_t)ret, length);
+            else
+                cleanDBFromAddressRange((uintptr_t)ret, length, prot?0:1);
+        }
+    } 
+    #endif
+    if(ret!=(void*)-1)
+        setProtection((uintptr_t)ret, length, prot);
+    return ret;
+}
+
+EXPORT void* my32_mmap64(x64emu_t* emu, void *addr, size_t length, int prot, int flags, int fd, int64_t offset)
+{
+    if(prot&PROT_WRITE) 
+        prot|=PROT_READ;    // PROT_READ is implicit with PROT_WRITE on i386
+    if(box64_log<LOG_DEBUG) {dynarec_log(LOG_DEBUG, "mmap64(%p, %zu, 0x%x, 0x%x, %d, %ld) =>", addr, length, prot, flags, fd, offset);}
+    void* new_addr = (flags&MAP_FIXED)?addr:find31bitBlockNearHint(addr, length, 0);
+    void* ret = mmap64(new_addr, length, prot, flags, fd, offset);
+    if(!addr && ret!=new_addr && ret!=(void*)-1) {
+        munmap(ret, length);
+        loadProtectionFromMap();    // reload map, because something went wrong previously
+        new_addr = find31bitBlockNearHint(addr, length, 0);
+        ret = mmap64(new_addr, length, prot, flags, fd, offset);
+    } else if(addr && ret!=(void*)-1 && ret!=new_addr && 
+      ((uintptr_t)ret&0xffff) && !(flags&MAP_FIXED) && box64_wine) {
+        munmap(ret, length);
+        loadProtectionFromMap();    // reload map, because something went wrong previously
+        new_addr = find31bitBlockNearHint(addr, length, 0);
+        ret = mmap64(new_addr, length, prot, flags, fd, offset);
+        if(ret!=(void*)-1 && ret!=addr && ((uintptr_t)ret&0xffff) && box64_wine) {
+            // addr is probably too high, start again with a low address
+            munmap(ret, length);
+            loadProtectionFromMap();    // reload map, because something went wrong previously
+            new_addr = find31bitBlockNearHint(NULL, length, 0); // is this the best way?
+            ret = mmap64(new_addr, length, prot, flags, fd, offset);
+            if(ret!=(void*)-1 && (uintptr_t)ret&0xffff) {
+                munmap(ret, length);
+                ret = (void*)-1;
+            }
+        }
+    }
+    if(box64_log<LOG_DEBUG) {dynarec_log(LOG_DEBUG, "%p\n", ret);}
+    #ifdef DYNAREC
+    if(box64_dynarec && ret!=(void*)-1) {
+        if(flags&0x100000 && addr!=ret)
+        {
+            // program used MAP_FIXED_NOREPLACE but the host linux didn't support it
+            // and responded with a different address, so ignore it
+        } else {
+            if(prot& PROT_EXEC)
+                addDBFromAddressRange((uintptr_t)ret, length);
+            else
+                cleanDBFromAddressRange((uintptr_t)ret, length, prot?0:1);
+        }
+    }
+    #endif
+    if(ret!=(void*)-1)
+        setProtection((uintptr_t)ret, length, prot);
+    return ret;
+}
+
+EXPORT void* my32_mremap(x64emu_t* emu, void* old_addr, size_t old_size, size_t new_size, int flags, void* new_addr)
+{
+    dynarec_log(/*LOG_DEBUG*/LOG_NONE, "mremap(%p, %zu, %zu, %d, %p)=>", old_addr, old_size, new_size, flags, new_addr);
+    void* ret = mremap(old_addr, old_size, new_size, flags, new_addr);
+    dynarec_log(/*LOG_DEBUG*/LOG_NONE, "%p\n", ret);
+    if(ret==(void*)-1)
+        return ret; // failed...
+    uint32_t prot = getProtection((uintptr_t)old_addr)&~PROT_CUSTOM;
+    if(ret==old_addr) {
+        if(old_size && old_size<new_size) {
+            setProtection((uintptr_t)ret+old_size, new_size-old_size, prot);
+            #ifdef DYNAREC
+            if(box64_dynarec)
+                addDBFromAddressRange((uintptr_t)ret+old_size, new_size-old_size);
+            #endif
+        } else if(old_size && new_size<old_size) {
+            freeProtection((uintptr_t)ret+new_size, old_size-new_size);
+            #ifdef DYNAREC
+            if(box64_dynarec)
+                cleanDBFromAddressRange((uintptr_t)ret+new_size, new_size-old_size, 1);
+            #endif
+        } else if(!old_size) {
+            setProtection((uintptr_t)ret, new_size, prot);
+            #ifdef DYNAREC
+            if(box64_dynarec)
+                addDBFromAddressRange((uintptr_t)ret, new_size);
+            #endif
+        }
+    } else {
+        if(old_size
+        #ifdef MREMAP_DONTUNMAP
+        && !(flags&MREMAP_DONTUNMAP)
+        #endif
+        ) {
+            freeProtection((uintptr_t)old_addr, old_size);
+            #ifdef DYNAREC
+            if(box64_dynarec)
+                cleanDBFromAddressRange((uintptr_t)old_addr, old_size, 1);
+            #endif
+        }
+        setProtection((uintptr_t)ret, new_size, prot); // should copy the protection from old block
+        #ifdef DYNAREC
+        if(box64_dynarec)
+            addDBFromAddressRange((uintptr_t)ret, new_size);
+        #endif
+    }
+    return ret;
+}
+
+EXPORT int my32_munmap(x64emu_t* emu, void* addr, unsigned long length)
+{
+    dynarec_log(LOG_DEBUG, "munmap(%p, %lu)\n", addr, length);
+    #ifdef DYNAREC
+    if(box64_dynarec) {
+        cleanDBFromAddressRange((uintptr_t)addr, length, 1);
+    }
+    #endif
+    int ret = munmap(addr, length);
+    if(!ret)
+        freeProtection((uintptr_t)addr, length);
+    return ret;
+}
+
+EXPORT int my32_mprotect(x64emu_t* emu, void *addr, unsigned long len, int prot)
+{
+    dynarec_log(LOG_DEBUG, "mprotect(%p, %lu, 0x%x)\n", addr, len, prot);
+    if(prot&PROT_WRITE) 
+        prot|=PROT_READ;    // PROT_READ is implicit with PROT_WRITE on i386
+    int ret = mprotect(addr, len, prot);
+    #ifdef DYNAREC
+    if(box64_dynarec) {
+        if(prot& PROT_EXEC)
+            addDBFromAddressRange((uintptr_t)addr, len);
+        else
+            cleanDBFromAddressRange((uintptr_t)addr, len, 0);
+    }
+    #endif
+    if(!ret)
+        updateProtection((uintptr_t)addr, len, prot);
+    return ret;
+}
+#if 0
+#ifndef ANDROID
+typedef struct my32_cookie_s {
+    uintptr_t r, w, s, c;
+    void* cookie;
+} my32_cookie_t;
+
+static ssize_t my32_cookie_read(void *p, char *buf, size_t size)
+{
+    my32_cookie_t* cookie = (my32_cookie_t*)p;
+    return (ssize_t)RunFunction(my_context, cookie->r, 3, cookie->cookie, buf, size);
+}
+static ssize_t my32_cookie_write(void *p, const char *buf, size_t size)
+{
+    my32_cookie_t* cookie = (my32_cookie_t*)p;
+    return (ssize_t)RunFunction(my_context, cookie->w, 3, cookie->cookie, buf, size);
+}
+static int my32_cookie_seek(void *p, off64_t *offset, int whence)
+{
+    my32_cookie_t* cookie = (my32_cookie_t*)p;
+    return RunFunction(my_context, cookie->s, 3, cookie->cookie, offset, whence);
+}
+static int my32_cookie_close(void *p)
+{
+    my32_cookie_t* cookie = (my32_cookie_t*)p;
+    int ret = 0;
+    if(cookie->c)
+        ret = RunFunction(my_context, cookie->c, 1, cookie->cookie);
+    free(cookie);
+    return ret;
+}
+EXPORT void* my32_fopencookie(x64emu_t* emu, void* cookie, void* mode, void* read, void* write, void* seek, void* close)
+{
+    cookie_io_functions_t io_funcs = {read?my32_cookie_read:NULL, write?my32_cookie_write:NULL, seek?my32_cookie_seek:NULL, my32_cookie_close};
+    my32_cookie_t *cb = (my32_cookie_t*)calloc(1, sizeof(my32_cookie_t));
+    cb->r = (uintptr_t)read;
+    cb->w = (uintptr_t)write;
+    cb->s = (uintptr_t)seek;
+    cb->c = (uintptr_t)close;
+    cb->cookie = cookie;
+    return fopencookie(cb, mode, io_funcs);
+}
+#endif
+
+EXPORT long my32_prlimit64(void* pid, uint32_t res, void* new_rlim, void* old_rlim)
+{
+    return syscall(__NR_prlimit64, pid, res, new_rlim, old_rlim);
+}
+
+EXPORT void* my32_reallocarray(void* ptr, size_t nmemb, size_t size)
+{
+    return realloc(ptr, nmemb*size);
+}
+
+#ifndef __OPEN_NEEDS_MODE
+# define __OPEN_NEEDS_MODE(oflag) \
+  (((oflag) & O_CREAT) != 0)
+// || ((oflag) & __O_TMPFILE) == __O_TMPFILE)
+#endif
+EXPORT int my32___open_nocancel(x64emu_t* emu, void* file, int oflag, int* b)
+{
+    int mode = 0;
+    if (__OPEN_NEEDS_MODE (oflag))
+        mode = b[0];
+    return openat(AT_FDCWD, file, oflag, mode);
+}
+
+EXPORT int my32___libc_alloca_cutoff(x64emu_t* emu, size_t size)
+{
+    // not always implemented on old linux version...
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "__libc_alloca_cutoff");
+    if(f)
+        return ((iFL_t)f)(size);
+    // approximate version but it's better than nothing....
+    return (size<=(65536*4));
+}
+
+// DL functions from wrappedlibdl.c
+void* my32_dlopen(x64emu_t* emu, void *filename, int flag);
+int my32_dlclose(x64emu_t* emu, void *handle);
+void* my32_dlsym(x64emu_t* emu, void *handle, void *symbol);
+EXPORT int my32___libc_dlclose(x64emu_t* emu, void* handle)
+{
+    return my32_dlclose(emu, handle);
+}
+EXPORT void* my32___libc_dlopen_mode(x64emu_t* emu, void* name, int mode)
+{
+    return my32_dlopen(emu, name, mode);
+}
+EXPORT void* my32___libc_dlsym(x64emu_t* emu, void* handle, void* name)
+{
+    return my32_dlsym(emu, handle, name);
+}
+#endif
+// all obstack function defined in obstack.c file
+void obstackSetup();
+#if 0
+EXPORT int my32_nanosleep(const struct timespec *req, struct timespec *rem)
+{
+    if(!req)
+        return 0;   // workaround for some strange calls
+    return nanosleep(req, rem);
+}
+#endif
+// wrapped malloc using calloc, it seems x86 malloc set alloc'd block to zero somehow
+EXPORT void* my32_malloc(unsigned long size)
+{
+    return calloc(1, size);
+}
+#if 0
+#ifndef __NR_memfd_create
+#define MFD_CLOEXEC		    0x0001U
+#define MFD_ALLOW_SEALING	0x0002U
+EXPORT int my32_memfd_create(x64emu_t* emu, void* name, uint32_t flags)
+{
+    // try to simulate that function
+    uint32_t fl = O_RDWR | O_CREAT;
+    if(flags&MFD_CLOEXEC)
+        fl |= O_CLOEXEC;
+    int tmp = shm_open(name, fl, S_IRWXU);
+    if(tmp<0) return -1;
+    shm_unlink(name);    // remove the shm file, but it will still exist because it's currently in use
+    return tmp;
+}
+#endif
+
+#ifndef GRND_RANDOM
+#define GRND_RANDOM	0x0002
+#endif
+EXPORT int my32_getentropy(x64emu_t* emu, void* buffer, size_t length)
+{
+    library_t* lib = my_lib;
+    if(!lib) return 0;
+    void* f = dlsym(lib->priv.w.lib, "getentropy");
+    if(f)
+        return ((iFpL_t)f)(buffer, length);
+    // custom implementation
+    if(length>256) {
+        errno = EIO;
+        return -1;
+    }
+    int ret = my32_getrandom(emu, buffer, length, GRND_RANDOM);
+    if(ret!=length) {
+        errno = EIO;
+        return -1;
+    }
+    return 0;
+}
+
+EXPORT void my32_mcount(void* frompc, void* selfpc)
+{
+    // stub doing nothing...
+    return;
+}
+
+#ifndef ANDROID
+union semun {
+  int              val;    /* Value for SETVAL */
+  struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
+  unsigned short  *array;  /* Array for GETALL, SETALL */
+  struct seminfo  *__buf;  /* Buffer for IPC_INFO
+                              (Linux-specific) */
+};
+#endif
+
+EXPORT int my32_semctl(x64emu_t* emu, int semid, int semnum, int cmd, union semun b)
+{
+  iFiiiV_t f = semctl;
+  return  ((iFiiiV_t)f)(semid, semnum, cmd, b);
+}
+
+#ifndef ANDROID
+EXPORT int my32_on_exit(x64emu_t* emu, void* f, void* args)
+{
+    return on_exit(findon_exitFct(f), args);
+}
+#endif
+#endif
+
+EXPORT long my32_strtol(void* nptr, ptr_t* endptr, int base)
+{
+    void* endp;
+    long ret = strtol(nptr, (char**)(endptr?(&endp):NULL), base);
+    if(endptr)
+        *endptr = to_ptrv(endp);
+    return ret;
+}
+
+EXPORT char** my32_environ = NULL;
+EXPORT char** my32__environ = NULL;
+EXPORT char** my32___environ = NULL;  // all aliases
+
+EXPORT char* my32___progname = NULL;
+EXPORT char* my32___progname_full = NULL;
+EXPORT char* my32_program_invocation_name = NULL;
+EXPORT char* my32_program_invocation_short_name = NULL;
+
+EXPORT ptr_t my32_stdin = 0;
+EXPORT ptr_t my32_stdout = 0;
+EXPORT ptr_t my32_stderr = 0;
+
+EXPORT int my32___libc_single_threaded = 0;
+
+#define PRE_INIT\
+    if(1)                                                           \
+        my_lib = lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);\
+    else
+
+#ifdef ANDROID
+//#define NEEDED_LIBS  \
+//        "libm.so", "libdl.so"
+#else
+#define NEEDED_LIBS         \
+    "ld-linux.so.2", "libpthread.so.0", "librt.so.1", "libdl.so.2"
+#endif
+
+#define CUSTOM_INIT         \
+    box64->libclib = lib;   \
+    my_lib = lib;           \
+    InitCpuModel();         \
+    ctSetup();              \
+    /*obstackSetup();*/     \
+    my32_environ = my32__environ = my32___environ = box64->envv;            \
+    my32___progname_full = my32_program_invocation_name = box64->argv[0];   \
+    my32___progname = my32_program_invocation_short_name =                  \
+        strrchr(box64->argv[0], '/');                                       \
+    my32_stdin = to_hashv(stdin);  \
+    my32_stdout = to_hashv(stdout);\
+    my32_stderr = to_hashv(stderr);
+
+#include "wrappedlib_init32.h"
diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h
new file mode 100755
index 00000000..c43f0f21
--- /dev/null
+++ b/src/wrapped32/wrappedlibc_private.h
@@ -0,0 +1,2178 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA) && defined(GOS))
+#error Meh...
+#endif
+
+// FILE* is h (because stdin/stdout/stderr might be 64bits, maybe other special file can be too)
+// locale_t needs special handling, with to_locale / from_locale (and is a / A)
+
+// a64l
+//GO(abort, vFv)
+//GO(abs, iFi)
+//GOW(accept, iFipp)
+//GOM(accept4, iFEippi)   //%% glibc 2.10+
+//GOW(access, iFpi)
+// acct
+//GOW(addmntent, iFpp)
+// addseverity
+// adjtime  // Weak
+// adjtimex // Weak
+// __adjtimex
+// advance  // Weak
+// __aeabi_assert
+// __aeabi_atexit
+// __aeabi_errno_addr
+// __aeabi_localeconv
+// __aeabi_MB_CUR_MAX
+// __aeabi_memclr
+// __aeabi_memclr4
+// __aeabi_memclr8
+// __aeabi_memcpy
+// __aeabi_memcpy4
+// __aeabi_memcpy8
+// __aeabi_memmove
+// __aeabi_memmove4
+// __aeabi_memmove8
+// __aeabi_memset
+// __aeabi_memset4
+// __aeabi_memset8
+//DATAV(__after_morecore_hook, 4)
+GO(alarm, iFu)
+//GO2(aligned_alloc, pFuu, memalign)
+//GO(alphasort, iFpp)
+//GO(alphasort64, iFpp)
+//DATA(argp_err_exit_status, 4)
+// argp_error   // Weak
+// argp_failure // Weak
+// argp_help    // Weak
+// argp_parse   // Weak
+// argp_program_bug_address // type B
+// argp_program_version // type B
+// argp_program_version_hook    // type B
+// argp_state_help  // Weak
+// argp_usage   // Weak
+// argz_add // Weak
+// argz_add_sep // Weak
+// argz_append  // Weak
+// __argz_count
+// argz_count   // Weak
+// argz_create  // Weak
+//GOW(argz_create_sep, iFpipp)
+// argz_delete
+// argz_extract // Weak
+//GOW(argz_insert, iFpppp)
+// __argz_next
+//GOW(argz_next, pFpLp)
+// argz_replace // Weak
+// __argz_stringify
+//GOW(argz_stringify, vFpLi)
+//GO(asctime, pFp)
+//GOW(asctime_r, pFpp)
+//GOWM(asprintf, iFEppV)        //%%
+//GOM(__asprintf, iFEppV)      //%%
+//GOM(__asprintf_chk, iFEpipV) //%%
+// __assert
+//GO(__assert_fail, vFppup)
+//GO(__assert_perror_fail, vFipup)
+//GO(atof, dFp)
+//GO(atoi, iFp)
+//GO(atol, lFp)
+//GO(atoll, IFp)
+// authdes_create
+// authdes_getucred
+// authdes_pk_create
+// _authenticate
+// authnone_create
+// authunix_create
+// authunix_create_default
+//GOW(backtrace, iFpi)    //TODO: probably a my_backtrace version, that use emulated stack instead
+//GO(__backtrace, iFpi)
+//GO(__backtrace_symbols, pFpi)
+//GOW(backtrace_symbols, pFpi)
+//GO(__backtrace_symbols_fd, vFpii)
+//GOW(backtrace_symbols_fd, vFpii)
+//GO(basename, pFp)
+//GOW(bcmp, iFppL)
+//GO(bcopy, vFppL)
+// bdflush
+//GOW(bind, iFipu)
+// bindresvport
+//GOW(bindtextdomain, pFpp)
+//GOW(bind_textdomain_codeset, pFpp)
+//GOW(brk, iFp)
+// __bsd_getpgrp
+// bsd_signal   // Weak
+//GOM(bsearch, pFEppLLp) //%%
+GOW(btowc, iFi)
+//GOW(bzero, vFpL)
+//GO(__bzero, vFpL)
+GOW(calloc, pFLL)
+// callrpc
+//GOW(canonicalize_file_name, pFp)
+// capget
+// capset
+//GO(catclose, iFp)
+//GO(catgets, pFpiip)
+//GO(catopen, pFpi)
+// cbc_crypt
+//GO(cfgetispeed, uFp)
+//GO(cfgetospeed, uFp)
+//GO(cfmakeraw, vFp)
+//GOW(cfree, vFp)
+//GO(cfsetispeed, iFpu)
+//GO(cfsetospeed, iFpu)
+//GO(cfsetspeed, iFpi)
+//GOW(chdir, iFp)
+//DATA(__check_rhosts_file, 4)
+// chflags
+// __chk_fail
+//GOW(chmod, iFpu)
+GOW(chown, iFpuu)
+//GO(chroot, iFp)
+//GOW(clearenv, iFv)
+//GO(clearerr, vFp)
+//GO(clearerr_unlocked, vFp)
+// clnt_broadcast
+// clnt_create
+// clnt_pcreateerror
+// clnt_perrno
+// clnt_perror
+// clntraw_create
+// clnt_spcreateerror
+// clnt_sperrno
+// clnt_sperror
+// clnttcp_create
+// clntudp_bufcreate
+// clntudp_create
+// clntunix_create
+GO(clock, LFv)
+// clone    // Weak
+// __clone
+GOW(close, iFi)
+// __close  // Weak
+//GOW(closedir, iFp)
+GO(closelog, vFv)
+//GO(__cmsg_nxthdr, pFpp)
+//GO(confstr, uFipu)
+// __confstr_chk
+//GOW(connect, iFipu)
+//GOW(__connect, iFipu)
+// copysign // Weak
+// copysignf    // Weak
+// copysignl    // Weak
+//GOW(creat, iFpu)
+//GO(creat64, iFpu)
+// create_module    // Weak
+//GO(ctermid, pFp)
+//GO(ctime, pFp)
+//GO(ctime_r, pFpp)
+//DATAM(__ctype_b, 4)
+//GO(__ctype_b_loc, pFv)
+//GOW(__ctype_get_mb_cur_max, LFv)
+//DATAM(__ctype_tolower, 4)
+//GO(__ctype_tolower_loc, pFv)
+//DATAM(__ctype_toupper, 4)
+//GO(__ctype_toupper_loc, pFv)
+// __curbrk // type B
+//GO(cuserid, pFp)
+GOM(__cxa_atexit, iFEppp) //%%
+GOM(atexit, iFEp)           //%% just in case
+GOM(__cxa_finalize, vFEp) //%%
+DATAM(__cpu_model, 16)
+//GOM(__cxa_thread_atexit_impl, iFEppp) //%%
+// __cyg_profile_func_enter
+// __cyg_profile_func_exit
+// daemon
+//DATAV(daylight, 4)
+// __daylight   // type B
+//GOW(dcgettext, pFppi)
+//GO(__dcgettext, pFppi)
+//GOW(dcngettext, pFpppui)
+// __default_morecore
+// __default_rt_sa_restorer_v1
+// __default_rt_sa_restorer_v2
+// __default_sa_restorer_v1
+// __default_sa_restorer_v2
+// delete_module
+// des_setparity
+//GOW(dgettext, pFpp)
+//GO(__dgettext, pFpp)
+//GO(difftime, dFuu)
+//GO(dirfd, iFp)
+//GO(dirname, pFp)
+//GOS(div, pFpii) //%%,noE
+// _dl_addr
+//GOM(dl_iterate_phdr, iFEpp) //%%
+// _dl_mcount_wrapper
+// _dl_mcount_wrapper_check
+// _dl_open_hook    // type B
+// _dl_starting_up // Weak
+// _dl_sym
+// _dl_vsym
+//GOW(dngettext, pFpppu)
+//GOM(dprintf, iFEipV)
+//GOM(__dprintf_chk, iFEivpV)	//%%
+GO(drand48, dFv)
+// drand48_r
+GOW(dup, iFi)
+GOW(dup2, iFii)
+GO(__dup2, iFii)
+GO(dup3, iFiiO)
+//GOW(duplocale, pFp)
+//GO(__duplocale, pFp)
+// dysize
+//GOW(eaccess, iFpi)
+// ecb_crypt
+// ecvt
+//GO(ecvt_r, iFdipppL)
+// endaliasent
+// endfsent
+GO(endgrent, vFv)
+GO(endhostent, vFv)
+//GOW(endmntent, iFp)
+// __endmntent
+// endnetent
+// endnetgrent
+GO(endprotoent, vFv)
+GO(endpwent, vFv)
+// endrpcent
+GO(endservent, vFv)
+GO(endspent, vFv)
+// endttyent
+// endusershell
+GOW(endutent, vFv)
+// endutxent
+//DATAM(environ, 4)
+//DATAM(_environ, 4)
+//DATAM(__environ, 4)    // type B
+// envz_add
+// envz_entry
+// envz_get
+// envz_merge
+// envz_remove
+// envz_strip
+GOM(epoll_create, iFEi)     //%% not needed, but used in syscall
+GOM(epoll_create1, iFEO)    //%%
+//GOM(epoll_ctl, iFEiiip)     //%% align epool_event structure
+// epoll_pwait
+//GOM(epoll_wait, iFEipii)    //%% need realign of epoll_event structure
+// erand48
+// erand48_r    // Weak
+//GO(err, vFippppppppp)
+// errno    // type B
+//GO(__errno_location, pFv)
+//GOW(error, vFiippppppppp)  // Simple attempt: there is a vararg, but the alignment will/may be off if it tries some Double in the "printf" part
+// error_at_line    // Weak
+// error_message_count  // type B
+// error_one_per_line   // type B
+// error_print_progname // type B
+//GO(errx, vFippppppppp)
+//GO(ether_aton, pFp)
+//GO(ether_aton_r, pFpp)
+//GO(ether_hostton, iFpp)
+//GO(ether_line, iFppp)
+//GO(ether_ntoa, pFp)
+//GO(ether_ntoa_r, pFpp)
+//GO(ether_ntohost, iFpp)
+//GOW(euidaccess, iFpi)
+//GO(eventfd, iFui)
+//GO(eventfd_read, iFip)
+//GO(eventfd_write, iFiU)
+//GO2(execl, iFEpV, my_execv)
+//GO2(execle, iFEpV, my_execve)  // Nope! This one needs wrapping, because is char*, char*, ..., char*[]
+//GO2(execlp, iFpV, execvp)
+//GOWM(execv, iFEpp)     //%%
+//GOM(execve, iFEppp)   //%% and this one too...
+//GOWM(execvp, iFEpp)
+GO(exit, vFi)
+GO(_exit, vFi)
+GOW(_Exit, vFi)
+//GOM(__explicit_bzero_chk, vFEpuu)    //%% not always defined
+//GO(faccessat, iFipii)
+// fattach
+//GO(__fbufsize, uFp)
+GOW(fchdir, iFi)
+// fchflags
+GOW(fchmod, iFiu)
+//GO(fchmodat, iFipui)
+GOW(fchown, iFiuu)
+//GO(fchownat, iFipuii)
+GO(fclose, iFH)
+GOW(fcloseall, iFv)
+GOM(fcntl, iFEiiN)   //%% this also use a vararg for 3rd argument
+GOM(__fcntl, iFEiiN) //%%
+GOM(fcntl64, iFEiiN) //%%
+//GO(fcvt, pFdipp)
+//GO(fcvt_r, iFdipppL)
+GO(fdatasync, iFi)
+// fdetach
+//GO(fdopen, pFip)
+//GOW(fdopendir, pFi)
+//GOW(feof, iFp)
+//GO(feof_unlocked, iFp)
+//GOW(ferror, iFp)
+//GO(ferror_unlocked, iFp)
+//GO(fexecve, iFipp)  //TODO: Check if needed to be wrapped, and target checked for x86 / native?
+GOW(fflush, iFh)
+//GO(fflush_unlocked, iFS)
+GO(ffs, iFi)
+// __ffs
+GOW(ffsl, iFi)
+GO(ffsll, iFI)
+GOW(fgetc, iFh)
+GOW(fgetc_unlocked, iFh)
+// fgetgrent
+// fgetgrent_r  // Weak
+//GO(fgetpos, iFpp)
+//GO(fgetpos64, iFpp)
+// fgetpwent
+// fgetpwent_r  // Weak
+//GOW(fgets, pFpip)
+//GO(__fgets_chk, pFpuip)
+// fgetspent
+// fgetspent_r  // Weak
+//GO(fgets_unlocked, pFpip)
+// __fgets_unlocked_chk
+//GOW(fgetwc, iFp)
+//GOW(fgetwc_unlocked, iFp)
+//GO(fgetws, pFpip)
+// __fgetws_chk
+//GO(fgetws_unlocked, pFpip)
+// __fgetws_unlocked_chk
+//GO(fgetxattr, iFippu)
+//GO(fileno, iFp)
+//GOW(fileno_unlocked, iFp)
+GOW(finite, iFd)
+GO(__finite, iFd)
+GOW(finitef, iFf)
+// __finitef
+// finitel  // Weak
+// __finitel
+// __flbf
+//GO(flistxattr, iFipu)
+GOW(flock, iFii)
+//GOW(flockfile, vFp)
+GOW(_flushlbf, vFv)
+//GO(fmemopen, pFpup)
+// fmtmsg
+//GO(fnmatch, iFppi)
+GOM(fopen, hFEpp)           //%%
+//GOWM(fopen64, pFEpp)         //%%
+//GOM(fopencookie, pFEpppppp) //%% last 4p are a struct with 4 callbacks...
+GOWM(fork, iFEv)             //%%
+GOM(__fork, iFEv)           //%%
+// __fortify_fail
+GOW(fpathconf, iFii)
+//GO(__fpending, uFp)
+//GOM(fprintf, iFEppV) //%%
+//GOM(__fprintf_chk, iFEpvpV) //%%
+// __fpu_control    // type B
+//GO(__fpurge, vFp)
+//GOW(fputc, iFip)
+//GO(fputc_unlocked, iFip)
+GOW(fputs, iFhp)    // Weak
+//GO(fputs_unlocked, iFpp)
+//GO(fputwc, iFip)
+//GO(fputwc_unlocked, iFip)
+//GO(fputws, iFpp)
+//GO(fputws_unlocked, iFpp)
+//GOW(fread, LFpLLp)
+//GO(__freadable, iFp)
+//GO(__fread_chk, uFpuuup)
+//GO(__freading, iFp)
+//GO(fread_unlocked, uFpuup)
+//GO(__fread_unlocked_chk, uFpuuup)
+GO(free, vFp)
+//GO(freeaddrinfo, vFp)
+//DATAV(__free_hook, 4)
+//GO(freeifaddrs, vFp)
+GOW(freelocale, vFA)
+GO(__freelocale, vFA)
+//GO(fremovexattr, iFip)
+//GO(freopen, pFppp)
+//GO(freopen64, pFppp)
+// frexp    // Weak
+// frexpf   // Weak
+// frexpl   // Weak
+//GO2(fscanf, iFppV, vfscanf)
+//GO(fseek, iFpli)
+//GO(fseeko, iFpli)
+//GO(fseeko64, iFpIi)
+//GO(__fsetlocking, iFpi)
+//GO(fsetpos, iFpp)
+//GO(fsetpos64, iFpp)
+//GO(fsetxattr, iFippui)
+//GOW(fstatfs, iFip)
+//GOWM(fstatfs64, iFip)    //%%,noE
+//GO(fstatvfs, iFip)
+//GOW(fstatvfs64, iFip)   // alignment?
+GOW(fsync, iFi)
+//GOW(ftell, lFp)
+//GO(ftello, lFp)
+//GO(ftello64, IFp)
+//GO(ftime, iFp)
+//GO(ftok, iFpi)
+GOW(ftruncate, iFiu)
+GOW(ftruncate64, iFiI)
+//GOW(ftrylockfile, iFp)
+//GOM(fts_children, pFEpi) //%%
+//GOM(fts_close, iFEp)     //%%
+//GOM(fts_open, pFEpip)    //%%
+//GOM(fts_read, pFEp)      //%%
+// fts_set
+//GOM(ftw, iFEppi)         //%%
+//GOM(ftw64, iFEppi)       //%%
+//GOW(funlockfile, vFp)
+//GO(futimens, iFip)
+//GOW(futimes, iFip) //int futimes(int fd, const struct timeval tv[2])
+//GO(futimesat, iFippp)
+// fwide
+//GOWM(fwprintf, iFEppV)   //%%
+//GOM(__fwprintf_chk, iFEpvpV) //%%
+//GO(__fwritable, iFp)
+GOW(fwrite, LFpLLh)
+//GO(fwrite_unlocked, uFpuup)
+//GO(__fwriting, iFp)
+// fwscanf
+//GOM(__fxstat, iFEiip)       //%%
+//GOM(__fxstat64, iFEiip)     //%% need reaalign of struct stat64
+//GOM(__fxstatat, iFEiippi)   //%%
+//GOM(__fxstatat64, iFEiippi) //%% struct stat64 again
+// __gai_sigqueue
+//GO(gai_strerror, pFi)
+// __gconv_get_alias_db
+// __gconv_get_cache
+// __gconv_get_modules_db
+// gcvt
+//GO(getaddrinfo, iFpppp)
+// getaliasbyname
+// getaliasbyname_r
+// getaliasent
+// getaliasent_r
+// get_avphys_pages // Weak
+//GOW(getc, iFp)
+GOW(getchar, iFv)
+GO(getchar_unlocked, iFv)
+GOM(getcontext, iFEp)         //%%
+//GOW(getc_unlocked, iFp)
+//GO(get_current_dir_name, pFv)
+//GOW(getcwd, pFpL)
+//GO(__getcwd_chk, pFpLL)
+//GO(getdate, pFp)
+// getdate_err  // type B
+// getdate_r    // Weak
+//GOW(getdelim, iFppip)
+//GOW(__getdelim, iFppip)
+// getdirentries
+// getdirentries64
+//GO(getdomainname, iFpu)
+// __getdomainname_chk
+GOW(getdtablesize, iFv)
+GOW(getegid, iFv)
+GO(getenv, pFp)
+//GOW(geteuid, pFv)
+// getfsent
+// getfsfile
+// getfsspec
+GOW(getgid, iFv)
+//GO(getgrent, pFv)
+// getgrent_r
+//GO(getgrgid, pFu)
+//GO(getgrgid_r, iFuppup)
+//GO(getgrnam, pFp)
+//GO(getgrnam_r, iFpppup)
+//GO(getgrouplist, iFpipp)
+GOW(getgroups, iFiu)
+// __getgroups_chk
+//GO(gethostbyaddr, pFpui)
+//GO(gethostbyaddr_r, iFpuippupp)
+//GO(gethostbyname, pFp)
+//GO(gethostbyname2, pFpi)
+//GO(gethostbyname2_r, iFpippupp)
+//GO(gethostbyname_r, iFpppupp)
+//GO(gethostent, pFv)
+//GO(gethostent_r, iFppupp)
+// gethostid
+//GOW(gethostname, iFpu)
+// __gethostname_chk
+//GO(getifaddrs, iFp)
+// getipv4sourcefilter
+//GOW(getitimer, iFip)
+// get_kernel_syms  // Weak
+//GOW(getline, iFppp)
+//GO(getloadavg, iFpi)
+//GO(getlogin, pFv)
+//GO(getlogin_r, iFpu)
+// __getlogin_r_chk
+//GO(getmntent, pFp)
+// __getmntent_r
+//GOW(getmntent_r, pFpppi)
+// getmsg
+// get_myaddress
+//GO(getnameinfo, iFpupupui)
+// getnetbyaddr
+// getnetbyaddr_r
+// getnetbyname
+// getnetbyname_r
+// getnetent
+// getnetent_r
+// getnetgrent
+// getnetgrent_r    // Weak
+// getnetname
+//GOW(get_nprocs, iFv)
+//GOW(get_nprocs_conf, iFv)
+//GOM(getopt, iFipp)             //%noE
+//GOM(getopt_long, iFipppp)      //%noE
+//GOM(getopt_long_only, iFipppp) //%noE
+GOW(getpagesize, iFv)
+GO(__getpagesize, iFv)
+//GO(getpass, pFp)
+//GOW(getpeername, iFipp)
+GOW(getpgid, uFu)
+// __getpgid
+GO(getpgrp, iFv)
+// get_phys_pages   // Weak
+GO(getpid, uFv)
+GO(__getpid, uFv)
+// getpmsg
+GOW(getppid, uFv)
+GO(getpriority, iFii)
+//GOM(getrandom, iFEpuu)          //%%
+//GO(getprotobyname, pFp)
+//GO(getprotobyname_r, iFpppup)
+//GO(getprotobynumber, pFi)
+//GO(getprotobynumber_r, iFippup)
+//GO(getprotoent, pFv)
+//GO(getprotoent_r, iFppup)
+GOW(getpt, iFv)
+// getpublickey
+// getpw    // Weak
+//GO(getpwent, pFv)
+// getpwent_r
+//GO(getpwnam, pFp)
+//GO(getpwnam_r, iFpppup)
+//GOM(getpwuid, pFEu)
+//GO(getpwuid_r, iFuppup)
+//GOW(getresgid, iFppp)
+//GOW(getresuid, iFppp)
+//GO(getrlimit, iFip)
+//GO(getrlimit64, iFip)
+// getrpcbyname
+// getrpcbyname_r
+// getrpcbynumber
+// getrpcbynumber_r
+// getrpcent
+// getrpcent_r
+// getrpcport
+//GOW(getrusage, iFip)
+//GOW(gets, pFp)
+// __gets_chk
+// getsecretkey
+//GO(getservbyname, pFpp)
+//GO(getservbyname_r, iFppppup)
+//GO(getservbyport, pFip)
+//GO(getservbyport_r, iFipppup)
+// getservent
+//GO(getservent_r, iFppup)
+GO(getsid, uFu)
+//GOW(getsockname, iFipp)
+//GOW(getsockopt, iFiiipp)
+// getsourcefilter
+//GO(getspent, pFv)
+// getspent_r
+//GO(getspnam, pFp)
+// getspnam_r
+// getsubopt
+//GOW(gettext, pFp)
+//GOW(gettimeofday, iFpp)
+//GO(__gettimeofday, iFpp)
+// getttyent
+// getttynam
+GOW(getuid, uFv)
+// getusershell
+//GOW(getutent, pFv)
+//GOW(getutent_r, iFpp)
+//GOW(getutid, pFp)
+//GOW(getutid_r, iFppp)
+//GOW(getutline, pFp)
+//GOW(getutline_r, iFppp)
+// getutmp
+// getutmpx
+// getutxent
+// getutxid
+// getutxline
+// getw
+//GO2(getwc, iFp, fgetwc)
+GO(getwchar, iFv)
+GO(getwchar_unlocked, iFv)
+//GOW(getwc_unlocked, iFp)
+//GO(getwd, pFp)
+// __getwd_chk
+//GO(getxattr, iFpppu)
+//GOM(glob, iFEpipp)             //%%
+//GOM(glob64, iFEpipp)           //%%
+//GO(globfree, vFp)
+//GO(globfree64, vFp)
+// glob_pattern_p   // Weak
+//GO(gmtime, pFp)
+//GO(__gmtime_r, pFpp)
+//GOW(gmtime_r, pFpp)
+GO(gnu_dev_major, uFU)
+GO(gnu_dev_makedev, UFii)       // dev_t seems to be a u64
+GO(gnu_dev_minor, uFU)
+//GOW(gnu_get_libc_release, pFv)
+//GOW(gnu_get_libc_version, pFv)
+// __gnu_mcount_nc
+// __gnu_Unwind_Find_exidx
+GO(grantpt, iFi)
+// group_member // Weak
+// gsignal  // Weak
+// gtty
+//GOW(hasmntopt, pFpp)
+// hcreate
+// hcreate_r
+// hdestroy // Weak
+// hdestroy_r
+//DATA(h_errlist, 4)
+// h_errno  // type B
+//GO(__h_errno_location, pFv)
+//GO(herror, vFp)
+// h_nerr   // type R
+// host2netname
+// hsearch
+// hsearch_r
+//GO(hstrerror, pFi)
+GO(htonl, uFu)
+GO(htons, uFu)
+//GO(iconv, LFLpppp)
+//GO(iconv_canonicalize, pFp)
+GO(iconv_close, iFL)
+//GO(iconv_open, LFpp)
+//GO(if_freenameindex, vFp)
+//GO(if_indextoname, pFup)
+//GO(if_nameindex, pFv)
+//GO(if_nametoindex, uFp)
+// imaxabs  // Weak
+GOW(imaxdiv, IFII)
+//DATA(in6addr_any, 16)  // type R
+//DATA(in6addr_loopback, 16) // type R
+// inb  // Weak
+//GOW(index, pFpi)
+// inet6_opt_append
+// inet6_opt_find
+// inet6_opt_finish
+// inet6_opt_get_val
+// inet6_opt_init
+// inet6_option_alloc
+// inet6_option_append
+// inet6_option_find
+// inet6_option_init
+// inet6_option_next
+// inet6_option_space
+// inet6_opt_next
+// inet6_opt_set_val
+// inet6_rth_add
+// inet6_rth_getaddr
+// inet6_rth_init
+// inet6_rth_reverse
+// inet6_rth_segments
+// inet6_rth_space
+//GO(inet_addr, uFp)
+//GOW(inet_aton, iFpp)
+// inet_lnaof
+// inet_makeaddr
+// inet_netof
+//GO(inet_network, iFp)
+// inet_nsap_addr
+//GO(inet_nsap_ntoa, pFipp)
+//GO(inet_ntoa, pFu)
+//GO(inet_ntop, pFippu)
+//GO(inet_pton, iFipp)
+//GO(initgroups, iFpi)
+// init_module
+// initstate    // Weak
+//GOW(initstate_r, iFupup)
+// inl  // Weak
+// innetgr
+//GO(inotify_add_watch, iFipu)
+GO(inotify_init, iFv)
+GO(inotify_init1, iFi)
+GO(inotify_rm_watch, iFii)
+// insque
+// __internal_endnetgrent
+// __internal_getnetgrent_r
+// __internal_setnetgrent
+// inw  // Weak
+//DATA(_IO_2_1_stderr_, 152)  //sizeof(struct _IO_FILE_plus)
+//DATA(_IO_2_1_stdin_, 152)
+//DATA(_IO_2_1_stdout_, 152)
+//GO(_IO_adjust_column, uFupi)
+// _IO_adjust_wcolumn
+GO(ioctl, iFiLN)   //the vararg is just to have optional arg of various type, but only 1 arg
+//GO(_IO_default_doallocate, iFS)
+//GO(_IO_default_finish, vFSi)
+//GO(_IO_default_pbackfail, iFSi)
+//GO(_IO_default_uflow, iFS)
+//GO(_IO_default_xsgetn, LFSpL)
+//GO(_IO_default_xsputn, LFSpL)
+//GO(_IO_doallocbuf, vFS)
+//GO(_IO_do_write, iFSpL)
+// _IO_fclose
+// _IO_fdopen
+// _IO_feof
+// _IO_ferror
+// _IO_fflush
+// _IO_fgetpos
+// _IO_fgetpos64
+// _IO_fgets
+//GO(_IO_file_attach, pFSi)
+//GO(_IO_file_close, iFS)
+//GO(_IO_file_close_it, iFS)
+//GO(_IO_file_doallocate, iFS)
+// _IO_file_finish
+//GO(_IO_file_fopen, pFSppi)
+//GO(_IO_file_init, vFS)
+//DATA(_IO_file_jumps, 4)
+//GO(_IO_file_open, pFSpiiii)
+//GO(_IO_file_overflow, iFSi)
+//GO(_IO_file_read, lFSpl)
+//GO(_IO_file_seek, IFSIi)
+//GO(_IO_file_seekoff, IFSIii)
+//GO(_IO_file_setbuf, pFSpl)
+//GOM(_IO_file_stat, iFESp)
+//GO(_IO_file_sync, iFS)
+//GO(_IO_file_underflow, iFS)
+//GO(_IO_file_write, lFSpl)
+//GO(_IO_file_xsputn, LFSpL)
+//GO(_IO_flockfile, vFS)
+//GO(_IO_flush_all, iFv)
+//GO(_IO_flush_all_linebuffered, vFv)
+// _IO_fopen
+// _IO_fprintf  // Weak
+// _IO_fputs
+// _IO_fread
+//GO(_IO_free_backup_area, vFS)
+// _IO_free_wbackup_area
+// _IO_fsetpos
+// _IO_fsetpos64
+// _IO_ftell
+// _IO_ftrylockfile
+//GO(_IO_funlockfile, vFS)
+// _IO_fwrite
+//GO(_IO_getc, iFS)
+// _IO_getline
+//GO(_IO_getline_info, LFSpLiip)
+// _IO_gets
+//GO(_IO_init, vFSi)
+//GO(_IO_init_marker, vFpS)
+// _IO_init_wmarker
+// _IO_iter_begin
+// _IO_iter_end
+// _IO_iter_file
+// _IO_iter_next
+// _IO_least_wmarker
+//GO(_IO_link_in, vFp)
+//DATA(_IO_list_all, 4)
+// _IO_list_lock
+// _IO_list_resetlock
+// _IO_list_unlock
+//GO(_IO_marker_delta, iFp)
+//GO(_IO_marker_difference, iFpp)
+//GO(_IO_padn, iFpii)
+//GO(_IO_peekc_locked, iFp)
+GOW(ioperm, iFuui)
+GOW(iopl, iFi)
+// _IO_popen
+// _IO_printf
+//GO(_IO_proc_close, iFS)
+//GO(_IO_proc_open, pFSpp)
+//GO(_IO_putc, iFip)
+// _IO_puts
+//GO(_IO_remove_marker, vFp)
+//GO(_IO_seekmark, iFSpi)
+//GO(_IO_seekoff, IFSIii)
+//GO(_IO_seekpos, IFSIi)
+// _IO_seekwmark
+//GO(_IO_setb, vFSppi)
+// _IO_setbuffer
+// _IO_setvbuf
+//GO(_IO_sgetn, uFppu)
+// _IO_sprintf
+//GO(_IO_sputbackc, iFSi)
+// _IO_sputbackwc
+// _IO_sscanf
+//GO(_IO_str_init_readonly, vFppi)
+//GO(_IO_str_init_static, vFppup)
+//GO(_IO_str_overflow, iFSi)
+//GO(_IO_str_pbackfail, iFSi)
+//GO(_IO_str_seekoff, UFSUii)
+//GO(_IO_str_underflow, iFS)
+//GO(_IO_sungetc, iFp)
+// _IO_sungetwc
+//GO(_IO_switch_to_get_mode, iFp)
+// _IO_switch_to_main_wget_area
+// _IO_switch_to_wbackup_area
+// _IO_switch_to_wget_mode
+// _IO_ungetc
+//GO(_IO_un_link, vFp)
+//GO(_IO_unsave_markers, vFp)
+// _IO_unsave_wmarkers
+//GOM(_IO_vfprintf, iFEpppp) //%%
+//GOM(_IO_vfscanf, iFEppp)   //%%
+// _IO_vsprintf
+// _IO_wdefault_doallocate
+// _IO_wdefault_finish
+// _IO_wdefault_pbackfail
+// _IO_wdefault_uflow
+// _IO_wdefault_xsgetn
+// _IO_wdefault_xsputn
+// _IO_wdoallocbuf
+// _IO_wdo_write
+//DATA(_IO_wfile_jumps, 4)
+// _IO_wfile_overflow
+// _IO_wfile_seekoff
+// _IO_wfile_sync
+// _IO_wfile_underflow
+// _IO_wfile_xsputn
+// _IO_wmarker_delta
+// _IO_wsetb
+// iruserok
+// iruserok_af
+GO(isalnum, iFi)
+// __isalnum_l
+// isalnum_l    // Weak
+GO(isalpha, iFi)
+// __isalpha_l
+// isalpha_l    // Weak
+GO(isascii, iFi)
+// __isascii_l  // Weak
+// isastream
+GOW(isatty, iFi)
+GO(isblank, iFi)
+// __isblank_l
+// isblank_l    // Weak
+GO(iscntrl, iFi)
+// __iscntrl_l
+// iscntrl_l    // Weak
+// isctype  // Weak
+// __isctype
+GO(isdigit, iFi)
+// __isdigit_l
+// isdigit_l    // Weak
+// isfdtype
+GO(isgraph, iFi)
+// __isgraph_l
+// isgraph_l    // Weak
+GOW(isinf, iFd)
+GO(__isinf, iFd)
+GOW(isinff, iFf)
+GO(__isinff, iFf)
+// isinfl   // Weak
+// __isinfl
+GO(islower, iFi)
+// __islower_l
+// islower_l    // Weak
+GOW(isnan, iFd)
+GO(__isnan, iFd)
+GOW(isnanf, iFf)
+GO(__isnanf, iFf)
+// isnanl   // Weak
+// __isnanl
+//GOM(__isoc99_fscanf, iFEppV)  //%%
+// __isoc99_fwscanf
+// __isoc99_scanf
+//GOM(__isoc99_sscanf, iFEppV)  //%%
+// __isoc99_swscanf
+//GOM(__isoc99_vfscanf, iFEppp) //%%
+// __isoc99_vfwscanf
+// __isoc99_vscanf
+//GOM(__isoc99_vsscanf, iFEppp) //%% TODO: check if ok
+// __isoc99_vswscanf
+// __isoc99_vwscanf
+// __isoc99_wscanf
+GO(isprint, iFi)
+// __isprint_l
+// isprint_l    // Weak
+GO(ispunct, iFi)
+// __ispunct_l
+// ispunct_l    // Weak
+GO(isspace, iFi)
+// __isspace_l
+// isspace_l    // Weak
+GO(isupper, iFi)
+// __isupper_l
+// isupper_l    // Weak
+GOW(iswalnum, iFi)
+// __iswalnum_l
+//GOW(iswalnum_l, iFip)
+GOW(iswalpha, iFi)
+// __iswalpha_l
+//GOW(iswalpha_l, iFip)
+GOW(iswblank, iFi)
+// __iswblank_l
+GOW(iswblank_l, iFip)
+GOW(iswcntrl, iFi)
+// __iswcntrl_l
+GOW(iswcntrl_l, iFip)
+GOW(iswctype, iFiu)
+// __iswctype
+GO(__iswctype_l, iFuLp)
+// iswctype_l   // Weak
+GOW(iswdigit, iFi)
+// __iswdigit_l
+//GOW(iswdigit_l, iFip)
+GOW(iswgraph, iFi)
+// __iswgraph_l
+//GOW(iswgraph_l, iFip)
+GOW(iswlower, iFi)
+// __iswlower_l
+//GOW(iswlower_l, iFip)
+GOW(iswprint, iFi)
+// __iswprint_l
+//GOW(iswprint_l, iFip)
+GOW(iswpunct, iFi)
+// __iswpunct_l
+//GOW(iswpunct_l, iFip)
+GOW(iswspace, iFi)
+// __iswspace_l
+//GOW(iswspace_l, iFip)
+GOW(iswupper, iFi)
+// __iswupper_l
+//GOW(iswupper_l, iFip)
+GOW(iswxdigit, iFi)
+// __iswxdigit_l
+//GOW(iswxdigit_l, iFip)
+GO(isxdigit, iFi)
+// __isxdigit_l
+// isxdigit_l   // Weak
+// _itoa_lower_digits   // type R
+// __ivaliduser
+//GO(jrand48, iFp)
+// jrand48_r    // Weak
+// key_decryptsession
+// key_decryptsession_pk
+// __key_decryptsession_pk_LOCAL    // type B
+// key_encryptsession
+// key_encryptsession_pk
+// __key_encryptsession_pk_LOCAL    // type B
+// key_gendes
+// __key_gendes_LOCAL   // type B
+// key_get_conv
+// key_secretkey_is_set
+// key_setnet
+// key_setsecret
+GOW(kill, iFli)
+GO(killpg, iFii)
+// klogctl
+// l64a
+GO(labs, iFi)
+// lchmod
+//GOW(lchown, iFpuu)
+// lckpwdf  // Weak
+// lcong48
+// lcong48_r    // Weak
+// ldexp    // Weak
+// ldexpf   // Weak
+// ldexpl   // Weak
+//GOS(ldiv, pFEpii)               //%% return a struct, so address of stuct is on the stack, as a shadow 1st element
+//GOM(lfind, pFEpppLp)            //%%
+//GO(lgetxattr, iFpppu)
+GOM(__libc_alloca_cutoff, iFEL) //%%
+// __libc_allocate_rtsig
+// __libc_allocate_rtsig_private
+//GO(__libc_calloc, pFLL)
+// __libc_clntudp_bufcreate
+GO(__libc_current_sigrtmax, iFv)
+// __libc_current_sigrtmax_private
+GO(__libc_current_sigrtmin, iFv)
+// __libc_current_sigrtmin_private
+//GOM(__libc_dlclose, iFEp)       //%%
+// __libc_dl_error_tsd
+//GOM(__libc_dlopen_mode, pFEpi)  //%%
+//GOM(__libc_dlsym, pFEpp)        //%%
+// __libc_fatal
+// __libc_fork
+//GO(__libc_free, vFp)
+// __libc_freeres
+GOM(__libc_init_first, vFEipV)  //%%
+// _libc_intl_domainname    // type R
+//GO2(__libc_open, iFEpOu, my_open)
+// __libc_longjmp
+// __libc_mallinfo
+//GO(__libc_malloc, pFL)
+// __libc_mallopt
+//GO(__libc_memalign, pFLL)
+// __libc_pthread_init
+//GO(__libc_pvalloc, pFL)
+// __libc_pwrite
+//GO2(__libc_read, lFipL, my_read) //%%,noE
+//GO(__libc_realloc, pFpL)
+// __libc_sa_len
+// __libc_siglongjmp
+GOM(__libc_start_main, iFEpippppp) //%%
+GO2(__libc_sigaction, iFEipp, my32_sigaction) //%%
+// __libc_system
+// __libc_thread_freeres
+//GO(__libc_valloc, pFL)
+//GOW(link, iFpp)
+//GO(linkat, iFipipi)
+GOW(listen, iFii)
+//GO(listxattr, iFppu)
+// llabs
+// lldiv
+//GO(llistxattr, iFppu)
+// llseek   // Weak
+// loc1 // type B
+// loc2 // type B
+//GOW(localeconv, pFv)
+//GO(localtime, pFp)
+//GOW(localtime_r, pFpp)
+GO(lockf, iFiiu)
+GO(lockf64, iFiiI)
+// locs // type B
+GOM(longjmp, vFEpi)         //%%
+GOM(_longjmp, vFEpi)        //%%
+GOM(__longjmp_chk, vFEpi)   //%%
+GO(lrand48, iFv)
+// lrand48_r
+//GO(lremovexattr, iFpp)
+//GOM(lsearch, pFEpppLp)      //%%
+GOW(lseek, iFiii)
+// __lseek  // Weak
+GOW(lseek64, IFiIi)
+//GO(lsetxattr, iFpppui)
+//GO(lutimes, iFpp)
+//GOM(__lxstat, iFEipp)       //%%
+//GOM(__lxstat64, iFEipp)     //%%
+//GO(madvise, iFpLi)
+GOM(makecontext, iFEppiV)   //%%
+//GOW(mallinfo, pFv)
+GOM(malloc, pFL)            //%%,noE
+// malloc_get_state // Weak
+//DATAV(__malloc_hook, 4)
+//DATAV(__malloc_initialize_hook, 4)
+// malloc_set_state // Weak
+// malloc_stats // Weak
+GOW(malloc_trim, iFu)
+//GOW(malloc_usable_size, LFp)
+GOW(mallopt, iFii)  // Weak
+// mallwatch    // type B
+//GO(mblen, iFpL)
+//GOW(mbrlen, LFpLp)
+//GO(__mbrlen, LFpLp)
+//GOW(mbrtowc, LFppLp)
+//GO(__mbrtowc, LFppLp)
+//GOW(mbsinit, iFp)
+//GOW(mbsnrtowcs, LFppLLp)
+// __mbsnrtowcs_chk
+//GOW(mbsrtowcs, LFppLp)
+// __mbsrtowcs_chk
+//GO(mbstowcs, LFppL)
+// __mbstowcs_chk
+//GO(mbtowc, iFppL)
+// mcheck
+// mcheck_check_all
+// mcheck_pedantic
+// _mcleanup
+//GOWM(mcount, vFpp)   //%%,noE
+// _mcount
+//GOW(memalign, pFLL)
+//DATAV(__memalign_hook, 4)
+//GOW(memccpy, pFppiL)
+//GO(memchr, pFpiL)
+GO(memcmp, iFppL)
+GO(memcpy, pFppL)
+GO(__memcpy_chk, pFppuL)
+// memfrob
+//GO(memmem, pFpupu)
+//GO(memmove, pFppL)
+//GO(__memmove_chk, pFppLL)
+//GO(mempcpy, pFppL)
+//GO(__mempcpy, pFppu)
+// __mempcpy_chk
+// __mempcpy_small
+//GOW(memrchr, pFpiL)
+//GO(memset, pFpiL)
+//GO(__memset_chk, pFpiLL)
+//GO(mincore, iFpLp)
+//GOW(mkdir, iFpu)
+//GO(mkdirat, iFipu)
+//GO(mkdtemp, pFp)
+//GO(mkfifo, iFpu)
+//GO(mkfifoat, iFipu)
+//GO(mkostemp, iFpi)
+//GO(mkostemp64, iFpi)
+//GO(mkstemp, iFp)
+//GO(mkstemp64, iFp)
+//GO(mktemp, pFp)
+//GO(mktime, LFp)
+//GO(mlock, iFpL)
+//GO(mlockall, iFi)
+//GOM(mmap, pFEpLiiii)    //%%
+//GOM(mmap64, pFEpLiiiI)  //%%
+// modf // Weak
+// modff    // Weak
+// modfl    // Weak
+// moncontrol   // Weak
+// monstartup   // Weak
+// __monstartup
+//DATA(__morecore, 4)
+//GOW(mount, iFpppup)
+// mprobe
+//GOM(mprotect, iFEpLi)   //%%
+// mrand48
+// mrand48_r
+//GOWM(mremap, pFEpLLiN)	//%% 5th hidden paramerer "void* new_addr" if flags is MREMAP_FIXED
+//GO(msgctl, iFiip)
+//GOW(msgget, iFpi)
+//GOW(msgrcv, lFipLli)
+//GOW(msgsnd, iFipLi)
+//GOW(msync, iFpLi)
+// mtrace
+//GO(munlock, iFpL)
+//GO(munlockall, iFv)
+//GOM(munmap, iFEpL)       //%%
+// muntrace
+//GOWM(nanosleep, iFpp)	 //%%,noE
+// __nanosleep  // Weak
+// netname2host
+// netname2user
+GOW(newlocale, aFipa)
+GO(__newlocale, aFipa)
+// nfsservctl
+//GOM(nftw, iFEppii)       //%%
+//GOM(nftw64, iFEppii)     //%%
+//GOW(ngettext, pFppu)
+GO(nice, iFi)
+// _nl_default_dirname   // type R
+// _nl_domain_bindings   // type B
+//GO(nl_langinfo, pFu)
+//GO(__nl_langinfo_l, pFup)
+//GOW(nl_langinfo_l, pFup)
+//DATAB(_nl_msg_cat_cntr, 4) // type B
+// nrand48
+// nrand48_r    // Weak
+// __nss_configure_lookup
+// __nss_database_lookup
+// __nss_disable_nscd
+// _nss_files_parse_grent
+// _nss_files_parse_pwent
+// _nss_files_parse_spent
+// __nss_group_lookup
+// __nss_group_lookup2
+// __nss_hostname_digits_dots
+// __nss_hosts_lookup
+// __nss_hosts_lookup2
+// __nss_lookup_function
+// __nss_next
+// __nss_next2
+// __nss_passwd_lookup
+// __nss_passwd_lookup2
+// __nss_services_lookup2
+GOW(ntohl, uFu)
+GOW(ntohs, uFu)
+// ntp_adjtime  // Weak
+// ntp_gettime
+// _null_auth   // type B
+// _obstack_allocated_p
+//DATAM(obstack_alloc_failed_handler, 4)
+//GOM(_obstack_begin, iFpLLpp) //%%,noE
+// _obstack_begin_1
+//DATA(obstack_exit_failure, 4)
+//GOM(_obstack_free, vFpp)     //%%,noE
+//GOM(obstack_free, vFpp)      //%%,noE
+// _obstack_memory_used
+//GOM(_obstack_newchunk, vFpi) //%%,noE
+// obstack_printf   // Weak
+// __obstack_printf_chk
+//GOWM(obstack_vprintf, iFEpppp)  //%%
+// __obstack_vprintf_chk
+//GOWM(on_exit, iFEpp)  //%%
+//GO2(__on_exit, iFEpp, my_on_exit)   //%%
+//GOWM(open, iFEpOu)    //%%
+//GOWM(__open, iFEpOu)  //%%
+//GO(__open_2, iFpO)
+//GOWM(open64, iFEpOu)  //%%
+// __open64 // Weak
+//GO(__open64_2, iFpO)
+//GOW(openat, iFipON)
+// __openat_2
+//GOW(openat64, iFipON)
+//GO(__openat64_2, iFipON)
+// __open_catalog
+//GOW(opendir, pFp)
+//GO(openlog, vFpii)
+// open_memstream
+// open_wmemstream
+//DATAB(optarg, 4)
+//DATA(opterr, 4)
+//DATA(optind, 4)
+//DATA(optopt, 4)
+// outb // Weak
+// outl // Weak
+// outw // Weak
+//GO(__overflow, iFpi)
+//GO(parse_printf_format, uFpup)
+// passwd2des
+//GOW(pathconf, iFpi)
+GOW(pause, iFv)
+//GO(pclose, iFp)
+//GO(perror, vFp)
+// personality  // Weak
+//GOW(pipe, iFp)  // the array of 2 int seems to converted as a pointer, on both x86 and arm (and x86_64 too)
+// __pipe
+//GOW(pipe2, iFpO) // assuming this works the same as pipe, so pointer for array of 2 int
+// pivot_root
+// pmap_getmaps
+// pmap_getport
+// pmap_rmtcall
+// pmap_set
+// pmap_unset
+//GOW(poll, iFpui)    // poll have an array of struct as 1st argument
+//GO(__poll, iFpui)
+//GO(popen, pFpp)
+GO(posix_fadvise, iFiuui)
+GO(posix_fadvise64, iFiuui)
+GO(posix_fallocate, iFiii)
+GO(posix_fallocate64, iFiII)
+// posix_madvise
+//GOW(posix_memalign, iFpLL)
+// posix_openpt // Weak
+//GO(posix_spawn, iFpppppp)
+// posix_spawnattr_destroy
+// posix_spawnattr_getflags
+// posix_spawnattr_getpgroup
+// posix_spawnattr_getschedparam
+// posix_spawnattr_getschedpolicy
+// posix_spawnattr_getsigdefault
+// posix_spawnattr_getsigmask
+// posix_spawnattr_init
+// posix_spawnattr_setflags
+// posix_spawnattr_setpgroup
+// posix_spawnattr_setschedparam
+// posix_spawnattr_setschedpolicy
+// posix_spawnattr_setsigdefault
+// posix_spawnattr_setsigmask
+// posix_spawn_file_actions_addclose
+//GO(posix_spawn_file_actions_adddup2, iFpii)
+//GO(posix_spawn_file_actions_addopen, iFpipii)
+//GO(posix_spawn_file_actions_destroy, iFp)
+//GO(posix_spawn_file_actions_init, iFp)
+//GOM(posix_spawnp, iFEpppppp) //%%
+//GO(ppoll, iFpupp)
+GOW(prctl, iFiLLLL)
+//GOW(pread, lFipLl)
+//GOW(pread64, lFipLI)
+// __pread64    // Weak
+// __pread64_chk
+//GOM(preadv64, lFEipiI)  //%% not always present
+// __pread_chk
+GOM(printf, iFEpV) //%%
+GOM(__printf_chk, iFEvpV) //%%
+//GO(__printf_fp, iFppp)  // does this needs aligment?
+// printf_size
+// printf_size_info
+// profil   // Weak
+// __profile_frequency
+//DATAM(__progname, 4)
+//DATAM(__progname_full, 4)
+//DATAM(program_invocation_name, 4)
+//DATAM(program_invocation_short_name, 4)
+//GOW(pselect, iFippppp)
+// psignal
+//GO(ptrace, iFiupp)  // will that work???
+//GO(ptsname, pFi)
+//GOW(ptsname_r, iFipu)
+// __ptsname_r_chk
+GOW(putc, iFip)
+GO(putchar, iFi)
+GO(putchar_unlocked, iFi)
+//GO(putc_unlocked, iFip)
+//GO(putenv, iFp)
+// putgrent
+// putmsg
+// putpmsg
+// putpwent
+GOW(puts, iFp)
+// putspent
+//GOW(pututline, pFp)
+// pututxline
+// putw
+//GO(putwc, iFip)
+// putwchar
+GO(putwchar_unlocked, iFi)
+//GO(putwc_unlocked, iFip)
+// pvalloc  // Weak
+// pwrite   // Weak
+//GOW(pwrite64, lFipLI)
+// __pwrite64   // Weak
+//GOM(pwritev64, lFEipiI)  //%% not always present
+// qecvt
+#ifdef HAVE_LD80BITS
+//GO(qecvt_r, iFDipppL)
+#else
+//GO(qecvt_r, iFKipppL)
+#endif
+// qfcvt
+#ifdef HAVE_LD80BITS
+//GO(qfcvt_r, iFDipppL)
+#else
+//GO(qfcvt_r, iFKipppL)
+#endif
+// qgcvt
+//GOM(qsort, vFEpLLp) //%%
+//GOM(qsort_r, vFEpLLpp) //%%
+// query_module // Weak
+//GO(quotactl, iFipip)
+GO(raise, iFi)
+GO(rand, iFv)
+GOW(random, iFv)
+//GOW(random_r, iFpp)
+//GO(rand_r, iFp)
+//GOW(rawmemchr, pFpi)
+//GO(__rawmemchr, pFpi)
+// rcmd
+// rcmd_af
+// __rcmd_errstr    // type B
+//GOM(read, lFipL) //%%,noE
+//GOW(__read, lFipL)
+// readahead    // Weak
+//GO(__read_chk, lFipLL)
+//GOM(readdir, pFEp)  //%% should also be weak
+//GO(readdir64, pFp)  // check if alignement is correct
+// readdir64_r
+//GOM(readdir_r, iFEppp)  //%% should also be weak
+//GOM(readlink, iFEppL) //%%
+//GOM(readlinkat, iFEippL)
+// __readlinkat_chk
+// __readlink_chk
+//GO(readv, lFipi)
+//GO(realloc, pFpL)
+//DATAV(__realloc_hook, 4)
+//GOM(realpath, pFEpp) //%%
+//GO(__realpath_chk, pFppu)
+// reboot
+// re_comp  // Weak
+// re_compile_fastmap   // Weak
+//GOW(re_compile_pattern, pFpup)
+//GO(recv, lFipLi)
+//GO(__recv_chk, iFipuui)
+//GOW(recvfrom, lFipLipp)
+// __recvfrom_chk
+//GOM(recvmmsg, iFEipuup)    //%% actual recvmmsg is glibc 2.12+. The syscall is Linux 2.6.33+, so use syscall...
+//GOW(recvmsg, lFipi)
+// re_exec  // Weak
+//GOW(regcomp, iFppi)
+//GOW(regerror, uFippu)
+//GO(regexec, iFppupi)
+//GOW(regfree, vFp)
+//GOM(__register_atfork, iFEpppp) //%%
+// register_printf_function // Weak
+// registerrpc
+// remap_file_pages // Weak
+//GOW(re_match, iFppiip)
+// re_match_2   // Weak
+//GO(remove, iFp)
+//GO(removexattr, iFpp)
+// remque
+//GO(rename, iFpp)
+//GO(renameat, iFipip)
+//GO(renameat2, iFipipu)
+// _res // type B
+//GOW(re_search, iFppiiip)
+//GOW(re_search_2, iFppipiiipi)
+// re_set_registers // Weak
+GOW(re_set_syntax, uFu)
+// _res_hconf   // type B
+//GO(__res_iclose, vFpi)
+GO(__res_init, iFv)
+//GO(__res_maybe_init, iFpi)
+//GO(__res_nclose, vFp)
+//GO(__res_ninit, iFp)
+//DATA(__resp, 4)
+// __res_randomid
+//GO(__res_state, pFv)
+//DATA(re_syntax_options, 4)    // type B
+// revoke
+//GO(rewind, vFp)
+//GO(rewinddir, vFp)
+// rexec
+// rexec_af
+// rexecoptions // type B
+//GOW(rindex, pFpi)
+//GOW(rmdir, iFp)
+//GO(readdir64_r, iFppp)  // is this present?
+// rpc_createerr    // type B
+// _rpc_dtablesize
+// __rpc_thread_createerr
+// __rpc_thread_svc_fdset
+// __rpc_thread_svc_max_pollfd
+// __rpc_thread_svc_pollfd
+//GO(rpmatch, iFp)
+// rresvport
+// rresvport_af
+// rtime
+// ruserok
+// ruserok_af
+// ruserpass
+//GOW(sbrk, pFl)
+//GO(__sbrk, pFl)
+// scalbn   // Weak
+// scalbnf  // Weak
+// scalbnl  // Weak
+//GOM(scandir, iFEpppp) //%%
+//GOM(scandir64, iFEpppp) //%%
+//GO2(scanf, iFpp, vscanf)
+//GO(__sched_cpualloc, pFu)   //TODO: check, return cpu_set_t* : should this be aligned/changed?
+//GO(__sched_cpucount, iFup)
+//GO(__sched_cpufree, vFp)
+//GO(sched_getaffinity, iFiup)
+GO(sched_getcpu, iFv)
+//GO(__sched_getparam, iFip)
+//GOW(sched_getparam, iFip)
+GO(__sched_get_priority_max, iFi)
+GOW(sched_get_priority_max, iFi)
+GO(__sched_get_priority_min, iFi)
+GOW(sched_get_priority_min, iFi)
+GO(__sched_getscheduler, iFi)
+GOW(sched_getscheduler, iFi)
+//GOW(sched_rr_get_interval, iFip)
+//GO(sched_setaffinity, iFiup)
+//GOW(sched_setparam, iFip)
+//GO(__sched_setscheduler, iFiip)
+//GOW(sched_setscheduler, iFiip)
+GO(__sched_yield, iFv)
+GOW(sched_yield, iFv)
+GO(__secure_getenv, pFp)
+GO(secure_getenv, pFp)
+// seed48
+// seed48_r // Weak
+//GO(seekdir, vFpi)
+//GOW(select, iFipppp)
+//GO(__select, iFipppp)
+//GO(semctl, iFiiiN)
+GOW(semget, iFuii)
+//GOW(semop, iFipL)
+//GO(semtimedop, iFipup)
+//GOW(send, lFipLi)
+// __send   // Weak
+//GO(sendfile, lFiipL)
+//GO(sendfile64, lFiipL)
+//GOW(sendmsg, lFipi)
+//GOM(__sendmmsg, iFEipuu)    //%% actual __sendmmsg is glibc 2.14+. The syscall is Linux 3.0+, so use syscall...
+//GOW(sendto, lFipLipu)
+// setaliasent
+//GOW(setbuf, vFpp)
+//GOW(setbuffer, vFppL)
+GOM(setcontext, iFEp) //%%
+// setdomainname
+GO(setegid, iFu)
+//GOW(setenv, iFppi)
+// _seterr_reply
+GO(seteuid, iFu)
+// setfsent
+// setfsgid
+// setfsuid
+GOW(setgid, iFu)
+GO(setgrent, vFv)
+//GO(setgroups, iFup)
+GO(sethostent, vFi)
+// sethostid
+//GO(sethostname, iFpu)
+// setipv4sourcefilter
+//GOW(setitimer, iFipp)
+GOM(setjmp, iFEp) //%%
+GOM(_setjmp, iFEp) //%%
+//GO(setlinebuf, vFp)
+GO(setlocale, aFia)
+// setlogin
+GO(setlogmask, iFi)
+//GOW(setmntent, pFpp)
+// __setmntent
+// setnetent
+// setnetgrent
+GOW(setpgid, iFuu)
+// __setpgid
+GO(setpgrp, iFv)
+GO(setpriority, iFiii)
+GO(setprotoent, vFi)
+GO(setpwent, vFv)
+GOW(setregid, iFuu)
+GOW(setresgid, iFuuu)
+GOW(setresuid, iFuuu)
+GOW(setreuid, iFuu)
+//GO(setrlimit, iFip)
+//GO(setrlimit64, iFip)
+// setrpcent
+// setservent
+GOW(setsid, iFv)
+//GOW(setsockopt, iFiiipu)
+// setsourcefilter
+GO(setspent, vFv)
+// setstate // Weak
+//GOW(setstate_r, iFpp)
+//GOW(settimeofday, iFpp)
+// setttyent
+GOW(setuid, iFu)
+// setusershell
+GOW(setutent, vFv)
+// setutxent
+//GOW(setvbuf, iFppiL)
+//GO(setxattr, iFpppui)
+// sgetspent
+// sgetspent_r  // Weak
+//GOW(shmat, pFipi)
+//GOW(shmctl, iFiip)
+//GOW(shmdt, iFp)
+GOW(shmget, iFuui)
+GOW(shutdown, iFii)
+//GOWM(sigaction, iFEipp)    //%%
+//GOWM(__sigaction, iFEipp)  //%%
+//GO(sigaddset, iFpi)
+// __sigaddset
+GOWM(sigaltstack, iFEpp)   //%%
+// sigandset
+GOW(sigblock, iFi)
+//GO(sigdelset, iFpi)
+// __sigdelset
+//GO(sigemptyset, iFp)
+//GO(sigfillset, iFp)
+GO(siggetmask, iFv)
+// sighold
+// sigignore
+GO(siginterrupt, iFii)  // no need to wrap this one?
+// sigisemptyset
+//GO(sigismember, iFpi)
+// __sigismember
+GOM(siglongjmp, vFEip) //%%
+GOW2(signal, pFEip, my_signal)
+// signalfd
+GO(__signbit, iFd)
+GO(__signbitf, iFf)
+// sigorset
+// sigpause // Weak
+// __sigpause
+//GO(sigpending, iFp)
+//GOW(sigprocmask, iFipp)
+// sigqueue // Weak
+// sigrelse
+// sigreturn    // Weak
+GOM(sigset, pFEip) //%%
+GOM(__sigsetjmp, iFEp) //%%
+GOW(sigsetmask, iFi)
+// sigstack
+//GOW(sigsuspend, iFp)
+// __sigsuspend
+//GOW(sigtimedwait, iFppp)
+//GOW(sigvec, iFipp)
+//GOW(sigwait, iFpp)
+//GOW(sigwaitinfo, iFpp)
+GOW(sleep, uFu)
+//GOM(snprintf, iFEpLpV) //%%
+//GOM(__snprintf_chk, iFEpLiipV) //%%
+//GOM(__snprintf, iFEpLpV) //%%
+// sockatmark
+GOW(socket, iFiii)
+//GOW(socketpair, iFiiip)
+//GO(splice, iFipipuu)
+//GOM(sprintf, iFEppV) //%%
+//GOM(__sprintf_chk, iFEpvvpV) //%%
+// sprofil  // Weak
+GOW(srand, vFu)
+GO(srand48, vFi)
+// srand48_r    // Weak
+GOW(srandom, vFu)
+//GOW(srandom_r, iFup)
+//GOM(sscanf, iFEppV) //%%
+// ssignal  // Weak
+// sstk
+GOM(__stack_chk_fail, vFEv) //%%
+//GOM(lstat64, iFpp)	//%%,noE
+//GOM(stat64, iFpp)	//%%,noE
+//GOW(statfs, iFpp)
+// __statfs
+//GOWM(statfs64, iFpp)     //%%,noE
+//GO(statvfs, iFpp)
+//GOW(statvfs64, iFpp)    // is alignment ok?
+DATAM(stderr, 4)
+DATAM(stdin, 4)
+DATAM(stdout, 4)
+// step // Weak
+// stime
+//GO(stpcpy, pFpp)
+// __stpcpy
+//GO(__stpcpy_chk, pFppL)
+// __stpcpy_small
+//GOW(stpncpy, pFppL)
+//GO(__stpncpy, pFppL)
+//GO(__stpncpy_chk, pFppLL)
+//GOW(strcasecmp, iFpp)
+//GO(__strcasecmp, iFpp)
+// __strcasecmp_l
+// strcasecmp_l // Weak
+//GOW(strcasestr, pFpp)
+//GO(__strcasestr, pFpp)
+//GO(strcat, pFpp)
+//GO(__strcat_chk, pFppL)
+//GO(strchr, pFpi)
+//GOW(strchrnul, pFpi)
+GO(strcmp, iFpp)
+//GO(strcoll, iFpp)
+//GO(__strcoll_l, iFppp)
+//GOW(strcoll_l, iFppp)
+//GO(strcpy, pFpp)
+//GO(__strcpy_chk, pFppL)
+// __strcpy_small
+GO(strcspn, LFpp)
+// __strcspn_c1
+// __strcspn_c2
+// __strcspn_c3
+//GOW(strdup, pFp)
+//GO(__strdup, pFp)
+//GO(strerror, pFi)
+//GO(strerror_l, pFip)
+//GO(__strerror_r, pFipu)
+//GOW(strerror_r, pFipu)
+//GO(strfmon, lFpLpppppppppp) //vaarg, probably needs align, there are just double...
+// __strfmon_l
+// strfmon_l    // Weak
+// strfry
+//GO(strftime, LFpLpp)
+//GO(__strftime_l, LFpLppL)
+//GOW(strftime_l, LFpLppL)
+//GO(strlen, LFp)
+//GOW(strncasecmp, iFppL)
+// __strncasecmp_l
+// strncasecmp_l    // Weak
+//GO(strncat, pFppL)
+//GO(__strncat_chk, pFppLL)
+//GO(strncmp, iFppL)
+//GO(strncpy, pFppL)
+//GO(__strncpy_chk, pFppLL)
+//GOW(strndup, pFpL)
+//GO(__strndup, pFpL)
+//GO(strnlen, LFpL)
+//GO(strpbrk, pFpp)
+// __strpbrk_c2
+// __strpbrk_c3
+//GO(strptime, pFppp)
+// strptime_l   // Weak
+//GO(strrchr, pFpi)
+//GOW(strsep, pFpp)
+// __strsep_1c
+// __strsep_2c
+// __strsep_3c
+// __strsep_g
+//GO(strsignal, pFi)
+//GO(strspn, LFpp)
+// __strspn_c1
+// __strspn_c2
+// __strspn_c3
+//GO(strstr, pFpp)
+//GO(strtod, dFpp)
+//GO(__strtod_internal, dFppi)
+//GO(__strtod_l, dFppp)
+//GOW(strtod_l, dFppu)
+//GO(strtof, fFpp)
+//GO(__strtof_internal, fFppp)
+//GO(__strtof_l, fFppp)
+//GOW(strtof_l, fFppu)
+//GO(strtoimax, IFppi)
+//GO(strtok, pFpp)
+//GO(__strtok_r, pFppp)
+//GOW(strtok_r, pFppp)
+// __strtok_r_1c
+GO(strtol, lFpBp_i)
+#ifdef HAVE_LD80BITS
+//GO(strtold, DFpp)
+//GO(__strtold_internal, DFppi)
+//GO(__strtold_l, DFppip)
+//GOW(strtold_l, DFppu)
+#else
+//GO(strtold, KFpp)
+//GO2(__strtold_internal, KFppi, __strtod_internal)
+//GO2(__strtold_l, KFppip, __strtod_l)
+//GOW2(strtold_l, KFppu, strtod_l)
+#endif
+//GO(__strtol_internal, lFppi)
+//GO(strtoll, IFppi)
+//GO(__strtol_l, lFppiip)
+//GOW(strtol_l, lFppiip)
+//GO(__strtoll_internal, IFppii)
+//GO(__strtoll_l, IFppip)
+//GOW(strtoll_l, IFppip)
+//GOW(strtoq, IFppi)  // is that ok?
+//GO(strtoul, LFppi)
+//GO(__strtoul_internal, LFppii)
+//GO(strtoull, UFppi)
+//GO(__strtoul_l, uFppip)
+//GOW(strtoul_l, LFppip)
+//GO(__strtoull_internal, UFppii)
+//GO(__strtoull_l, UFppip)
+//GOW(strtoull_l, UFppip)
+//GO(strtoumax, UFppi)
+//GOW(strtouq, UFppi) // ok?
+//GOW(strverscmp, iFpp)
+// __strverscmp
+//GO(strxfrm, uFppu)
+//GO(__strxfrm_l, uFppup)
+//GO(strxfrm_l, uFppup)
+// stty
+// svcauthdes_stats // type B
+// svcerr_auth
+// svcerr_decode
+// svcerr_noproc
+// svcerr_noprog
+// svcerr_progvers
+// svcerr_systemerr
+// svcerr_weakauth
+// svc_exit
+// svcfd_create
+// svc_fdset    // type B
+// svc_getreq
+// svc_getreq_common
+// svc_getreq_poll
+// svc_getreqset
+// svc_max_pollfd   // type B
+// svc_pollfd   // type B
+// svcraw_create
+// svc_register
+// svc_run
+// svc_sendreply
+// svctcp_create
+// svcudp_bufcreate
+// svcudp_create
+// svcudp_enablecache
+// svcunix_create
+// svcunixfd_create
+// svc_unregister
+//GO(swab, vFppi)
+GOM(swapcontext, iFEpp) //%%
+// swapoff  // Weak
+// swapon   // Weak
+//GOM(swprintf, iFEpupV) //%%
+//GOM(__swprintf_chk, iFEpuiupV) //%%
+//GO2(swscanf, iFppV, vswscanf)     // swscanf va_list is only pointer, no realign to do
+//GOW(symlink, iFpp)
+//GO(symlinkat, iFpip)
+GO(sync, vFv)
+GO(syncfs, iFi)
+// sync_file_range
+GOM(syscall, uFEV) //%%
+GOW(sysconf, lFi)
+GO(__sysconf, lFi)
+// sysctl   // Weak
+//GO(__sysctl, iFp)
+//DATA(_sys_errlist, 4)
+//DATA(sys_errlist, 4)
+//GO(sysinfo, iFp)
+//GO2(syslog, vFipV, vsyslog)
+//GO2(__syslog_chk, vFiipV, __vsyslog_chk)
+//DATA(_sys_nerr, 4)    // type R
+//DATA(sys_nerr, 4) // type R
+//DATA(sys_sigabbrev, 4)
+//DATA(_sys_siglist, 4)
+//DATA(sys_siglist, 4)
+//GOW(system, iFp)          // Need to wrap to use box86 if needed?
+//GOM(__sysv_signal, pFEip) //%%
+//GOWM(sysv_signal, pFEip)  //%%
+GOW(tcdrain, iFi)
+GO(tcflow, iFii)
+GO(tcflush, iFii)
+//GOW(tcgetattr, iFip)
+GO(tcgetpgrp, iFi)
+// tcgetsid
+GO(tcsendbreak, iFii)
+//GO(tcsetattr, iFiip)
+GO(tcsetpgrp, iFii)
+// tdelete  // Weak
+// tdestroy // Weak
+// tee
+//GO(telldir, iFp)
+//GO(tempnam, pFpp)
+//GOW(textdomain, pFp)
+// tfind    // Weak
+//GO(time, LFp)
+//GO(timegm, LFp)
+// timelocal    // Weak
+GO(timerfd_create, iFii)
+//GO(timerfd_gettime, iFip)
+//GO(timerfd_settime, iFiipp)
+//GOW(times, iFp)
+//DATAV(timezone, 4)
+//DATAB(__timezone, 4)   // type B
+//GO(tmpfile, pFv)
+//GO(tmpfile64, pFv)
+//GO(tmpnam, pFp)
+//GO(tmpnam_r, pFp)
+GO(toascii, iFi)
+// __toascii_l  // Weak
+GO(tolower, iFi)
+// _tolower
+// __tolower_l
+//GOW(tolower_l, iFip)
+GO(toupper, iFi)
+// _toupper
+// __toupper_l
+//GOW(toupper_l, iFip)
+// towctrans    // Weak
+// __towctrans
+// __towctrans_l
+// towctrans_l  // Weak
+GO(towlower, iFi)
+//GO(__towlower_l, iFip)
+//GOW(towlower_l, iFip)
+//GO(towupper, iFi)
+//GO(__towupper_l, iFip)
+//GOW(towupper_l, iFip)
+// tr_break
+//GOW(truncate, iFpu)
+//GO(truncate64, iFpU)
+// tsearch  // Weak
+//GO(ttyname, pFi)
+//GOW(ttyname_r, iFipu)
+// __ttyname_r_chk
+// ttyslot
+// twalk    // Weak
+//DATAV(tzname, 4)
+//DATA(__tzname, 4)
+GOW(tzset, vFv)
+// ualarm
+//GO(__uflow, iFp)
+// ulckpwdf // Weak
+// ulimit   // Weak
+GOW(umask, uFu)
+//GOW(umount, iFp)
+//GOW(umount2, iFpi)
+//GOWM(uname, iFp) //%%,noE
+//GO(__underflow, iFp)
+//GOW(ungetc, iFip)
+//GO(ungetwc, iFip)
+//GOW(unlink, iFp)
+//GO(unlinkat, iFipi)
+GO(unlockpt, iFi)
+//GOW(unsetenv, iFp)
+// unshare
+//GOW(updwtmp, vFpp)
+// updwtmpx
+// uselib
+GOW(uselocale, aFa)
+GO(__uselocale, aFa)
+// user2netname
+GO(usleep, iFu)
+// ustat
+//GO(utime, iFpp)
+//GO(utimensat, iFippi)
+//GOW(utimes, iFpp)   //TODO: check, signature is int utimes(const char *filename, const struct timeval times[2]);
+//GOW(utmpname, iFp)
+// utmpxname
+//GOW(valloc, pFu)
+//GOM(vasprintf, iFEpppp) //%%
+//GOM(__vasprintf_chk, iFEpippp) //%%
+// vdprintf // Weak
+// __vdprintf_chk
+//GOM(verr, vFEpV) //%%
+// verrx
+//GO(versionsort, iFpp)
+//GO(versionsort64, iFpp) //need to align dirent64?
+GOWM(vfork, iFEv) //%%
+// __vfork
+//GOM(vfprintf, iFEppp) //%%
+//GOM(__vfprintf_chk, iFEpvpp) //%%
+//GOWM(vfscanf, iFEppp)  //%%
+// __vfscanf
+//GOWM(vfwprintf, iFEppp)    //%%
+//GO2(__vfwprintf_chk, iFEpvpp, my_vfwprintf)
+//GOW(vfwscanf, iFppp)
+// vhangup
+// vlimit
+// vmsplice
+//GOM(vprintf, iFEpp)               //%%
+//GOM(__vprintf_chk, iFEvpp)        //%%
+// vscanf   // Weak
+//GOWM(vsnprintf, iFEpLppp)         //%%
+//GOWM(__vsnprintf, iFEpuppp)       //%%
+//GOM(__vsnprintf_chk, iFEpuvvppp)  //%%
+//GOWM(vsprintf, iFEppp)            //%%
+//GOM(__vsprintf_chk, iFEpiLpp)     //%% 
+//GOM(vsscanf, iFEppp) //%%
+// __vsscanf    // Weak
+//GOWM(vswprintf, iFEpuppp)         //%%
+//GOWM(__vswprintf_chk, iFEpLiLppp) //%%
+//GO(vswscanf, iFppp)
+//GO(vsyslog, vFipp)
+//GO(__vsyslog_chk, vFiipp)
+// vtimes
+//GOM(vwarn, vFEppp) //%%
+// vwarnx
+//GOM(vwprintf, iFEpp) //%%
+//GO2(__vwprintf_chk, iFEvpp, my_vwprintf)
+//GO(vwscanf, iFpp)
+//GOW(wait, iFp)
+//GOW(__wait, iFp)
+//GOW(wait3, iFpip)
+//GOW(wait4, iFipip)
+//GOW(waitid, iFiipi)
+//GOW(waitpid, lFlpi)
+//GOW(__waitpid, lFlpi)
+//GO(warn, vFppppppppp)
+//GO(warnx, vFppppppppp)
+//GOW(wcpcpy, pFpp)
+// __wcpcpy_chk
+//GOW(wcpncpy, pFpp)
+// __wcpncpy_chk
+//GOW(wcrtomb, LFpip)
+// __wcrtomb_chk
+//GOW(wcscasecmp, iFpp)
+// __wcscasecmp_l
+//GOW(wcscasecmp_l, iFppp)
+//GOW(wcscat, pFpp)
+//GO(__wcscat_chk, pFppu)
+//GO(wcschr, pFpi)
+// wcschrnul    // Weak
+//GO(wcscmp, iFpp)
+//GOW(wcscoll, iFpp)
+//GO(__wcscoll_l, iFppp)
+//GOW(wcscoll_l, iFppp)
+//GO(wcscpy, pFpp)
+//GO(__wcscpy_chk, pFppu)
+//GO(wcscspn, uFpp)
+//GO(wcsdup, pFp)
+//GO(wcsftime, LFpLpp)
+//GO(__wcsftime_l, LFpLppp)
+//GOW(wcsftime_l, LFpLppp)
+//GOW(wcslen, LFp)
+//GOW(wcsncasecmp, iFppu)
+// __wcsncasecmp_l
+//GOW(wcsncasecmp_l, iFppup)
+//GO(wcsncat, pFppu)
+// __wcsncat_chk
+//GO(wcsncmp, iFppu)
+//GOW(wcsncpy, pFppu)
+//GO(__wcsncpy_chk, pFppuu)
+//GOW(wcsnlen, LFpL)
+//GOW(wcsnrtombs, LFppLLp)
+// __wcsnrtombs_chk
+//GO(wcspbrk, pFpp)
+//GO(wcsrchr, pFpi)
+//GOW(wcsrtombs, uFppup)
+// __wcsrtombs_chk
+//GO(wcsspn, uFpp)
+//GO(wcsstr, pFpp)
+//GO(wcstod, dFpp)
+//GO(__wcstod_internal, dFppi)
+// __wcstod_l
+// wcstod_l // Weak
+//GO(wcstof, fFpp)
+// __wcstof_internal
+// __wcstof_l
+// wcstof_l // Weak
+// wcstoimax
+//GO(wcstok, pFppp)
+//GO(wcstol, iFppi)
+//GO(wcstold, DFpp)
+// __wcstold_internal
+// __wcstold_l
+// wcstold_l    // Weak
+//GO(__wcstol_internal, iFppii)
+//GO(wcstoll, IFppi)
+// __wcstol_l
+// wcstol_l // Weak
+// __wcstoll_internal
+// __wcstoll_l
+// wcstoll_l    // Weak
+//GO(wcstombs, uFppu)
+// __wcstombs_chk
+// wcstoq   // Weak
+//GO(wcstoul, iFppi)
+//GO(__wcstoul_internal, LFppii)
+//GO(wcstoull, UFppi)
+// __wcstoul_l
+// wcstoul_l    // Weak
+// __wcstoull_internal
+// __wcstoull_l
+// wcstoull_l   // Weak
+// wcstoumax
+// wcstouq  // Weak
+// wcswcs   // Weak
+//GO(wcswidth, iFpu)
+//GO(wcsxfrm, uFppu)
+//GOW(wcsxfrm_l, uFppup)
+//GO(__wcsxfrm_l, uFppup)
+GO(wctob, iFi)
+//GO(wctomb, iFpi)
+//GO(__wctomb_chk, iFpuL)
+// wctrans  // Weak
+// __wctrans_l
+// wctrans_l    // Weak
+//GOW(wctype, uFp)
+GO(__wctype_l, uFpa)
+GOW(wctype_l, uFpa)
+//GO(wcwidth, iFu)
+//GOW(wmemchr, pFpuL)
+GO(wmemcmp, iFppL)
+GOW(wmemcpy, pFppL)
+GO(__wmemcpy_chk, pFppLL)
+//GOW(wmemmove, pFppL)
+// __wmemmove_chk
+// wmempcpy // Weak
+// __wmempcpy_chk
+//GO(wmemset, pFpuL)
+// __wmemset_chk
+//GO(wordexp, iFppi)
+//GO(wordfree, vFp)
+// __woverflow
+//GOM(wprintf, iFEpV) //%%
+//GOM(__wprintf_chk, iFEipV) //%%
+//GOW(write, lFipL)
+//GOW(__write, lFipL)
+//GOW(writev, lFipi)
+// wscanf
+// __wuflow
+// __wunderflow
+// xdecrypt
+// xdr_accepted_reply
+// xdr_array
+// xdr_authdes_cred
+// xdr_authdes_verf
+// xdr_authunix_parms
+// xdr_bool
+// xdr_bytes
+// xdr_callhdr
+// xdr_callmsg
+// xdr_char
+// xdr_cryptkeyarg
+// xdr_cryptkeyarg2
+// xdr_cryptkeyres
+// xdr_des_block
+// xdr_double
+// xdr_enum
+// xdr_float
+// xdr_free
+// xdr_getcredres
+// xdr_hyper
+//GO(xdr_int, iFpp)
+// xdr_int16_t
+// xdr_int32_t
+// xdr_int64_t
+// xdr_int8_t
+// xdr_keybuf
+// xdr_key_netstarg
+// xdr_key_netstres
+// xdr_keystatus
+// xdr_long
+// xdr_longlong_t
+// xdrmem_create
+// xdr_netnamestr
+// xdr_netobj
+// xdr_opaque
+// xdr_opaque_auth
+// xdr_pmap
+// xdr_pmaplist
+// xdr_pointer
+// xdr_quad_t
+// xdrrec_create
+// xdrrec_endofrecord
+// xdrrec_eof
+// xdrrec_skiprecord
+// xdr_reference
+// xdr_rejected_reply
+// xdr_replymsg
+// xdr_rmtcall_args
+// xdr_rmtcallres
+// xdr_short
+// xdr_sizeof
+// xdrstdio_create
+// xdr_string
+// xdr_u_char
+// xdr_u_hyper
+//GO(xdr_u_int, iFpp)
+// xdr_uint16_t
+// xdr_uint32_t
+// xdr_uint64_t
+// xdr_uint8_t
+// xdr_u_long
+// xdr_u_longlong_t
+// xdr_union
+// xdr_unixcred
+// xdr_u_quad_t
+// xdr_u_short
+// xdr_vector
+// xdr_void
+// xdr_wrapstring
+// xencrypt
+//GO(__xmknod, iFipup)
+//GO(__xmknodat, iFiipip)
+//GO(__xpg_basename, pFp)
+// __xpg_sigpause   // Weak
+//GO(__xpg_strerror_r, pFipu)
+// xprt_register
+// xprt_unregister
+//GOM(__xstat, iFEipp) //%%
+//GOM(__xstat64, iFEipp) //%%
+
+// forcing a custom __gmon_start__ that does nothing
+GOM(__gmon_start__, vFEv) //%%
+
+GOM(_Jv_RegisterClasses, vFv)   //%%,noE dummy
+
+GOM(__fdelt_chk, LFL) //%%,noE
+
+GOM(getauxval, uFEu)  //%% implemented since glibc 2.16
+
+//GOM(prlimit64, lFpupp)       //%%,noE
+//GO(process_vm_readv, lFipLpLL)
+//GO(process_vm_writev, lFipLpLL)
+//GOM(reallocarray, pFpLL)     //%%,noE
+//GOM(__open_nocancel, iFEpOV) //%%
+//GO2(__read_nocancel, lFipL, read)
+GO2(__close_nocancel, iFi, close)
+
+//GOM(mkstemps64, iFEpi)   //%% not always implemented
+//GOM(getentropy, iFEpL)   //%% starting from glibc 2.25
+
+// not found (libitm???), but it seems OK to declare dummies:
+
+//GOM(_ITM_RU1, uFp)          //%%,noE
+//GOM(_ITM_RU4, uFp)          //%%,noE
+//GOM(_ITM_RU8, UFp)
+//GOM(_ITM_memcpyRtWn, vFppu) //%%,noE register(2)
+//GOM(_ITM_memcpyRnWt, vFppu) //%%,noE register(2)
+//GOM(_ITM_addUserCommitAction, vFEpup)
+GOM(_ITM_registerTMCloneTable, vFEpu)  //%%
+GOM(_ITM_deregisterTMCloneTable, vFEp) //%%
+
+GOM(__umoddi3, UFUU)        //%%,noE
+GOM(__udivdi3, UFUU)        //%%,noE
+GOM(__divdi3, IFII)         //%%,noE
+//GOM(__poll_chk, iFpuii)     //%%,noE
+
+GOM(fallocate64, iFiiII)    //%%,noE
+
+//DATAM(__libc_stack_end, sizeof(void*))
+
+//DATAM(___brk_addr, 4)
+//DATA(__libc_enable_secure, 4)
+
+//GOM(__register_frame_info, vFpp)  //%%,noE faked function
+//GOM(__deregister_frame_info, pFp) //%%,noE
+
+//GO(name_to_handle_at, iFipppi) // only glibc 2.14+, so may not be present...
+
+//GOM(modify_ldt, iFEipL) // there is suposedly no glibc wrapper for this one
+
+#ifdef ANDROID
+GOM(__libc_init, vFEpppp)
+GO(__errno, pFv)
+#else
+// Those symbols don't exist in non-Android builds
+//GOM(__libc_init,
+//GO(__errno,
+#endif
+
+//GOM(stat,
+//GOM(lstat,
+//GOM(fstat,
+//GO(setprogname,
+//GO(getprogname,
+
+DATAM(__libc_single_threaded, 4)	//B type
diff --git a/src/wrapped32/wrappedlibdl.c b/src/wrapped32/wrappedlibdl.c
new file mode 100755
index 00000000..c3a79feb
--- /dev/null
+++ b/src/wrapped32/wrappedlibdl.c
@@ -0,0 +1,165 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <elf.h>
+#include <link.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "emu/x64emu_private.h"
+#include "library.h"
+#include "librarian.h"
+#include "box32context.h"
+#include "elfloader.h"
+#include "elfs/elfloader_private.h"
+#include "x64emu.h"
+
+
+#define LIBNAME libdl
+#ifdef ANDROID
+    static const char* libdlName = "libdl.so";
+#else
+    static const char* libdlName = "libdl.so.2";
+#endif
+
+void* my_dlopen(x64emu_t* emu, void *filename, int flag) EXPORT;
+void* my_dlmopen(x64emu_t* emu, void* mlid, void *filename, int flag) EXPORT;
+char* my_dlerror(x64emu_t* emu) EXPORT;
+void* my_dlsym(x64emu_t* emu, void *handle, void *symbol) EXPORT;
+int my_dlclose(x64emu_t* emu, void *handle) EXPORT;
+int my32_dladdr(x64emu_t* emu, void *addr, void *info) EXPORT;
+int my32_dladdr1(x64emu_t* emu, void *addr, void *info, void** extra_info, int flags) EXPORT;
+void* my_dlvsym(x64emu_t* emu, void *handle, void *symbol, const char *vername) EXPORT;
+int my32_dlinfo(x64emu_t* emu, void* handle, int request, void* info) EXPORT;
+
+#ifndef RTLD_DL_SYMENT
+#define RTLD_DL_SYMENT 1
+#endif
+#ifndef RTLD_DL_LINKMAP
+#define RTLD_DL_LINKMAP 2
+#endif
+
+void dl_clear_error();
+#define CLEARERR    dl_clear_error()
+void dl_set_error(const char*);
+char* dl_last_error();
+library_t* dl_get_library(void* handle);
+
+typedef struct my_dl_info_32_s
+{
+  ptr_t dli_fname;	// const char*
+  ptr_t dli_fbase;	// void*
+  ptr_t dli_sname;	// const char*
+  ptr_t dli_saddr;	// void*
+} my_dl_info_32_t;
+
+int my32_dladdr1(x64emu_t* emu, void *addr, void *i, void** extra_info, int flags)
+{
+    //int dladdr(void *addr, my_dl_info_32_t *info);
+    CLEARERR;
+    my_dl_info_32_t *info = (my_dl_info_32_t*)i;
+    printf_log(LOG_DEBUG, "Warning: partially unimplement call to dladdr/dladdr1(%p, %p, %p, %d)\n", addr, info, extra_info, flags);
+    
+    //emu->quit = 1;
+    library_t* lib = NULL;
+    info->dli_saddr = 0;
+    info->dli_fname = 0;
+    void* start = NULL;
+    const char* fname = NULL;
+    void* base = NULL;
+    const char* sname = FindSymbolName(my_context->maplib, addr, &start, NULL, &fname, &base, &lib);
+    info->dli_saddr = to_ptrv(start);
+    info->dli_fname = to_ptrv((void*)fname);
+    info->dli_fbase = to_ptrv(base);
+    info->dli_sname = to_ptrv((void*)sname);
+    printf_log(LOG_DEBUG, "     dladdr return saddr=%p, fname=\"%s\", sname=\"%s\"\n", start, sname?sname:"", fname?fname:"");
+    if(flags==RTLD_DL_SYMENT) {
+        printf_log(LOG_INFO, "Warning, unimplement call to dladdr1 with RTLD_DL_SYMENT flags\n");
+    } else if (flags==RTLD_DL_LINKMAP) {
+        printf_log(LOG_INFO, "Warning, unimplemented call to dladdr1 with RTLD_DL_LINKMAP flags\n");
+        *(ptr_t*)extra_info = to_ptrv(getLinkMapLib32(lib));
+    }
+    return (info->dli_sname)?1:0;   // success is non-null here...
+}
+int my32_dladdr(x64emu_t* emu, void *addr, void *i)
+{
+    return my32_dladdr1(emu, addr, i, NULL, 0);
+}
+
+int my32_dlinfo(x64emu_t* emu, void* handle, int request, void* info)
+{
+    (void)emu;
+    printf_dlsym(LOG_DEBUG, "Call to dlinfo(%p, %d, %p)\n", handle, request, info);
+    CLEARERR;
+    library_t *lib = dl_get_library(handle);
+    if(lib==(library_t*)-1LL) {
+        printf_dlsym(LOG_DEBUG, "dlinfo: %s\n", dl_last_error());
+        return -1;
+    }
+    //elfheader_t *h = (GetElfIndex(lib)>-1)?my_context->elfs[GetElfIndex(lib)]:NULL;
+    switch(request) {
+        case 2: // RTLD_DI_LINKMAP
+            {
+                *(linkmap32_t**)info = getLinkMapLib32(lib);
+            }
+            return 0;
+        default:
+            printf_log(LOG_NONE, "Warning, unsupported call to dlinfo(%p, %d, %p)\n", handle, request, info);
+            {
+                char tmp[129] = {0};
+                snprintf(tmp, 129, "unsupported call to dlinfo request:%d\n", request);
+                dl_set_error(tmp);
+            }
+    }
+    return -1;
+}
+
+typedef struct my_dl_find_object_s {
+    uint64_t    dlfo_flags;
+    ptr_t       dlfo_map_start;
+    ptr_t       dlfo_map_end;
+    ptr_t       dlf_link_map;   //struct link_map *
+    ptr_t       dlfo_eh_frame;
+    // other stuff...
+} my_dl_find_object_t;
+
+EXPORT int my32__dl_find_object(x64emu_t* emu, void* addr, my_dl_find_object_t* result)
+{
+    //printf_log(LOG_INFO, "Unimplemented _dl_find_object called\n");
+    uintptr_t start=0, sz=0;
+    elfheader_t* h = FindElfAddress(my_context, (uintptr_t)addr);
+    if(h) {
+        // find an actual elf
+        const char* name = FindNearestSymbolName(h, addr, &start, &sz);
+        result->dlfo_map_start = start;
+        result->dlfo_map_end = start+sz-1;
+        result->dlfo_eh_frame = h->ehframehdr+h->delta;
+        result->dlfo_flags = 0;   // unused it seems
+        result->dlf_link_map = to_ptrv(getLinkMapElf32(h));
+        return 0;
+    }
+    return -1;
+}
+
+//#define CUSTOM_INIT\
+//        if(!box32_isglibc234) setNeededLibs(lib, 1, "libc.so.6");
+
+
+void closeAllDLOpenned();
+
+#define PRE_INIT\
+    if(1)                                                           \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);    \
+    else
+
+#define CUSTOM_FINI \
+    closeAllDLOpenned();
+
+// define all standard library functions
+#include "wrappedlib_init32.h"
diff --git a/src/wrapped32/wrappedlibdl_private.h b/src/wrapped32/wrappedlibdl_private.h
new file mode 100755
index 00000000..5df76d7d
--- /dev/null
+++ b/src/wrapped32/wrappedlibdl_private.h
@@ -0,0 +1,15 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA) && defined(GOS))
+#error Meh...
+#endif
+
+GOM(dladdr, iFEpp)
+GOM(dladdr1, iFEpppi)
+GO2(dlclose, iFEp, my_dlclose)
+GO2(dlerror, pFEv, my_dlerror)
+//DATAB(_dlfcn_hook, 4)
+GOM(dlinfo, iFEpip)
+GO2(dlmopen, pFEppi, my_dlmopen)
+GO2(dlopen, pFEpi, my_dlopen)
+GO2(dlsym, pFEpp, my_dlsym)
+GO2(dlvsym, pFEppp, my_dlvsym)   // Weak
+GOM(_dl_find_object, iFEpp)
diff --git a/src/wrapped32/wrappedlibm.c b/src/wrapped32/wrappedlibm.c
new file mode 100755
index 00000000..a36a3227
--- /dev/null
+++ b/src/wrapped32/wrappedlibm.c
@@ -0,0 +1,154 @@
+#define _GNU_SOURCE         /* See feature_test_macros(7) */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <complex.h>
+#include <math.h>
+
+#include "wrappedlibs.h"
+
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "debug.h"
+#include "box32.h"
+
+static const char* libmName =
+#ifdef ANDROID
+    "libm.so"
+#else
+    "libm.so.6"
+#endif
+    ;
+#define LIBNAME libm
+
+static library_t* my_lib = NULL;
+
+typedef float   (*fFff_t)   (float, float);
+typedef double  (*dFdd_t)   (double, double);
+typedef float   (*fFf_t)    (float);
+typedef double  (*dFd_t)    (double);
+#if 0
+typedef union my_float_complex_s {
+    float complex   f;
+    uint64_t        u64;
+} my_float_complex_t;
+
+// complex <- FUNC(complex) wrapper
+#define GO_cFc(N)                                   \
+EXPORT void* my_##N(void* p, void* c)               \
+{                                                   \
+    *(double complex*)p = N(*(double complex*)c);   \
+    return p;                                       \
+}                                                   \
+EXPORT uint64_t my_##N##f(void* c)                  \
+{                                                   \
+    my_float_complex_t ret;                         \
+    ret.f = N##f(*(float complex*)c);               \
+    return ret.u64;                                 \
+}
+// complex <- FUNC(complex, complex) wrapper
+#define GO_cFcc(N)                                  \
+EXPORT void* my_##N(void* p, void* c, void* d)      \
+{                                                   \
+    *(double complex*)p = N(*(double complex*)c, *(double complex*)d);   \
+    return p;                                       \
+}                                                   \
+EXPORT uint64_t my_##N##f(void* c, void* d)         \
+{                                                   \
+    my_float_complex_t ret;                         \
+    ret.f = N##f(*(float complex*)c, *(float complex*)c);               \
+    return ret.u64;                                 \
+}
+
+GO_cFc(clog)
+GO_cFc(csqrt)
+GO_cFc(cproj)
+GO_cFc(cexp)
+GO_cFc(ccos)
+GO_cFc(csin)
+GO_cFc(ccosh)
+GO_cFc(csinh)
+GO_cFc(ctan)
+GO_cFc(ctanh)
+GO_cFc(cacos)
+GO_cFc(casin)
+GO_cFc(cacosh)
+GO_cFc(casinh)
+GO_cFc(catan)
+GO_cFc(catanh)
+GO_cFcc(cpow)
+
+#undef GO_cFc
+#undef GO_cFcc
+#endif
+
+#define FINITE(N, T, R, P, ...)     \
+EXPORT R my32___##N##_finite P      \
+{                                   \
+    static int check = 0;           \
+    static T f = NULL;              \
+    if(!check) {                    \
+        f = (T)dlsym(my_lib->w.lib, "__" #N "_finite");  \
+        ++check;                    \
+    }                               \
+    if(f)                           \
+        return f(__VA_ARGS__);      \
+    else                            \
+        return N(__VA_ARGS__);      \
+}
+
+#define F1F(N) FINITE(N, fFf_t, float, (float a), a)
+#define F1D(N) FINITE(N, dFd_t, double, (double a), a)
+#define F2F(N) FINITE(N, fFff_t, float, (float a, float b), a, b)
+#define F2D(N) FINITE(N, dFdd_t, double, (double a, double b), a, b)
+
+F2F(powf)
+F2D(pow)
+F1F(sinhf)
+F1D(sinh)
+F1F(sqrtf)
+F1D(sqrt)
+F1F(acosf)
+F1D(acos)
+F1F(acoshf)
+F1D(acosh)
+F1F(asinf)
+F1D(asin)
+F2F(atan2f)
+F2D(atan2)
+F1F(coshf)
+F1D(cosh)
+F1F(exp2f)
+F1D(exp2)
+F1F(expf)
+F1D(exp)
+F2F(hypotf)
+F2D(hypot)
+F1F(log10f)
+F1D(log10)
+F1F(log2f)
+F1D(log2)
+F1F(logf)
+F1D(log)
+
+#undef F2D
+#undef F2F
+#undef F1D
+#undef F1F
+#undef FINITE
+
+#define PRE_INIT\
+    if(1)                                                           \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);    \
+    else
+
+#define CUSTOM_INIT     \
+    my_lib = lib;
+
+#define CUSTOM_FINI     \
+    my_lib = NULL;
+
+#include "wrappedlib_init32.h"
diff --git a/src/wrapped32/wrappedlibm_private.h b/src/wrapped32/wrappedlibm_private.h
new file mode 100755
index 00000000..156cfac6
--- /dev/null
+++ b/src/wrapped32/wrappedlibm_private.h
@@ -0,0 +1,446 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+
+// Complex numbers are passed in as an address in the stack
+
+GOW(acos, dFd)
+GOW(acosf, fFf)
+GOM(__acosf_finite, fFf) //%noE
+GOM(__acos_finite, dFd)  //%noE
+GOW(acosh, dFd)
+GOW(acoshf, fFf)
+GOM(__acoshf_finite, fFf) //%noE
+GOM(__acosh_finite, dFd)  //%noE
+#ifdef HAVE_LD80BITS
+GOW(acoshl, DFD)
+#else
+GOW2(acoshl, KFK, acosh)
+#endif
+#ifdef HAVE_LD80BITS
+GOW(acosl, DFD)
+#else
+GOW2(acosl, KFK, acos)
+#endif
+GOW(asin, dFd)
+GOW(asinf, fFf)
+GOM(__asinf_finite, fFf) //%noE
+GOM(__asin_finite, dFd)  //%noE
+GOW(asinh, dFd)
+GOW(asinhf, fFf)
+#ifdef HAVE_LD80BITS
+GOW(asinhl, DFD)
+#else
+GOW2(asinhl, KFK, asinh)
+#endif
+#ifdef HAVE_LD80BITS
+GOW(asinl, DFD)
+#else
+GOW2(asinl, KFK, asin)
+#endif
+GO(atan, dFd)
+GOW(atan2, dFdd)
+GOW(atan2f, fFff)
+GOM(__atan2f_finite, fFff) //%noE
+GOM(__atan2_finite, dFdd)  //%noE
+// atan2l   // Weak
+GOW(atanf, fFf)
+GOW(atanh, dFd)
+GOW(atanhf, fFf)
+// __atanhf_finite
+// __atanh_finite
+#ifdef HAVE_LD80BITS
+GOW(atanhl, DFD)
+#else
+GOW2(atanhl, KFK, atanh)
+#endif
+// atanl    // Weak
+//GOW(cabs, dFdd)     // only 1 arg, but is a double complex
+GOW(cabsf, fFff)    // only 1 arg, but is a float complex
+// cabsl    // Weak
+//GOWS(cacos, pFps)   //%% complex
+GOWM(cacosf, UFs)   //%noE
+//GOWS(cacosh, pFps)  //%% complex
+GOWM(cacoshf, UFs)  //%noE
+// cacoshl  // Weak
+// cacosl   // Weak
+//GOW(carg, dFdd)     // 1arg, double complex
+GOW(cargf, fFff)    // 1arg, float complex
+// cargl    // Weak
+//GOWS(casin, pFps)   //%%  complex
+GOWM(casinf, UFs)   //%noE
+//GOWS(casinh, pFps)  //%%  complex
+GOWM(casinhf, UFs)  //%noE
+// casinhl  // Weak
+// casinl   // Weak
+//GOWS(catan, pFps)   //%%   complex
+GOWM(catanf, UFs)   //%noE
+//GOWS(catanh, pFps)  //%%   complex
+GOWM(catanhf, UFs)  //%noE
+// catanhl  // Weak
+// catanl   // Weak
+GOW(cbrt, dFd)
+GOW(cbrtf, fFf)
+#ifdef HAVE_LD80BITS
+GOW(cbrtl, DFD)
+#else
+GOW2(cbrtl, KFK, cbrt)
+#endif
+//GOWS(ccos, pFps)    //%%   return complex
+GOWM(ccosf, UFs)    //%noE return complex
+//GOWS(ccosh, pFps)   //%%   return complex
+GOWM(ccoshf, UFs)   //%noE return complex
+// ccoshl   // Weak
+// ccosl    // Weak
+//GOW(ceil, dFd)
+//GOW(ceilf, fFf)
+// ceill    // Weak
+//GOWS(cexp, pFps)     //%%   return complex
+GOWM(cexpf, UFs)     //%noE return complex
+// cexpl    // Weak
+// cimag    // Weak
+// cimagf   // Weak
+// cimagl   // Weak
+//GOS(clog, pFps)   //%% return a double complex, so ret 4
+// clog10   // Weak
+// __clog10
+// clog10f  // Weak
+// __clog10f
+// clog10l  // Weak
+// __clog10l
+GOM(clogf, UFs)    //%noE float complex doesn't trigger the ret 4, but returns an u64!
+// clogl    // Weak
+// conj // Weak
+// conjf    // Weak
+// conjl    // Weak
+GOW(copysign, dFdd)
+GOW(copysignf, fFff)
+// copysignl    // Weak
+GOW(cos, dFd)
+GOW(cosf, fFf)
+GOW(cosh, dFd)
+GOW(coshf, fFf)
+GOM(__coshf_finite, fFf) //%noE
+GOM(__cosh_finite, dFd)  //%noE
+// coshl    // Weak
+// cosl // Weak
+//GOWS(cpow, pFpsvvvvs) //%% return complex
+GOWM(cpowf, UFsvvs)   //%noE
+// cpowl    // Weak
+//GOS(cproj, pFps)    //%%   double complex
+GOM(cprojf, UFs)    //%noE
+// cprojl   // Weak
+// creal    // Weak
+// crealf   // Weak
+// creall   // Weak
+//GOWS(csin, pFps)    //%%   return complex
+GOWM(csinf, UFs)    //%noE return complex
+//GOWS(csinh, pFps)   //%%   return complex
+GOWM(csinhf, UFs)   //%noE return complex
+// csinhl   // Weak
+// csinl    // Weak
+//GOWS(csqrt, pFps)   //%%
+GOWM(csqrtf, UFs)   //%noE
+// csqrtl   // Weak
+//GOWS(ctan, pFps)    //%%   return complex
+GOWM(ctanf, UFs)    //%noE return complex
+//GOWS(ctanh, pFps)   //%%   return complex
+GOWM(ctanhf, UFs)   //%noE return complex
+// ctanhl   // Weak
+// ctanl    // Weak
+// __cxa_finalize  // Weak
+// drem // Weak
+// dremf    // Weak
+// dreml    // Weak
+GOW(erf, dFd)
+GOW(erfc, dFd)
+GOW(erfcf, fFf)
+#ifdef HAVE_LD80BITS
+GOW(erfcl, DFD)
+#else
+GOW2(erfcl, KFK, erfc)
+#endif
+GOW(erff, fFf)
+#ifdef HAVE_LD80BITS
+GOW(erfl, DFD)
+#else
+GOW2(erfl, KFK, erf)
+#endif
+GOW(exp, dFd)
+GOW(exp10, dFd)
+GOW(exp10f, fFf)
+// __exp10f_finite
+// __exp10_finite
+// exp10l   // Weak
+GOW(exp2, dFd)
+GOW(exp2f, fFf)
+GOM(__exp2f_finite, fFf) //%noE
+GOM(__exp2_finite, dFd)  //%noE
+// exp2l    // Weak
+GOW(expf, fFf)
+GOM(__expf_finite, fFf) //%noE
+GOM(__exp_finite, dFd)  //%noE
+// expl // Weak
+GOW(expm1, dFd)
+GOW(expm1f, fFf)
+// expm1l   // Weak
+GOW(fabs, dFd)
+GOW(fabsf, fFf)
+// fabsl    // Weak
+// fdim // Weak
+// fdimf    // Weak
+// fdiml    // Weak
+GO(feclearexcept, iFi)
+GO(fedisableexcept, iFi)
+GO(feenableexcept, iFi)
+GO(fegetenv, iFp)
+GO(fegetexcept, iFv)
+GO(fegetexceptflag, iFpi)
+GO(fegetround, iFv)
+GO(feholdexcept, iFp)
+GO(feraiseexcept, iFi)
+GO(fesetenv, iFp)
+GO(fesetexceptflag, iFpi)
+GO(fesetround, iFi)
+GO(fetestexcept, iFi)
+GO(feupdateenv, iFp)
+GOW(finite, iFd)
+// __finite
+GOW(finitef, iFf)
+GO(__finitef, iFf)
+// finitel  // Weak
+// __finitel
+GOW(floor, dFd)
+GOW(floorf, fFf)
+// floorl   // Weak
+GOW(fma, dFddd)
+GOW(fmaf, fFfff)
+// fmal // Weak
+GOW(fmax, dFdd)
+GOW(fmaxf, fFff)
+// fmaxl    // Weak
+GOW(fmin, dFdd)
+GOW(fminf, fFff)
+// fminl    // Weak
+GOW(fmod, dFdd)
+GOW(fmodf, fFff)
+// __fmodf_finite
+// __fmod_finite
+#ifdef HAVE_LD80BITS
+GOW(fmodl, DFDD)
+#else
+GOW2(fmodl, KFKK, fmod)
+#endif
+GO(__fpclassify, iFd)
+GO(__fpclassifyf, iFf)
+GOW(frexp, dFdp)
+GOW(frexpf, fFfp)
+#ifdef HAVE_LD80BITS
+GOW(frexpl, DFDp)
+#else
+GOW2(frexpl, KFKp, frexp)
+#endif
+// gamma    // Weak
+// gammaf   // Weak
+// __gammaf_r_finite
+// gammal   // Weak
+// __gamma_r_finite
+// __gmon_start__  // Weak
+GOW(hypot, dFdd)
+GOW(hypotf, fFff)
+GOM(__hypotf_finite, fFff) //%noE
+GOM(__hypot_finite, dFdd)  //%noE
+// hypotl   // Weak
+GOW(ilogb, iFd)
+GOW(ilogbf, iFf)
+// ilogbl   // Weak
+// __issignaling
+// __issignalingf
+// _ITM_deregisterTMCloneTable // Weak
+// _ITM_registerTMCloneTable   // Weak
+GO(j0, dFd)
+GO(j0f, fFf)
+// __j0f_finite
+// __j0_finite
+// j0l
+GO(j1, dFd)
+GO(j1f, fFf)
+// __j1f_finite
+// __j1_finite
+// j1l
+GO(jn, dFid)
+GO(jnf, fFif)
+// __jnf_finite
+// __jn_finite
+// jnl
+GOW(ldexp, dFdi)
+GOW(ldexpf, fFfi)
+#ifdef HAVE_LD80BITS
+GOW(ldexpl, DFD)
+#else
+GOW2(ldexpl, KFK, ldexp)
+#endif
+GOW(lgamma, dFd)
+GOW(lgammaf, fFf)
+GOW(lgammaf_r, fFfp)
+// __lgammaf_r_finite
+#ifdef HAVE_LD80BITS
+GOW(lgammal, DFD)
+#else
+GOW2(lgammal, KFK, lgamma)
+#endif
+#ifdef HAVE_LD80BITS
+GOW(lgammal_r, DFDp)
+#else
+GOW2(lgammal_r, KFKp, lgamma_r)
+#endif
+GOW(lgamma_r, dFdp)
+// __lgamma_r_finite
+DATAV(_LIB_VERSION, 4)
+GOW(llrint, IFd)
+GOW(llrintf, IFf)
+// llrintl  // Weak
+GOW(llround, IFd)
+GOW(llroundf, IFf)
+// llroundl // Weak
+GOW(log, dFd)
+GOW(log10, dFd)
+GOW(log10f, fFf)
+GOM(__log10f_finite, fFf) //%noE
+GOM(__log10_finite, dFd)  //%noE
+// log10l   // Weak
+GOW(log1p, dFd)
+GOW(log1pf, fFf)
+// log1pl   // Weak
+GOW(log2, dFd)
+GOW(log2f, fFf)
+GOM(__log2f_finite, fFf) //%noE
+GOM(__log2_finite, dFd)  //%noE
+// log2l    // Weak
+GOW(logb, dFd)
+GOW(logbf, fFf)
+// logbl    // Weak
+GOW(logf, fFf)
+GOM(__logf_finite, fFf) //%noE
+GOM(__log_finite, dFd)  //%noE
+#ifdef HAVE_LD80BITS
+GOW(logl, DFD)
+#else
+GOW2(logl, KFK, log)
+#endif
+GOW(lrint, iFd)
+GOW(lrintf, iFf)
+// lrintl   // Weak
+GOW(lround, iFd)
+GOW(lroundf, iFf)
+// lroundl  // Weak
+// matherr  // Weak
+GOW(modf, dFdp)
+GOW(modff, fFfp)
+// modfl    // Weak
+// nan  // Weak
+// nanf // Weak
+// nanl // Weak
+GOW(nearbyint, dFd)
+GOW(nearbyintf, fFf)
+// nearbyintl   // Weak
+GOW(nextafter, dFdd)
+GOW(nextafterf, fFff)
+// nextafterl   // Weak
+GOW(nexttoward, dFdD)
+GOW(nexttowardf, fFfD)
+// nexttowardl  // Weak
+GOW(pow, dFdd)
+GOW(pow10, dFd)
+GOW(pow10f, fFf)
+#ifdef HAVE_LD80BITS
+GOWM(pow10l, DFD)   //%noE
+#else
+GOWM(pow10l, KFK)   //%noE
+#endif
+GOW(powf, fFff)
+GOM(__powf_finite, fFff) //%noE
+GOM(__pow_finite, dFdd)  //%noE
+#ifdef HAVE_LD80BITS
+GOW(powl, DFDD)
+#else
+GOW2(powl, KFKK, pow)
+#endif
+GOW(remainder, dFdd)
+GOW(remainderf, fFff)
+// __remainderf_finite
+// __remainder_finite
+// remainderl   // Weak
+GOW(remquo, dFddp)
+GOW(remquof, fFffp)
+// remquol  // Weak
+GOW(rint, dFd)
+GOW(rintf, fFf)
+// rintl    // Weak
+GOW(round, dFd)
+GOW(roundf, fFf)
+// roundl   // Weak
+// scalb    // Weak
+// scalbf   // Weak
+// __scalbf_finite
+// __scalb_finite
+// scalbl   // Weak
+GOW(scalbln, dFdi)
+GOW(scalblnf, fFfi)
+// scalblnl // Weak
+GOW(scalbn, dFdi)
+GOW(scalbnf, fFfi)
+// scalbnl  // Weak
+// __signbit
+// __signbitf
+DATAB(signgam, 4)
+// significand  // Weak
+// significandf // Weak
+// significandl // Weak
+GOW(sin, dFd)
+GOW(sincos, vFdpp)
+GOW(sincosf, vFfpp)
+// sincosl  // Weak
+GOW(sinf, fFf)
+GOW(sinh, dFd)
+GOW(sinhf, fFf)
+GOM(__sinhf_finite, fFf) //%noE
+GOM(__sinh_finite, dFd)  //%noE
+// sinhl    // Weak
+// sinl // Weak
+GOW(sqrt, dFd)
+GOW(sqrtf, fFf)
+GOM(__sqrtf_finite, fFf) //%noE
+GOM(__sqrt_finite, dFd)  //%noE
+// sqrtl    // Weak
+GO(tan, dFd)
+GOW(tanf, fFf)
+GOW(tanh, dFd)
+GOW(tanhf, fFf)
+// tanhl    // Weak
+// tanl // Weak
+GOW(tgamma, dFd)
+GOW(tgammaf, fFf)
+#ifdef HAVE_LD80BITS
+GOW(tgammal, DFD)
+#else
+GOW2(tgammal, KFK, tgamma)
+#endif
+GOW(trunc, dFd)
+GOW(truncf, fFf)
+// truncl   // Weak
+GO(y0, dFd)
+GO(y0f, fFf)
+// __y0f_finite
+// __y0_finite
+// y0l
+GO(y1, dFd)
+GO(y1f, fFf)
+// __y1f_finite
+// __y1_finite
+// y1l
+GO(yn, dFid)
+GO(ynf, fFif)
+// __ynf_finite
+// __yn_finite
+// ynl
diff --git a/src/wrapped32/wrappedlibpthread.c b/src/wrapped32/wrappedlibpthread.c
new file mode 100755
index 00000000..d7881f6b
--- /dev/null
+++ b/src/wrapped32/wrappedlibpthread.c
@@ -0,0 +1,97 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <errno.h>
+#include <pthread.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "box32context.h"
+#include "librarian.h"
+
+static const char* libpthreadName = "libpthread.so.0";
+#define LIBNAME libpthread
+
+typedef int (*iFpp_t)(void*, void*);
+typedef int (*iFppu_t)(void*, void*, uint32_t);
+EXPORT int my32_pthread_setname_np(x64emu_t* emu, void* t, void* n)
+{
+    static void* f = NULL;
+    static int need_load = 1;
+    if(need_load) {
+        library_t* lib = GetLibInternal(libpthreadName);
+        if(!lib) return 0;
+        f = dlsym(lib->w.lib, "pthread_setname_np");
+        need_load = 0;
+    }
+    if(f)
+        return ((iFpp_t)f)(t, n);
+    return 0;
+}
+EXPORT int my32_pthread_getname_np(x64emu_t* emu, void* t, void* n, uint32_t s)
+{
+    static void* f = NULL;
+    static int need_load = 1;
+    if(need_load) {
+        library_t* lib = GetLibInternal(libpthreadName);
+        if(!lib) return 0;
+        f = dlsym(lib->w.lib, "pthread_getname_np");
+        need_load = 0;
+    }
+    if(f)
+        return ((iFppu_t)f)(t, n, s);
+    else 
+        strncpy((char*)n, "dummy", s);
+    return 0;
+}
+
+EXPORT int my32_pthread_rwlock_wrlock(pthread_rwlock_t *rwlock)
+{
+    return pthread_rwlock_wrlock(rwlock);
+}
+EXPORT int my32_pthread_rwlock_rdlock(pthread_rwlock_t* rwlock)
+{
+    return pthread_rwlock_rdlock(rwlock);
+}
+EXPORT int my32_pthread_rwlock_unlock(pthread_rwlock_t *rwlock)
+{
+    return pthread_rwlock_unlock(rwlock);
+}
+
+EXPORT int32_t my32_pthread_atfork(x64emu_t *emu, void* prepare, void* parent, void* child)
+{
+    // this is partly incorrect, because the emulated functions should be executed by actual fork and not by my32_atfork...
+    if(my_context->atfork_sz==my_context->atfork_cap) {
+        my_context->atfork_cap += 4;
+        my_context->atforks = (atfork_fnc_t*)realloc(my_context->atforks, my_context->atfork_cap*sizeof(atfork_fnc_t));
+    }
+    int i = my_context->atfork_sz++;
+    my_context->atforks[i].prepare = (uintptr_t)prepare;
+    my_context->atforks[i].parent = (uintptr_t)parent;
+    my_context->atforks[i].child = (uintptr_t)child;
+    my_context->atforks[i].handle = NULL;
+    
+    return 0;
+}
+EXPORT int32_t my32___pthread_atfork(x64emu_t *emu, void* prepare, void* parent, void* child) __attribute__((alias("my32_pthread_atfork")));
+
+EXPORT void my32___pthread_initialize()
+{
+    // nothing, the lib initialize itself now
+}
+
+#define PRE_INIT\
+    if(1)                                                       \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);     \
+    else
+
+#include "wrappedlib_init32.h"
+
diff --git a/src/wrapped32/wrappedlibpthread_private.h b/src/wrapped32/wrappedlibpthread_private.h
new file mode 100755
index 00000000..be13d397
--- /dev/null
+++ b/src/wrapped32/wrappedlibpthread_private.h
@@ -0,0 +1,187 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error meh!
+#endif
+// General note: pthread_t is unsigned long int
+// cpu_set_t is a struct with an array, default size is fixed for all architecture
+
+// __errno_location
+// fork
+// __fork
+// __h_errno_location
+// _IO_flockfile
+// _IO_ftrylockfile
+// _IO_funlockfile
+// __libc_allocate_rtsig
+// __libc_current_sigrtmax
+// __libc_current_sigrtmin
+GOM(pthread_atfork, iFEppp)
+GOM(__pthread_atfork, iFEppp)
+GOM(pthread_attr_destroy, iFEp)
+// pthread_attr_getaffinity_np
+GOM(pthread_attr_getdetachstate, iFEpp)
+GOM(pthread_attr_getguardsize, iFEpp)
+GOM(pthread_attr_getinheritsched, iFEpp)
+GOM(pthread_attr_getschedparam, iFEpp)
+GOM(pthread_attr_getschedpolicy, iFEpp)
+GOM(pthread_attr_getscope, iFEpp)
+GOM(pthread_attr_getstack, iFEppp)
+GOM(pthread_attr_getstackaddr, iFEpp)
+GOM(pthread_attr_getstacksize, iFEpp)
+GOM(pthread_attr_init, iFEp)
+GOM(pthread_attr_setaffinity_np, iFEpup)
+GOM(pthread_attr_setdetachstate, iFEpi)
+GOM(pthread_attr_setguardsize, iFEpL)
+GOM(pthread_attr_setinheritsched, iFEpi)
+GOM(pthread_attr_setschedparam, iFEpp)
+GOM(pthread_attr_setschedpolicy, iFEpi)
+GOM(pthread_attr_setscope, iFEpi)
+GOM(pthread_attr_setstack, iFEppL)
+GOM(pthread_attr_setstackaddr, iFEpp)
+GOM(pthread_attr_setstacksize, iFEpL)
+GO(pthread_barrierattr_destroy, iFp)
+GO(pthread_barrierattr_getpshared, iFpp)
+GO(pthread_barrierattr_init, iFp)
+GO(pthread_barrierattr_setpshared, iFpi)
+GO(pthread_barrier_destroy, iFp)
+GO(pthread_barrier_init, iFppu)
+GO(pthread_barrier_wait, iFp)
+GO(pthread_cancel, iFh)
+GOM(_pthread_cleanup_pop, vFEpi)
+GOM(_pthread_cleanup_pop_restore, vFEpi)
+GOM(_pthread_cleanup_push, vFEppp)
+GOM(_pthread_cleanup_push_defer, vFEppp)
+// __pthread_cleanup_routine
+GO(pthread_condattr_destroy, iFp)
+GO(pthread_condattr_getclock, iFpp)
+GO(pthread_condattr_getpshared, iFpp)
+GO(pthread_condattr_init, iFp)
+GO(pthread_condattr_setclock, iFpp)
+GO(pthread_condattr_setpshared, iFpi)
+GO2(pthread_cond_broadcast@GLIBC_2.0, iFEp, my32_pthread_cond_broadcast_old)
+GO2(pthread_cond_destroy@GLIBC_2.0, iFEp, my32_pthread_cond_destroy_old)
+GO2(pthread_cond_init@GLIBC_2.0, iFEpp, my32_pthread_cond_init_old)
+GO2(pthread_cond_signal@GLIBC_2.0, iFEp, my32_pthread_cond_signal_old)
+GO2(pthread_cond_timedwait@GLIBC_2.0, iFEppp, my32_pthread_cond_timedwait_old)
+GO2(pthread_cond_wait@GLIBC_2.0, iFEpp, my32_pthread_cond_wait_old)
+GO(pthread_cond_broadcast, iFp)
+GO(pthread_cond_destroy, iFp)
+GO(pthread_cond_init, iFpp)
+GO(pthread_cond_signal, iFp)
+GOM(pthread_cond_timedwait, iFEppp)
+GOM(pthread_cond_wait, iFEpp)
+GOM(pthread_create, iFEBh_ppp)
+GOM(pthread_detach, iFEh)
+GO(pthread_equal, iFhh)
+GO(pthread_exit, vFp)
+GOM(pthread_getaffinity_np, iFEpup)
+GO(pthread_getattr_np, iFup)
+GO(pthread_getconcurrency, iFv)
+GO(pthread_getcpuclockid, iFup)
+GO(pthread_getschedparam, iFupp)
+GO(__pthread_getspecific, pFu)
+GO(pthread_getspecific, pFu)
+GOM(pthread_getname_np, iFEppu)  //not present on Pandora
+GOM(__pthread_initialize, vFv)  //%noE doesn't exist anymore...
+// __pthread_initialize_minimal
+GO(pthread_join, iFHBp_)
+GOM(__pthread_key_create, iFEpp)
+GOM(pthread_key_create, iFEpp)
+GO(pthread_key_delete, iFu)
+GOM(pthread_kill, iFEpi)
+// pthread_kill_other_threads_np
+GO(__pthread_mutexattr_destroy, iFp)
+GO(pthread_mutexattr_destroy, iFp)
+GO(pthread_mutexattr_getprioceiling, iFpp)
+GO(pthread_mutexattr_getprotocol, iFpp)
+// pthread_mutexattr_getpshared
+// pthread_mutexattr_getrobust_np
+GO(pthread_mutexattr_gettype, iFpp)
+GO(__pthread_mutexattr_init, iFp)
+GO(pthread_mutexattr_init, iFp)
+GO(pthread_mutexattr_setprioceiling, iFpi)
+GO(pthread_mutexattr_setprotocol, iFpp)
+GO(pthread_mutexattr_setpshared, iFpi)
+// pthread_mutexattr_setrobust_np
+GO(__pthread_mutexattr_settype, iFpi)
+GO(pthread_mutexattr_settype, iFpi)
+// pthread_mutex_consistent_np
+GOM(__pthread_mutex_destroy, iFp)  //%noE
+GOM(pthread_mutex_destroy, iFp)    //%noE
+// pthread_mutex_getprioceiling
+GOM(__pthread_mutex_init, iFpp)    //%noE
+GOM(pthread_mutex_init, iFpp)      //%noE
+GOM(__pthread_mutex_lock, iFp)     //%noE
+GOM(pthread_mutex_lock, iFp)       //%noE
+// pthread_mutex_setprioceiling
+GOM(pthread_mutex_timedlock, iFpp) //%noE
+GOM(__pthread_mutex_trylock, iFp)  //%noE
+GOM(pthread_mutex_trylock, iFp)    //%noE
+GOM(__pthread_mutex_unlock, iFp)   //%noE
+GOM(pthread_mutex_unlock, iFp)     //%noE
+GOM(pthread_once, iFEpp)
+GOM(__pthread_once, iFEpp)
+GOM(__pthread_register_cancel, vFEp)
+// __pthread_register_cancel_defer
+GO(pthread_rwlockattr_destroy, vFp)
+GO(pthread_rwlockattr_getkind_np, iFpp)
+// pthread_rwlockattr_getpshared
+GO(pthread_rwlockattr_init, iFp)
+GO(pthread_rwlockattr_setkind_np, iFpi)
+// pthread_rwlockattr_setpshared
+// __pthread_rwlock_destroy
+GO(pthread_rwlock_destroy, iFp)
+GO(__pthread_rwlock_init, iFpp)
+GO(pthread_rwlock_init, iFpp)
+GO(__pthread_rwlock_rdlock, iFp)
+GOM(pthread_rwlock_rdlock, iFp) //%noE
+// pthread_rwlock_timedrdlock
+// pthread_rwlock_timedwrlock
+// __pthread_rwlock_tryrdlock
+GO(pthread_rwlock_tryrdlock, iFp)
+// __pthread_rwlock_trywrlock
+GO(pthread_rwlock_trywrlock, iFp)
+GO(__pthread_rwlock_unlock, iFp)
+GOM(pthread_rwlock_unlock, iFp) //%noE
+GO(__pthread_rwlock_wrlock, iFp)
+GOM(pthread_rwlock_wrlock, iFp) //%noE
+GO(pthread_self, hFv)
+GOM(pthread_setaffinity_np, iFELup)
+GO(pthread_setcancelstate, iFip)
+GO(pthread_setcanceltype, iFip)
+GO(pthread_setconcurrency, iFi)
+GOM(pthread_setname_np, iFEpp)   // not present on the Pandora
+GO(pthread_setschedparam, iFuip)
+GO(pthread_setschedprio, iFpi)
+GO(__pthread_setspecific, iFup)
+GO(pthread_setspecific, iFup)
+GO(pthread_sigmask, iFipp)
+GO(pthread_spin_destroy, iFp)
+GO(pthread_spin_init, iFpi)
+GO(pthread_spin_lock, iFp)
+GO(pthread_spin_trylock, iFp)
+GO(pthread_spin_unlock, iFp)
+GO(pthread_testcancel, vFv)
+GO(pthread_timedjoin_np, iFppp)
+GO(pthread_tryjoin_np, iFpp)
+GOM(__pthread_unregister_cancel, vFEp)
+// __pthread_unregister_cancel_restore
+// __pthread_unwind
+GOM(__pthread_unwind_next, vFEp)
+GO(pthread_yield, iFv)
+// raise
+// __res_state
+GO(sem_close, iFp)
+GO(sem_destroy, iFp)
+GO(sem_getvalue, iFpp)
+GO(sem_init, iFpiu)
+GO(sem_open, pFpOM)
+GO(sem_post, iFp)
+GO(sem_timedwait, iFpp)
+GO(sem_trywait, iFp)
+GO(sem_unlink, iFp)
+GO(sem_wait, iFp)
+// __sigaction
+// system
+// __vfork
+
+GOM(pthread_mutexattr_setkind_np, iFEpi)    // deprecated
diff --git a/src/wrapped32/wrappedlibrt.c b/src/wrapped32/wrappedlibrt.c
new file mode 100755
index 00000000..84b7730e
--- /dev/null
+++ b/src/wrapped32/wrappedlibrt.c
@@ -0,0 +1,80 @@
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <signal.h>
+
+#include "wrappedlibs.h"
+
+#include "debug.h"
+#include "wrapper32.h"
+#include "bridge.h"
+#include "librarian/library_private.h"
+#include "x64emu.h"
+#include "emu/x64emu_private.h"
+#include "callback.h"
+#include "librarian.h"
+#include "box32context.h"
+#include "emu/x64emu_private.h"
+
+#undef aio_suspend
+#undef aio_return
+#undef aio_write
+#undef aio_read
+#undef aio_error
+
+#undef clock_gettime
+
+static const char* librtName = "librt.so.1";
+#define LIBNAME librt
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)
+
+// sigev_notify
+#define GO(A)   \
+static uintptr_t my32_sigev_notify_fct_##A = 0;   \
+static void my32_sigev_notify_##A(void* sigval)    \
+{                                       \
+    RunFunctionFmt(my32_sigev_notify_fct_##A, "p", to_ptrv(sigval));\
+}
+SUPER()
+#undef GO
+static void* findsigev_notifyFct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my32_sigev_notify_fct_##A == (uintptr_t)fct) return my32_sigev_notify_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my32_sigev_notify_fct_##A == 0) {my32_sigev_notify_fct_##A = (uintptr_t)fct; return my32_sigev_notify_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for libpng12 sigev_notify callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+EXPORT int my32_timer_create(x64emu_t* emu, uint32_t clockid, void* sevp, timer_t* timerid)
+{
+    struct sigevent sevent;
+    memcpy(&sevent, sevp, sizeof(sevent));
+
+    if(sevent.sigev_notify == SIGEV_THREAD) {
+        sevent.sigev_notify_function = findsigev_notifyFct(sevent.sigev_notify_function);
+    }
+
+    return timer_create(clockid, &sevent, timerid);
+}
+
+#define PRE_INIT\
+    if(1)                                                   \
+        lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL); \
+    else
+
+#include "wrappedlib_init32.h"
diff --git a/src/wrapped32/wrappedlibrt_private.h b/src/wrapped32/wrappedlibrt_private.h
new file mode 100755
index 00000000..dffbc20f
--- /dev/null
+++ b/src/wrapped32/wrappedlibrt_private.h
@@ -0,0 +1,50 @@
+#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
+#error Meh...
+#endif
+
+//clockid_t is uint32?
+// pid_t is uint32 too? (for clock_getcpuclockid)
+// time_t is long
+// timespec is struct LL
+// itimerspec is struct 2 timespec (so LLLL)
+
+// aio_cancel
+// aio_cancel64
+// aio_error
+GO(aio_error64, iFp)
+GO(aio_fsync, iFip)
+GO(aio_fsync64, iFip)
+// aio_init
+// aio_read
+GO(aio_read64, iFp)
+// aio_return
+GO(aio_return64, lFp)
+GO(aio_suspend, iFpip)
+GO(aio_suspend64, iFpip)
+// aio_write
+GO(aio_write64, iFp)
+GO(clock_getcpuclockid, iFup)
+GO(clock_getres, iFup)
+//GO(clock_gettime, iFup)   // p is *timespec
+//GO(clock_nanosleep, iFuipp)
+//GO(clock_settime, iFup)
+// lio_listio
+// lio_listio64
+// mq_close
+GO(mq_getattr, iFip)
+// mq_notify
+// mq_open
+// __mq_open_2
+// mq_receive
+// mq_send
+// mq_setattr
+// mq_timedreceive
+// mq_timedsend
+// mq_unlink
+GO(shm_open, iFpOu)
+GO(shm_unlink, iFp)
+//GOM(timer_create, iFEupp)
+GO(timer_delete, iFu)
+GO(timer_getoverrun, iFu)
+//GO(timer_gettime, iFup)   //time_t is L, timespec is struct LL, itimerspec (the p) is 2 timespec
+//GO(timer_settime, iFuipp) //same, p are itimerspec