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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5a0fc0
mov eax, dword fs:[0]
push eax
sub esp, 0xd00
mov eax, dword [0x61e69c]
xor eax, esp
mov dword [esp + 0xcf8], eax
push ebx
push esi
push edi
mov eax, dword [0x61e69c]
xor eax, esp
push eax
lea eax, [esp + 0xd10]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
push 6
xor edi, edi
push edi
push edi
push edi
mov dword [esp + 0x68], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
mov ebx, eax
mov dword [esp + 0x38], ebx
cmp ebx, 0xffffffff
je 0x4b8a0e
mov ecx, dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov edx, ebx
lea esi, [esp + 0xac]
call fcn.0047d4c0
lea ecx, [esp + 0x74]
push ecx
mov dword [esp + 0xd1c], edi
call fcn.0040d5c0
lea edx, [esp + 0xd8]
push edx
push edi
mov byte [esp + 0xd20], 1
push ebx
mov dword [esp + 0xe4], 0x1c
mov dword [esp + 0x54], edi
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x4b81a2
mov edx, dword [esp + 0x8c]
mov edi, dword [edx]
mov esi, dword [esp + 0x74]
mov dword [esp + 0x54], edi
mov dword [esp + 0x50], esi
lea esp, [esp]
mov ebx, dword [esp + 0x8c]
test esi, esi
je 0x4b8111
cmp esi, dword [esp + 0x74]
je 0x4b8116
call fcn.004f825e
cmp edi, ebx
je 0x4b89e0
test esi, esi
jne 0x4b8967
call fcn.004f825e
xor eax, eax
cmp edi, dword [eax + 0x18]
jne 0x4b8137
call fcn.004f825e
mov eax, dword [edi + 0x10]
sub esp, 8
mov dword [esp + 0x4c], esp
mov dword [esp + 0x20], esp
push eax
test esi, esi
jne 0x4b896e
call fcn.004f825e
cmp edi, dword [esi + 0x18]
jne 0x4b815d
call fcn.004f825e
mov edi, dword [edi + 0xc]
push ecx
mov ecx, dword [edi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub edi, 0x10
mov dword [esp + 0x28], esp
mov ebx, esp
call eax
cmp dword [edi + 0xc], 0
lea ecx, [edi + 0xc]
jl 0x4b8975
cmp eax, dword [edi]
jne 0x4b8975
mov esi, edi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x4b89a8
xor edi, edi
lea eax, [esp + 0x64]
push eax
push 0x208
lea ecx, [esp + 0xfc]
push ecx
lea edx, [esp + 0xe4]
push edx
push ebx
mov dword [esp + 0x78], edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstanceIdW]
test eax, eax
je 0x4b893c
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0xf8]
call fcn.004066b0
mov eax, 8
lea ecx, [esp + 0x28]
lea edx, [esp + 0x14]
mov byte [esp + 0xd18], 3
call fcn.004098d0
mov ebx, 4
mov byte [esp + 0xd18], bl
mov esi, dword [esp + 0x28]
mov ecx, str.USBVID_
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4b8235
cmp dx, di
je 0x4b8231
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4b8235
add eax, ebx
add ecx, ebx
cmp dx, di
jne 0x4b8211
xor eax, eax
jmp 0x4b823a
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
setne al
test al, al
je 0x4b8298
mov byte [esp + 0xd18], 3
lea eax, [esi - 0x10]
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b8267
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xd18], 1
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b8912
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4b8912
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], edi
jge 0x4b82a6
or eax, 0xffffffff
jmp 0x4b82c3
push str.VID_
push eax
call fcn.004f7373
add esp, 8
cmp eax, edi
jne 0x4b82bd
or eax, 0xffffffff
jmp 0x4b82c3
sub eax, dword [esp + 0x14]
sar eax, 1
lea edx, [esp + 0x14]
lea ecx, [eax + 4]
push edx
mov eax, ebx
lea edx, [esp + 0x30]
call fcn.0040d440
lea edi, [esp + 0x2c]
mov byte [esp + 0xd18], 5
call fcn.00418bf0
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 0
jl 0x4b8310
push str.PID_
push eax
call fcn.004f7373
add esp, 8
test eax, eax
je 0x4b8310
mov ecx, dword [esp + 0x14]
sub eax, ecx
sar eax, 1
cmp eax, 0xffffffff
jne 0x4b834b
mov byte [esp + 0xd18], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b8337
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xd18], 3
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
jmp 0x4b824e
push 0x5c
push ecx
lea edi, [eax + 4]
call fcn.004f7f30
add esp, 8
test eax, eax
je 0x4b8310
sub eax, dword [esp + 0x14]
sar eax, 1
mov esi, eax
cmp esi, 0xffffffff
je 0x4b8310
lea ecx, [esp + 0x14]
push ecx
sub eax, edi
mov ecx, edi
lea edx, [esp + 0x38]
call fcn.0040d440
lea edi, [esp + 0x34]
mov byte [esp + 0xd18], 6
call fcn.00418bf0
lea ecx, [esi + 1]
xor edi, edi
lea esi, [esp + 0x3c]
lea edx, [esp + 0x14]
mov dword [esp + 0x20], edi
call fcn.0040cf10
lea edx, [esp + 0x40]
mov byte [esp + 0xd18], 7
push edx
mov ecx, 0x5d74e0
mov dword [esp + 0x50], edi
call fcn.004066b0
lea eax, [esp + 0x4c]
push eax
push 0x208
lea ecx, [esp + 0x304]
push ecx
mov ecx, dword [esp + 0x44]
lea edx, [esp + 0x5c]
push edx
push 2
lea eax, [esp + 0xec]
push eax
push ecx
mov byte [esp + 0xd34], 8
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
test eax, eax
je 0x4b87b5
cmp dword [esp + 0x4c], edi
jbe 0x4b87b5
lea edx, [esp + 0x2fc]
push edx
call fcn.004f84aa
mov edi, eax
add esp, 4
lea esi, [esp + 0x24]
mov dword [esp + 0x30], edi
call fcn.00406670
mov byte [esp + 0xd18], 9
cmp word [edi], 0
je 0x4b87a4
jmp 0x4b843b
mov edi, dword [esp + 0x30]
mov eax, edi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4b8440
sub eax, edx
sar eax, 1
mov ebx, eax
push edi
lea eax, [esp + 0x28]
call fcn.004072f0
lea edi, [esp + 0x24]
call fcn.00418bf0
mov eax, dword [0x6285c4]
mov edx, dword [eax + 0xc]
mov ecx, 0x6285c4
call edx
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0xd18], 0xa
mov esi, dword [esp + 0x24]
cmp dword [esi - 0xc], 0
jl 0x4b8524
push str.usbclass_ffsubclass_42prot_01
push esi
call fcn.004f7373
add esp, 8
test eax, eax
je 0x4b84ac
sub eax, esi
sar eax, 1
jns 0x4b85ab
cmp dword [esi - 0xc], 0
jl 0x4b8524
push str.usbclass_ffsubclass_42prot_03
push esi
call fcn.004f7373
add esp, 8
test eax, eax
je 0x4b84ce
sub eax, esi
sar eax, 1
jns 0x4b85ab
cmp dword [esi - 0xc], 0
jl 0x4b8524
push str.usbclass_ffsubclass_a2prot_01
push esi
call fcn.004f7373
add esp, 8
test eax, eax
je 0x4b84f9
sub eax, esi
sar eax, 1
js 0x4b84f9
mov dword [esp + 0x20], 2
jmp 0x4b85b3
cmp dword [esi - 0xc], 0
jl 0x4b8524
push str.usbclass_ffsubclass_43prot_01
push esi
call fcn.004f7373
add esp, 8
test eax, eax
je 0x4b8524
sub eax, esi
sar eax, 1
js 0x4b8524
mov dword [esp + 0x20], 3
jmp 0x4b85b3
call fcn.004b8a90
test eax, eax
je 0x4b8555
cmp dword [esi - 0xc], 0
jl 0x4b8555
push str.usbclass_ffsubclass_48prot_01
push esi
call fcn.004f7373
add esp, 8
test eax, eax
je 0x4b8555
sub eax, esi
sar eax, 1
js 0x4b8555
mov dword [esp + 0x20], 4
jmp 0x4b85b3
call fcn.004b8b70
test eax, eax
je 0x4b8586
cmp dword [esi - 0xc], 0
jl 0x4b8586
push str.usbclass_ffsubclass_45prot_01
push esi
call fcn.004f7373
add esp, 8
test eax, eax
je 0x4b8586
sub eax, esi
sar eax, 1
js 0x4b8586
mov dword [esp + 0x20], 5
jmp 0x4b85b3
mov esi, dword [esi - 0xc]
mov eax, dword [esp + 0x30]
lea ecx, [eax + esi*2 + 2]
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x1c]
mov byte [esp + 0xd18], 9
call fcn.00406760
jmp 0x4b8786
mov dword [esp + 0x20], 1
mov edx, dword [esp + 0x34]
cmp dword [edx - 0xc], 4
jle 0x4b8796
mov edx, dword [esp + 0x14]
mov ecx, dword [edx - 8]
mov eax, 1
sub eax, dword [edx - 4]
or ecx, eax
jge 0x4b85e3
xor ecx, ecx
lea eax, [esp + 0x14]
call fcn.004073a0
mov edx, dword [esp + 0x14]
push 0
push edx
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.SETUPAPI.dll_CM_Locate_DevNodeW]
test eax, eax
jne 0x4b874f
mov ecx, dword [esp + 0x70]
push eax
push ecx
lea edx, [esp + 0x4c]
push edx
call dword [sym.imp.SETUPAPI.dll_CM_Get_Parent]
test eax, eax
jne 0x4b874f
push 0x7fe
push eax
lea ecx, [esp + 0x50e]
push ecx
mov word [esp + 0x510], ax
call fcn.004fe380
mov eax, dword [esp + 0x50]
add esp, 0xc
push 0
push 0x400
lea edx, [esp + 0x50c]
push edx
push eax
call dword [sym.imp.SETUPAPI.dll_CM_Get_Device_IDW]
test eax, eax
jne 0x4b874f
lea edx, [esp + 0x504]
lea edi, [esp + 0x1c]
call fcn.00406780
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x74]
mov eax, edi
mov dword [esp + 0x98], ecx
push eax
lea ecx, [esp + 0xbc]
push ecx
lea esi, [esp + 0x7c]
mov dword [esp + 0x9c], edx
call fcn.0047c9a0
lea esi, [esp + 0x94]
mov edi, eax
call fcn.004997f0
test al, al
je 0x4b8728
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
push edx
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x20], esp
mov esi, esp
call fcn.004073f0
add eax, 0x10
mov dword [esi], eax
lea esi, [esp + 0xa4]
call fcn.004c3050
add esp, 8
mov esi, eax
mov byte [esp + 0xd18], 0xb
mov eax, dword [esi]
sub eax, 0x10
call fcn.004073f0
add eax, 0x10
mov dword [esp + 0x5c], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x60], eax
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x78]
push edx
lea ebx, [esp + 0xc8]
mov byte [esp + 0xd20], 0xc
call fcn.0047cd00
lea eax, [esp + 0x5c]
call fcn.004b8a70
lea eax, [esp + 0x9c]
call fcn.004b8a70
jmp 0x4b874b
lea eax, [esp + 0x1c]
push eax
lea ebx, [esp + 0x78]
call fcn.0047c850
cmp dword [eax], 1
je 0x4b874b
lea ecx, [esp + 0x1c]
push ecx
call fcn.0047c850
mov edx, dword [esp + 0x20]
mov dword [eax], edx
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x30]
mov esi, dword [esi - 0xc]
lea ecx, [eax + esi*2 + 2]
mov byte [esp + 0xd18], 9
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x30], ecx
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4b8786
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x30]
cmp word [ecx], 0
jne 0x4b8437
jmp 0x4b879f
lea ecx, [esp + 0x1c]
call fcn.00406760
mov ebx, 4
lea ecx, [esp + 0x24]
mov byte [esp + 0xd18], 8
call fcn.00406760
mov esi, dword [esp + 0x34]
cmp dword [esi - 0xc], ebx
jle 0x4b883b
mov byte [esp + 0xd18], 7
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4b87e6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xd18], 6
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b880e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [esp + 0xd18], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4b8310
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4b8310
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0xd8]
call fcn.004c03e0
test eax, eax
jne 0x4b88d4
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
push ecx
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x20], esp
mov esi, esp
call fcn.004073f0
add eax, 0x10
mov dword [esi], eax
lea esi, [esp + 0xac]
call fcn.004c3050
add esp, 8
mov esi, eax
mov byte [esp + 0xd18], 0xd
mov eax, dword [esi]
sub eax, 0x10
call fcn.004073f0
mov edx, dword [esi + 4]
add eax, 0x10
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
lea eax, [esp + 0x68]
push eax
lea ecx, [esp + 0x78]
push ecx
lea ebx, [esp + 0xd4]
mov byte [esp + 0xd20], 0xe
call fcn.0047cd00
lea eax, [esp + 0x68]
call fcn.004b8a70
lea eax, [esp + 0xa4]
call fcn.004b8a70
lea ecx, [esp + 0x40]
call fcn.00406760
lea ecx, [esp + 0x3c]
call fcn.00406760
lea ecx, [esp + 0x34]
call fcn.00406760
lea ecx, [esp + 0x2c]
call fcn.00406760
lea ecx, [esp + 0x28]
call fcn.00406760
lea ecx, [esp + 0x14]
mov byte [esp + 0xd18], 1
call fcn.00406760
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x38]
lea edx, [esp + 0xd8]
inc eax
push edx
push eax
push ebx
mov dword [esp + 0x54], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x4b81a0
jmp 0x4b80e7
lea esi, [esp + 0x74]
mov byte [esp + 0xd18], 2
call fcn.0047ccc0
mov eax, dword [esp + 0x74]
push eax
call fcn.004f6734
add esp, 4
lea ecx, [esp + 0xac]
push ecx
jmp 0x4b8a06
mov eax, dword [esi]
jmp 0x4b812d
mov esi, dword [esi]
jmp 0x4b8153
mov ecx, dword [edi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov esi, eax
test esi, esi
je 0x4b89db
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
mov eax, dword [edi + 4]
lea eax, [eax + eax + 2]
push eax
add edi, 0x10
push edi
push eax
lea ecx, [esi + 0x10]
push ecx
call fcn.004f745a
add esp, 0x10
add esi, 0x10
mov dword [ebx], esi
mov esi, dword [esp + 0x54]
call fcn.004c3050
mov ecx, dword [ebp + 0xc]
mov esi, dword [esp + 0x68]
add esp, 8
call fcn.004c0dc0
lea esi, [esp + 0x50]
call fcn.00462d80
mov edi, dword [esp + 0x54]
mov esi, dword [esp + 0x50]
jmp 0x4b8100
call fcn.00407390
lea esi, [esp + 0x74]
mov byte [esp + 0xd18], 0xf
call fcn.0047ccc0
mov edx, dword [esp + 0x74]
push edx
call fcn.004f6734
add esp, 4
lea eax, [esp + 0xac]
push eax
call fcn.0047d4d0
add esp, 4
mov ecx, dword [esp + 0xd10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xcf8]
xor ecx, esp
call fcn.004f673f
mov esp, ebp
pop ebp
ret 8