Wrapped Vulkan libraries

This commit is contained in:
ptitSeb 2021-11-21 19:14:40 +01:00
parent 3fa758e895
commit 9d97ce087a
15 changed files with 1501 additions and 11 deletions

View File

@ -343,6 +343,7 @@ set(WRAPPEDS
"${BOX64_ROOT}/src/wrapped/wrappedxslt.c"
"${BOX64_ROOT}/src/wrapped/wrappedldapr.c"
"${BOX64_ROOT}/src/wrapped/wrappedlber.c"
"${BOX64_ROOT}/src/wrapped/wrappedvulkan.c"
)
#set(WRAPPEDS_HEAD "${BOX64_ROOT}/src/wrapped/wrappedd3dadapter9_gen.h")

View File

@ -93,7 +93,7 @@ Wine64 is supported on box64. Be aware that 64-bit Wine also includes 32-bit com
Notes about Vulkan
----
Box64 does not wrap Vulkan libraries yet. It's planned, but for now, Vulkan programs will not run on box64.
Box64 wrap Vulkan libraries. But note that it as only been tested with a RX550 card, some extensions may be missing depending on your graphic card.
----

View File

@ -98,7 +98,7 @@ box64支持64位Wine但请注意64位的Wine还包含32位的组件
关于Vulkan注意事项
----
Box64尚未封装原生Vulkan库有计划这么做但目前vulkan程序不能在box64上运行
Box64 包裝 Vulkan 庫。但請注意,它僅使用 RX550 卡進行了測試,根據您的圖形卡,可能會缺少某些擴展
----

View File

@ -32,6 +32,7 @@ typedef struct kh_dynablocks_s kh_dynablocks_t;
#define JMPTABL_SHIFT 16
typedef void* (*procaddess_t)(const char* name);
typedef void* (*vkprocaddess_t)(void* instance, const char* name);
#define MAX_SIGNAL 64
@ -111,6 +112,9 @@ typedef struct box64context_s {
procaddess_t glxprocaddress;
kh_symbolmap_t *alwrappers; // the map of wrapper for alGetProcAddress
kh_symbolmap_t *almymap; // link to the mysymbolmap if libOpenAL
kh_symbolmap_t *vkwrappers; // the map of wrapper for VulkanProcs (TODO: check SDL2)
kh_symbolmap_t *vkmymap; // link to the mysymbolmap of libGL
vkprocaddess_t vkprocaddress;
pthread_mutex_t mutex_once;
pthread_mutex_t mutex_once2;

View File

@ -150,8 +150,8 @@ GO("libgnutls.so.30", gnutls)
GO("libpcre.so.3", libpcre)
GO("libcups.so.2", libcups)
//GO("d3dadapter9.so.1", d3dadapter9)
//GO("libvulkan.so.1", vulkan)
//GO("libvulkan.so", vulkan)
GO("libvulkan.so.1", vulkan)
GO("libvulkan.so", vulkan)
//GO("libwayland-client.so.0", waylandclient)
GO("libxml2.so.2", xml2)
GO("libxslt.so.1", xslt)

View File

@ -299,6 +299,10 @@
#() vFpuI
#() vFpuu
#() vFpup
#() vFpUi
#() vFpUu
#() vFpUU
#() vFpUp
#() vFpff
#() vFpdd
#() vFpll
@ -308,6 +312,7 @@
#() vFpLp
#() vFppi
#() vFppu
#() vFppU
#() vFppd
#() vFppl
#() vFppL
@ -369,6 +374,7 @@
#() iFpup
#() iFpUi
#() iFpUU
#() iFpUp
#() iFpfu
#() iFpff
#() iFpdd
@ -520,6 +526,7 @@
#() vFEpii
#() vFEpip
#() vFEpup
#() vFEpUp
#() vFEppp
#() vFEppV
#() vFEppA
@ -588,6 +595,7 @@
#() vFpiuu
#() vFpiuL
#() vFpiup
#() vFpiUu
#() vFpifi
#() vFpipi
#() vFpipp
@ -598,6 +606,13 @@
#() vFpuup
#() vFpudd
#() vFpupp
#() vFpUui
#() vFpUuu
#() vFpUup
#() vFpUUi
#() vFpUUp
#() vFpUpp
#() vFpfff
#() vFpdii
#() vFpddi
#() vFpddd
@ -632,6 +647,7 @@
#() iFEpip
#() iFEpiV
#() iFEpiA
#() iFEpUp
#() iFEpLi
#() iFEpLp
#() iFEppi
@ -698,13 +714,18 @@
#() iFpuui
#() iFpuuu
#() iFpuup
#() iFpuUp
#() iFpuLL
#() iFpuLp
#() iFpupi
#() iFpupu
#() iFpupU
#() iFpupL
#() iFpupp
#() iFpupV
#() iFpUup
#() iFpUUU
#() iFpUpp
#() iFplii
#() iFplip
#() iFpLii
@ -945,7 +966,15 @@
#() vFpuiip
#() vFpuipp
#() vFpuuuu
#() vFpuuup
#() vFpuupp
#() vFpuddd
#() vFpupup
#() vFpUuiu
#() vFpUUuu
#() vFpUUup
#() vFpUUUu
#() vFpUUUp
#() vFpffff
#() vFpddii
#() vFpdddd
@ -976,6 +1005,7 @@
#() iFEpipi
#() iFEpipp
#() iFEpipV
#() iFEpUup
#() iFEpLpp
#() iFEpLpV
#() iFEpLpA
@ -1027,6 +1057,7 @@
#() iFpuuup
#() iFpuuLL
#() iFpuupp
#() iFpupiU
#() iFpuppp
#() iFplluu
#() iFpLiLi
@ -1145,6 +1176,7 @@
#() vFEpiLpp
#() vFEpippp
#() vFEpuipp
#() vFEpupup
#() vFEpLLpp
#() vFEppipV
#() vFEppipA
@ -1211,9 +1243,16 @@
#() vFpiippp
#() vFpipipV
#() vFpipppi
#() vFpuiiii
#() vFpuiiiu
#() vFpuiipp
#() vFpuuuiu
#() vFpuuppp
#() vFpudddd
#() vFpUiuup
#() vFpUiUup
#() vFpUipup
#() vFpUUiup
#() vFpdddii
#() vFpddddd
#() vFppiiii
@ -1251,6 +1290,7 @@
#() iFEpilpV
#() iFEpippi
#() iFEpuppp
#() iFEpUppp
#() iFEppppp
#() iFiiiiii
#() iFiiiiip
@ -1280,6 +1320,8 @@
#() iFpuiCpp
#() iFpuippp
#() iFpupuui
#() iFpUUUip
#() iFpUUUUp
#() iFppiiip
#() iFppiiuu
#() iFppiipi
@ -1418,6 +1460,11 @@
#() vFpiipCpp
#() vFpipipii
#() vFpipppii
#() vFpuuuuuu
#() vFpuuUUuu
#() vFpuupppp
#() vFpUiUiup
#() vFpUUUUuu
#() vFpddiidd
#() vFpdddddd
#() vFppiiiii
@ -1444,6 +1491,7 @@
#() vFppppppi
#() vFppppppp
#() iFEpupppp
#() iFEpUuppp
#() iFEpLiLpV
#() iFEppuppp
#() iFEppLpIi
@ -1452,6 +1500,7 @@
#() iFEpppppp
#() iFiiiiiip
#() iFpiiiiii
#() iFpiiiiip
#() iFpiiiuwp
#() iFpiiuuiu
#() iFpiipppp
@ -1574,8 +1623,12 @@
#() vFlipuiuip
#() vFpiiiiiii
#() vFpiiiipii
#() vFpiiULipp
#() vFpiUuupup
#() vFpippiiuu
#() vFpippiipi
#() vFpUiUiupi
#() vFpUuuUUUi
#() vFppiiiiii
#() vFppiiipii
#() vFppipipii
@ -1600,6 +1653,7 @@
#() iFpuuiiiii
#() iFpupppWWu
#() iFpupppppp
#() iFpUuuLpUi
#() iFppiiiiiu
#() iFppIIIppp
#() iFpppiiipi
@ -1642,6 +1696,7 @@
#() pFppiiiiii
#() pFpppuuLLu
#() pFpppppupp
#() vFEpiiiiipp
#() vFEppiipppp
#() vFEpppiippp
#() vFiiiiiiiii
@ -1765,6 +1820,7 @@
#() pFplllllllll
#() pFppuiipuuii
#() pFpppppppppp
#() vFEpiiiupupup
#() vFuiiiiiiiiip
#() vFuiiiiiiiuip
#() vFuiiiiiiiuup
@ -1780,6 +1836,7 @@
#() vFuffffffffff
#() vFpipipiipiii
#() vFpipppiiiipi
#() vFpupiiupupup
#() vFppiiiiiiiii
#() vFppiiiiipiii
#() vFppiiiiddddi
@ -3416,6 +3473,96 @@ wrappedvorbisfile:
- iFppplPPPP:
- ov_open_callbacks
- ov_test_callbacks
wrappedvulkan:
- vFpp:
- vkDestroyDevice
- vkDestroyInstance
- vkGetPhysicalDeviceMemoryProperties
- vkGetPhysicalDeviceProperties
- pFpp:
- vkGetDeviceProcAddr
- vkGetInstanceProcAddr
- vFpUp:
- vkDestroyBuffer
- vkDestroyBufferView
- vkDestroyCommandPool
- vkDestroyDescriptorPool
- vkDestroyDescriptorSetLayout
- vkDestroyDescriptorUpdateTemplate
- vkDestroyDescriptorUpdateTemplateKHR
- vkDestroyEvent
- vkDestroyFence
- vkDestroyFramebuffer
- vkDestroyImage
- vkDestroyImageView
- vkDestroyPipeline
- vkDestroyPipelineCache
- vkDestroyPipelineLayout
- vkDestroyQueryPool
- vkDestroyRenderPass
- vkDestroySampler
- vkDestroySamplerYcbcrConversionKHR
- vkDestroySemaphore
- vkDestroyShaderModule
- vkDestroySurfaceKHR
- vkDestroySwapchainKHR
- vFppp:
- vkDestroyDebugUtilsMessengerEXT
- iFpUp:
- vkFreeMemory
- iFppp:
- vkCreateInstance
- vkDestroyDebugReportCallbackEXT
- vkGetPhysicalDeviceDisplayPropertiesKHR
- iFpUup:
- vkGetDisplayPlaneCapabilitiesKHR
- iFpppp:
- vkAllocateMemory
- vkCreateBuffer
- vkCreateBufferView
- vkCreateCommandPool
- vkCreateDebugReportCallbackEXT
- vkCreateDebugUtilsMessengerEXT
- vkCreateDescriptorPool
- vkCreateDescriptorSetLayout
- vkCreateDescriptorUpdateTemplate
- vkCreateDescriptorUpdateTemplateKHR
- vkCreateDevice
- vkCreateDisplayPlaneSurfaceKHR
- vkCreateEvent
- vkCreateFence
- vkCreateFramebuffer
- vkCreateHeadlessSurfaceEXT
- vkCreateImage
- vkCreateImageView
- vkCreatePipelineCache
- vkCreatePipelineLayout
- vkCreateQueryPool
- vkCreateRenderPass
- vkCreateRenderPass2
- vkCreateRenderPass2KHR
- vkCreateSampler
- vkCreateSamplerYcbcrConversion
- vkCreateSamplerYcbcrConversionKHR
- vkCreateSemaphore
- vkCreateShaderModule
- vkCreateSwapchainKHR
- vkCreateWaylandSurfaceKHR
- vkCreateXcbSurfaceKHR
- vkCreateXlibSurfaceKHR
- vFpupup:
- vkUpdateDescriptorSets
- iFpuppp:
- vkCreateSharedSwapchainsKHR
- iFpUppp:
- vkCreateDisplayModeKHR
- iFpUuppp:
- vkCreateComputePipelines
- vkCreateGraphicsPipelines
- vFpiiiiipp:
- vkGetPhysicalDeviceSparseImageFormatProperties
- vFpiiiupupup:
- vkCmdPipelineBarrier
wrappedxinerama:
wrappedxkbcommon:
wrappedxkbcommonx11:

View File

@ -0,0 +1,8 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.1.0.16) *
*******************************************************************/
#ifndef __wrappedvulkanDEFS_H_
#define __wrappedvulkanDEFS_H_
#endif // __wrappedvulkanDEFS_H_

View File

@ -0,0 +1,106 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.1.0.16) *
*******************************************************************/
#ifndef __wrappedvulkanTYPES_H_
#define __wrappedvulkanTYPES_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 (*vFpp_t)(void*, void*);
typedef void* (*pFpp_t)(void*, void*);
typedef void (*vFpUp_t)(void*, uint64_t, void*);
typedef void (*vFppp_t)(void*, void*, void*);
typedef int64_t (*iFpUp_t)(void*, uint64_t, void*);
typedef int64_t (*iFppp_t)(void*, void*, void*);
typedef int64_t (*iFpUup_t)(void*, uint64_t, uint64_t, void*);
typedef int64_t (*iFpppp_t)(void*, void*, void*, void*);
typedef void (*vFpupup_t)(void*, uint64_t, void*, uint64_t, void*);
typedef int64_t (*iFpuppp_t)(void*, uint64_t, void*, void*, void*);
typedef int64_t (*iFpUppp_t)(void*, uint64_t, void*, void*, void*);
typedef int64_t (*iFpUuppp_t)(void*, uint64_t, uint64_t, void*, void*, void*);
typedef void (*vFpiiiiipp_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, void*);
typedef void (*vFpiiiupupup_t)(void*, int64_t, int64_t, int64_t, uint64_t, void*, uint64_t, void*, uint64_t, void*);
#define SUPER() ADDED_FUNCTIONS() \
GO(vkDestroyDevice, vFpp_t) \
GO(vkDestroyInstance, vFpp_t) \
GO(vkGetPhysicalDeviceMemoryProperties, vFpp_t) \
GO(vkGetPhysicalDeviceProperties, vFpp_t) \
GO(vkGetDeviceProcAddr, pFpp_t) \
GO(vkGetInstanceProcAddr, pFpp_t) \
GO(vkDestroyBuffer, vFpUp_t) \
GO(vkDestroyBufferView, vFpUp_t) \
GO(vkDestroyCommandPool, vFpUp_t) \
GO(vkDestroyDescriptorPool, vFpUp_t) \
GO(vkDestroyDescriptorSetLayout, vFpUp_t) \
GO(vkDestroyDescriptorUpdateTemplate, vFpUp_t) \
GO(vkDestroyDescriptorUpdateTemplateKHR, vFpUp_t) \
GO(vkDestroyEvent, vFpUp_t) \
GO(vkDestroyFence, vFpUp_t) \
GO(vkDestroyFramebuffer, vFpUp_t) \
GO(vkDestroyImage, vFpUp_t) \
GO(vkDestroyImageView, vFpUp_t) \
GO(vkDestroyPipeline, vFpUp_t) \
GO(vkDestroyPipelineCache, vFpUp_t) \
GO(vkDestroyPipelineLayout, vFpUp_t) \
GO(vkDestroyQueryPool, vFpUp_t) \
GO(vkDestroyRenderPass, vFpUp_t) \
GO(vkDestroySampler, vFpUp_t) \
GO(vkDestroySamplerYcbcrConversionKHR, vFpUp_t) \
GO(vkDestroySemaphore, vFpUp_t) \
GO(vkDestroyShaderModule, vFpUp_t) \
GO(vkDestroySurfaceKHR, vFpUp_t) \
GO(vkDestroySwapchainKHR, vFpUp_t) \
GO(vkDestroyDebugUtilsMessengerEXT, vFppp_t) \
GO(vkFreeMemory, iFpUp_t) \
GO(vkCreateInstance, iFppp_t) \
GO(vkDestroyDebugReportCallbackEXT, iFppp_t) \
GO(vkGetPhysicalDeviceDisplayPropertiesKHR, iFppp_t) \
GO(vkGetDisplayPlaneCapabilitiesKHR, iFpUup_t) \
GO(vkAllocateMemory, iFpppp_t) \
GO(vkCreateBuffer, iFpppp_t) \
GO(vkCreateBufferView, iFpppp_t) \
GO(vkCreateCommandPool, iFpppp_t) \
GO(vkCreateDebugReportCallbackEXT, iFpppp_t) \
GO(vkCreateDebugUtilsMessengerEXT, iFpppp_t) \
GO(vkCreateDescriptorPool, iFpppp_t) \
GO(vkCreateDescriptorSetLayout, iFpppp_t) \
GO(vkCreateDescriptorUpdateTemplate, iFpppp_t) \
GO(vkCreateDescriptorUpdateTemplateKHR, iFpppp_t) \
GO(vkCreateDevice, iFpppp_t) \
GO(vkCreateDisplayPlaneSurfaceKHR, iFpppp_t) \
GO(vkCreateEvent, iFpppp_t) \
GO(vkCreateFence, iFpppp_t) \
GO(vkCreateFramebuffer, iFpppp_t) \
GO(vkCreateHeadlessSurfaceEXT, iFpppp_t) \
GO(vkCreateImage, iFpppp_t) \
GO(vkCreateImageView, iFpppp_t) \
GO(vkCreatePipelineCache, iFpppp_t) \
GO(vkCreatePipelineLayout, iFpppp_t) \
GO(vkCreateQueryPool, iFpppp_t) \
GO(vkCreateRenderPass, iFpppp_t) \
GO(vkCreateRenderPass2, iFpppp_t) \
GO(vkCreateRenderPass2KHR, iFpppp_t) \
GO(vkCreateSampler, iFpppp_t) \
GO(vkCreateSamplerYcbcrConversion, iFpppp_t) \
GO(vkCreateSamplerYcbcrConversionKHR, iFpppp_t) \
GO(vkCreateSemaphore, iFpppp_t) \
GO(vkCreateShaderModule, iFpppp_t) \
GO(vkCreateSwapchainKHR, iFpppp_t) \
GO(vkCreateWaylandSurfaceKHR, iFpppp_t) \
GO(vkCreateXcbSurfaceKHR, iFpppp_t) \
GO(vkCreateXlibSurfaceKHR, iFpppp_t) \
GO(vkUpdateDescriptorSets, vFpupup_t) \
GO(vkCreateSharedSwapchainsKHR, iFpuppp_t) \
GO(vkCreateDisplayModeKHR, iFpUppp_t) \
GO(vkCreateComputePipelines, iFpUuppp_t) \
GO(vkCreateGraphicsPipelines, iFpUuppp_t) \
GO(vkGetPhysicalDeviceSparseImageFormatProperties, vFpiiiiipp_t) \
GO(vkCmdPipelineBarrier, vFpiiiupupup_t)
#endif // __wrappedvulkanTYPES_H_

View File

@ -0,0 +1,8 @@
/*******************************************************************
* File automatically generated by rebuild_wrappers.py (v2.1.0.16) *
*******************************************************************/
#ifndef __wrappedvulkanUNDEFS_H_
#define __wrappedvulkanUNDEFS_H_
#endif // __wrappedvulkanUNDEFS_H_

View File

@ -333,6 +333,10 @@ typedef void (*vFpui_t)(void*, uint64_t, int64_t);
typedef void (*vFpuI_t)(void*, uint64_t, int64_t);
typedef void (*vFpuu_t)(void*, uint64_t, uint64_t);
typedef void (*vFpup_t)(void*, uint64_t, void*);
typedef void (*vFpUi_t)(void*, uint64_t, int64_t);
typedef void (*vFpUu_t)(void*, uint64_t, uint64_t);
typedef void (*vFpUU_t)(void*, uint64_t, uint64_t);
typedef void (*vFpUp_t)(void*, uint64_t, void*);
typedef void (*vFpff_t)(void*, float, float);
typedef void (*vFpdd_t)(void*, double, double);
typedef void (*vFpll_t)(void*, intptr_t, intptr_t);
@ -342,6 +346,7 @@ typedef void (*vFpLL_t)(void*, uintptr_t, uintptr_t);
typedef void (*vFpLp_t)(void*, uintptr_t, void*);
typedef void (*vFppi_t)(void*, void*, int64_t);
typedef void (*vFppu_t)(void*, void*, uint64_t);
typedef void (*vFppU_t)(void*, void*, uint64_t);
typedef void (*vFppd_t)(void*, void*, double);
typedef void (*vFppl_t)(void*, void*, intptr_t);
typedef void (*vFppL_t)(void*, void*, uintptr_t);
@ -403,6 +408,7 @@ typedef int64_t (*iFpuL_t)(void*, uint64_t, uintptr_t);
typedef int64_t (*iFpup_t)(void*, uint64_t, void*);
typedef int64_t (*iFpUi_t)(void*, uint64_t, int64_t);
typedef int64_t (*iFpUU_t)(void*, uint64_t, uint64_t);
typedef int64_t (*iFpUp_t)(void*, uint64_t, void*);
typedef int64_t (*iFpfu_t)(void*, float, uint64_t);
typedef int64_t (*iFpff_t)(void*, float, float);
typedef int64_t (*iFpdd_t)(void*, double, double);
@ -554,6 +560,7 @@ typedef void (*vFELLp_t)(x64emu_t*, uintptr_t, uintptr_t, void*);
typedef void (*vFEpii_t)(x64emu_t*, void*, int64_t, int64_t);
typedef void (*vFEpip_t)(x64emu_t*, void*, int64_t, void*);
typedef void (*vFEpup_t)(x64emu_t*, void*, uint64_t, void*);
typedef void (*vFEpUp_t)(x64emu_t*, void*, uint64_t, void*);
typedef void (*vFEppp_t)(x64emu_t*, void*, void*, void*);
typedef void (*vFEppV_t)(x64emu_t*, void*, void*, void*);
typedef void (*vFEppA_t)(x64emu_t*, void*, void*, void*);
@ -622,6 +629,7 @@ typedef void (*vFpiip_t)(void*, int64_t, int64_t, void*);
typedef void (*vFpiuu_t)(void*, int64_t, uint64_t, uint64_t);
typedef void (*vFpiuL_t)(void*, int64_t, uint64_t, uintptr_t);
typedef void (*vFpiup_t)(void*, int64_t, uint64_t, void*);
typedef void (*vFpiUu_t)(void*, int64_t, uint64_t, uint64_t);
typedef void (*vFpifi_t)(void*, int64_t, float, int64_t);
typedef void (*vFpipi_t)(void*, int64_t, void*, int64_t);
typedef void (*vFpipp_t)(void*, int64_t, void*, void*);
@ -632,6 +640,13 @@ typedef void (*vFpuuu_t)(void*, uint64_t, uint64_t, uint64_t);
typedef void (*vFpuup_t)(void*, uint64_t, uint64_t, void*);
typedef void (*vFpudd_t)(void*, uint64_t, double, double);
typedef void (*vFpupp_t)(void*, uint64_t, void*, void*);
typedef void (*vFpUui_t)(void*, uint64_t, uint64_t, int64_t);
typedef void (*vFpUuu_t)(void*, uint64_t, uint64_t, uint64_t);
typedef void (*vFpUup_t)(void*, uint64_t, uint64_t, void*);
typedef void (*vFpUUi_t)(void*, uint64_t, uint64_t, int64_t);
typedef void (*vFpUUp_t)(void*, uint64_t, uint64_t, void*);
typedef void (*vFpUpp_t)(void*, uint64_t, void*, void*);
typedef void (*vFpfff_t)(void*, float, float, float);
typedef void (*vFpdii_t)(void*, double, int64_t, int64_t);
typedef void (*vFpddi_t)(void*, double, double, int64_t);
typedef void (*vFpddd_t)(void*, double, double, double);
@ -666,6 +681,7 @@ typedef int64_t (*iFEpii_t)(x64emu_t*, void*, int64_t, int64_t);
typedef int64_t (*iFEpip_t)(x64emu_t*, void*, int64_t, void*);
typedef int64_t (*iFEpiV_t)(x64emu_t*, void*, int64_t, void*);
typedef int64_t (*iFEpiA_t)(x64emu_t*, void*, int64_t, void*);
typedef int64_t (*iFEpUp_t)(x64emu_t*, void*, uint64_t, void*);
typedef int64_t (*iFEpLi_t)(x64emu_t*, void*, uintptr_t, int64_t);
typedef int64_t (*iFEpLp_t)(x64emu_t*, void*, uintptr_t, void*);
typedef int64_t (*iFEppi_t)(x64emu_t*, void*, void*, int64_t);
@ -732,13 +748,18 @@ typedef int64_t (*iFpuip_t)(void*, uint64_t, int64_t, void*);
typedef int64_t (*iFpuui_t)(void*, uint64_t, uint64_t, int64_t);
typedef int64_t (*iFpuuu_t)(void*, uint64_t, uint64_t, uint64_t);
typedef int64_t (*iFpuup_t)(void*, uint64_t, uint64_t, void*);
typedef int64_t (*iFpuUp_t)(void*, uint64_t, uint64_t, void*);
typedef int64_t (*iFpuLL_t)(void*, uint64_t, uintptr_t, uintptr_t);
typedef int64_t (*iFpuLp_t)(void*, uint64_t, uintptr_t, void*);
typedef int64_t (*iFpupi_t)(void*, uint64_t, void*, int64_t);
typedef int64_t (*iFpupu_t)(void*, uint64_t, void*, uint64_t);
typedef int64_t (*iFpupU_t)(void*, uint64_t, void*, uint64_t);
typedef int64_t (*iFpupL_t)(void*, uint64_t, void*, uintptr_t);
typedef int64_t (*iFpupp_t)(void*, uint64_t, void*, void*);
typedef int64_t (*iFpupV_t)(void*, uint64_t, void*, void*);
typedef int64_t (*iFpUup_t)(void*, uint64_t, uint64_t, void*);
typedef int64_t (*iFpUUU_t)(void*, uint64_t, uint64_t, uint64_t);
typedef int64_t (*iFpUpp_t)(void*, uint64_t, void*, void*);
typedef int64_t (*iFplii_t)(void*, intptr_t, int64_t, int64_t);
typedef int64_t (*iFplip_t)(void*, intptr_t, int64_t, void*);
typedef int64_t (*iFpLii_t)(void*, uintptr_t, int64_t, int64_t);
@ -979,7 +1000,15 @@ typedef void (*vFpipiu_t)(void*, int64_t, void*, int64_t, uint64_t);
typedef void (*vFpuiip_t)(void*, uint64_t, int64_t, int64_t, void*);
typedef void (*vFpuipp_t)(void*, uint64_t, int64_t, void*, void*);
typedef void (*vFpuuuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t);
typedef void (*vFpuuup_t)(void*, uint64_t, uint64_t, uint64_t, void*);
typedef void (*vFpuupp_t)(void*, uint64_t, uint64_t, void*, void*);
typedef void (*vFpuddd_t)(void*, uint64_t, double, double, double);
typedef void (*vFpupup_t)(void*, uint64_t, void*, uint64_t, void*);
typedef void (*vFpUuiu_t)(void*, uint64_t, uint64_t, int64_t, uint64_t);
typedef void (*vFpUUuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t);
typedef void (*vFpUUup_t)(void*, uint64_t, uint64_t, uint64_t, void*);
typedef void (*vFpUUUu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t);
typedef void (*vFpUUUp_t)(void*, uint64_t, uint64_t, uint64_t, void*);
typedef void (*vFpffff_t)(void*, float, float, float, float);
typedef void (*vFpddii_t)(void*, double, double, int64_t, int64_t);
typedef void (*vFpdddd_t)(void*, double, double, double, double);
@ -1010,6 +1039,7 @@ typedef int64_t (*iFEpiii_t)(x64emu_t*, void*, int64_t, int64_t, int64_t);
typedef int64_t (*iFEpipi_t)(x64emu_t*, void*, int64_t, void*, int64_t);
typedef int64_t (*iFEpipp_t)(x64emu_t*, void*, int64_t, void*, void*);
typedef int64_t (*iFEpipV_t)(x64emu_t*, void*, int64_t, void*, void*);
typedef int64_t (*iFEpUup_t)(x64emu_t*, void*, uint64_t, uint64_t, void*);
typedef int64_t (*iFEpLpp_t)(x64emu_t*, void*, uintptr_t, void*, void*);
typedef int64_t (*iFEpLpV_t)(x64emu_t*, void*, uintptr_t, void*, void*);
typedef int64_t (*iFEpLpA_t)(x64emu_t*, void*, uintptr_t, void*, void*);
@ -1061,6 +1091,7 @@ typedef int64_t (*iFpuuui_t)(void*, uint64_t, uint64_t, uint64_t, int64_t);
typedef int64_t (*iFpuuup_t)(void*, uint64_t, uint64_t, uint64_t, void*);
typedef int64_t (*iFpuuLL_t)(void*, uint64_t, uint64_t, uintptr_t, uintptr_t);
typedef int64_t (*iFpuupp_t)(void*, uint64_t, uint64_t, void*, void*);
typedef int64_t (*iFpupiU_t)(void*, uint64_t, void*, int64_t, uint64_t);
typedef int64_t (*iFpuppp_t)(void*, uint64_t, void*, void*, void*);
typedef int64_t (*iFplluu_t)(void*, intptr_t, intptr_t, uint64_t, uint64_t);
typedef int64_t (*iFpLiLi_t)(void*, uintptr_t, int64_t, uintptr_t, int64_t);
@ -1179,6 +1210,7 @@ typedef void (*vFEiiipp_t)(x64emu_t*, int64_t, int64_t, int64_t, void*, void*);
typedef void (*vFEpiLpp_t)(x64emu_t*, void*, int64_t, uintptr_t, void*, void*);
typedef void (*vFEpippp_t)(x64emu_t*, void*, int64_t, void*, void*, void*);
typedef void (*vFEpuipp_t)(x64emu_t*, void*, uint64_t, int64_t, void*, void*);
typedef void (*vFEpupup_t)(x64emu_t*, void*, uint64_t, void*, uint64_t, void*);
typedef void (*vFEpLLpp_t)(x64emu_t*, void*, uintptr_t, uintptr_t, void*, void*);
typedef void (*vFEppipV_t)(x64emu_t*, void*, void*, int64_t, void*, void*);
typedef void (*vFEppipA_t)(x64emu_t*, void*, void*, int64_t, void*, void*);
@ -1245,9 +1277,16 @@ typedef void (*vFpiiuuu_t)(void*, int64_t, int64_t, uint64_t, uint64_t, uint64_t
typedef void (*vFpiippp_t)(void*, int64_t, int64_t, void*, void*, void*);
typedef void (*vFpipipV_t)(void*, int64_t, void*, int64_t, void*, void*);
typedef void (*vFpipppi_t)(void*, int64_t, void*, void*, void*, int64_t);
typedef void (*vFpuiiii_t)(void*, uint64_t, int64_t, int64_t, int64_t, int64_t);
typedef void (*vFpuiiiu_t)(void*, uint64_t, int64_t, int64_t, int64_t, uint64_t);
typedef void (*vFpuiipp_t)(void*, uint64_t, int64_t, int64_t, void*, void*);
typedef void (*vFpuuuiu_t)(void*, uint64_t, uint64_t, uint64_t, int64_t, uint64_t);
typedef void (*vFpuuppp_t)(void*, uint64_t, uint64_t, void*, void*, void*);
typedef void (*vFpudddd_t)(void*, uint64_t, double, double, double, double);
typedef void (*vFpUiuup_t)(void*, uint64_t, int64_t, uint64_t, uint64_t, void*);
typedef void (*vFpUiUup_t)(void*, uint64_t, int64_t, uint64_t, uint64_t, void*);
typedef void (*vFpUipup_t)(void*, uint64_t, int64_t, void*, uint64_t, void*);
typedef void (*vFpUUiup_t)(void*, uint64_t, uint64_t, int64_t, uint64_t, void*);
typedef void (*vFpdddii_t)(void*, double, double, double, int64_t, int64_t);
typedef void (*vFpddddd_t)(void*, double, double, double, double, double);
typedef void (*vFppiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t);
@ -1285,6 +1324,7 @@ typedef int64_t (*iFEpiipV_t)(x64emu_t*, void*, int64_t, int64_t, void*, void*);
typedef int64_t (*iFEpilpV_t)(x64emu_t*, void*, int64_t, intptr_t, void*, void*);
typedef int64_t (*iFEpippi_t)(x64emu_t*, void*, int64_t, void*, void*, int64_t);
typedef int64_t (*iFEpuppp_t)(x64emu_t*, void*, uint64_t, void*, void*, void*);
typedef int64_t (*iFEpUppp_t)(x64emu_t*, void*, uint64_t, void*, void*, void*);
typedef int64_t (*iFEppppp_t)(x64emu_t*, void*, void*, void*, void*, void*);
typedef int64_t (*iFiiiiii_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
typedef int64_t (*iFiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, void*);
@ -1314,6 +1354,8 @@ typedef int64_t (*iFpWpppp_t)(void*, uint16_t, void*, void*, void*, void*);
typedef int64_t (*iFpuiCpp_t)(void*, uint64_t, int64_t, uint8_t, void*, void*);
typedef int64_t (*iFpuippp_t)(void*, uint64_t, int64_t, void*, void*, void*);
typedef int64_t (*iFpupuui_t)(void*, uint64_t, void*, uint64_t, uint64_t, int64_t);
typedef int64_t (*iFpUUUip_t)(void*, uint64_t, uint64_t, uint64_t, int64_t, void*);
typedef int64_t (*iFpUUUUp_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, void*);
typedef int64_t (*iFppiiip_t)(void*, void*, int64_t, int64_t, int64_t, void*);
typedef int64_t (*iFppiiuu_t)(void*, void*, int64_t, int64_t, uint64_t, uint64_t);
typedef int64_t (*iFppiipi_t)(void*, void*, int64_t, int64_t, void*, int64_t);
@ -1452,6 +1494,11 @@ typedef void (*vFpiiliip_t)(void*, int64_t, int64_t, intptr_t, int64_t, int64_t,
typedef void (*vFpiipCpp_t)(void*, int64_t, int64_t, void*, uint8_t, void*, void*);
typedef void (*vFpipipii_t)(void*, int64_t, void*, int64_t, void*, int64_t, int64_t);
typedef void (*vFpipppii_t)(void*, int64_t, void*, void*, void*, int64_t, int64_t);
typedef void (*vFpuuuuuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
typedef void (*vFpuuUUuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
typedef void (*vFpuupppp_t)(void*, uint64_t, uint64_t, void*, void*, void*, void*);
typedef void (*vFpUiUiup_t)(void*, uint64_t, int64_t, uint64_t, int64_t, uint64_t, void*);
typedef void (*vFpUUUUuu_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
typedef void (*vFpddiidd_t)(void*, double, double, int64_t, int64_t, double, double);
typedef void (*vFpdddddd_t)(void*, double, double, double, double, double, double);
typedef void (*vFppiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t);
@ -1478,6 +1525,7 @@ typedef void (*vFpppppip_t)(void*, void*, void*, void*, void*, int64_t, void*);
typedef void (*vFppppppi_t)(void*, void*, void*, void*, void*, void*, int64_t);
typedef void (*vFppppppp_t)(void*, void*, void*, void*, void*, void*, void*);
typedef int64_t (*iFEpupppp_t)(x64emu_t*, void*, uint64_t, void*, void*, void*, void*);
typedef int64_t (*iFEpUuppp_t)(x64emu_t*, void*, uint64_t, uint64_t, void*, void*, void*);
typedef int64_t (*iFEpLiLpV_t)(x64emu_t*, void*, uintptr_t, int64_t, uintptr_t, void*, void*);
typedef int64_t (*iFEppuppp_t)(x64emu_t*, void*, void*, uint64_t, void*, void*, void*);
typedef int64_t (*iFEppLpIi_t)(x64emu_t*, void*, void*, uintptr_t, void*, int64_t, int64_t);
@ -1486,6 +1534,7 @@ typedef int64_t (*iFEpppppL_t)(x64emu_t*, void*, void*, void*, void*, void*, uin
typedef int64_t (*iFEpppppp_t)(x64emu_t*, void*, void*, void*, void*, void*, void*);
typedef int64_t (*iFiiiiiip_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*);
typedef int64_t (*iFpiiiiii_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
typedef int64_t (*iFpiiiiip_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*);
typedef int64_t (*iFpiiiuwp_t)(void*, int64_t, int64_t, int64_t, uint64_t, int16_t, void*);
typedef int64_t (*iFpiiuuiu_t)(void*, int64_t, int64_t, uint64_t, uint64_t, int64_t, uint64_t);
typedef int64_t (*iFpiipppp_t)(void*, int64_t, int64_t, void*, void*, void*, void*);
@ -1608,8 +1657,12 @@ typedef void (*vFffffffff_t)(float, float, float, float, float, float, float, fl
typedef void (*vFlipuiuip_t)(intptr_t, int64_t, void*, uint64_t, int64_t, uint64_t, int64_t, void*);
typedef void (*vFpiiiiiii_t)(void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
typedef void (*vFpiiiipii_t)(void*, int64_t, int64_t, int64_t, int64_t, void*, int64_t, int64_t);
typedef void (*vFpiiULipp_t)(void*, int64_t, int64_t, uint64_t, uintptr_t, int64_t, void*, void*);
typedef void (*vFpiUuupup_t)(void*, int64_t, uint64_t, uint64_t, uint64_t, void*, uint64_t, void*);
typedef void (*vFpippiiuu_t)(void*, int64_t, void*, void*, int64_t, int64_t, uint64_t, uint64_t);
typedef void (*vFpippiipi_t)(void*, int64_t, void*, void*, int64_t, int64_t, void*, int64_t);
typedef void (*vFpUiUiupi_t)(void*, uint64_t, int64_t, uint64_t, int64_t, uint64_t, void*, int64_t);
typedef void (*vFpUuuUUUi_t)(void*, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, uint64_t, int64_t);
typedef void (*vFppiiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
typedef void (*vFppiiipii_t)(void*, void*, int64_t, int64_t, int64_t, void*, int64_t, int64_t);
typedef void (*vFppipipii_t)(void*, void*, int64_t, void*, int64_t, void*, int64_t, int64_t);
@ -1634,6 +1687,7 @@ typedef int64_t (*iFpuippLpp_t)(void*, uint64_t, int64_t, void*, void*, uintptr_
typedef int64_t (*iFpuuiiiii_t)(void*, uint64_t, uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
typedef int64_t (*iFpupppWWu_t)(void*, uint64_t, void*, void*, void*, uint16_t, uint16_t, uint64_t);
typedef int64_t (*iFpupppppp_t)(void*, uint64_t, void*, void*, void*, void*, void*, void*);
typedef int64_t (*iFpUuuLpUi_t)(void*, uint64_t, uint64_t, uint64_t, uintptr_t, void*, uint64_t, int64_t);
typedef int64_t (*iFppiiiiiu_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, uint64_t);
typedef int64_t (*iFppIIIppp_t)(void*, void*, int64_t, int64_t, int64_t, void*, void*, void*);
typedef int64_t (*iFpppiiipi_t)(void*, void*, void*, int64_t, int64_t, int64_t, void*, int64_t);
@ -1676,6 +1730,7 @@ typedef void* (*pFplpppppp_t)(void*, intptr_t, void*, void*, void*, void*, void*
typedef void* (*pFppiiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
typedef void* (*pFpppuuLLu_t)(void*, void*, void*, uint64_t, uint64_t, uintptr_t, uintptr_t, uint64_t);
typedef void* (*pFpppppupp_t)(void*, void*, void*, void*, void*, uint64_t, void*, void*);
typedef void (*vFEpiiiiipp_t)(x64emu_t*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, void*);
typedef void (*vFEppiipppp_t)(x64emu_t*, void*, void*, int64_t, int64_t, void*, void*, void*, void*);
typedef void (*vFEpppiippp_t)(x64emu_t*, void*, void*, void*, int64_t, int64_t, void*, void*, void*);
typedef void (*vFiiiiiiiii_t)(int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
@ -1799,6 +1854,7 @@ typedef void* (*pFpuuuwwwwWW_t)(void*, uint64_t, uint64_t, uint64_t, int16_t, in
typedef void* (*pFplllllllll_t)(void*, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t, intptr_t);
typedef void* (*pFppuiipuuii_t)(void*, void*, uint64_t, int64_t, int64_t, void*, uint64_t, uint64_t, int64_t, int64_t);
typedef void* (*pFpppppppppp_t)(void*, void*, void*, void*, void*, void*, void*, void*, void*, void*);
typedef void (*vFEpiiiupupup_t)(x64emu_t*, void*, int64_t, int64_t, int64_t, uint64_t, void*, uint64_t, void*, uint64_t, void*);
typedef void (*vFuiiiiiiiiip_t)(uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, void*);
typedef void (*vFuiiiiiiiuip_t)(uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, uint64_t, int64_t, void*);
typedef void (*vFuiiiiiiiuup_t)(uint64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, uint64_t, uint64_t, void*);
@ -1814,6 +1870,7 @@ typedef void (*vFuuddiiddiip_t)(uint64_t, uint64_t, double, double, int64_t, int
typedef void (*vFuffffffffff_t)(uint64_t, float, float, float, float, float, float, float, float, float, float);
typedef void (*vFpipipiipiii_t)(void*, int64_t, void*, int64_t, void*, int64_t, int64_t, void*, int64_t, int64_t, int64_t);
typedef void (*vFpipppiiiipi_t)(void*, int64_t, void*, void*, void*, int64_t, int64_t, int64_t, int64_t, void*, int64_t);
typedef void (*vFpupiiupupup_t)(void*, uint64_t, void*, int64_t, int64_t, uint64_t, void*, uint64_t, void*, uint64_t, void*);
typedef void (*vFppiiiiiiiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t, int64_t);
typedef void (*vFppiiiiipiii_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, int64_t, void*, int64_t, int64_t, int64_t);
typedef void (*vFppiiiiddddi_t)(void*, void*, int64_t, int64_t, int64_t, int64_t, double, double, double, double, int64_t);
@ -2232,6 +2289,10 @@ void vFpui(x64emu_t *emu, uintptr_t fcn) { vFpui_t fn = (vFpui_t)fcn; fn((void*)
void vFpuI(x64emu_t *emu, uintptr_t fcn) { vFpuI_t fn = (vFpuI_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX); }
void vFpuu(x64emu_t *emu, uintptr_t fcn) { vFpuu_t fn = (vFpuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); }
void vFpup(x64emu_t *emu, uintptr_t fcn) { vFpup_t fn = (vFpup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
void vFpUi(x64emu_t *emu, uintptr_t fcn) { vFpUi_t fn = (vFpUi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX); }
void vFpUu(x64emu_t *emu, uintptr_t fcn) { vFpUu_t fn = (vFpUu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); }
void vFpUU(x64emu_t *emu, uintptr_t fcn) { vFpUU_t fn = (vFpUU_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); }
void vFpUp(x64emu_t *emu, uintptr_t fcn) { vFpUp_t fn = (vFpUp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
void vFpff(x64emu_t *emu, uintptr_t fcn) { vFpff_t fn = (vFpff_t)fcn; fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
void vFpdd(x64emu_t *emu, uintptr_t fcn) { vFpdd_t fn = (vFpdd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
void vFpll(x64emu_t *emu, uintptr_t fcn) { vFpll_t fn = (vFpll_t)fcn; fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX); }
@ -2241,6 +2302,7 @@ void vFpLL(x64emu_t *emu, uintptr_t fcn) { vFpLL_t fn = (vFpLL_t)fcn; fn((void*)
void vFpLp(x64emu_t *emu, uintptr_t fcn) { vFpLp_t fn = (vFpLp_t)fcn; fn((void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); }
void vFppi(x64emu_t *emu, uintptr_t fcn) { vFppi_t fn = (vFppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX); }
void vFppu(x64emu_t *emu, uintptr_t fcn) { vFppu_t fn = (vFppu_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX); }
void vFppU(x64emu_t *emu, uintptr_t fcn) { vFppU_t fn = (vFppU_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX); }
void vFppd(x64emu_t *emu, uintptr_t fcn) { vFppd_t fn = (vFppd_t)fcn; fn((void*)R_RDI, (void*)R_RSI, emu->xmm[0].d[0]); }
void vFppl(x64emu_t *emu, uintptr_t fcn) { vFppl_t fn = (vFppl_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (intptr_t)R_RDX); }
void vFppL(x64emu_t *emu, uintptr_t fcn) { vFppL_t fn = (vFppL_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX); }
@ -2302,6 +2364,7 @@ void iFpuL(x64emu_t *emu, uintptr_t fcn) { iFpuL_t fn = (iFpuL_t)fcn; R_RAX=(int
void iFpup(x64emu_t *emu, uintptr_t fcn) { iFpup_t fn = (iFpup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
void iFpUi(x64emu_t *emu, uintptr_t fcn) { iFpUi_t fn = (iFpUi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX); }
void iFpUU(x64emu_t *emu, uintptr_t fcn) { iFpUU_t fn = (iFpUU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX); }
void iFpUp(x64emu_t *emu, uintptr_t fcn) { iFpUp_t fn = (iFpUp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
void iFpfu(x64emu_t *emu, uintptr_t fcn) { iFpfu_t fn = (iFpfu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, emu->xmm[0].f[0], (uint64_t)R_RSI); }
void iFpff(x64emu_t *emu, uintptr_t fcn) { iFpff_t fn = (iFpff_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0]); }
void iFpdd(x64emu_t *emu, uintptr_t fcn) { iFpdd_t fn = (iFpdd_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
@ -2453,6 +2516,7 @@ void vFELLp(x64emu_t *emu, uintptr_t fcn) { vFELLp_t fn = (vFELLp_t)fcn; fn(emu,
void vFEpii(x64emu_t *emu, uintptr_t fcn) { vFEpii_t fn = (vFEpii_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX); }
void vFEpip(x64emu_t *emu, uintptr_t fcn) { vFEpip_t fn = (vFEpip_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX); }
void vFEpup(x64emu_t *emu, uintptr_t fcn) { vFEpup_t fn = (vFEpup_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
void vFEpUp(x64emu_t *emu, uintptr_t fcn) { vFEpUp_t fn = (vFEpUp_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
void vFEppp(x64emu_t *emu, uintptr_t fcn) { vFEppp_t fn = (vFEppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
void vFEppV(x64emu_t *emu, uintptr_t fcn) { vFEppV_t fn = (vFEppV_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)(R_RSP + 8)); }
void vFEppA(x64emu_t *emu, uintptr_t fcn) { vFEppA_t fn = (vFEppA_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX); }
@ -2521,6 +2585,7 @@ void vFpiip(x64emu_t *emu, uintptr_t fcn) { vFpiip_t fn = (vFpiip_t)fcn; fn((voi
void vFpiuu(x64emu_t *emu, uintptr_t fcn) { vFpiuu_t fn = (vFpiuu_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); }
void vFpiuL(x64emu_t *emu, uintptr_t fcn) { vFpiuL_t fn = (vFpiuL_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uintptr_t)R_RCX); }
void vFpiup(x64emu_t *emu, uintptr_t fcn) { vFpiup_t fn = (vFpiup_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void vFpiUu(x64emu_t *emu, uintptr_t fcn) { vFpiUu_t fn = (vFpiUu_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); }
void vFpifi(x64emu_t *emu, uintptr_t fcn) { vFpifi_t fn = (vFpifi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, emu->xmm[0].f[0], (int64_t)R_RDX); }
void vFpipi(x64emu_t *emu, uintptr_t fcn) { vFpipi_t fn = (vFpipi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX); }
void vFpipp(x64emu_t *emu, uintptr_t fcn) { vFpipp_t fn = (vFpipp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
@ -2531,6 +2596,13 @@ void vFpuuu(x64emu_t *emu, uintptr_t fcn) { vFpuuu_t fn = (vFpuuu_t)fcn; fn((voi
void vFpuup(x64emu_t *emu, uintptr_t fcn) { vFpuup_t fn = (vFpuup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void vFpudd(x64emu_t *emu, uintptr_t fcn) { vFpudd_t fn = (vFpudd_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0]); }
void vFpupp(x64emu_t *emu, uintptr_t fcn) { vFpupp_t fn = (vFpupp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void vFpUui(x64emu_t *emu, uintptr_t fcn) { vFpUui_t fn = (vFpUui_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX); }
void vFpUuu(x64emu_t *emu, uintptr_t fcn) { vFpUuu_t fn = (vFpUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); }
void vFpUup(x64emu_t *emu, uintptr_t fcn) { vFpUup_t fn = (vFpUup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void vFpUUi(x64emu_t *emu, uintptr_t fcn) { vFpUUi_t fn = (vFpUUi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX); }
void vFpUUp(x64emu_t *emu, uintptr_t fcn) { vFpUUp_t fn = (vFpUUp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void vFpUpp(x64emu_t *emu, uintptr_t fcn) { vFpUpp_t fn = (vFpUpp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void vFpfff(x64emu_t *emu, uintptr_t fcn) { vFpfff_t fn = (vFpfff_t)fcn; fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0]); }
void vFpdii(x64emu_t *emu, uintptr_t fcn) { vFpdii_t fn = (vFpdii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], (int64_t)R_RSI, (int64_t)R_RDX); }
void vFpddi(x64emu_t *emu, uintptr_t fcn) { vFpddi_t fn = (vFpddi_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int64_t)R_RSI); }
void vFpddd(x64emu_t *emu, uintptr_t fcn) { vFpddd_t fn = (vFpddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
@ -2565,6 +2637,7 @@ void iFEpii(x64emu_t *emu, uintptr_t fcn) { iFEpii_t fn = (iFEpii_t)fcn; R_RAX=(
void iFEpip(x64emu_t *emu, uintptr_t fcn) { iFEpip_t fn = (iFEpip_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX); }
void iFEpiV(x64emu_t *emu, uintptr_t fcn) { iFEpiV_t fn = (iFEpiV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)(R_RSP + 8)); }
void iFEpiA(x64emu_t *emu, uintptr_t fcn) { iFEpiA_t fn = (iFEpiA_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX); }
void iFEpUp(x64emu_t *emu, uintptr_t fcn) { iFEpUp_t fn = (iFEpUp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX); }
void iFEpLi(x64emu_t *emu, uintptr_t fcn) { iFEpLi_t fn = (iFEpLi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX); }
void iFEpLp(x64emu_t *emu, uintptr_t fcn) { iFEpLp_t fn = (iFEpLp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX); }
void iFEppi(x64emu_t *emu, uintptr_t fcn) { iFEppi_t fn = (iFEppi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX); }
@ -2631,13 +2704,18 @@ void iFpuip(x64emu_t *emu, uintptr_t fcn) { iFpuip_t fn = (iFpuip_t)fcn; R_RAX=(
void iFpuui(x64emu_t *emu, uintptr_t fcn) { iFpuui_t fn = (iFpuui_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX); }
void iFpuuu(x64emu_t *emu, uintptr_t fcn) { iFpuuu_t fn = (iFpuuu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); }
void iFpuup(x64emu_t *emu, uintptr_t fcn) { iFpuup_t fn = (iFpuup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void iFpuUp(x64emu_t *emu, uintptr_t fcn) { iFpuUp_t fn = (iFpuUp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void iFpuLL(x64emu_t *emu, uintptr_t fcn) { iFpuLL_t fn = (iFpuLL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uintptr_t)R_RDX, (uintptr_t)R_RCX); }
void iFpuLp(x64emu_t *emu, uintptr_t fcn) { iFpuLp_t fn = (iFpuLp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); }
void iFpupi(x64emu_t *emu, uintptr_t fcn) { iFpupi_t fn = (iFpupi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX); }
void iFpupu(x64emu_t *emu, uintptr_t fcn) { iFpupu_t fn = (iFpupu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX); }
void iFpupU(x64emu_t *emu, uintptr_t fcn) { iFpupU_t fn = (iFpupU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX); }
void iFpupL(x64emu_t *emu, uintptr_t fcn) { iFpupL_t fn = (iFpupL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uintptr_t)R_RCX); }
void iFpupp(x64emu_t *emu, uintptr_t fcn) { iFpupp_t fn = (iFpupp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void iFpupV(x64emu_t *emu, uintptr_t fcn) { iFpupV_t fn = (iFpupV_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
void iFpUup(x64emu_t *emu, uintptr_t fcn) { iFpUup_t fn = (iFpUup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void iFpUUU(x64emu_t *emu, uintptr_t fcn) { iFpUUU_t fn = (iFpUUU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX); }
void iFpUpp(x64emu_t *emu, uintptr_t fcn) { iFpUpp_t fn = (iFpUpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void iFplii(x64emu_t *emu, uintptr_t fcn) { iFplii_t fn = (iFplii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (intptr_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX); }
void iFplip(x64emu_t *emu, uintptr_t fcn) { iFplip_t fn = (iFplip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (intptr_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX); }
void iFpLii(x64emu_t *emu, uintptr_t fcn) { iFpLii_t fn = (iFpLii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX); }
@ -2878,7 +2956,15 @@ void vFpipiu(x64emu_t *emu, uintptr_t fcn) { vFpipiu_t fn = (vFpipiu_t)fcn; fn((
void vFpuiip(x64emu_t *emu, uintptr_t fcn) { vFpuiip_t fn = (vFpuiip_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8); }
void vFpuipp(x64emu_t *emu, uintptr_t fcn) { vFpuipp_t fn = (vFpuipp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
void vFpuuuu(x64emu_t *emu, uintptr_t fcn) { vFpuuuu_t fn = (vFpuuuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); }
void vFpuuup(x64emu_t *emu, uintptr_t fcn) { vFpuuup_t fn = (vFpuuup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
void vFpuupp(x64emu_t *emu, uintptr_t fcn) { vFpuupp_t fn = (vFpuupp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
void vFpuddd(x64emu_t *emu, uintptr_t fcn) { vFpuddd_t fn = (vFpuddd_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0]); }
void vFpupup(x64emu_t *emu, uintptr_t fcn) { vFpupup_t fn = (vFpupup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
void vFpUuiu(x64emu_t *emu, uintptr_t fcn) { vFpUuiu_t fn = (vFpUuiu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8); }
void vFpUUuu(x64emu_t *emu, uintptr_t fcn) { vFpUUuu_t fn = (vFpUUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); }
void vFpUUup(x64emu_t *emu, uintptr_t fcn) { vFpUUup_t fn = (vFpUUup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
void vFpUUUu(x64emu_t *emu, uintptr_t fcn) { vFpUUUu_t fn = (vFpUUUu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); }
void vFpUUUp(x64emu_t *emu, uintptr_t fcn) { vFpUUUp_t fn = (vFpUUUp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
void vFpffff(x64emu_t *emu, uintptr_t fcn) { vFpffff_t fn = (vFpffff_t)fcn; fn((void*)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0]); }
void vFpddii(x64emu_t *emu, uintptr_t fcn) { vFpddii_t fn = (vFpddii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int64_t)R_RSI, (int64_t)R_RDX); }
void vFpdddd(x64emu_t *emu, uintptr_t fcn) { vFpdddd_t fn = (vFpdddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
@ -2909,6 +2995,7 @@ void iFEpiii(x64emu_t *emu, uintptr_t fcn) { iFEpiii_t fn = (iFEpiii_t)fcn; R_RA
void iFEpipi(x64emu_t *emu, uintptr_t fcn) { iFEpipi_t fn = (iFEpipi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX); }
void iFEpipp(x64emu_t *emu, uintptr_t fcn) { iFEpipp_t fn = (iFEpipp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void iFEpipV(x64emu_t *emu, uintptr_t fcn) { iFEpipV_t fn = (iFEpipV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
void iFEpUup(x64emu_t *emu, uintptr_t fcn) { iFEpUup_t fn = (iFEpUup_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX); }
void iFEpLpp(x64emu_t *emu, uintptr_t fcn) { iFEpLpp_t fn = (iFEpLpp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
void iFEpLpV(x64emu_t *emu, uintptr_t fcn) { iFEpLpV_t fn = (iFEpLpV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
void iFEpLpA(x64emu_t *emu, uintptr_t fcn) { iFEpLpA_t fn = (iFEpLpA_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
@ -2960,6 +3047,7 @@ void iFpuuui(x64emu_t *emu, uintptr_t fcn) { iFpuuui_t fn = (iFpuuui_t)fcn; R_RA
void iFpuuup(x64emu_t *emu, uintptr_t fcn) { iFpuuup_t fn = (iFpuuup_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
void iFpuuLL(x64emu_t *emu, uintptr_t fcn) { iFpuuLL_t fn = (iFpuuLL_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uintptr_t)R_RCX, (uintptr_t)R_R8); }
void iFpuupp(x64emu_t *emu, uintptr_t fcn) { iFpuupp_t fn = (iFpuupp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
void iFpupiU(x64emu_t *emu, uintptr_t fcn) { iFpupiU_t fn = (iFpupiU_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8); }
void iFpuppp(x64emu_t *emu, uintptr_t fcn) { iFpuppp_t fn = (iFpuppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
void iFplluu(x64emu_t *emu, uintptr_t fcn) { iFplluu_t fn = (iFplluu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8); }
void iFpLiLi(x64emu_t *emu, uintptr_t fcn) { iFpLiLi_t fn = (iFpLiLi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (uintptr_t)R_RCX, (int64_t)R_R8); }
@ -3078,6 +3166,7 @@ void vFEiiipp(x64emu_t *emu, uintptr_t fcn) { vFEiiipp_t fn = (vFEiiipp_t)fcn; f
void vFEpiLpp(x64emu_t *emu, uintptr_t fcn) { vFEpiLpp_t fn = (vFEpiLpp_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
void vFEpippp(x64emu_t *emu, uintptr_t fcn) { vFEpippp_t fn = (vFEpippp_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
void vFEpuipp(x64emu_t *emu, uintptr_t fcn) { vFEpuipp_t fn = (vFEpuipp_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
void vFEpupup(x64emu_t *emu, uintptr_t fcn) { vFEpupup_t fn = (vFEpupup_t)fcn; fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (void*)R_R8); }
void vFEpLLpp(x64emu_t *emu, uintptr_t fcn) { vFEpLLpp_t fn = (vFEpLLpp_t)fcn; fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
void vFEppipV(x64emu_t *emu, uintptr_t fcn) { vFEppipV_t fn = (vFEppipV_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)(R_RSP + 8)); }
void vFEppipA(x64emu_t *emu, uintptr_t fcn) { vFEppipA_t fn = (vFEppipA_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8); }
@ -3144,9 +3233,16 @@ void vFpiiuuu(x64emu_t *emu, uintptr_t fcn) { vFpiiuuu_t fn = (vFpiiuuu_t)fcn; f
void vFpiippp(x64emu_t *emu, uintptr_t fcn) { vFpiippp_t fn = (vFpiippp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
void vFpipipV(x64emu_t *emu, uintptr_t fcn) { vFpipipV_t fn = (vFpipipV_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)(R_RSP + 8)); }
void vFpipppi(x64emu_t *emu, uintptr_t fcn) { vFpipppi_t fn = (vFpipppi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9); }
void vFpuiiii(x64emu_t *emu, uintptr_t fcn) { vFpuiiii_t fn = (vFpuiiii_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); }
void vFpuiiiu(x64emu_t *emu, uintptr_t fcn) { vFpuiiiu_t fn = (vFpuiiiu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9); }
void vFpuiipp(x64emu_t *emu, uintptr_t fcn) { vFpuiipp_t fn = (vFpuiipp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9); }
void vFpuuuiu(x64emu_t *emu, uintptr_t fcn) { vFpuuuiu_t fn = (vFpuuuiu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9); }
void vFpuuppp(x64emu_t *emu, uintptr_t fcn) { vFpuuppp_t fn = (vFpuuppp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
void vFpudddd(x64emu_t *emu, uintptr_t fcn) { vFpudddd_t fn = (vFpudddd_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0]); }
void vFpUiuup(x64emu_t *emu, uintptr_t fcn) { vFpUiuup_t fn = (vFpUiuup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); }
void vFpUiUup(x64emu_t *emu, uintptr_t fcn) { vFpUiUup_t fn = (vFpUiUup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); }
void vFpUipup(x64emu_t *emu, uintptr_t fcn) { vFpUipup_t fn = (vFpUipup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (uint64_t)R_R8, (void*)R_R9); }
void vFpUUiup(x64emu_t *emu, uintptr_t fcn) { vFpUUiup_t fn = (vFpUUiup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); }
void vFpdddii(x64emu_t *emu, uintptr_t fcn) { vFpdddii_t fn = (vFpdddii_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], (int64_t)R_RSI, (int64_t)R_RDX); }
void vFpddddd(x64emu_t *emu, uintptr_t fcn) { vFpddddd_t fn = (vFpddddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0]); }
void vFppiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiii_t fn = (vFppiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); }
@ -3184,6 +3280,7 @@ void iFEpiipV(x64emu_t *emu, uintptr_t fcn) { iFEpiipV_t fn = (iFEpiipV_t)fcn; R
void iFEpilpV(x64emu_t *emu, uintptr_t fcn) { iFEpilpV_t fn = (iFEpilpV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (intptr_t)R_RDX, (void*)R_RCX, (void*)(R_RSP + 8)); }
void iFEpippi(x64emu_t *emu, uintptr_t fcn) { iFEpippi_t fn = (iFEpippi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8); }
void iFEpuppp(x64emu_t *emu, uintptr_t fcn) { iFEpuppp_t fn = (iFEpuppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
void iFEpUppp(x64emu_t *emu, uintptr_t fcn) { iFEpUppp_t fn = (iFEpUppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
void iFEppppp(x64emu_t *emu, uintptr_t fcn) { iFEppppp_t fn = (iFEppppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); }
void iFiiiiii(x64emu_t *emu, uintptr_t fcn) { iFiiiiii_t fn = (iFiiiiii_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9); }
void iFiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiip_t fn = (iFiiiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9); }
@ -3213,6 +3310,8 @@ void iFpWpppp(x64emu_t *emu, uintptr_t fcn) { iFpWpppp_t fn = (iFpWpppp_t)fcn; R
void iFpuiCpp(x64emu_t *emu, uintptr_t fcn) { iFpuiCpp_t fn = (iFpuiCpp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint8_t)R_RCX, (void*)R_R8, (void*)R_R9); }
void iFpuippp(x64emu_t *emu, uintptr_t fcn) { iFpuippp_t fn = (iFpuippp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
void iFpupuui(x64emu_t *emu, uintptr_t fcn) { iFpupuui_t fn = (iFpupuui_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (int64_t)R_R9); }
void iFpUUUip(x64emu_t *emu, uintptr_t fcn) { iFpUUUip_t fn = (iFpUUUip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (void*)R_R9); }
void iFpUUUUp(x64emu_t *emu, uintptr_t fcn) { iFpUUUUp_t fn = (iFpUUUUp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9); }
void iFppiiip(x64emu_t *emu, uintptr_t fcn) { iFppiiip_t fn = (iFppiiip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9); }
void iFppiiuu(x64emu_t *emu, uintptr_t fcn) { iFppiiuu_t fn = (iFppiiuu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9); }
void iFppiipi(x64emu_t *emu, uintptr_t fcn) { iFppiipi_t fn = (iFppiipi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9); }
@ -3351,6 +3450,11 @@ void vFpiiliip(x64emu_t *emu, uintptr_t fcn) { vFpiiliip_t fn = (vFpiiliip_t)fcn
void vFpiipCpp(x64emu_t *emu, uintptr_t fcn) { vFpiipCpp_t fn = (vFpiipCpp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (uint8_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
void vFpipipii(x64emu_t *emu, uintptr_t fcn) { vFpipipii_t fn = (vFpipipii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
void vFpipppii(x64emu_t *emu, uintptr_t fcn) { vFpipppii_t fn = (vFpipppii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
void vFpuuuuuu(x64emu_t *emu, uintptr_t fcn) { vFpuuuuuu_t fn = (vFpuuuuuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8)); }
void vFpuuUUuu(x64emu_t *emu, uintptr_t fcn) { vFpuuUUuu_t fn = (vFpuuUUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8)); }
void vFpuupppp(x64emu_t *emu, uintptr_t fcn) { vFpuupppp_t fn = (vFpuupppp_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
void vFpUiUiup(x64emu_t *emu, uintptr_t fcn) { vFpUiUiup_t fn = (vFpUiUiup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8)); }
void vFpUUUUuu(x64emu_t *emu, uintptr_t fcn) { vFpUUUUuu_t fn = (vFpUUUUuu_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8)); }
void vFpddiidd(x64emu_t *emu, uintptr_t fcn) { vFpddiidd_t fn = (vFpddiidd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], (int64_t)R_RSI, (int64_t)R_RDX, emu->xmm[2].d[0], emu->xmm[3].d[0]); }
void vFpdddddd(x64emu_t *emu, uintptr_t fcn) { vFpdddddd_t fn = (vFpdddddd_t)fcn; fn((void*)R_RDI, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], emu->xmm[4].d[0], emu->xmm[5].d[0]); }
void vFppiiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiii_t fn = (vFppiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
@ -3377,6 +3481,7 @@ void vFpppppip(x64emu_t *emu, uintptr_t fcn) { vFpppppip_t fn = (vFpppppip_t)fcn
void vFppppppi(x64emu_t *emu, uintptr_t fcn) { vFppppppi_t fn = (vFppppppi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8)); }
void vFppppppp(x64emu_t *emu, uintptr_t fcn) { vFppppppp_t fn = (vFppppppp_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
void iFEpupppp(x64emu_t *emu, uintptr_t fcn) { iFEpupppp_t fn = (iFEpupppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
void iFEpUuppp(x64emu_t *emu, uintptr_t fcn) { iFEpUuppp_t fn = (iFEpUuppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
void iFEpLiLpV(x64emu_t *emu, uintptr_t fcn) { iFEpLiLpV_t fn = (iFEpLiLpV_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (uintptr_t)R_RSI, (int64_t)R_RDX, (uintptr_t)R_RCX, (void*)R_R8, (void*)(R_RSP + 8)); }
void iFEppuppp(x64emu_t *emu, uintptr_t fcn) { iFEppuppp_t fn = (iFEppuppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
void iFEppLpIi(x64emu_t *emu, uintptr_t fcn) { iFEppLpIi_t fn = (iFEppLpIi_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9); }
@ -3385,6 +3490,7 @@ void iFEpppppL(x64emu_t *emu, uintptr_t fcn) { iFEpppppL_t fn = (iFEpppppL_t)fcn
void iFEpppppp(x64emu_t *emu, uintptr_t fcn) { iFEpppppp_t fn = (iFEpppppp_t)fcn; R_RAX=(int64_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
void iFiiiiiip(x64emu_t *emu, uintptr_t fcn) { iFiiiiiip_t fn = (iFiiiiiip_t)fcn; R_RAX=(int64_t)fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); }
void iFpiiiiii(x64emu_t *emu, uintptr_t fcn) { iFpiiiiii_t fn = (iFpiiiiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8)); }
void iFpiiiiip(x64emu_t *emu, uintptr_t fcn) { iFpiiiiip_t fn = (iFpiiiiip_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8)); }
void iFpiiiuwp(x64emu_t *emu, uintptr_t fcn) { iFpiiiuwp_t fn = (iFpiiiuwp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (int16_t)R_R9, *(void**)(R_RSP + 8)); }
void iFpiiuuiu(x64emu_t *emu, uintptr_t fcn) { iFpiiuuiu_t fn = (iFpiiuuiu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (int64_t)R_R9, *(uint64_t*)(R_RSP + 8)); }
void iFpiipppp(x64emu_t *emu, uintptr_t fcn) { iFpiipppp_t fn = (iFpiipppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
@ -3507,8 +3613,12 @@ void vFffffffff(x64emu_t *emu, uintptr_t fcn) { vFffffffff_t fn = (vFffffffff_t)
void vFlipuiuip(x64emu_t *emu, uintptr_t fcn) { vFlipuiuip_t fn = (vFlipuiuip_t)fcn; fn((intptr_t)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(int64_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFpiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFpiiiiiii_t fn = (vFpiiiiiii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void vFpiiiipii(x64emu_t *emu, uintptr_t fcn) { vFpiiiipii_t fn = (vFpiiiipii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void vFpiiULipp(x64emu_t *emu, uintptr_t fcn) { vFpiiULipp_t fn = (vFpiiULipp_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (uintptr_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFpiUuupup(x64emu_t *emu, uintptr_t fcn) { vFpiUuupup_t fn = (vFpiUuupup_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFpippiiuu(x64emu_t *emu, uintptr_t fcn) { vFpippiiuu_t fn = (vFpippiiuu_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); }
void vFpippiipi(x64emu_t *emu, uintptr_t fcn) { vFpippiipi_t fn = (vFpippiipi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void vFpUiUiupi(x64emu_t *emu, uintptr_t fcn) { vFpUiUiupi_t fn = (vFpUiUiupi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (int64_t)R_RDX, (uint64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void vFpUuuUUUi(x64emu_t *emu, uintptr_t fcn) { vFpUuuUUUi_t fn = (vFpUuuUUUi_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uint64_t)R_R9, *(uint64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void vFppiiiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiiii_t fn = (vFppiiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void vFppiiipii(x64emu_t *emu, uintptr_t fcn) { vFppiiipii_t fn = (vFppiiipii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void vFppipipii(x64emu_t *emu, uintptr_t fcn) { vFppipipii_t fn = (vFppipipii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (void*)R_RCX, (int64_t)R_R8, (void*)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
@ -3533,6 +3643,7 @@ void iFpuippLpp(x64emu_t *emu, uintptr_t fcn) { iFpuippLpp_t fn = (iFpuippLpp_t)
void iFpuuiiiii(x64emu_t *emu, uintptr_t fcn) { iFpuuiiiii_t fn = (iFpuuiiiii_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void iFpupppWWu(x64emu_t *emu, uintptr_t fcn) { iFpupppWWu_t fn = (iFpupppWWu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint16_t)R_R9, *(uint16_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); }
void iFpupppppp(x64emu_t *emu, uintptr_t fcn) { iFpupppppp_t fn = (iFpupppppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void iFpUuuLpUi(x64emu_t *emu, uintptr_t fcn) { iFpUuuLpUi_t fn = (iFpUuuLpUi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (uint64_t)R_RSI, (uint64_t)R_RDX, (uint64_t)R_RCX, (uintptr_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void iFppiiiiiu(x64emu_t *emu, uintptr_t fcn) { iFppiiiiiu_t fn = (iFppiiiiiu_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); }
void iFppIIIppp(x64emu_t *emu, uintptr_t fcn) { iFppIIIppp_t fn = (iFppIIIppp_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void iFpppiiipi(x64emu_t *emu, uintptr_t fcn) { iFpppiiipi_t fn = (iFpppiiipi_t)fcn; R_RAX=(int64_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
@ -3575,6 +3686,7 @@ void pFplpppppp(x64emu_t *emu, uintptr_t fcn) { pFplpppppp_t fn = (pFplpppppp_t)
void pFppiiiiii(x64emu_t *emu, uintptr_t fcn) { pFppiiiiii_t fn = (pFppiiiiii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16)); }
void pFpppuuLLu(x64emu_t *emu, uintptr_t fcn) { pFpppuuLLu_t fn = (pFpppuuLLu_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (uint64_t)R_RCX, (uint64_t)R_R8, (uintptr_t)R_R9, *(uintptr_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16)); }
void pFpppppupp(x64emu_t *emu, uintptr_t fcn) { pFpppppupp_t fn = (pFpppppupp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFEpiiiiipp(x64emu_t *emu, uintptr_t fcn) { vFEpiiiiipp_t fn = (vFEpiiiiipp_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFEppiipppp(x64emu_t *emu, uintptr_t fcn) { vFEppiipppp_t fn = (vFEppiipppp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFEpppiippp(x64emu_t *emu, uintptr_t fcn) { vFEpppiippp_t fn = (vFEpppiippp_t)fcn; fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16)); }
void vFiiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFiiiiiiiii_t fn = (vFiiiiiiiii_t)fcn; fn((int64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24)); }
@ -3698,6 +3810,7 @@ void pFpuuuwwwwWW(x64emu_t *emu, uintptr_t fcn) { pFpuuuwwwwWW_t fn = (pFpuuuwww
void pFplllllllll(x64emu_t *emu, uintptr_t fcn) { pFplllllllll_t fn = (pFplllllllll_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (intptr_t)R_RSI, (intptr_t)R_RDX, (intptr_t)R_RCX, (intptr_t)R_R8, (intptr_t)R_R9, *(intptr_t*)(R_RSP + 8), *(intptr_t*)(R_RSP + 16), *(intptr_t*)(R_RSP + 24), *(intptr_t*)(R_RSP + 32)); }
void pFppuiipuuii(x64emu_t *emu, uintptr_t fcn) { pFppuiipuuii_t fn = (pFppuiipuuii_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (uint64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32)); }
void pFpppppppppp(x64emu_t *emu, uintptr_t fcn) { pFpppppppppp_t fn = (pFpppppppppp_t)fcn; R_RAX=(uintptr_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8), *(void**)(R_RSP + 16), *(void**)(R_RSP + 24), *(void**)(R_RSP + 32)); }
void vFEpiiiupupup(x64emu_t *emu, uintptr_t fcn) { vFEpiiiupupup_t fn = (vFEpiiiupupup_t)fcn; fn(emu, (void*)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (uint64_t)R_R8, (void*)R_R9, *(uint64_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(void**)(R_RSP + 32)); }
void vFuiiiiiiiiip(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiiip_t fn = (vFuiiiiiiiiip_t)fcn; fn((uint64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
void vFuiiiiiiiuip(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiuip_t fn = (vFuiiiiiiiuip_t)fcn; fn((uint64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
void vFuiiiiiiiuup(x64emu_t *emu, uintptr_t fcn) { vFuiiiiiiiuup_t fn = (vFuiiiiiiiuup_t)fcn; fn((uint64_t)R_RDI, (int64_t)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(uint64_t*)(R_RSP + 24), *(uint64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
@ -3713,6 +3826,7 @@ void vFuuddiiddiip(x64emu_t *emu, uintptr_t fcn) { vFuuddiiddiip_t fn = (vFuuddi
void vFuffffffffff(x64emu_t *emu, uintptr_t fcn) { vFuffffffffff_t fn = (vFuffffffffff_t)fcn; fn((uint64_t)R_RDI, emu->xmm[0].f[0], emu->xmm[1].f[0], emu->xmm[2].f[0], emu->xmm[3].f[0], emu->xmm[4].f[0], emu->xmm[5].f[0], emu->xmm[6].f[0], emu->xmm[7].f[0], *(float*)(R_RSP + 8), *(float*)(R_RSP + 16)); }
void vFpipipiipiii(x64emu_t *emu, uintptr_t fcn) { vFpipipiipiii_t fn = (vFpipipiipiii_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); }
void vFpipppiiiipi(x64emu_t *emu, uintptr_t fcn) { vFpipppiiiipi_t fn = (vFpipppiiiipi_t)fcn; fn((void*)R_RDI, (int64_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(void**)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); }
void vFpupiiupupup(x64emu_t *emu, uintptr_t fcn) { vFpupiiupupup_t fn = (vFpupiiupupup_t)fcn; fn((void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (uint64_t)R_R9, *(void**)(R_RSP + 8), *(uint64_t*)(R_RSP + 16), *(void**)(R_RSP + 24), *(uint64_t*)(R_RSP + 32), *(void**)(R_RSP + 40)); }
void vFppiiiiiiiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiiiiiii_t fn = (vFppiiiiiiiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(int64_t*)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); }
void vFppiiiiipiii(x64emu_t *emu, uintptr_t fcn) { vFppiiiiipiii_t fn = (vFppiiiiipiii_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, *(int64_t*)(R_RSP + 8), *(void**)(R_RSP + 16), *(int64_t*)(R_RSP + 24), *(int64_t*)(R_RSP + 32), *(int64_t*)(R_RSP + 40)); }
void vFppiiiiddddi(x64emu_t *emu, uintptr_t fcn) { vFppiiiiddddi_t fn = (vFppiiiiddddi_t)fcn; fn((void*)R_RDI, (void*)R_RSI, (int64_t)R_RDX, (int64_t)R_RCX, (int64_t)R_R8, (int64_t)R_R9, emu->xmm[0].d[0], emu->xmm[1].d[0], emu->xmm[2].d[0], emu->xmm[3].d[0], *(int64_t*)(R_RSP + 8)); }
@ -4102,6 +4216,10 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &vFpuI) return 1;
if (fun == &vFpuu) return 1;
if (fun == &vFpup) return 1;
if (fun == &vFpUi) return 1;
if (fun == &vFpUu) return 1;
if (fun == &vFpUU) return 1;
if (fun == &vFpUp) return 1;
if (fun == &vFpff) return 3;
if (fun == &vFpdd) return 3;
if (fun == &vFpll) return 1;
@ -4111,6 +4229,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &vFpLp) return 1;
if (fun == &vFppi) return 1;
if (fun == &vFppu) return 1;
if (fun == &vFppU) return 1;
if (fun == &vFppd) return 2;
if (fun == &vFppl) return 1;
if (fun == &vFppL) return 1;
@ -4158,6 +4277,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &iFpup) return 1;
if (fun == &iFpUi) return 1;
if (fun == &iFpUU) return 1;
if (fun == &iFpUp) return 1;
if (fun == &iFpfu) return 2;
if (fun == &iFpff) return 3;
if (fun == &iFpdd) return 3;
@ -4344,6 +4464,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &vFpiuu) return 1;
if (fun == &vFpiuL) return 1;
if (fun == &vFpiup) return 1;
if (fun == &vFpiUu) return 1;
if (fun == &vFpifi) return 2;
if (fun == &vFpipi) return 1;
if (fun == &vFpipp) return 1;
@ -4354,6 +4475,13 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &vFpuup) return 1;
if (fun == &vFpudd) return 3;
if (fun == &vFpupp) return 1;
if (fun == &vFpUui) return 1;
if (fun == &vFpUuu) return 1;
if (fun == &vFpUup) return 1;
if (fun == &vFpUUi) return 1;
if (fun == &vFpUUp) return 1;
if (fun == &vFpUpp) return 1;
if (fun == &vFpfff) return 4;
if (fun == &vFpdii) return 2;
if (fun == &vFpddi) return 3;
if (fun == &vFpddd) return 4;
@ -4434,12 +4562,17 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &iFpuui) return 1;
if (fun == &iFpuuu) return 1;
if (fun == &iFpuup) return 1;
if (fun == &iFpuUp) return 1;
if (fun == &iFpuLL) return 1;
if (fun == &iFpuLp) return 1;
if (fun == &iFpupi) return 1;
if (fun == &iFpupu) return 1;
if (fun == &iFpupU) return 1;
if (fun == &iFpupL) return 1;
if (fun == &iFpupp) return 1;
if (fun == &iFpUup) return 1;
if (fun == &iFpUUU) return 1;
if (fun == &iFpUpp) return 1;
if (fun == &iFplii) return 1;
if (fun == &iFplip) return 1;
if (fun == &iFpLii) return 1;
@ -4645,7 +4778,15 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &vFpuiip) return 1;
if (fun == &vFpuipp) return 1;
if (fun == &vFpuuuu) return 1;
if (fun == &vFpuuup) return 1;
if (fun == &vFpuupp) return 1;
if (fun == &vFpuddd) return 4;
if (fun == &vFpupup) return 1;
if (fun == &vFpUuiu) return 1;
if (fun == &vFpUUuu) return 1;
if (fun == &vFpUUup) return 1;
if (fun == &vFpUUUu) return 1;
if (fun == &vFpUUUp) return 1;
if (fun == &vFpffff) return 5;
if (fun == &vFpddii) return 3;
if (fun == &vFpdddd) return 5;
@ -4710,6 +4851,7 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &iFpuuup) return 1;
if (fun == &iFpuuLL) return 1;
if (fun == &iFpuupp) return 1;
if (fun == &iFpupiU) return 1;
if (fun == &iFpuppp) return 1;
if (fun == &iFplluu) return 1;
if (fun == &iFpLiLi) return 1;
@ -4866,9 +5008,16 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &vFpiiuuu) return 1;
if (fun == &vFpiippp) return 1;
if (fun == &vFpipppi) return 1;
if (fun == &vFpuiiii) return 1;
if (fun == &vFpuiiiu) return 1;
if (fun == &vFpuiipp) return 1;
if (fun == &vFpuuuiu) return 1;
if (fun == &vFpuuppp) return 1;
if (fun == &vFpudddd) return 5;
if (fun == &vFpUiuup) return 1;
if (fun == &vFpUiUup) return 1;
if (fun == &vFpUipup) return 1;
if (fun == &vFpUUiup) return 1;
if (fun == &vFpdddii) return 4;
if (fun == &vFpddddd) return 6;
if (fun == &vFppiiii) return 1;
@ -4925,6 +5074,8 @@ int isSimpleWrapper(wrapper_t fun) {
if (fun == &iFpuiCpp) return 1;
if (fun == &iFpuippp) return 1;
if (fun == &iFpupuui) return 1;
if (fun == &iFpUUUip) return 1;
if (fun == &iFpUUUUp) return 1;
if (fun == &iFppiiip) return 1;
if (fun == &iFppiiuu) return 1;
if (fun == &iFppiipi) return 1;

View File

@ -332,6 +332,10 @@ void vFpui(x64emu_t *emu, uintptr_t fnc);
void vFpuI(x64emu_t *emu, uintptr_t fnc);
void vFpuu(x64emu_t *emu, uintptr_t fnc);
void vFpup(x64emu_t *emu, uintptr_t fnc);
void vFpUi(x64emu_t *emu, uintptr_t fnc);
void vFpUu(x64emu_t *emu, uintptr_t fnc);
void vFpUU(x64emu_t *emu, uintptr_t fnc);
void vFpUp(x64emu_t *emu, uintptr_t fnc);
void vFpff(x64emu_t *emu, uintptr_t fnc);
void vFpdd(x64emu_t *emu, uintptr_t fnc);
void vFpll(x64emu_t *emu, uintptr_t fnc);
@ -341,6 +345,7 @@ void vFpLL(x64emu_t *emu, uintptr_t fnc);
void vFpLp(x64emu_t *emu, uintptr_t fnc);
void vFppi(x64emu_t *emu, uintptr_t fnc);
void vFppu(x64emu_t *emu, uintptr_t fnc);
void vFppU(x64emu_t *emu, uintptr_t fnc);
void vFppd(x64emu_t *emu, uintptr_t fnc);
void vFppl(x64emu_t *emu, uintptr_t fnc);
void vFppL(x64emu_t *emu, uintptr_t fnc);
@ -402,6 +407,7 @@ void iFpuL(x64emu_t *emu, uintptr_t fnc);
void iFpup(x64emu_t *emu, uintptr_t fnc);
void iFpUi(x64emu_t *emu, uintptr_t fnc);
void iFpUU(x64emu_t *emu, uintptr_t fnc);
void iFpUp(x64emu_t *emu, uintptr_t fnc);
void iFpfu(x64emu_t *emu, uintptr_t fnc);
void iFpff(x64emu_t *emu, uintptr_t fnc);
void iFpdd(x64emu_t *emu, uintptr_t fnc);
@ -553,6 +559,7 @@ void vFELLp(x64emu_t *emu, uintptr_t fnc);
void vFEpii(x64emu_t *emu, uintptr_t fnc);
void vFEpip(x64emu_t *emu, uintptr_t fnc);
void vFEpup(x64emu_t *emu, uintptr_t fnc);
void vFEpUp(x64emu_t *emu, uintptr_t fnc);
void vFEppp(x64emu_t *emu, uintptr_t fnc);
void vFEppV(x64emu_t *emu, uintptr_t fnc);
void vFEppA(x64emu_t *emu, uintptr_t fnc);
@ -621,6 +628,7 @@ void vFpiip(x64emu_t *emu, uintptr_t fnc);
void vFpiuu(x64emu_t *emu, uintptr_t fnc);
void vFpiuL(x64emu_t *emu, uintptr_t fnc);
void vFpiup(x64emu_t *emu, uintptr_t fnc);
void vFpiUu(x64emu_t *emu, uintptr_t fnc);
void vFpifi(x64emu_t *emu, uintptr_t fnc);
void vFpipi(x64emu_t *emu, uintptr_t fnc);
void vFpipp(x64emu_t *emu, uintptr_t fnc);
@ -631,6 +639,13 @@ void vFpuuu(x64emu_t *emu, uintptr_t fnc);
void vFpuup(x64emu_t *emu, uintptr_t fnc);
void vFpudd(x64emu_t *emu, uintptr_t fnc);
void vFpupp(x64emu_t *emu, uintptr_t fnc);
void vFpUui(x64emu_t *emu, uintptr_t fnc);
void vFpUuu(x64emu_t *emu, uintptr_t fnc);
void vFpUup(x64emu_t *emu, uintptr_t fnc);
void vFpUUi(x64emu_t *emu, uintptr_t fnc);
void vFpUUp(x64emu_t *emu, uintptr_t fnc);
void vFpUpp(x64emu_t *emu, uintptr_t fnc);
void vFpfff(x64emu_t *emu, uintptr_t fnc);
void vFpdii(x64emu_t *emu, uintptr_t fnc);
void vFpddi(x64emu_t *emu, uintptr_t fnc);
void vFpddd(x64emu_t *emu, uintptr_t fnc);
@ -665,6 +680,7 @@ void iFEpii(x64emu_t *emu, uintptr_t fnc);
void iFEpip(x64emu_t *emu, uintptr_t fnc);
void iFEpiV(x64emu_t *emu, uintptr_t fnc);
void iFEpiA(x64emu_t *emu, uintptr_t fnc);
void iFEpUp(x64emu_t *emu, uintptr_t fnc);
void iFEpLi(x64emu_t *emu, uintptr_t fnc);
void iFEpLp(x64emu_t *emu, uintptr_t fnc);
void iFEppi(x64emu_t *emu, uintptr_t fnc);
@ -731,13 +747,18 @@ void iFpuip(x64emu_t *emu, uintptr_t fnc);
void iFpuui(x64emu_t *emu, uintptr_t fnc);
void iFpuuu(x64emu_t *emu, uintptr_t fnc);
void iFpuup(x64emu_t *emu, uintptr_t fnc);
void iFpuUp(x64emu_t *emu, uintptr_t fnc);
void iFpuLL(x64emu_t *emu, uintptr_t fnc);
void iFpuLp(x64emu_t *emu, uintptr_t fnc);
void iFpupi(x64emu_t *emu, uintptr_t fnc);
void iFpupu(x64emu_t *emu, uintptr_t fnc);
void iFpupU(x64emu_t *emu, uintptr_t fnc);
void iFpupL(x64emu_t *emu, uintptr_t fnc);
void iFpupp(x64emu_t *emu, uintptr_t fnc);
void iFpupV(x64emu_t *emu, uintptr_t fnc);
void iFpUup(x64emu_t *emu, uintptr_t fnc);
void iFpUUU(x64emu_t *emu, uintptr_t fnc);
void iFpUpp(x64emu_t *emu, uintptr_t fnc);
void iFplii(x64emu_t *emu, uintptr_t fnc);
void iFplip(x64emu_t *emu, uintptr_t fnc);
void iFpLii(x64emu_t *emu, uintptr_t fnc);
@ -978,7 +999,15 @@ void vFpipiu(x64emu_t *emu, uintptr_t fnc);
void vFpuiip(x64emu_t *emu, uintptr_t fnc);
void vFpuipp(x64emu_t *emu, uintptr_t fnc);
void vFpuuuu(x64emu_t *emu, uintptr_t fnc);
void vFpuuup(x64emu_t *emu, uintptr_t fnc);
void vFpuupp(x64emu_t *emu, uintptr_t fnc);
void vFpuddd(x64emu_t *emu, uintptr_t fnc);
void vFpupup(x64emu_t *emu, uintptr_t fnc);
void vFpUuiu(x64emu_t *emu, uintptr_t fnc);
void vFpUUuu(x64emu_t *emu, uintptr_t fnc);
void vFpUUup(x64emu_t *emu, uintptr_t fnc);
void vFpUUUu(x64emu_t *emu, uintptr_t fnc);
void vFpUUUp(x64emu_t *emu, uintptr_t fnc);
void vFpffff(x64emu_t *emu, uintptr_t fnc);
void vFpddii(x64emu_t *emu, uintptr_t fnc);
void vFpdddd(x64emu_t *emu, uintptr_t fnc);
@ -1009,6 +1038,7 @@ void iFEpiii(x64emu_t *emu, uintptr_t fnc);
void iFEpipi(x64emu_t *emu, uintptr_t fnc);
void iFEpipp(x64emu_t *emu, uintptr_t fnc);
void iFEpipV(x64emu_t *emu, uintptr_t fnc);
void iFEpUup(x64emu_t *emu, uintptr_t fnc);
void iFEpLpp(x64emu_t *emu, uintptr_t fnc);
void iFEpLpV(x64emu_t *emu, uintptr_t fnc);
void iFEpLpA(x64emu_t *emu, uintptr_t fnc);
@ -1060,6 +1090,7 @@ void iFpuuui(x64emu_t *emu, uintptr_t fnc);
void iFpuuup(x64emu_t *emu, uintptr_t fnc);
void iFpuuLL(x64emu_t *emu, uintptr_t fnc);
void iFpuupp(x64emu_t *emu, uintptr_t fnc);
void iFpupiU(x64emu_t *emu, uintptr_t fnc);
void iFpuppp(x64emu_t *emu, uintptr_t fnc);
void iFplluu(x64emu_t *emu, uintptr_t fnc);
void iFpLiLi(x64emu_t *emu, uintptr_t fnc);
@ -1178,6 +1209,7 @@ void vFEiiipp(x64emu_t *emu, uintptr_t fnc);
void vFEpiLpp(x64emu_t *emu, uintptr_t fnc);
void vFEpippp(x64emu_t *emu, uintptr_t fnc);
void vFEpuipp(x64emu_t *emu, uintptr_t fnc);
void vFEpupup(x64emu_t *emu, uintptr_t fnc);
void vFEpLLpp(x64emu_t *emu, uintptr_t fnc);
void vFEppipV(x64emu_t *emu, uintptr_t fnc);
void vFEppipA(x64emu_t *emu, uintptr_t fnc);
@ -1244,9 +1276,16 @@ void vFpiiuuu(x64emu_t *emu, uintptr_t fnc);
void vFpiippp(x64emu_t *emu, uintptr_t fnc);
void vFpipipV(x64emu_t *emu, uintptr_t fnc);
void vFpipppi(x64emu_t *emu, uintptr_t fnc);
void vFpuiiii(x64emu_t *emu, uintptr_t fnc);
void vFpuiiiu(x64emu_t *emu, uintptr_t fnc);
void vFpuiipp(x64emu_t *emu, uintptr_t fnc);
void vFpuuuiu(x64emu_t *emu, uintptr_t fnc);
void vFpuuppp(x64emu_t *emu, uintptr_t fnc);
void vFpudddd(x64emu_t *emu, uintptr_t fnc);
void vFpUiuup(x64emu_t *emu, uintptr_t fnc);
void vFpUiUup(x64emu_t *emu, uintptr_t fnc);
void vFpUipup(x64emu_t *emu, uintptr_t fnc);
void vFpUUiup(x64emu_t *emu, uintptr_t fnc);
void vFpdddii(x64emu_t *emu, uintptr_t fnc);
void vFpddddd(x64emu_t *emu, uintptr_t fnc);
void vFppiiii(x64emu_t *emu, uintptr_t fnc);
@ -1284,6 +1323,7 @@ void iFEpiipV(x64emu_t *emu, uintptr_t fnc);
void iFEpilpV(x64emu_t *emu, uintptr_t fnc);
void iFEpippi(x64emu_t *emu, uintptr_t fnc);
void iFEpuppp(x64emu_t *emu, uintptr_t fnc);
void iFEpUppp(x64emu_t *emu, uintptr_t fnc);
void iFEppppp(x64emu_t *emu, uintptr_t fnc);
void iFiiiiii(x64emu_t *emu, uintptr_t fnc);
void iFiiiiip(x64emu_t *emu, uintptr_t fnc);
@ -1313,6 +1353,8 @@ void iFpWpppp(x64emu_t *emu, uintptr_t fnc);
void iFpuiCpp(x64emu_t *emu, uintptr_t fnc);
void iFpuippp(x64emu_t *emu, uintptr_t fnc);
void iFpupuui(x64emu_t *emu, uintptr_t fnc);
void iFpUUUip(x64emu_t *emu, uintptr_t fnc);
void iFpUUUUp(x64emu_t *emu, uintptr_t fnc);
void iFppiiip(x64emu_t *emu, uintptr_t fnc);
void iFppiiuu(x64emu_t *emu, uintptr_t fnc);
void iFppiipi(x64emu_t *emu, uintptr_t fnc);
@ -1451,6 +1493,11 @@ void vFpiiliip(x64emu_t *emu, uintptr_t fnc);
void vFpiipCpp(x64emu_t *emu, uintptr_t fnc);
void vFpipipii(x64emu_t *emu, uintptr_t fnc);
void vFpipppii(x64emu_t *emu, uintptr_t fnc);
void vFpuuuuuu(x64emu_t *emu, uintptr_t fnc);
void vFpuuUUuu(x64emu_t *emu, uintptr_t fnc);
void vFpuupppp(x64emu_t *emu, uintptr_t fnc);
void vFpUiUiup(x64emu_t *emu, uintptr_t fnc);
void vFpUUUUuu(x64emu_t *emu, uintptr_t fnc);
void vFpddiidd(x64emu_t *emu, uintptr_t fnc);
void vFpdddddd(x64emu_t *emu, uintptr_t fnc);
void vFppiiiii(x64emu_t *emu, uintptr_t fnc);
@ -1477,6 +1524,7 @@ void vFpppppip(x64emu_t *emu, uintptr_t fnc);
void vFppppppi(x64emu_t *emu, uintptr_t fnc);
void vFppppppp(x64emu_t *emu, uintptr_t fnc);
void iFEpupppp(x64emu_t *emu, uintptr_t fnc);
void iFEpUuppp(x64emu_t *emu, uintptr_t fnc);
void iFEpLiLpV(x64emu_t *emu, uintptr_t fnc);
void iFEppuppp(x64emu_t *emu, uintptr_t fnc);
void iFEppLpIi(x64emu_t *emu, uintptr_t fnc);
@ -1485,6 +1533,7 @@ void iFEpppppL(x64emu_t *emu, uintptr_t fnc);
void iFEpppppp(x64emu_t *emu, uintptr_t fnc);
void iFiiiiiip(x64emu_t *emu, uintptr_t fnc);
void iFpiiiiii(x64emu_t *emu, uintptr_t fnc);
void iFpiiiiip(x64emu_t *emu, uintptr_t fnc);
void iFpiiiuwp(x64emu_t *emu, uintptr_t fnc);
void iFpiiuuiu(x64emu_t *emu, uintptr_t fnc);
void iFpiipppp(x64emu_t *emu, uintptr_t fnc);
@ -1607,8 +1656,12 @@ void vFffffffff(x64emu_t *emu, uintptr_t fnc);
void vFlipuiuip(x64emu_t *emu, uintptr_t fnc);
void vFpiiiiiii(x64emu_t *emu, uintptr_t fnc);
void vFpiiiipii(x64emu_t *emu, uintptr_t fnc);
void vFpiiULipp(x64emu_t *emu, uintptr_t fnc);
void vFpiUuupup(x64emu_t *emu, uintptr_t fnc);
void vFpippiiuu(x64emu_t *emu, uintptr_t fnc);
void vFpippiipi(x64emu_t *emu, uintptr_t fnc);
void vFpUiUiupi(x64emu_t *emu, uintptr_t fnc);
void vFpUuuUUUi(x64emu_t *emu, uintptr_t fnc);
void vFppiiiiii(x64emu_t *emu, uintptr_t fnc);
void vFppiiipii(x64emu_t *emu, uintptr_t fnc);
void vFppipipii(x64emu_t *emu, uintptr_t fnc);
@ -1633,6 +1686,7 @@ void iFpuippLpp(x64emu_t *emu, uintptr_t fnc);
void iFpuuiiiii(x64emu_t *emu, uintptr_t fnc);
void iFpupppWWu(x64emu_t *emu, uintptr_t fnc);
void iFpupppppp(x64emu_t *emu, uintptr_t fnc);
void iFpUuuLpUi(x64emu_t *emu, uintptr_t fnc);
void iFppiiiiiu(x64emu_t *emu, uintptr_t fnc);
void iFppIIIppp(x64emu_t *emu, uintptr_t fnc);
void iFpppiiipi(x64emu_t *emu, uintptr_t fnc);
@ -1675,6 +1729,7 @@ void pFplpppppp(x64emu_t *emu, uintptr_t fnc);
void pFppiiiiii(x64emu_t *emu, uintptr_t fnc);
void pFpppuuLLu(x64emu_t *emu, uintptr_t fnc);
void pFpppppupp(x64emu_t *emu, uintptr_t fnc);
void vFEpiiiiipp(x64emu_t *emu, uintptr_t fnc);
void vFEppiipppp(x64emu_t *emu, uintptr_t fnc);
void vFEpppiippp(x64emu_t *emu, uintptr_t fnc);
void vFiiiiiiiii(x64emu_t *emu, uintptr_t fnc);
@ -1798,6 +1853,7 @@ void pFpuuuwwwwWW(x64emu_t *emu, uintptr_t fnc);
void pFplllllllll(x64emu_t *emu, uintptr_t fnc);
void pFppuiipuuii(x64emu_t *emu, uintptr_t fnc);
void pFpppppppppp(x64emu_t *emu, uintptr_t fnc);
void vFEpiiiupupup(x64emu_t *emu, uintptr_t fnc);
void vFuiiiiiiiiip(x64emu_t *emu, uintptr_t fnc);
void vFuiiiiiiiuip(x64emu_t *emu, uintptr_t fnc);
void vFuiiiiiiiuup(x64emu_t *emu, uintptr_t fnc);
@ -1813,6 +1869,7 @@ void vFuuddiiddiip(x64emu_t *emu, uintptr_t fnc);
void vFuffffffffff(x64emu_t *emu, uintptr_t fnc);
void vFpipipiipiii(x64emu_t *emu, uintptr_t fnc);
void vFpipppiiiipi(x64emu_t *emu, uintptr_t fnc);
void vFpupiiupupup(x64emu_t *emu, uintptr_t fnc);
void vFppiiiiiiiii(x64emu_t *emu, uintptr_t fnc);
void vFppiiiiipiii(x64emu_t *emu, uintptr_t fnc);
void vFppiiiiddddi(x64emu_t *emu, uintptr_t fnc);

View File

@ -527,7 +527,7 @@ GO(gnutls_pk_to_sign, pFpp)
GO(gnutls_priority_set_direct, iFppp)
//GO(gnutls_priority_sign_list,
//GO(gnutls_priority_string_list,
//GO(gnutls_privkey_decrypt_data,
GO(gnutls_privkey_decrypt_data, iFpipp)
GO(gnutls_privkey_deinit, vFp)
GO(gnutls_privkey_export_dsa_raw, iFpppppp)
GO(gnutls_privkey_export_ecc_raw, iFppppp)

View File

@ -864,14 +864,13 @@ EXPORT int64_t my2_SDL_IsJoystickHIDAPI(x64emu_t* emu, uint64_t a, uint64_t b)
void* my_vkGetInstanceProcAddr(x64emu_t* emu, void* device, void* name);
EXPORT void* my2_SDL_Vulkan_GetVkGetInstanceProcAddr(x64emu_t* emu)
{
(void)emu;
//sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
sdl2_my_t *my = (sdl2_my_t *)emu->context->sdl2lib->priv.w.p2;
//if(!emu->context->vkprocaddress)
// emu->context->vkprocaddress = (vkprocaddess_t)my->SDL_Vulkan_GetVkGetInstanceProcAddr();
if(!emu->context->vkprocaddress)
emu->context->vkprocaddress = (vkprocaddess_t)my->SDL_Vulkan_GetVkGetInstanceProcAddr();
//if(emu->context->vkprocaddress)
// return (void*)AddCheckBridge(my_context->sdl2lib->priv.w.bridge, pFEpp, my_vkGetInstanceProcAddr, 0);
if(emu->context->vkprocaddress)
return (void*)AddCheckBridge(my_context->sdl2lib->priv.w.bridge, pFEpp, my_vkGetInstanceProcAddr, 0, "vkGetInstanceProcAddr");
return NULL;
}

598
src/wrapped/wrappedvulkan.c Executable file
View File

@ -0,0 +1,598 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <dlfcn.h>
#include "wrappedlibs.h"
#include "debug.h"
#include "wrapper.h"
#include "bridge.h"
#include "librarian/library_private.h"
#include "x64emu.h"
#include "emu/x64emu_private.h"
#include "box64context.h"
#include "librarian.h"
#include "callback.h"
//extern char* libvulkan;
const char* vulkanName = "libvulkan.so.1";
#define LIBNAME vulkan
static library_t *my_lib = NULL;
typedef void(*vFpUp_t) (void*, uint64_t, void*);
#define ADDED_FUNCTIONS() \
GO(vkDestroySamplerYcbcrConversion, vFpUp_t) \
#include "generated/wrappedvulkantypes.h"
typedef struct vulkan_my_s {
// functions
#define GO(A, B) B A;
SUPER()
#undef GO
void* currentInstance; // track current instance. If using multiple instance, that will be a mess!
} vulkan_my_t;
void* getVulkanMy(library_t* lib)
{
vulkan_my_t* my = (vulkan_my_t*)calloc(1, sizeof(vulkan_my_t));
#define GO(A, W) my->A = (W)dlsym(lib->priv.w.lib, #A);
SUPER()
#undef GO
return my;
}
void freeVulkanMy(void* p)
{
//vulkan_my_t* my = (vulkan_my_t*)p;
}
void updateInstance(vulkan_my_t* my)
{
void* p;
#define GO(A, W) p = my_context->vkprocaddress(my->currentInstance, #A); if(p) my->A = p;
SUPER()
#undef GO
}
void fillVulkanProcWrapper(box64context_t*);
void freeVulkanProcWrapper(box64context_t*);
static void* resolveSymbol(x64emu_t* emu, void* symbol, const char* rname)
{
// check if alread bridged
uintptr_t ret = CheckBridged(emu->context->system, symbol);
if(ret) {
if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", (void*)ret);
return (void*)ret; // already bridged
}
// get wrapper
khint_t k = kh_get(symbolmap, emu->context->vkwrappers, rname);
if(k==kh_end(emu->context->vkwrappers) && strstr(rname, "KHR")==NULL) {
// try again, adding KHR at the end if not present
char tmp[200];
strcpy(tmp, rname);
strcat(tmp, "KHR");
k = kh_get(symbolmap, emu->context->vkwrappers, tmp);
}
if(k==kh_end(emu->context->vkwrappers)) {
if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL);
if(dlsym_error) printf_log(LOG_NONE, "Warning, no wrapper for %s\n", rname);
return NULL;
}
const char* constname = kh_key(emu->context->vkwrappers, k);
AddOffsetSymbol(emu->context->maplib, symbol, constname);
ret = AddBridge(emu->context->system, kh_value(emu->context->vkwrappers, k), symbol, 0, constname);
if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p (%p)\n", (void*)ret, symbol);
return (void*)ret;
}
EXPORT void* my_vkGetDeviceProcAddr(x64emu_t* emu, void* device, void* name)
{
khint_t k;
const char* rname = (const char*)name;
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "Calling my_vkGetDeviceProcAddr(%p, \"%s\") => ", device, rname);
if(!emu->context->vkwrappers)
fillVulkanProcWrapper(emu->context);
k = kh_get(symbolmap, emu->context->vkmymap, rname);
int is_my = (k==kh_end(emu->context->vkmymap))?0:1;
void* symbol;
if(is_my) {
// try again, by using custom "my_" now...
char tmp[200];
strcpy(tmp, "my_");
strcat(tmp, rname);
symbol = dlsym(emu->context->box64lib, tmp);
// need to update symbol link maybe
#define GO(A, W) if(!strcmp(rname, #A)) my->A = (W)my->vkGetDeviceProcAddr(device, name);
SUPER()
#undef GO
} else
symbol = my->vkGetDeviceProcAddr(device, name);
if(!symbol) {
if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL);
return NULL; // easy
}
return resolveSymbol(emu, symbol, rname);
}
EXPORT void* my_vkGetInstanceProcAddr(x64emu_t* emu, void* instance, void* name)
{
khint_t k;
const char* rname = (const char*)name;
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "Calling my_vkGetInstanceProcAddr(%p, \"%s\") => ", instance, rname);
if(!emu->context->vkwrappers)
fillVulkanProcWrapper(emu->context);
if(instance!=my->currentInstance) {
my->currentInstance = instance;
updateInstance(my);
}
// check if vkprocaddress is filled, and search for lib and fill it if needed
// get proc adress using actual glXGetProcAddress
k = kh_get(symbolmap, emu->context->vkmymap, rname);
int is_my = (k==kh_end(emu->context->vkmymap))?0:1;
void* symbol = my_context->vkprocaddress(instance, rname);
if(!symbol) {
if(dlsym_error && box64_log<LOG_DEBUG) printf_log(LOG_NONE, "%p\n", NULL);
return NULL; // easy
}
if(is_my) {
// try again, by using custom "my_" now...
char tmp[200];
strcpy(tmp, "my_");
strcat(tmp, rname);
symbol = dlsym(emu->context->box64lib, tmp);
// need to update symbol link maybe
#define GO(A, W) if(!strcmp(rname, #A)) my->A = (W)my_context->vkprocaddress(instance, rname);;
SUPER()
#undef GO
}
return resolveSymbol(emu, symbol, rname);
}
#undef SUPER
typedef struct my_VkAllocationCallbacks_s {
void* pUserData;
void* pfnAllocation;
void* pfnReallocation;
void* pfnFree;
void* pfnInternalAllocation;
void* pfnInternalFree;
} my_VkAllocationCallbacks_t;
#define SUPER() \
GO(0) \
GO(1) \
GO(2) \
GO(3) \
GO(4)
// Allocation ...
#define GO(A) \
static uintptr_t my_Allocation_fct_##A = 0; \
static void* my_Allocation_##A(void* a, size_t b, size_t c, int d) \
{ \
return (void*)RunFunction(my_context, my_Allocation_fct_##A, 4, a, b, c, d); \
}
SUPER()
#undef GO
static void* find_Allocation_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_Allocation_fct_##A == (uintptr_t)fct) return my_Allocation_##A;
SUPER()
#undef GO
#define GO(A) if(my_Allocation_fct_##A == 0) {my_Allocation_fct_##A = (uintptr_t)fct; return my_Allocation_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for Vulkan Allocation callback\n");
return NULL;
}
// Reallocation ...
#define GO(A) \
static uintptr_t my_Reallocation_fct_##A = 0; \
static void* my_Reallocation_##A(void* a, void* b, size_t c, size_t d, int e) \
{ \
return (void*)RunFunction(my_context, my_Reallocation_fct_##A, 5, a, b, c, d, e); \
}
SUPER()
#undef GO
static void* find_Reallocation_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_Reallocation_fct_##A == (uintptr_t)fct) return my_Reallocation_##A;
SUPER()
#undef GO
#define GO(A) if(my_Reallocation_fct_##A == 0) {my_Reallocation_fct_##A = (uintptr_t)fct; return my_Reallocation_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for Vulkan Reallocation callback\n");
return NULL;
}
// Free ...
#define GO(A) \
static uintptr_t my_Free_fct_##A = 0; \
static void my_Free_##A(void* a, void* b) \
{ \
RunFunction(my_context, my_Free_fct_##A, 2, a, b); \
}
SUPER()
#undef GO
static void* find_Free_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_Free_fct_##A == (uintptr_t)fct) return my_Free_##A;
SUPER()
#undef GO
#define GO(A) if(my_Free_fct_##A == 0) {my_Free_fct_##A = (uintptr_t)fct; return my_Free_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for Vulkan Free callback\n");
return NULL;
}
// InternalAllocNotification ...
#define GO(A) \
static uintptr_t my_InternalAllocNotification_fct_##A = 0; \
static void my_InternalAllocNotification_##A(void* a, size_t b, int c, int d) \
{ \
RunFunction(my_context, my_InternalAllocNotification_fct_##A, 4, a, b, c, d); \
}
SUPER()
#undef GO
static void* find_InternalAllocNotification_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_InternalAllocNotification_fct_##A == (uintptr_t)fct) return my_InternalAllocNotification_##A;
SUPER()
#undef GO
#define GO(A) if(my_InternalAllocNotification_fct_##A == 0) {my_InternalAllocNotification_fct_##A = (uintptr_t)fct; return my_InternalAllocNotification_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for Vulkan InternalAllocNotification callback\n");
return NULL;
}
// InternalFreeNotification ...
#define GO(A) \
static uintptr_t my_InternalFreeNotification_fct_##A = 0; \
static void my_InternalFreeNotification_##A(void* a, size_t b, int c, int d) \
{ \
RunFunction(my_context, my_InternalFreeNotification_fct_##A, 4, a, b, c, d); \
}
SUPER()
#undef GO
static void* find_InternalFreeNotification_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_InternalFreeNotification_fct_##A == (uintptr_t)fct) return my_InternalFreeNotification_##A;
SUPER()
#undef GO
#define GO(A) if(my_InternalFreeNotification_fct_##A == 0) {my_InternalFreeNotification_fct_##A = (uintptr_t)fct; return my_InternalFreeNotification_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for Vulkan InternalFreeNotification callback\n");
return NULL;
}
// DebugReportCallbackEXT ...
#define GO(A) \
static uintptr_t my_DebugReportCallbackEXT_fct_##A = 0; \
static int my_DebugReportCallbackEXT_##A(int a, int b, uint64_t c, size_t d, int e, void* f, void* g, void* h) \
{ \
return RunFunction(my_context, my_DebugReportCallbackEXT_fct_##A, 8, a, b, c, d, e, f, g, h); \
}
SUPER()
#undef GO
static void* find_DebugReportCallbackEXT_Fct(void* fct)
{
if(!fct) return fct;
if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct);
#define GO(A) if(my_DebugReportCallbackEXT_fct_##A == (uintptr_t)fct) return my_DebugReportCallbackEXT_##A;
SUPER()
#undef GO
#define GO(A) if(my_DebugReportCallbackEXT_fct_##A == 0) {my_DebugReportCallbackEXT_fct_##A = (uintptr_t)fct; return my_DebugReportCallbackEXT_##A; }
SUPER()
#undef GO
printf_log(LOG_NONE, "Warning, no more slot for Vulkan DebugReportCallbackEXT callback\n");
return NULL;
}
#undef SUPER
//#define PRE_INIT if(libGL) {lib->priv.w.lib = dlopen(libGL, RTLD_LAZY | RTLD_GLOBAL); lib->path = strdup(libGL);} else
#define PRE_INIT \
if(box64_novulkan) \
return -1;
#define CUSTOM_INIT \
my_lib = lib; \
lib->priv.w.p2 = getVulkanMy(lib); \
lib->priv.w.priv = dlsym(lib->priv.w.lib, "vkGetInstanceProcAddr"); \
box64->vkprocaddress = lib->priv.w.priv;
#define CUSTOM_FINI \
my_lib = NULL; \
freeVulkanMy(lib->priv.w.p2); \
free(lib->priv.w.p2);
#include "wrappedlib_init.h"
void fillVulkanProcWrapper(box64context_t* context)
{
int cnt, ret;
khint_t k;
kh_symbolmap_t * symbolmap = kh_init(symbolmap);
// populates maps...
cnt = sizeof(vulkansymbolmap)/sizeof(map_onesymbol_t);
for (int i=0; i<cnt; ++i) {
k = kh_put(symbolmap, symbolmap, vulkansymbolmap[i].name, &ret);
kh_value(symbolmap, k) = vulkansymbolmap[i].w;
}
// and the my_ symbols map
cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t);
for (int i=0; i<cnt; ++i) {
k = kh_put(symbolmap, symbolmap, vulkanmysymbolmap[i].name, &ret);
kh_value(symbolmap, k) = vulkanmysymbolmap[i].w;
}
context->vkwrappers = symbolmap;
// my_* map
symbolmap = kh_init(symbolmap);
cnt = sizeof(MAPNAME(mysymbolmap))/sizeof(map_onesymbol_t);
for (int i=0; i<cnt; ++i) {
k = kh_put(symbolmap, symbolmap, vulkanmysymbolmap[i].name, &ret);
kh_value(symbolmap, k) = vulkanmysymbolmap[i].w;
}
context->vkmymap = symbolmap;
}
void freeVulkanProcWrapper(box64context_t* context)
{
if(!context)
return;
if(context->vkwrappers)
kh_destroy(symbolmap, context->vkwrappers);
if(context->vkmymap)
kh_destroy(symbolmap, context->vkmymap);
context->vkwrappers = NULL;
context->vkmymap = NULL;
}
my_VkAllocationCallbacks_t* find_VkAllocationCallbacks(my_VkAllocationCallbacks_t* dest, my_VkAllocationCallbacks_t* src)
{
if(!src) return src;
dest->pUserData = src->pUserData;
dest->pfnAllocation = find_Allocation_Fct(src->pfnAllocation);
dest->pfnReallocation = find_Reallocation_Fct(src->pfnReallocation);
dest->pfnFree = find_Free_Fct(src->pfnFree);
dest->pfnInternalAllocation = find_InternalAllocNotification_Fct(src->pfnInternalAllocation);
dest->pfnInternalFree = find_InternalFreeNotification_Fct(src->pfnInternalFree);
return dest;
}
// functions....
#define CREATE(A) \
EXPORT int my_##A(x64emu_t* emu, void* device, void* pAllocateInfo, my_VkAllocationCallbacks_t* pAllocator, void* p) \
{ \
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; \
my_VkAllocationCallbacks_t my_alloc; \
return my->A(device, pAllocateInfo, find_VkAllocationCallbacks(&my_alloc, pAllocator), p); \
}
#define DESTROY(A) \
EXPORT void my_##A(x64emu_t* emu, void* device, void* p, my_VkAllocationCallbacks_t* pAllocator) \
{ \
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; \
my_VkAllocationCallbacks_t my_alloc; \
my->A(device, p, find_VkAllocationCallbacks(&my_alloc, pAllocator)); \
}
#define DESTROY64(A) \
EXPORT void my_##A(x64emu_t* emu, void* device, uint64_t p, my_VkAllocationCallbacks_t* pAllocator) \
{ \
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2; \
my_VkAllocationCallbacks_t my_alloc; \
my->A(device, p, find_VkAllocationCallbacks(&my_alloc, pAllocator)); \
}
CREATE(vkAllocateMemory)
CREATE(vkCreateBuffer)
CREATE(vkCreateBufferView)
CREATE(vkCreateCommandPool)
EXPORT int my_vkCreateComputePipelines(x64emu_t* emu, void* device, uint64_t pipelineCache, uint32_t count, void* pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pPipelines)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
int ret = my->vkCreateComputePipelines(device, pipelineCache, count, pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pPipelines);
return ret;
}
CREATE(vkCreateDescriptorPool)
CREATE(vkCreateDescriptorSetLayout)
CREATE(vkCreateDescriptorUpdateTemplate)
CREATE(vkCreateDescriptorUpdateTemplateKHR)
CREATE(vkCreateDevice)
EXPORT int my_vkCreateDisplayModeKHR(x64emu_t* emu, void* physical, uint64_t display, void* pCreateInfo, my_VkAllocationCallbacks_t* pAllocator, void* pMode)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
return my->vkCreateDisplayModeKHR(physical, display, pCreateInfo, find_VkAllocationCallbacks(&my_alloc, pAllocator), pMode);
}
CREATE(vkCreateDisplayPlaneSurfaceKHR)
CREATE(vkCreateEvent)
CREATE(vkCreateFence)
CREATE(vkCreateFramebuffer)
EXPORT int my_vkCreateGraphicsPipelines(x64emu_t* emu, void* device, uint64_t pipelineCache, uint32_t count, void* pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pPipelines)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
int ret = my->vkCreateGraphicsPipelines(device, pipelineCache, count, pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pPipelines);
return ret;
}
CREATE(vkCreateImage)
CREATE(vkCreateImageView)
EXPORT int my_vkCreateInstance(x64emu_t* emu, void* pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pInstance)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
return my->vkCreateInstance(pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pInstance);
}
CREATE(vkCreatePipelineCache)
CREATE(vkCreatePipelineLayout)
CREATE(vkCreateQueryPool)
CREATE(vkCreateRenderPass)
CREATE(vkCreateSampler)
CREATE(vkCreateSamplerYcbcrConversion)
CREATE(vkCreateSemaphore)
CREATE(vkCreateShaderModule)
EXPORT int my_vkCreateSharedSwapchainsKHR(x64emu_t* emu, void* device, uint32_t count, void** pCreateInfos, my_VkAllocationCallbacks_t* pAllocator, void* pSwapchains)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
int ret = my->vkCreateSharedSwapchainsKHR(device, count, pCreateInfos, find_VkAllocationCallbacks(&my_alloc, pAllocator), pSwapchains);
return ret;
}
CREATE(vkCreateSwapchainKHR)
CREATE(vkCreateWaylandSurfaceKHR)
CREATE(vkCreateXcbSurfaceKHR)
CREATE(vkCreateXlibSurfaceKHR)
CREATE(vkCreateRenderPass2)
CREATE(vkCreateRenderPass2KHR)
DESTROY64(vkDestroyBuffer)
DESTROY64(vkDestroyBufferView)
DESTROY64(vkDestroyCommandPool)
DESTROY64(vkDestroyDescriptorPool)
DESTROY64(vkDestroyDescriptorSetLayout)
DESTROY64(vkDestroyDescriptorUpdateTemplate)
DESTROY64(vkDestroyDescriptorUpdateTemplateKHR)
EXPORT void my_vkDestroyDevice(x64emu_t* emu, void* pDevice, my_VkAllocationCallbacks_t* pAllocator)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
my->vkDestroyDevice(pDevice, find_VkAllocationCallbacks(&my_alloc, pAllocator));
}
DESTROY64(vkDestroyEvent)
DESTROY64(vkDestroyFence)
DESTROY64(vkDestroyFramebuffer)
DESTROY64(vkDestroyImage)
DESTROY64(vkDestroyImageView)
EXPORT void my_vkDestroyInstance(x64emu_t* emu, void* instance, my_VkAllocationCallbacks_t* pAllocator)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
my->vkDestroyInstance(instance, find_VkAllocationCallbacks(&my_alloc, pAllocator));
}
DESTROY64(vkDestroyPipeline)
DESTROY64(vkDestroyPipelineCache)
DESTROY64(vkDestroyPipelineLayout)
DESTROY64(vkDestroyQueryPool)
DESTROY64(vkDestroyRenderPass)
DESTROY64(vkDestroySampler)
DESTROY64(vkDestroySamplerYcbcrConversion)
DESTROY64(vkDestroySemaphore)
DESTROY64(vkDestroyShaderModule)
DESTROY64(vkDestroySwapchainKHR)
DESTROY64(vkFreeMemory)
CREATE(vkCreateDebugUtilsMessengerEXT)
DESTROY(vkDestroyDebugUtilsMessengerEXT)
DESTROY64(vkDestroySurfaceKHR)
DESTROY64(vkDestroySamplerYcbcrConversionKHR)
EXPORT void my_vkGetPhysicalDeviceProperties(x64emu_t* emu, void* device, void* pProps)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my->vkGetPhysicalDeviceProperties(device, pProps);
}
EXPORT void my_vkGetPhysicalDeviceSparseImageFormatProperties(x64emu_t* emu, void* device, int format, int type, int samples, int usage, int tiling, uint32_t* count, void** pProps)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my->vkGetPhysicalDeviceSparseImageFormatProperties(device, format, type, samples, usage, tiling, count, pProps);
}
EXPORT void my_vkUpdateDescriptorSets(x64emu_t* emu, void* device, uint32_t writeCount, void* writeSet, uint32_t copyCount, void* copySet)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my->vkUpdateDescriptorSets(device, writeCount, writeSet, copyCount, copySet);
}
EXPORT int my_vkGetDisplayPlaneCapabilitiesKHR(x64emu_t* emu, void* device, uint64_t mode, uint32_t index, void* pCap)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
int ret = my->vkGetDisplayPlaneCapabilitiesKHR(device, mode, index, pCap);
return ret;
}
EXPORT int my_vkGetPhysicalDeviceDisplayPropertiesKHR(x64emu_t* emu, void* device, uint32_t* count, void* pProp)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
int ret = my->vkGetPhysicalDeviceDisplayPropertiesKHR(device, count, pProp);
return ret;
}
EXPORT void my_vkGetPhysicalDeviceMemoryProperties(x64emu_t* emu, void* device, void* pProps)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my->vkGetPhysicalDeviceMemoryProperties(device, pProps);
}
EXPORT void my_vkCmdPipelineBarrier(x64emu_t* emu, void* device, int src, int dst, int dep,
uint32_t barrierCount, void* pBarriers, uint32_t bufferCount, void* pBuffers, uint32_t imageCount, void* pImages)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my->vkCmdPipelineBarrier(device, src, dst, dep, barrierCount, pBarriers, bufferCount, pBuffers, imageCount, pImages);
}
typedef struct my_VkDebugReportCallbackCreateInfoEXT_s {
int sType;
void* pNext;
uint32_t flags;
void* pfnCallback;
void* pUserData;
} my_VkDebugReportCallbackCreateInfoEXT_t;
EXPORT int my_vkCreateDebugReportCallbackEXT(x64emu_t* emu, void* instance,
my_VkDebugReportCallbackCreateInfoEXT_t* create,
my_VkAllocationCallbacks_t* alloc, void* callback)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkDebugReportCallbackCreateInfoEXT_t dbg = *create;
my_VkAllocationCallbacks_t my_alloc;
dbg.pfnCallback = find_DebugReportCallbackEXT_Fct(dbg.pfnCallback);
return my->vkCreateDebugReportCallbackEXT(instance, &dbg, find_VkAllocationCallbacks(&my_alloc, alloc), callback);
}
EXPORT int my_vkDestroyDebugReportCallbackEXT(x64emu_t* emu, void* instance, void* callback, void* alloc)
{
vulkan_my_t* my = (vulkan_my_t*)my_lib->priv.w.p2;
my_VkAllocationCallbacks_t my_alloc;
return my->vkDestroyDebugReportCallbackEXT(instance, callback, find_VkAllocationCallbacks(&my_alloc, alloc));
}
CREATE(vkCreateHeadlessSurfaceEXT)

View File

@ -0,0 +1,411 @@
#if !(defined(GO) && defined(GOM) && defined(GO2) && defined(DATA))
#error meh!
#endif
// VK_VERSION_1_0
GO(vkAllocateCommandBuffers, iFppp)
GO(vkAllocateDescriptorSets, iFppp)
GOM(vkAllocateMemory, iFEpppp)
GO(vkBeginCommandBuffer, iFpp)
GO(vkBindBufferMemory, iFpUUU)
GO(vkBindImageMemory, iFpUUU)
GO(vkCmdBeginQuery, vFpUui)
GO(vkCmdBeginRenderPass, vFppp)
GO(vkCmdBindDescriptorSets, vFpiUuupup)
GO(vkCmdBindIndexBuffer, vFpUUi)
GO(vkCmdBindPipeline, vFppU)
GO(vkCmdBindVertexBuffers, vFpuupp)
GO(vkCmdBlitImage, vFpUiUiupi)
GO(vkCmdClearAttachments, vFpupup)
GO(vkCmdClearColorImage, vFpUipup)
GO(vkCmdClearDepthStencilImage, vFpUipup)
GO(vkCmdCopyBuffer, vFpUUup)
GO(vkCmdCopyBufferToImage, vFpUUiup)
GO(vkCmdCopyImage, vFpUiUiup)
GO(vkCmdCopyImageToBuffer, vFpUiUup)
GO(vkCmdCopyQueryPoolResults, vFpUuuUUUi)
GO(vkCmdDispatch, vFpuuu)
GO(vkCmdDispatchIndirect, vFpUU)
GO(vkCmdDraw, vFpuuuu)
GO(vkCmdDrawIndexed, vFpuuuiu)
GO(vkCmdDrawIndexedIndirect, vFpUUuu)
GO(vkCmdDrawIndirect, vFpUUuu)
GO(vkCmdEndQuery, vFpUu)
GO(vkCmdEndRenderPass, vFp)
GO(vkCmdExecuteCommands, vFpup)
GO(vkCmdFillBuffer, vFpUUUu)
GO(vkCmdNextSubpass, vFpi)
GOM(vkCmdPipelineBarrier, vFEpiiiupupup)
GO(vkCmdPushConstants, vFpUiuup)
GO(vkCmdResetEvent, vFpUi)
GO(vkCmdResetQueryPool, vFpUuu)
GO(vkCmdResolveImage, vFpUiUiup)
GO(vkCmdSetBlendConstants, vFpp)
GO(vkCmdSetDepthBias, vFpfff)
GO(vkCmdSetDepthBounds, vFpff)
GO(vkCmdSetEvent, vFpUi)
GO(vkCmdSetLineWidth, vFpf)
GO(vkCmdSetScissor, vFpuup)
GO(vkCmdSetStencilCompareMask, vFpiu)
GO(vkCmdSetStencilReference, vFpiu)
GO(vkCmdSetStencilWriteMask, vFpiu)
GO(vkCmdSetViewport, vFpuup)
GO(vkCmdUpdateBuffer, vFpUUUp)
GO(vkCmdWaitEvents, vFpupiiupupup)
GO(vkCmdWriteTimestamp, vFpiUu)
GOM(vkCreateBuffer, iFEpppp)
GOM(vkCreateBufferView, iFEpppp)
GOM(vkCreateCommandPool, iFEpppp)
GOM(vkCreateComputePipelines, iFEpUuppp)
GOM(vkCreateDescriptorPool, iFEpppp)
GOM(vkCreateDescriptorSetLayout, iFEpppp)
GOM(vkCreateDevice, iFEpppp)
GOM(vkCreateEvent, iFEpppp)
GOM(vkCreateFence, iFEpppp)
GOM(vkCreateFramebuffer, iFEpppp)
GOM(vkCreateGraphicsPipelines, iFEpUuppp)
GOM(vkCreateImage, iFEpppp)
GOM(vkCreateImageView, iFEpppp)
GOM(vkCreateInstance, iFEppp)
GOM(vkCreatePipelineCache, iFEpppp)
GOM(vkCreatePipelineLayout, iFEpppp)
GOM(vkCreateQueryPool, iFEpppp)
GOM(vkCreateRenderPass, iFEpppp)
GOM(vkCreateSampler, iFEpppp)
GOM(vkCreateSemaphore, iFEpppp)
GOM(vkCreateShaderModule, iFEpppp)
GOM(vkDestroyBuffer, vFEpUp)
GOM(vkDestroyBufferView, vFEpUp)
GOM(vkDestroyCommandPool, vFEpUp)
GOM(vkDestroyDescriptorPool, vFEpUp)
GOM(vkDestroyDescriptorSetLayout, vFEpUp)
GOM(vkDestroyDevice, vFEpp)
GOM(vkDestroyEvent, vFEpUp)
GOM(vkDestroyFence, vFEpUp)
GOM(vkDestroyFramebuffer, vFEpUp)
GOM(vkDestroyImage, vFEpUp)
GOM(vkDestroyImageView, vFEpUp)
GOM(vkDestroyInstance, vFEpp)
GOM(vkDestroyPipeline, vFEpUp)
GOM(vkDestroyPipelineCache, vFEpUp)
GOM(vkDestroyPipelineLayout, vFEpUp)
GOM(vkDestroyQueryPool, vFEpUp)
GOM(vkDestroyRenderPass, vFEpUp)
GOM(vkDestroySampler, vFEpUp)
GOM(vkDestroySemaphore, vFEpUp)
GOM(vkDestroyShaderModule, vFEpUp)
GO(vkDeviceWaitIdle, iFp)
GO(vkEndCommandBuffer, iFp)
GO(vkEnumerateDeviceExtensionProperties, iFpppp)
GO(vkEnumerateDeviceLayerProperties, iFppp)
GO(vkEnumerateInstanceExtensionProperties, iFppp)
GO(vkEnumerateInstanceLayerProperties, iFpp)
GO(vkEnumeratePhysicalDevices, iFppp)
GO(vkFlushMappedMemoryRanges, iFpup) // should wrap the array of VkMappedMemoryRange
GO(vkFreeCommandBuffers, vFpUup)
GO(vkFreeDescriptorSets, iFpUup)
GOM(vkFreeMemory, iFEpUp)
GO(vkGetBufferMemoryRequirements, iFpUp)
GO(vkGetDeviceMemoryCommitment, vFpUp)
GOM(vkGetDeviceProcAddr, pFEpp)
GO(vkGetDeviceQueue, vFpuup)
GO(vkGetEventStatus, iFpU)
GO(vkGetFenceStatus, iFpU)
GO(vkGetImageMemoryRequirements, vFpUp)
GO(vkGetImageSparseMemoryRequirements, vFpUpp)
GO(vkGetImageSubresourceLayout, vFpUpp)
GOM(vkGetInstanceProcAddr, pFEpp)
GO(vkGetPhysicalDeviceFeatures, vFpp)
GO(vkGetPhysicalDeviceFormatProperties, vFpip)
GO(vkGetPhysicalDeviceImageFormatProperties, iFpiiiiip) //VkImageFormatProperties sems OK
GOM(vkGetPhysicalDeviceMemoryProperties, vFEpp)
GOM(vkGetPhysicalDeviceProperties, vFEpp)
GO(vkGetPhysicalDeviceQueueFamilyProperties, vFppp) //VkQueueFamilyProperties is OK
GOM(vkGetPhysicalDeviceSparseImageFormatProperties, vFEpiiiiipp)
GO(vkGetPipelineCacheData, iFpUpp)
GO(vkGetQueryPoolResults, iFpUuuLpUi)
GO(vkGetRenderAreaGranularity, vFpUp)
GO(vkInvalidateMappedMemoryRanges, iFpup) //VkMappedMemoryRange seems OK
GO(vkMapMemory, iFpUUUip)
GO(vkMergePipelineCaches, iFpUup)
GO(vkQueueBindSparse, iFpupU)
GO(vkQueueSubmit, iFpupU)
GO(vkQueueWaitIdle, iFp)
GO(vkResetCommandBuffer, iFpi)
GO(vkResetCommandPool, iFpUi)
GO(vkResetDescriptorPool, iFpUi)
GO(vkResetEvent, iFpU)
GO(vkResetFences, iFpup)
GO(vkSetEvent, iFpU)
GO(vkUnmapMemory, vFpU)
GOM(vkUpdateDescriptorSets, vFEpupup)
GO(vkWaitForFences, iFpupiU)
// VK_VERSION_1_1
GO(vkBindBufferMemory2, iFpup)
GO(vkBindImageMemory2, iFpup)
GO(vkCmdDispatchBase, vFpuuuuuu)
GO(vkCmdSetDeviceMask, vFpu)
GOM(vkCreateDescriptorUpdateTemplate, iFEpppp)
GOM(vkCreateSamplerYcbcrConversion, iFEpppp)
GOM(vkDestroyDescriptorUpdateTemplate, vFEpUp)
GO(vkEnumerateInstanceVersion, iFp)
GO(vkEnumeratePhysicalDeviceGroups, iFppp) //VkPhysicalDeviceGroupProperties seems OK
GO(vkGetBufferMemoryRequirements2, iFppp)
GO(vkGetImageMemoryRequirements2, vFppp)
GO(vkGetImageSparseMemoryRequirements2, vFpppp)
GO(vkGetDescriptorSetLayoutSupport, vFppp)
GO(vkGetDeviceGroupPeerMemoryFeatures, vFpuuup)
GO(vkGetDeviceQueue2, vFppp)
GO(vkGetPhysicalDeviceExternalBufferProperties, vFppp)
GO(vkGetPhysicalDeviceExternalFenceProperties, vFppp)
GO(vkGetPhysicalDeviceExternalSemaphoreProperties, vFppp)
GO(vkGetPhysicalDeviceFeatures2, vFpp)
GO(vkGetPhysicalDeviceFormatProperties2, vFpip)
GO(vkGetPhysicalDeviceImageFormatProperties2, vFppp)
GO(vkGetPhysicalDeviceMemoryProperties2, vFpp)
GO(vkGetPhysicalDeviceProperties2, vFpp)
GO(vkGetPhysicalDeviceQueueFamilyProperties2, vFppp) //VkQueueFamilyProperties2 seems OK
GO(vkGetPhysicalDeviceSparseImageFormatProperties2, vFpppp) //VkSparseImageFormatProperties2 seems OK
GO(vkUpdateDescriptorSetWithTemplate, vFpUUp)
GO(vkTrimCommandPool, vFpUi)
// VK_VERSION_1_2
GO(vkResetQueryPool, vFpUuu)
GO(vkCmdBeginRenderPass2, vFppp)
GO(vkCmdEndRenderPass2, vFpp)
GO(vkCmdNextSubpass2, vFppp)
GOM(vkCreateRenderPass2, iFEpppp)
GO(vkCmdDrawIndexedIndirectCount, vFpUUUUuu)
GO(vkCmdDrawIndirectCount, vFpUUUUuu)
// VK_EXT_debug_report
GOM(vkCreateDebugReportCallbackEXT, iFEpppp)
GO(vkDebugReportMessageEXT, vFpiiULipp)
GOM(vkDestroyDebugReportCallbackEXT, iFEppp)
//VK_EXT_debug_utils
GO(vkCmdBeginDebugUtilsLabelEXT, vFpp) //TODO: Cehck alignement of this extension
GO(vkCmdEndDebugUtilsLabelEXT, vFp)
GO(vkCmdInsertDebugUtilsLabelEXT, vFpp)
GOM(vkCreateDebugUtilsMessengerEXT, iFEpppp)
GOM(vkDestroyDebugUtilsMessengerEXT, vFEppp)
GO(vkQueueBeginDebugUtilsLabelEXT, vFpp)
GO(vkQueueEndDebugUtilsLabelEXT, vFp)
GO(vkQueueInsertDebugUtilsLabelEXT, vFpp)
GO(vkSetDebugUtilsObjectNameEXT, iFpp)
GO(vkSetDebugUtilsObjectTagEXT, iFpp)
//GOM(vkSubmitDebugUtilsMessageEXT, vFEpppp) // callback in last arguments
// VK_KHR_external_memory_capabilities
GO(vkGetPhysicalDeviceExternalBufferPropertiesKHR, vFppp)
// VK_KHR_get_physical_device_properties2
GO(vkGetPhysicalDeviceFeatures2KHR, vFpp)
GO(vkGetPhysicalDeviceFormatProperties2KHR, vFpip)
GO(vkGetPhysicalDeviceImageFormatProperties2KHR, vFppp)
GO(vkGetPhysicalDeviceMemoryProperties2KHR, vFpp)
GO(vkGetPhysicalDeviceProperties2KHR, vFpp)
GO(vkGetPhysicalDeviceQueueFamilyProperties2KHR, vFppp)
GO(vkGetPhysicalDeviceSparseImageFormatProperties2KHR, vFpppp) //VkSparseImageFormatProperties2 seems OK
// VK_KHR_get_surface_capabilities2
GO(vkGetPhysicalDeviceSurfaceCapabilities2KHR, iFppp)
GO(vkGetPhysicalDeviceSurfaceFormats2KHR, iFpppp) //VkSurfaceFormat2KHR seems OK (but array)
// VK_KHR_surface
GOM(vkDestroySurfaceKHR, vFEpUp)
GO(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, iFpUp) //VkSurfaceCapabilitiesKHR seems OK
GO(vkGetPhysicalDeviceSurfaceFormatsKHR, iFpUpp)
GO(vkGetPhysicalDeviceSurfacePresentModesKHR, iFpUpp)
GO(vkGetPhysicalDeviceSurfaceSupportKHR, iFpuUp)
// VK_KHR_xcb_surface
GOM(vkCreateXcbSurfaceKHR, iFEpppp)
GO(vkGetPhysicalDeviceXcbPresentationSupportKHR, iFpupp)
// VK_KHR_xlib_surface
GOM(vkCreateXlibSurfaceKHR, iFEpppp)
GO(vkGetPhysicalDeviceXlibPresentationSupportKHR, iFpupp)
// VK_KHR_swapchain
GO(vkAcquireNextImageKHR, iFpUUUUp)
GO(vkAcquireNextImage2KHR, iFppp)
GOM(vkCreateSwapchainKHR, iFEpppp)
GOM(vkDestroySwapchainKHR, vFEpUp)
GO(vkGetDeviceGroupPresentCapabilitiesKHR, iFpp)
GO(vkGetDeviceGroupSurfacePresentModesKHR, iFpUp)
GO(vkGetPhysicalDevicePresentRectanglesKHR, iFpUpp)
GO(vkGetSwapchainImagesKHR, iFpUpp)
GO(vkQueuePresentKHR, iFpp)
// VK_KHR_bind_memory2
GO(vkBindBufferMemory2KHR, iFpup)
GO(vkBindImageMemory2KHR, iFpup)
// VK_KHR_display
GOM(vkCreateDisplayModeKHR, iFEpUppp)
GOM(vkCreateDisplayPlaneSurfaceKHR, iFEpppp)
GO(vkGetDisplayModePropertiesKHR, iFpUpp) //VkDisplayModePropertiesKHR seems OK
GOM(vkGetDisplayPlaneCapabilitiesKHR, iFEpUup)
GO(vkGetDisplayPlaneSupportedDisplaysKHR, iFpupp)
GO(vkGetPhysicalDeviceDisplayPlanePropertiesKHR, iFppp) //VkDisplayPlanePropertiesKHR is OK
GOM(vkGetPhysicalDeviceDisplayPropertiesKHR, iFEppp)
// VK_KHR_descriptor_update_template
GOM(vkCreateDescriptorUpdateTemplateKHR, iFEpppp)
GOM(vkDestroyDescriptorUpdateTemplateKHR, vFEpUp)
GO(vkUpdateDescriptorSetWithTemplateKHR, vFpUUp)
GO(vkCmdPushDescriptorSetWithTemplateKHR, vFpUUup)
// VK_EXT_display_surface_counter
GO(vkGetPhysicalDeviceSurfaceCapabilities2EXT, iFpUp)
// VK_KHR_get_display_properties2
GO(vkGetDisplayModeProperties2KHR, iFpUpp)
GO(vkGetDisplayPlaneCapabilities2KHR, iFppp)
GO(vkGetPhysicalDeviceDisplayPlaneProperties2KHR, iFppp)
GO(vkGetPhysicalDeviceDisplayProperties2KHR, iFppp)
// VK_KHR_device_group
GO(vkCmdDispatchBaseKHR, vFpuuuuuu)
GO(vkCmdSetDeviceMaskKHR, vFpu)
GO(vkGetDeviceGroupPeerMemoryFeaturesKHR, vFpuuup)
// VK_KHR_sampler_ycbcr_conversion
GOM(vkCreateSamplerYcbcrConversionKHR, iFEpppp)
GOM(vkDestroySamplerYcbcrConversionKHR, vFEpUp)
// VK_KHR_display_swapchain
GOM(vkCreateSharedSwapchainsKHR, iFEpuppp)
// VK_KHR_wayland_surface
GOM(vkCreateWaylandSurfaceKHR, iFEpppp)
GO(vkGetPhysicalDeviceWaylandPresentationSupportKHR, iFpup)
// VK_KHR_device_group_creation
GO(vkEnumeratePhysicalDeviceGroupsKHR, iFppp)
// VK_KHR_get_memory_requirements2
GO(vkGetBufferMemoryRequirements2KHR, iFppp)
GO(vkGetImageMemoryRequirements2KHR, vFppp)
GO(vkGetImageSparseMemoryRequirements2KHR, vFpppp)
// VK_KHR_external_fence_capabilities
GO(vkGetPhysicalDeviceExternalFencePropertiesKHR, vFppp)
// VK_KHR_external_semaphore_capabilities
GO(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, vFppp)
// VK_KHR_maintenance1
GO(vkTrimCommandPoolKHR, vFpUi)
// VK_KHR_maintenance2
// no functions
// VK_KHR_maintenance3
GO(vkGetDescriptorSetLayoutSupportKHR, vFppp)
// VK_KHR_external_memory_fd
GO(vkGetMemoryFdKHR, iFppp)
GO(vkGetMemoryFdPropertiesKHR, iFpiip)
// VK_KHR_dedicated_allocation
// no functions
// VK_KHR_image_format_list
// no functions
// VK_KHR_shader_draw_parameters
// no functions
// VK_EXT_conditional_rendering
GO(vkCmdBeginConditionalRenderingEXT, vFpp)
GO(vkCmdEndConditionalRenderingEXT, vFp)
// VK_EXT_depth_clip_enable
// no functions
// VK_EXT_host_query_reset
GO(vkResetQueryPoolEXT, vFpUuu)
// VK_EXT_memory_priority
// no functions
// VK_EXT_shader_demote_to_helper_invocation
// no functions
// VK_EXT_transform_feedback
GO(vkCmdBeginQueryIndexedEXT, vFpUuiu)
GO(vkCmdBeginTransformFeedbackEXT, vFpuupp)
GO(vkCmdBindTransformFeedbackBuffersEXT, vFpuuppp)
GO(vkCmdDrawIndirectByteCountEXT, vFpuuUUuu)
GO(vkCmdEndQueryIndexedEXT, vFpUuu)
GO(vkCmdEndTransformFeedbackEXT, vFpuupp)
// VK_EXT_vertex_attribute_divisor
// no functions
// VK_EXT_full_screen_exclusive
GO(vkAcquireFullScreenExclusiveModeEXT, iFpU)
GO(vkGetPhysicalDeviceSurfacePresentModes2EXT, iFpppp)
GO(vkReleaseFullScreenExclusiveModeEXT, iFpU)
GO(vkGetDeviceGroupSurfacePresentModes2EXT, iFppp)
// VK_EXT_calibrated_timestamps
GO(vkGetCalibratedTimestampsEXT, iFpuppp)
GO(vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, iFppp)
// VK_EXT_sample_locations
GO(vkCmdSetSampleLocationsEXT, vFpp)
GO(vkGetPhysicalDeviceMultisamplePropertiesEXT, vFpip)
// VK_EXT_headless_surface
GOM(vkCreateHeadlessSurfaceEXT, iFEpppp)
//VK_KHR_performance_query
GO(vkAcquireProfilingLockKHR, iFpp)
GO(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, iFpuppp)
GO(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, vFppp)
GO(vkReleaseProfilingLockKHR, vFp)
// VK_NV_cooperative_matrix
GO(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, iFppp)
// VK_KHR_fragment_shading_rate
GO(vkCmdSetFragmentShadingRateKHR, vFppp)
GO(vkGetPhysicalDeviceFragmentShadingRatesKHR, iFppp)
// VK_NV_coverage_reduction_mode
GO(vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, iFppp)
// VK_EXT_tooling_info
GO(vkGetPhysicalDeviceToolPropertiesEXT, iFppp)
// VK_KHR_create_renderpass2
GO(vkCmdBeginRenderPass2KHR, vFppp)
GO(vkCmdEndRenderPass2KHR, vFpp)
GO(vkCmdNextSubpass2KHR, vFppp)
GOM(vkCreateRenderPass2KHR, iFEpppp)
// VK_EXT_extended_dynamic_state
GO(vkCmdBindVertexBuffers2EXT, vFpuupppp)
GO(vkCmdSetCullModeEXT, vFpu)
GO(vkCmdSetDepthBoundsTestEnableEXT, vFpu)
GO(vkCmdSetDepthCompareOpEXT, vFpu)
GO(vkCmdSetDepthTestEnableEXT, vFpu)
GO(vkCmdSetDepthWriteEnableEXT, vFpu)
GO(vkCmdSetFrontFaceEXT, vFpu)
GO(vkCmdSetPrimitiveTopologyEXT, vFpi)
GO(vkCmdSetScissorWithCountEXT, vFup)
GO(vkCmdSetStencilOpEXT, vFpuiiii)
GO(vkCmdSetStencilTestEnableEXT, vFpu)
GO(vkCmdSetViewportWithCountEXT, vFpup)
// VK_KHR_draw_indirect_count
GO(vkCmdDrawIndexedIndirectCountKHR, vFpUUUUuu)
GO(vkCmdDrawIndirectCountKHR, vFpUUUUuu)
// VK_AMD_draw_indirect_count
GO(vkCmdDrawIndexedIndirectCountAMD, vFpUUUUuu)
GO(vkCmdDrawIndirectCountAMD, vFpUUUUuu)