Function at 0x405210
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x4d8
mov eax, dword [0x41c028]
xor eax, esp
mov dword [esp + 0x4d4], eax
mov eax, dword [esp + 0x4dc]
push ebx
push ebp
push esi
xor ebx, ebx
push edi
push 0x206
mov esi, ecx
mov dword [esp + 0x2c], eax
xor eax, eax
lea edx, [esp + 0xd6]
xor ecx, ecx
push ebx
push edx
mov dword [esp + 0x28], esi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], eax
mov word [esp + 0xdc], cx
call fcn.0040e6d0
add esp, 0xc
push 0x206
lea ecx, [esp + 0x2de]
xor eax, eax
push ebx
push ecx
mov word [esp + 0x2e4], ax
call fcn.0040e6d0
add esp, 0xc
push 0x4e
lea eax, [esp + 0x86]
xor edx, edx
push ebx
push eax
mov word [esp + 0x8c], dx
call fcn.0040e6d0
mov ecx, 0x6530
mov edx, 0x11d2
mov word [esp + 0x70], cx
mov word [esp + 0x72], dx
add esp, 0xc
lea edx, [esp + 0x70]
mov ecx, esi
mov dword [esp + 0x60], 0xa5dcbf10
mov byte [esp + 0x68], 0x90
mov byte [esp + 0x69], 0x1f
mov byte [esp + 0x6a], bl
mov byte [esp + 0x6b], 0xc0
mov byte [esp + 0x6c], 0x4f
mov byte [esp + 0x6d], 0xb9
mov byte [esp + 0x6e], 0x51
mov byte [esp + 0x6f], 0xed
call fcn.00403a20
mov esi, eax
movzx ecx, dx
xor eax, eax
or eax, ecx
mov edi, edx
mov dword [esp + 0x24], edi
je 0x405356
push edi
push esi
push 0xd0
jmp 0x405652
push 0x12
push ebx
push ebx
lea eax, [esp + 0x6c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov esi, eax
mov dword [esp + 0x18], esi
cmp esi, 0xffffffff
jne 0x40539c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x10000
push ebx
push ebx
push eax
call fcn.004148f0
mov esi, eax
add esi, 0xda0000
mov edi, edx
adc edi, 0x15
push edi
push esi
push 0xdb
jmp 0x405652
xor eax, eax
lea ecx, [esp + 0x34]
push ecx
push ebx
mov dword [esp + 0x3c], eax
push esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x40], 0x1c
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x405626
jmp 0x4053e7
mov esi, dword [esp + 0x18]
lea edx, [esp + 0x2c]
push edx
push 0x104
lea eax, [esp + 0xd8]
push eax
lea ecx, [esp + 0x40]
push ecx
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstanceIdW]
test eax, eax
je 0x40568e
lea edx, [esp + 0xd0]
push edx
lea eax, [esp + 0x2dc]
push str.SYSTEMControlSet001Enum_sDevice_ParametersStorPort
push eax
mov edx, 0x104
call fcn.00404490
add esp, 0xc
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x38]
push eax
push str.AdapterGuid
lea ecx, [esp + 0x2e8]
mov dword [esp + 0x20], 0x10
call fcn.004044b0
mov edi, edx
add esp, 0x10
mov esi, eax
mov dword [esp + 0x24], edi
call ebp
xor eax, eax
movzx ecx, di
cmp eax, ebx
jne 0x405476
cmp ecx, 0x13
je 0x4055de
or eax, ecx
jne 0x4056b3
cmp dword [esp + 0x10], 0x10
jne 0x4056bc
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
sub esp, 0x10
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esp + 0x68]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x6c]
mov dword [eax + 8], ecx
push ebx
lea ecx, [esp + 0x94]
mov dword [eax + 0xc], edx
call fcn.004038c0
mov ax, word [esp + 0x88]
add esp, 0x14
cmp ax, word [esp + 0x54]
jne 0x4055ba
mov cx, word [esp + 0x76]
cmp cx, word [esp + 0x56]
jne 0x4055ba
mov eax, 8
lea ecx, [esp + 0x58]
lea edx, [esp + 0x78]
lea esp, [esp]
mov ebp, dword [edx]
cmp ebp, dword [ecx]
jne 0x40557c
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x4054f0
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x80]
push ecx
push edx
push 0x11a
push str..UASPSupporter.cpp
push str._S__d__s__s_n
call fcn.004019b0
lea eax, [esp + 0xe4]
add esp, 0x14
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x405536
sub eax, edx
sar eax, 1
cmp eax, 0x104
jle 0x4056e4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x10000
push ebx
push ebx
push eax
call fcn.004148f0
mov esi, eax
add esi, 0x11d0000
mov edi, edx
adc edi, 0xc
push edi
push esi
push 0x11e
jmp 0x405652
movzx eax, byte [edx]
movzx ebp, byte [ecx]
sub eax, ebp
jne 0x4055a8
movzx eax, byte [edx + 1]
movzx ebp, byte [ecx + 1]
sub eax, ebp
jne 0x4055a8
movzx eax, byte [edx + 2]
movzx ebp, byte [ecx + 2]
sub eax, ebp
jne 0x4055a8
movzx eax, byte [edx + 3]
movzx edx, byte [ecx + 3]
sub eax, edx
sar eax, 0x1f
or eax, 1
je 0x405508
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x80]
push eax
push ecx
push 0x117
push str..UASPSupporter.cpp
push str._S__d__s____s_n
call fcn.004019b0
add esp, 0x14
mov ecx, dword [esp + 0x14]
xor eax, eax
lea edx, [esp + 0x34]
inc ecx
push edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x1c]
push ecx
push eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x40], 0x1c
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x4053e3
call ebp
cmp eax, 0x103
je 0x405669
call ebp
push 0x10000
push ebx
push ebx
push eax
call fcn.004148f0
mov esi, eax
add esi, 0xe70000
mov edi, edx
adc edi, 0x15
push edi
push esi
push 0xe8
push str..UASPSupporter.cpp
push str._S__d_nRet0x_016llX_n
call fcn.004019b0
add esp, 0x14
jmp 0x4056fe
call ebp
push 0x10000
push ebx
push ebx
push eax
call fcn.004148f0
mov esi, eax
add esi, 0xed0000
mov edi, edx
adc edi, 0x13
push edi
push esi
push 0xee
jmp 0x405652
call ebp
push 0x10000
push ebx
push ebx
push eax
call fcn.004148f0
mov esi, eax
add esi, 0xf60000
mov edi, edx
adc edi, 0x15
push edi
push esi
push 0xf7
jmp 0x405652
push edi
push esi
push 0x109
jmp 0x405652
call ebp
push 0x10000
push ebx
push ebx
push eax
call fcn.004148f0
mov esi, eax
add esi, 0x10e0000
mov edi, edx
adc edi, 0x16
push edi
push esi
push 0x10f
jmp 0x405652
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0xd0]
push eax
push 0x104
push ecx
call fcn.00409560
add esp, 0xc
mov ecx, dword [esp + 0x4e4]
mov edx, edi
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00409551
add esp, 0x4d8
ret 4