Function at 0x421800
Capabilities:
Link many functions at runtime
Resolve function by parsing pe exports

Disassembly:
cmp dword [0x505ed8], 0
je 0x42180f
mov eax, 0x505ea4
ret
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x9f8
mov dword [0x505ea4], 0
mov dword [0x505ea8], 0
mov eax, dword [0x5052b0]
mov dword [0x505eac], eax
mov dword [0x505eb0], 0
mov dword [0x505eb4], 0
mov dword [0x505eb8], eax
mov dword [0x505ebc], 0
mov dword [0x505ec0], 0
mov dword [0x505ec4], eax
mov dword [0x505ec8], 0
mov dword [0x505ecc], 0
mov dword [0x505ed0], eax
movaps xmm0, xmmword [0x4ac320]
movups xmmword [0x505ed4], xmm0
push 0
push 0xffffffffffffffff
push str.vulkan_1.dll
push 0x5075ec
call fcn.00417f90
add esp, 0x10
test eax, eax
je 0x4219cb
mov esi, eax
push str.vkGetInstanceProcAddr
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test eax, eax
jne 0x4218dd
push str.vkGetInstanceProcAddr_8
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test eax, eax
je 0x421ab8
push str.vkCreateInstance
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, eax
test eax, eax
jne 0x421905
push str.vkCreateInstance_12
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, eax
test eax, eax
je 0x421ac2
push str.vkDestroyInstance
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x421929
push str.vkDestroyInstance_8
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x421acc
mov dword [esp + 0x48], eax
push str.vkEnumeratePhysicalDevices
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x421951
push str.vkEnumeratePhysicalDevices_12
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x421ad6
mov dword [esp + 8], eax
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x58], 0
push str.vkEnumerateInstanceVersion
push 0
call edi
test eax, eax
mov dword [esp + 0x60], esi
mov dword [esp + 0x14], edi
je 0x4219d5
lea ecx, [esp + 0x2b0]
push ecx
call eax
xor edi, edi
mov ecx, 0
mov esi, 0
test eax, eax
jne 0x4219c5
mov edi, dword [esp + 0x2b0]
mov ecx, edi
shr ecx, 0x16
mov dword [esp + 0x50], ecx
mov esi, edi
shr esi, 0xc
and esi, 0x3ff
mov dword [esp + 0x54], esi
and edi, 0xfff
mov dword [esp + 0x58], edi
mov dword [esp + 0xc], ecx
jmp 0x4219e1
mov ebx, str.dlopen_libvulkan.dll_failed
jmp 0x422381
xor edi, edi
mov dword [esp + 0xc], 0
xor esi, esi
xorps xmm0, xmm0
movups xmmword [esp + 0x84], xmm0
movups xmmword [esp + 0x90], xmm0
mov dword [esp + 0x80], 1
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0x4ac4be
mov dword [esp + 0x70], 0x808007
mov dword [esp + 0x74], str.vulkanPrintGPUs
mov dword [esp + 0x78], 0x808007
xor eax, eax
test esi, esi
setne al
shl eax, 0xc
or eax, 0x400000
mov dword [esp + 0x7c], eax
lea eax, [esp + 0x64]
mov dword [esp + 0x8c], eax
lea eax, [esp + 0x18]
lea ecx, [esp + 0x80]
push eax
push 0
push ecx
call ebx
mov ebx, str.ffvkCreateInstance___failed
test eax, eax
jne 0x422376
cmp dword [esp + 0xc], 0
jne 0x421a82
test esi, esi
jne 0x421a82
test edi, edi
jne 0x421a82
mov dword [esp + 0x50], 1
mov dword [esp + 0x1c], 0x80
lea eax, [esp + 0x7f4]
lea ecx, [esp + 0x1c]
push eax
push ecx
push dword [esp + 0x20]
call dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
test eax, eax
je 0x421ae0
push 0
push ecx
call dword [esp + 0x50]
mov ebx, str.ffvkEnumeratePhysicalDevices___failed
jmp 0x422376
mov ebx, str.dlsym_vkGetInstanceProcAddr_failed
jmp 0x42237a
mov ebx, str.dlsym_vkCreateInstance_failed
jmp 0x42237a
mov ebx, str.dlsym_vkDestroyInstance_failed
jmp 0x42237a
mov ebx, str.dlsym_vkEnumeratePhysicalDevices_failed
jmp 0x42237a
push str.vkGetPhysicalDeviceProperties2
push ecx
mov esi, dword [esp + 0x1c]
call esi
mov edi, eax
mov dword [esp + 0x40], 0
test eax, eax
jne 0x421b09
push str.vkGetPhysicalDeviceProperties
push dword [esp + 0x1c]
call esi
mov dword [esp + 0x40], eax
push str.vkGetPhysicalDeviceMemoryProperties
push dword [esp + 0x1c]
call esi
mov dword [esp + 0x5c], eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
cmp dword [esp + 0x1c], 0
je 0x422334
lea esi, [esp + 0x2b8]
xor ebx, ebx
mov dword [esp + 0x10], edi
jmp 0x421bbd
mov eax, dword [esp + 8]
mov dword [esp + 0xc], eax
lea eax, [esp + edx]
add eax, 0x6f0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov edx, dword [esp + 0xc]
add dword [edx], ecx
adc dword [edx + 4], eax
mov ebx, dword [esp + 4]
mov dword [ebx + 0x40], 0xffffffff
mov dword [ebx + 0x3c], 0x7ff80000
mov dword [ebx + 0x38], 0
mov dword [ebx + 0x4c], 0x7ff80000
mov dword [ebx + 0x48], 0
mov ebx, dword [esp + 0x4c]
inc ebx
cmp ebx, dword [esp + 0x1c]
lea esi, [esp + 0x2b8]
jae 0x422334
push 0x20c
push 0
lea eax, [esp + 0xac]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov dword [esp + 0xa0], 0x3b9dc7a0
push 0x330
push 0
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov dword [esp + 0x2b0], 0x3b9bb079
lea eax, [esp + 0xa0]
mov dword [esp + 0x2b4], eax
mov eax, dword [esp + ebx*4 + 0x7f4]
test edi, edi
mov dword [esp + 0x4c], ebx
je 0x421c32
lea ecx, [esp + 0x2b0]
push ecx
push eax
call edi
cmp dword [esp + 0x2c8], 4
je 0x421ba7
jmp 0x421c46
push esi
push eax
call dword [esp + 0x48]
cmp dword [esp + 0x2c8], 4
je 0x421ba7
mov ecx, dword [esp + 0x2b8]
mov eax, ecx
shr eax, 0x16
mov edx, ecx
shr edx, 0xc
and edx, 0x3ff
and ecx, 0xfff
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
cmp eax, dword [esp + 0x30]
mov dword [esp + 0x14], edx
jne 0x421c83
cmp edx, dword [esp + 0x34]
jne 0x421c83
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x38]
jbe 0x421e1e
mov eax, dword [esp + 0xc]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x38], eax
lea esi, [esp + 0xac]
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isspace]
nop
movsx ebx, byte [esi]
push ebx
call edi
add esp, 4
inc esi
test eax, eax
jne 0x421cb0
test bl, bl
mov edi, dword [esp + 0x10]
je 0x421e1e
lea eax, [esp + 0xac]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
test eax, eax
je 0x421da0
mov esi, eax
mov eax, dword [0x505ea4]
mov edi, dword [0x505ea8]
test eax, eax
je 0x421cfd
mov ecx, edi
not ecx
add ecx, eax
cmp ecx, esi
jae 0x421d38
cmp eax, 2
mov ecx, eax
mov edx, 0x20
cmovb ecx, edx
lea edx, [esi + edi]
inc edx
nop
mov ebx, ecx
add ecx, ecx
cmp edx, ebx
ja 0x421d10
test eax, eax
je 0x421d3f
push ebx
push dword [0x505eac]
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
add esp, 8
mov dword [0x505eac], eax
mov edi, dword [0x505ea8]
jmp 0x421d71
mov eax, dword [0x505eac]
jmp 0x421d77
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
test edi, edi
je 0x421d69
lea ecx, [edi + 1]
push ecx
push dword [0x505eac]
push eax
mov dword [esp + 0x10], eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov eax, dword [esp + 0x10]
add esp, 0xc
jmp 0x421d6c
mov byte [eax], 0
mov dword [0x505eac], eax
mov dword [0x505ea4], ebx
add edi, eax
push esi
lea eax, [esp + 0xb0]
push eax
push edi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
add esi, dword [0x505ea8]
mov dword [0x505ea8], esi
mov eax, dword [0x505eac]
mov byte [eax + esi], 0
lea esi, [esp + 0x1ac]
mov edi, dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_isspace]
nop dword [eax]
movsx ebx, byte [esi]
push ebx
call edi
add esp, 4
inc esi
test eax, eax
jne 0x421db0
test bl, bl
mov edi, dword [esp + 0x10]
je 0x421e1e
push 0xa
lea eax, [esp + 0x1b0]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_strchr
add esp, 8
test eax, eax
jne 0x421e1e
push 0x4ac58b
push 2
push 0x505ea4
call fcn.00472620
add esp, 0xc
lea esi, [esp + 0x1ac]
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
push esi
push eax
push 0x505ea4
call fcn.00472620
add esp, 0xc
push 0x5d
push 0x505ea4
call fcn.004724b0
add esp, 8
test edi, edi
je 0x421e58
movzx eax, byte [esp + 0x2ac]
movzx ecx, byte [esp + 0x2ad]
movzx edx, byte [esp + 0x2af]
cmp dword [esp + 0x20], eax
jne 0x421e4a
cmp dword [esp + 0x24], ecx
jne 0x421e4a
cmp dword [esp + 0x28], edx
jae 0x421e58
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov esi, dword [0x505ed4]
mov ebx, dword [0x505edc]
test ebx, ebx
jle 0x421ea2
mov eax, pe_nt_image_headers32
mov ecx, dword [esp + 0x2c4]
nop word cs:[eax + eax]
mov edx, dword [esi + eax - 8]
xor edx, ecx
or edx, dword [esi + eax - 4]
je 0x421ba7
mov edx, eax
sar edx, 3
imul edx, edx, 0xeeeeeeef
add eax, 0x78
cmp edx, ebx
jl 0x421e80
cmp ebx, dword [0x505ee0]
jne 0x421eda
lea eax, [ebx + ebx]
test ebx, ebx
mov ecx, 0x10
cmove eax, ecx
mov dword [0x505ee0], eax
imul eax, dword [0x505ed8]
push eax
push esi
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
add esp, 8
mov esi, eax
mov dword [0x505ed4], eax
mov ebx, dword [0x505edc]
mov edx, dword [esp + 0x14]
lea eax, [ebx + 1]
mov dword [0x505edc], eax
imul ebx, dword [0x505ed8]
lea edi, [esi + ebx]
lea eax, [esi + ebx]
add eax, 0x28
sub esp, 0x14
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x20]
mov dword [esp + 8], ecx
mov dword [esp], eax
call fcn.004223a0
add esp, 0x14
mov eax, dword [esp + 0x2c4]
mov dword [esi + ebx + 0x70], eax
mov dword [esi + ebx + 0x74], 0
mov dword [esi + ebx + 0x10], 0
mov dword [esi + ebx + 0x14], 0
mov eax, dword [0x5052b0]
mov dword [esi + ebx + 0x18], eax
mov ebx, edi
lea eax, [esp + 0x2cc]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
test eax, eax
mov dword [esp + 4], edi
mov edi, dword [esp + 0x10]
je 0x421fb3
mov esi, eax
inc eax
mov ecx, 0x20
nop word [eax + eax]
mov edi, ecx
add ecx, ecx
cmp eax, edi
ja 0x421f70
push edi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov ebx, dword [esp + 4]
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x10], edi
push esi
lea ecx, [esp + 0x2d0]
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [ebx + 0x14]
add eax, esi
mov dword [ebx + 0x14], eax
mov ecx, dword [ebx + 0x18]
mov byte [ecx + eax], 0
mov edi, dword [esp + 0x10]
xor eax, eax
cmp dword [esp + 0x2c8], 2
sete al
inc eax
mov dword [ebx], eax
mov eax, dword [esp + 0x2c0]
cmp eax, 0x1413
mov ecx, ebx
jg 0x422004
cmp eax, 0x106a
jg 0x422036
cmp eax, 0x1001
jg 0x4220a0
cmp eax, 0x3e7
je 0x422099
cmp eax, 0x955
mov ecx, dword [esp + 4]
je 0x4220e4
jmp 0x422319
cmp eax, 0x1af3
jg 0x42206a
cmp eax, 0x15ac
jg 0x4220b9
cmp eax, 0x1414
je 0x42210e
cmp eax, 0x14c3
jne 0x422319
mov ebx, 0x4ab60d
jmp 0x422125
cmp eax, 0x10dd
jg 0x4220d2
mov ecx, 0x505230
cmp eax, 0x106b
je 0x4220e9
cmp eax, 0x108e
mov ecx, dword [esp + 4]
jne 0x422319
mov ebx, str.Oracle
jmp 0x422125
lea ecx, [eax - 0x8086]
cmp ecx, 2
jb 0x422099
cmp eax, 0x1af4
je 0x422115
mov ebx, str.Qualcomm
cmp eax, 0x5143
mov ecx, dword [esp + 4]
je 0x422125
jmp 0x422319
mov ecx, 0x505238
jmp 0x4220e9
cmp eax, 0x1002
je 0x4220b2
cmp eax, 0x1022
jne 0x422319
mov ecx, 0x505234
jmp 0x4220e9
cmp eax, 0x15ad
je 0x422120
cmp eax, 0x1ab8
jne 0x422319
mov ebx, str.Parallel
jmp 0x422125
cmp eax, 0x10de
je 0x4220e4
cmp eax, 0x12d2
jne 0x422319
mov ecx, 0x50523c
mov ebx, dword [ecx]
mov ecx, dword [esp + 4]
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov eax, dword [0x5052b0]
mov dword [ecx + 0xc], eax
test ebx, ebx
jne 0x42213b
jmp 0x4221a8
mov ebx, 0x4ab621
jmp 0x422125
mov ebx, str.RedHat
mov ecx, dword [esp + 4]
jmp 0x422125
mov ebx, str.VMware
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov eax, dword [0x5052b0]
mov dword [ecx + 0xc], eax
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
test eax, eax
je 0x42219f
mov esi, eax
mov dword [esp + 8], ebx
inc eax
mov ecx, 0x20
nop word cs:[eax + eax]
mov edi, ecx
add ecx, ecx
cmp eax, edi
ja 0x422160
push edi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov ebx, dword [esp + 4]
mov dword [ebx + 0xc], eax
mov dword [ebx + 4], edi
push esi
push dword [esp + 0xc]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [ebx + 8]
add eax, esi
mov dword [ebx + 8], eax
mov ecx, dword [ebx + 0xc]
mov byte [ecx + eax], 0
mov edi, dword [esp + 0x10]
mov eax, dword [0x5052b0]
mov ecx, dword [esp + 4]
mov dword [ecx + 0x1c], 0
mov dword [ecx + 0x20], 0
mov dword [ecx + 0x24], eax
lea eax, [esp + 0x1ac]
push eax
mov ebx, ecx
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
test eax, eax
je 0x422223
mov esi, eax
inc eax
mov ecx, 0x20
nop word [eax + eax]
mov edi, ecx
add ecx, ecx
cmp eax, edi
ja 0x4221e0
push edi
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov byte [eax], 0
mov ebx, dword [esp + 4]
mov dword [ebx + 0x24], eax
mov dword [ebx + 0x1c], edi
push esi
lea ecx, [esp + 0x1b0]
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [ebx + 0x20]
add eax, esi
mov dword [ebx + 0x20], eax
mov ecx, dword [ebx + 0x24]
mov byte [ecx + eax], 0
mov edi, dword [esp + 0x10]
push 0x208
push 0
lea esi, [esp + 0x5f0]
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
push esi
mov eax, dword [esp + 0x50]
push dword [esp + eax*4 + 0x7f8]
call dword [esp + 0x64]
movaps xmm0, xmmword [0x4ac330]
movups xmmword [ebx + 0x60], xmm0
movups xmmword [ebx + 0x50], xmm0
mov ecx, dword [esp + 0x6ec]
test ecx, ecx
je 0x421b84
lea eax, [ebx + 0x60]
mov dword [esp + 8], eax
lea eax, [ebx + 0x50]
mov dword [esp + 0xc], eax
mov esi, dword [ebx]
xor edx, edx
mov dword [esp + 0x44], ecx
cmp ecx, 1
jne 0x4222b5
test byte [esp + 0x44], 1
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 4]
je 0x421b84
shl edx, 4
cmp esi, 2
jne 0x421b62
test byte [esp + edx + 0x6f8], 1
je 0x421b62
jmp 0x421b6a
mov eax, dword [esp + 0x44]
and eax, 0xfffffffe
mov dword [esp + 0x14], eax
xor edx, edx
lea edi, [esp + 0x708]
jmp 0x4222eb
mov ecx, dword [esp + 8]
mov eax, dword [edi - 8]
mov ebx, dword [edi - 4]
add dword [ecx], eax
adc dword [ecx + 4], ebx
add edx, 2
add edi, 0x20
cmp dword [esp + 0x14], edx
je 0x422283
cmp esi, 2
jne 0x4222fa
test byte [edi - 0x10], 1
mov ecx, dword [esp + 0xc]
jne 0x4222fe
mov ecx, dword [esp + 8]
mov ebx, dword [edi - 0x18]
mov eax, dword [edi - 0x14]
add dword [ecx], ebx
adc dword [ecx + 4], eax
cmp esi, 2
jne 0x4222d0
test byte [edi], 1
mov ecx, dword [esp + 0xc]
je 0x4222d0
jmp 0x4222d4
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov eax, dword [0x5052b0]
mov dword [ecx + 0xc], eax
jmp 0x4221a8
lea eax, [esp + 0x50]
push 0x505ec8
push eax
call fcn.00419330
add esp, 8
lea eax, [esp + 0x30]
push 0x505eb0
push eax
call fcn.00419330
add esp, 8
lea eax, [esp + 0x20]
push 0x505ebc
push eax
call fcn.00419330
add esp, 8
push 0
push dword [esp + 0x1c]
call dword [esp + 0x50]
xor ebx, ebx
mov esi, dword [esp + 0x60]
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x505ee4], ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
mov eax, 0x505ea4
ret