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

Disassembly:
cmp dword [0x505ed8], 0
je 0x4217bf
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 dbg.ffLibraryLoad
add esp, 0x10
test eax, eax
je 0x42197b
mov esi, eax
push str.vkGetInstanceProcAddr
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test eax, eax
jne 0x42188d
push str.vkGetInstanceProcAddr_8
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test eax, eax
je 0x421a68
push str.vkCreateInstance
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, eax
test eax, eax
jne 0x4218b5
push str.vkCreateInstance_12
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, eax
test eax, eax
je 0x421a72
push str.vkDestroyInstance
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x4218d9
push str.vkDestroyInstance_8
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x421a7c
mov dword [esp + 0x48], eax
push str.vkEnumeratePhysicalDevices
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x421901
push str.vkEnumeratePhysicalDevices_12
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x421a86
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 0x421985
lea ecx, [esp + 0x2b0]
push ecx
call eax
xor edi, edi
mov ecx, 0
mov esi, 0
test eax, eax
jne 0x421975
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 0x421991
mov ebx, str.dlopen_libvulkan.dll_failed
jmp 0x422331
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], 0x808009
mov dword [esp + 0x74], str.vulkanPrintGPUs
mov dword [esp + 0x78], 0x808009
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 0x422326
cmp dword [esp + 0xc], 0
jne 0x421a32
test esi, esi
jne 0x421a32
test edi, edi
jne 0x421a32
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 0x421a90
push 0
push ecx
call dword [esp + 0x50]
mov ebx, str.ffvkEnumeratePhysicalDevices___failed
jmp 0x422326
mov ebx, str.dlsym_vkGetInstanceProcAddr_failed
jmp 0x42232a
mov ebx, str.dlsym_vkCreateInstance_failed
jmp 0x42232a
mov ebx, str.dlsym_vkDestroyInstance_failed
jmp 0x42232a
mov ebx, str.dlsym_vkEnumeratePhysicalDevices_failed
jmp 0x42232a
push str.vkGetPhysicalDeviceProperties2
push ecx
mov esi, dword [esp + 0x1c]
call esi
mov edi, eax
mov dword [esp + 0x40], 0
test eax, eax
jne 0x421ab9
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 0x4222e4
lea esi, [esp + 0x2b8]
xor ebx, ebx
mov dword [esp + 0x10], edi
jmp 0x421b6d
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 0x4222e4
push 0x20c
push 0
lea eax, [esp + 0xac]
push eax
call sym._memset
add esp, 0xc
mov dword [esp + 0xa0], 0x3b9dc7a0
push 0x330
push 0
push esi
call sym._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 0x421be2
lea ecx, [esp + 0x2b0]
push ecx
push eax
call edi
cmp dword [esp + 0x2c8], 4
je 0x421b57
jmp 0x421bf6
push esi
push eax
call dword [esp + 0x48]
cmp dword [esp + 0x2c8], 4
je 0x421b57
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 0x421c33
cmp edx, dword [esp + 0x34]
jne 0x421c33
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x38]
jbe 0x421dce
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 0x421c60
test bl, bl
mov edi, dword [esp + 0x10]
je 0x421dce
lea eax, [esp + 0xac]
push eax
call sym._strlen
add esp, 4
test eax, eax
je 0x421d50
mov esi, eax
mov eax, dword [0x505ea4]
mov edi, dword [0x505ea8]
test eax, eax
je 0x421cad
mov ecx, edi
not ecx
add ecx, eax
cmp ecx, esi
jae 0x421ce8
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 0x421cc0
test eax, eax
je 0x421cef
push ebx
push dword [0x505eac]
call sym._realloc
add esp, 8
mov dword [0x505eac], eax
mov edi, dword [0x505ea8]
jmp 0x421d21
mov eax, dword [0x505eac]
jmp 0x421d27
push ebx
call sym._malloc
add esp, 4
test edi, edi
je 0x421d19
lea ecx, [edi + 1]
push ecx
push dword [0x505eac]
push eax
mov dword [esp + 0x10], eax
call sym._memcpy
mov eax, dword [esp + 0x10]
add esp, 0xc
jmp 0x421d1c
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 sym._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 0x421d60
test bl, bl
mov edi, dword [esp + 0x10]
je 0x421dce
push 0xa
lea eax, [esp + 0x1b0]
push eax
call sym._strchr
add esp, 8
test eax, eax
jne 0x421dce
push 0x4ac58b
push 2
push 0x505ea4
call sym._ffStrbufAppendNS
add esp, 0xc
lea esi, [esp + 0x1ac]
push esi
call sym._strlen
add esp, 4
push esi
push eax
push 0x505ea4
call sym._ffStrbufAppendNS
add esp, 0xc
push 0x5d
push 0x505ea4
call sym._ffStrbufAppendC
add esp, 8
test edi, edi
je 0x421e08
movzx eax, byte [esp + 0x2ac]
movzx ecx, byte [esp + 0x2ad]
movzx edx, byte [esp + 0x2af]
cmp dword [esp + 0x20], eax
jne 0x421dfa
cmp dword [esp + 0x24], ecx
jne 0x421dfa
cmp dword [esp + 0x28], edx
jae 0x421e08
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 0x421e52
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 0x421b57
mov edx, eax
sar edx, 3
imul edx, edx, 0xeeeeeeef
add eax, 0x78
cmp edx, ebx
jl 0x421e30
cmp ebx, dword [0x505ee0]
jne 0x421e8a
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 sym._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 dbg.ffStrbufInitF
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 sym._strlen
add esp, 4
test eax, eax
mov dword [esp + 4], edi
mov edi, dword [esp + 0x10]
je 0x421f63
mov esi, eax
inc eax
mov ecx, 0x20
nop word [eax + eax]
mov edi, ecx
add ecx, ecx
cmp eax, edi
ja 0x421f20
push edi
call sym._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 sym._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 0x421fb4
cmp eax, 0x106a
jg 0x421fe6
cmp eax, 0x1001
jg 0x422050
cmp eax, 0x3e7
je 0x422049
cmp eax, 0x955
mov ecx, dword [esp + 4]
je 0x422094
jmp 0x4222c9
cmp eax, 0x1af3
jg 0x42201a
cmp eax, 0x15ac
jg 0x422069
cmp eax, 0x1414
je 0x4220be
cmp eax, 0x14c3
jne 0x4222c9
mov ebx, 0x4ab60d
jmp 0x4220d5
cmp eax, 0x10dd
jg 0x422082
mov ecx, 0x505230
cmp eax, 0x106b
je 0x422099
cmp eax, 0x108e
mov ecx, dword [esp + 4]
jne 0x4222c9
mov ebx, str.Oracle
jmp 0x4220d5
lea ecx, [eax - 0x8086]
cmp ecx, 2
jb 0x422049
cmp eax, 0x1af4
je 0x4220c5
mov ebx, str.Qualcomm
cmp eax, 0x5143
mov ecx, dword [esp + 4]
je 0x4220d5
jmp 0x4222c9
mov ecx, 0x505238
jmp 0x422099
cmp eax, 0x1002
je 0x422062
cmp eax, 0x1022
jne 0x4222c9
mov ecx, 0x505234
jmp 0x422099
cmp eax, 0x15ad
je 0x4220d0
cmp eax, 0x1ab8
jne 0x4222c9
mov ebx, str.Parallel
jmp 0x4220d5
cmp eax, 0x10de
je 0x422094
cmp eax, 0x12d2
jne 0x4222c9
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 0x4220eb
jmp 0x422158
mov ebx, 0x4ab621
jmp 0x4220d5
mov ebx, str.RedHat
mov ecx, dword [esp + 4]
jmp 0x4220d5
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 sym._strlen
add esp, 4
test eax, eax
je 0x42214f
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 0x422110
push edi
call sym._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 sym._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 sym._strlen
add esp, 4
test eax, eax
je 0x4221d3
mov esi, eax
inc eax
mov ecx, 0x20
nop word [eax + eax]
mov edi, ecx
add ecx, ecx
cmp eax, edi
ja 0x422190
push edi
call sym._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 sym._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 sym._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 0x421b34
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 0x422265
test byte [esp + 0x44], 1
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 4]
je 0x421b34
shl edx, 4
cmp esi, 2
jne 0x421b12
test byte [esp + edx + 0x6f8], 1
je 0x421b12
jmp 0x421b1a
mov eax, dword [esp + 0x44]
and eax, 0xfffffffe
mov dword [esp + 0x14], eax
xor edx, edx
lea edi, [esp + 0x708]
jmp 0x42229b
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 0x422233
cmp esi, 2
jne 0x4222aa
test byte [edi - 0x10], 1
mov ecx, dword [esp + 0xc]
jne 0x4222ae
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 0x422280
test byte [edi], 1
mov ecx, dword [esp + 0xc]
je 0x422280
jmp 0x422284
mov dword [ecx + 4], 0
mov dword [ecx + 8], 0
mov eax, dword [0x5052b0]
mov dword [ecx + 0xc], eax
jmp 0x422158
lea eax, [esp + 0x50]
push 0x505ec8
push eax
call dbg.ffVersionToPretty
add esp, 8
lea eax, [esp + 0x30]
push 0x505eb0
push eax
call dbg.ffVersionToPretty
add esp, 8
lea eax, [esp + 0x20]
push 0x505ebc
push eax
call dbg.ffVersionToPretty
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