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

Disassembly:
push 0xffffffffffffffff
push 0x5237fa
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x56e188]
xor eax, esp
push eax
lea eax, [esp + 0x60]
mov dword fs:[0], eax
mov eax, dword [esp + 0x70]
push 0x10
xor ebx, ebx
push ebx
push eax
call fcn.004fdd2d
mov ecx, dword [esp + 0x80]
add esp, 0xc
push 0x10
push ebx
push ecx
movzx edi, ax
call fcn.004fdd2d
add esp, 0xc
lea ecx, [esp + 0x44]
movzx ebp, ax
call fcn.004068e0
mov esi, 8
mov dword [esp + 0x68], ebx
cmp dword [eax + 0x18], esi
jb 0x401a7e
mov eax, dword [eax + 4]
jmp 0x401a81
add eax, 4
push eax
lea ecx, [esp + 0x18]
call fcn.004053e0
mov byte [esp + 0x68], 2
cmp dword [esp + 0x5c], esi
jb 0x401aa3
mov edx, dword [esp + 0x48]
push edx
call fcn.00408d8a
add esp, 4
xor eax, eax
push ebp
mov ecx, edi
mov dword [esp + 0x60], 7
mov dword [esp + 0x5c], ebx
mov word [esp + 0x4c], ax
call fcn.004054e0
add esp, 4
test eax, eax
jne 0x401aff
or edi, 0xffffffff
mov dword [esp + 0x68], edi
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jg 0x401ae9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret
lea ecx, [esp + 0x2c]
push ecx
call fcn.00403180
mov byte [esp + 0x68], 3
mov edx, dword [esp + 0x38]
mov dword [esp + 0x1c], str.libusb0.sys
cmp edx, ebx
jne 0x401b22
xor ecx, ecx
jmp 0x401b2b
mov ecx, dword [esp + 0x40]
sub ecx, edx
sar ecx, 2
mov eax, dword [esp + 0x3c]
mov esi, eax
sub esi, edx
sar esi, 2
cmp esi, ecx
jae 0x401b49
mov dword [eax], str.libusb0.sys
add eax, 4
mov dword [esp + 0x3c], eax
jmp 0x401b71
mov esi, eax
cmp edx, eax
jbe 0x401b54
call fcn.004fd947
mov eax, dword [esp + 0x2c]
push esi
push eax
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x3c]
call fcn.00403470
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x1c], str.libusb0.dll
cmp edx, ebx
jne 0x401b85
xor ecx, ecx
jmp 0x401b8e
mov ecx, dword [esp + 0x40]
sub ecx, edx
sar ecx, 2
mov esi, eax
sub esi, edx
sar esi, 2
cmp esi, ecx
jae 0x401ba8
mov dword [eax], str.libusb0.dll
add eax, 4
mov dword [esp + 0x3c], eax
jmp 0x401bd0
mov esi, eax
cmp edx, eax
jbe 0x401bb3
call fcn.004fd947
mov eax, dword [esp + 0x2c]
push esi
push eax
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x3c]
call fcn.00403470
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x1c], str.libusb0_x86.dll
cmp edx, ebx
jne 0x401be4
xor ecx, ecx
jmp 0x401bed
mov ecx, dword [esp + 0x40]
sub ecx, edx
sar ecx, 2
mov esi, eax
sub esi, edx
sar esi, 2
cmp esi, ecx
jae 0x401c07
mov dword [eax], str.libusb0_x86.dll
add eax, 4
mov dword [esp + 0x3c], eax
jmp 0x401c2f
mov esi, eax
cmp edx, eax
jbe 0x401c12
call fcn.004fd947
mov eax, dword [esp + 0x2c]
push esi
push eax
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x30]
push ecx
lea eax, [esp + 0x3c]
call fcn.00403470
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x1c], str.usb_device.inf
cmp edx, ebx
jne 0x401c43
xor ecx, ecx
jmp 0x401c4c
mov ecx, dword [esp + 0x40]
sub ecx, edx
sar ecx, 2
mov esi, eax
sub esi, edx
sar esi, 2
cmp esi, ecx
jae 0x401c66
mov dword [eax], str.usb_device.inf
add eax, 4
mov dword [esp + 0x3c], eax
jmp 0x401c8a
mov esi, eax
cmp edx, eax
jbe 0x401c71
call fcn.004fd947
mov eax, dword [esp + 0x2c]
push esi
push eax
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x3c]
call fcn.00403470
push str.PackageUsb_Device.cat
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x20]
push edx
call fcn.00404c10
add esp, 0xc
lea eax, [esp + 0x2c]
push eax
push ebp
push edi
mov byte [esp + 0x74], 4
call fcn.004063f0
add esp, 0xc
test eax, eax
jne 0x401d2a
or edi, 0xffffffff
mov byte [esp + 0x68], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov edx, edi
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401ce0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0x6c], 2
call fcn.004031e0
mov dword [esp + 0x68], edi
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
lock xadd dword [edx], edi
dec edi
test edi, edi
jg 0x401ae9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret
call fcn.00410e81
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401d44
push 0x80004005
call fcn.00405240
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
movzx ecx, bp
push ecx
movzx edx, di
push edx
lea eax, [esp + 0x24]
push str.CNUSBVID__04XPID__04X__libwdi_autogenerated_
push eax
mov byte [esp + 0x78], 5
call fcn.00404a40
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x2c]
push ecx
mov ecx, ebp
call fcn.00407080
add esp, 0x14
test eax, eax
jne 0x401db3
lea eax, [ebp - 0x10]
or edi, 0xffffffff
mov byte [esp + 0x68], 4
lea edx, [eax + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401cbc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x401cbc
call fcn.00410e81
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401dcd
push 0x80004005
call fcn.00405240
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [esp + 0x24], esi
push str.PackageUsb_Device.inf
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x28]
push edx
mov byte [esp + 0x74], 6
call fcn.00404c10
add esp, 0xc
mov byte [esp + 0x68], 7
mov edi, dword [eax]
call fcn.00402d40
test eax, eax
mov byte [esp + 0x68], 6
mov eax, dword [esp + 0x20]
sete bl
add eax, 0xfffffff0
or edi, 0xffffffff
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401e31
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [esp + 0x68], 5
mov edx, edi
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test bl, bl
je 0x401e6e
test edx, edx
jg 0x401e55
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x10]
mov byte [esp + 0x68], 4
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x401d9e
test edx, edx
jg 0x401e7c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x10]
mov byte [esp + 0x68], 4
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401e9c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x68], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401ec0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0x6c], 2
call fcn.004031e0
mov dword [esp + 0x68], edi
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
lock xadd dword [edx], edi
dec edi
test edi, edi
jg 0x401ef0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret