Function at 0x1002f480
Capabilities:
Access peb ldr_data

Disassembly:
push 0xffffffffffffffff
push 0x1011075c
mov eax, dword fs:[0]
push eax
sub esp, 0x41c
mov eax, dword [0x102ac760]
xor eax, esp
mov dword [esp + 0x418], eax
push ebp
push esi
push edi
mov eax, dword [0x102ac760]
xor eax, esp
push eax
lea eax, [esp + 0x42c]
mov dword fs:[0], eax
mov eax, dword [0x102b0b9c]
mov esi, ecx
mov edi, edx
mov edx, dword [eax + 0xc]
mov ecx, 0x102b0b9c
mov byte [esp + 0x13], 0
call edx
add eax, 0x10
mov dword [esp + 0x24], eax
xor ebp, ebp
push 0x3ff
lea eax, [esp + 0x2d]
push ebp
mov dword [esp + 0x43c], ebp
push eax
mov byte [esp + 0x34], 0
call fcn.100b2d30
add esp, 0xc
push ebp
push 0x400
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x28]
push edx
push 1
push edi
mov dword [esp + 0x34], ebp
mov ebp, dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
push esi
call ebp
test eax, eax
je 0x1002f87d
cmp byte [esp + 0x28], 0
je 0x1002f87d
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x1c]
call fcn.100181c0
mov byte [esp + 0x434], 1
test ebx, ebx
je 0x1002f553
lea ecx, [esp + 0x18]
push ecx
mov ecx, ebx
call fcn.10031560
push 0
push 0x400
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x28]
push eax
push 2
push edi
push esi
mov byte [esp + 0x44], 0
call ebp
test eax, eax
je 0x1002f7f3
cmp byte [esp + 0x28], 0
je 0x1002f7f3
cmp dword [esp + 0x1c], 7
jne 0x1002f701
lea edi, [esp + 0x28]
mov ecx, edi
push ecx
lea ecx, [esp + 0x18]
call fcn.100181c0
mov byte [esp + 0x434], 2
test ebx, ebx
je 0x1002f5b6
push 0x10289a2c
lea ecx, [ebx + 0x18]
call fcn.100033f0
lea ecx, [esp + 0x14]
call fcn.10018320
mov esi, eax
push esi
lea ecx, [esp + 0x18]
call fcn.10018300
lea edx, [esi + 1]
push edx
push eax
call fcn.100f32b8
push eax
call fcn.100050f0
add esp, 0xc
push esi
lea ecx, [esp + 0x18]
call fcn.1001a7f0
lea ecx, [esp + 0x14]
call fcn.10018320
test eax, eax
jl 0x1002f623
lea ecx, [esp + 0x14]
call fcn.10015b40
push str.usbclass_ffsubclass_42prot_03
push eax
call fcn.100b3a6d
mov esi, eax
add esp, 8
test esi, esi
je 0x1002f623
lea ecx, [esp + 0x14]
call fcn.10015b40
sub esi, eax
jns 0x1002f6ca
lea ecx, [esp + 0x14]
call fcn.10018320
test eax, eax
jl 0x1002f65a
lea ecx, [esp + 0x14]
call fcn.10015b40
push str.usbclass_ffsubclass_a2prot_03
push eax
call fcn.100b3a6d
mov esi, eax
add esp, 8
test esi, esi
je 0x1002f65a
lea ecx, [esp + 0x14]
call fcn.10015b40
sub esi, eax
jns 0x1002f6ca
push 0
push str.usbclass_ffsubclass_42
lea ecx, [esp + 0x1c]
call fcn.10030fb0
test eax, eax
jge 0x1002f6a6
push 0
push str.usbclass_ffsubclass_a2
lea ecx, [esp + 0x1c]
call fcn.10030fb0
test eax, eax
jge 0x1002f6a6
cmp dword [esp + 0x43c], 2
jne 0x1002f6d4
push 0
push str.usbclass_02subclass_02
lea ecx, [esp + 0x1c]
call fcn.10030fb0
test eax, eax
jge 0x1002f7c0
jmp 0x1002f6d4
cmp dword [esp + 0x43c], 1
je 0x1002f6d4
test ebx, ebx
je 0x1002f7de
push 0x10289ab4
lea ecx, [ebx + 0x10]
call fcn.100182e0
jmp 0x1002f7de
cmp dword [esp + 0x43c], 0
jne 0x1002f753
lea ecx, [esp + 0x14]
call fcn.10018320
lea edi, [edi + eax + 1]
push edi
lea ecx, [esp + 0x18]
call fcn.100182e0
lea ecx, [esp + 0x14]
call fcn.10018320
test eax, eax
jg 0x1002f5b6
jmp 0x1002f7e3
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x18]
call fcn.100181c0
lea esi, [esp + 0x14]
mov byte [esp + 0x434], 3
call fcn.10031010
test ebx, ebx
je 0x1002f731
push 0x10289a2c
lea ecx, [ebx + 0x18]
call fcn.100033f0
push 0
push str.usbclass_ffsubclass_42prot_03
lea ecx, [esp + 0x1c]
call fcn.10030fb0
test eax, eax
jl 0x1002f771
cmp dword [esp + 0x43c], 0
je 0x1002f7e3
test ebx, ebx
je 0x1002f7de
push 0x10289a78
lea ecx, [ebx + 0x10]
mov dword [ebx + 0x28], 1
call fcn.100182e0
jmp 0x1002f7de
push 0
push str.usbclass_ffsubclass_42
lea ecx, [esp + 0x1c]
call fcn.10030fb0
test eax, eax
jl 0x1002f7a2
cmp dword [esp + 0x43c], 1
je 0x1002f7e3
test ebx, ebx
je 0x1002f7de
push 0x10289ab4
lea ecx, [ebx + 0x10]
call fcn.100182e0
jmp 0x1002f7de
cmp dword [esp + 0x43c], 2
jne 0x1002f7e3
push 0
push str.usbclass_02subclass_02
lea ecx, [esp + 0x1c]
call fcn.10030fb0
test eax, eax
jl 0x1002f7e3
test ebx, ebx
je 0x1002f7de
push 0x10289ab4
lea ecx, [ebx + 0x10]
call fcn.100182e0
push 0x10289ad4
lea ecx, [ebx + 0x18]
call fcn.100033f0
mov byte [esp + 0x13], 1
lea ecx, [esp + 0x14]
call fcn.100182c0
cmp byte [esp + 0x13], 0
jne 0x1002f843
lea ecx, [esp + 0x18]
call fcn.10018320
test eax, eax
jl 0x1002f843
lea ecx, [esp + 0x18]
call fcn.10015b40
push str.USB_
push eax
call fcn.100b3a6d
mov esi, eax
add esp, 8
test esi, esi
je 0x1002f843
lea ecx, [esp + 0x18]
call fcn.10015b40
sub esi, eax
js 0x1002f843
push 0
push str.ADBInterface
lea ecx, [esp + 0x20]
call fcn.10030fb0
test eax, eax
jl 0x1002f843
mov byte [esp + 0x13], 1
lea ecx, [esp + 0x18]
call fcn.100182c0
mov dword [esp + 0x434], 0xffffffff
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1002f877
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov al, byte [esp + 0x13]
jmp 0x1002f8aa
mov dword [esp + 0x434], 0xffffffff
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x1002f8a8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor al, al
mov ecx, dword [esp + 0x42c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x418]
xor ecx, esp
call fcn.100b2738
add esp, 0x428
ret