about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-11-21 19:14:40 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-11-21 19:14:40 +0100
commit9d97ce087a460b6b5be721b3673ac1543eb77484 (patch)
treebebe5aad4524f2586a7a7110b5b329cb65bd5961 /src
parent3fa758e8954efb9fecfd4c2146da2c8688bc1770 (diff)
downloadbox64-9d97ce087a460b6b5be721b3673ac1543eb77484.tar.gz
box64-9d97ce087a460b6b5be721b3673ac1543eb77484.zip
Wrapped Vulkan libraries
Diffstat (limited to 'src')
-rwxr-xr-xsrc/include/box64context.h4
-rwxr-xr-xsrc/library_list.h4
-rw-r--r--src/wrapped/generated/functions_list.txt147
-rw-r--r--src/wrapped/generated/wrappedvulkandefs.h8
-rw-r--r--src/wrapped/generated/wrappedvulkantypes.h106
-rw-r--r--src/wrapped/generated/wrappedvulkanundefs.h8
-rw-r--r--src/wrapped/generated/wrapper.c151
-rw-r--r--src/wrapped/generated/wrapper.h57
-rwxr-xr-xsrc/wrapped/wrappedgnutls_private.h2
-rwxr-xr-xsrc/wrapped/wrappedsdl2.c11
-rwxr-xr-xsrc/wrapped/wrappedvulkan.c598
-rwxr-xr-xsrc/wrapped/wrappedvulkan_private.h411
12 files changed, 1498 insertions, 9 deletions
diff --git a/src/include/box64context.h b/src/include/box64context.h
index 694accb3..ecb00c3e 100755
--- a/src/include/box64context.h
+++ b/src/include/box64context.h
@@ -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;
diff --git a/src/library_list.h b/src/library_list.h
index be2a909d..9de0f0ca 100755
--- a/src/library_list.h
+++ b/src/library_list.h
@@ -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)
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 500b289d..ddc42db2 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -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:
diff --git a/src/wrapped/generated/wrappedvulkandefs.h b/src/wrapped/generated/wrappedvulkandefs.h
new file mode 100644
index 00000000..5c1ea485
--- /dev/null
+++ b/src/wrapped/generated/wrappedvulkandefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.1.0.16) *
+ *******************************************************************/
+#ifndef __wrappedvulkanDEFS_H_
+#define __wrappedvulkanDEFS_H_
+
+
+#endif // __wrappedvulkanDEFS_H_
diff --git a/src/wrapped/generated/wrappedvulkantypes.h b/src/wrapped/generated/wrappedvulkantypes.h
new file mode 100644
index 00000000..a7b1e897
--- /dev/null
+++ b/src/wrapped/generated/wrappedvulkantypes.h
@@ -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_
diff --git a/src/wrapped/generated/wrappedvulkanundefs.h b/src/wrapped/generated/wrappedvulkanundefs.h
new file mode 100644
index 00000000..12abcf62
--- /dev/null
+++ b/src/wrapped/generated/wrappedvulkanundefs.h
@@ -0,0 +1,8 @@
+/*******************************************************************
+ * File automatically generated by rebuild_wrappers.py (v2.1.0.16) *
+ *******************************************************************/
+#ifndef __wrappedvulkanUNDEFS_H_
+#define __wrappedvulkanUNDEFS_H_
+
+
+#endif // __wrappedvulkanUNDEFS_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 2e073166..2f55c2ff 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -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;
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 8e3b9676..8c49be58 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -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);
diff --git a/src/wrapped/wrappedgnutls_private.h b/src/wrapped/wrappedgnutls_private.h
index 5dbba17b..65c88d7c 100755
--- a/src/wrapped/wrappedgnutls_private.h
+++ b/src/wrapped/wrappedgnutls_private.h
@@ -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)
diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c
index 59f2a97e..5416b52b 100755
--- a/src/wrapped/wrappedsdl2.c
+++ b/src/wrapped/wrappedsdl2.c
@@ -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;
 }
 
diff --git a/src/wrapped/wrappedvulkan.c b/src/wrapped/wrappedvulkan.c
new file mode 100755
index 00000000..e9528f05
--- /dev/null
+++ b/src/wrapped/wrappedvulkan.c
@@ -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)
\ No newline at end of file
diff --git a/src/wrapped/wrappedvulkan_private.h b/src/wrapped/wrappedvulkan_private.h
new file mode 100755
index 00000000..1489ea76
--- /dev/null
+++ b/src/wrapped/wrappedvulkan_private.h
@@ -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)