Function at 0x1001e030
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x130
mov eax, dword [0x10079040]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push edi
push 0x12
push 0
push 0
mov dword [ebp - 0x130], eax
mov eax, dword [ebp + 0xc]
push 0x100643e0
mov dword [ebp - 0x12c], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x1001e084
mov eax, 0xffffffed
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10033290
mov esp, ebp
pop ebp
ret 8
push esi
lea eax, [ebp - 0x120]
mov dword [ebp - 0x120], 0x1c
push eax
push 0
push 0x100643e0
push 0
mov esi, 1
push edi
mov dword [ebp - 0x128], esi
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x1001e2f4
push ebx
nop word [eax + eax]
lea eax, [ebp - 0x104]
mov dword [ebp - 0x104], 0x1c
push eax
lea eax, [ebp - 0x124]
push eax
push 0
push 0
lea eax, [ebp - 0x120]
push eax
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailA]
push dword [ebp - 0x124]
push 0x40
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov ebx, eax
test ebx, ebx
je 0x1001e284
lea eax, [ebp - 0x104]
mov dword [ebx], 5
push eax
push 0
push dword [ebp - 0x124]
lea eax, [ebp - 0x120]
push ebx
push eax
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailA]
test eax, eax
je 0x1001e27d
lea esi, [ebx + 4]
push str.VID_11FA
push esi
call fcn.10037380
add esp, 8
test eax, eax
jne 0x1001e159
push str.vid_11fa
push esi
call fcn.10037380
add esp, 8
test eax, eax
je 0x1001e277
push str.PID_82FF
push esi
call fcn.10037380
add esp, 8
test eax, eax
jne 0x1001e1a5
push str.pid_82ff
push esi
call fcn.10037380
add esp, 8
test eax, eax
jne 0x1001e1a5
push str.PID_8241
push esi
call fcn.10037380
add esp, 8
test eax, eax
jne 0x1001e1a5
push str.pid_8241
push esi
call fcn.10037380
add esp, 8
test eax, eax
je 0x1001e277
push 0
push dword [ebp - 0xf0]
lea eax, [ebp - 0xe0]
push eax
call dword [sym.imp.SETUPAPI.dll_CM_Get_Parent]
test eax, eax
jne 0x1001e277
push eax
push 0xc8
lea eax, [ebp - 0xdc]
push eax
push dword [ebp - 0xe0]
call dword [sym.imp.SETUPAPI.dll_CM_Get_Device_IDA]
test eax, eax
jne 0x1001e277
mov esi, dword [ebp - 0x12c]
lea eax, [ebp - 0xdc]
push esi
push eax
call fcn.10037380
add esp, 8
test eax, eax
jne 0x1001e22d
mov ecx, 0x1007029e
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1001e224
test dl, dl
je 0x1001e220
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1001e224
add eax, 2
add ecx, 2
test dl, dl
jne 0x1001e204
xor eax, eax
jmp 0x1001e229
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1001e277
push 1
push 1
push 0
push 1
lea eax, [ebp - 0x104]
mov dword [ebp - 0xc], 0
push eax
xorps xmm0, xmm0
mov word [ebp - 8], 0
push edi
movq qword [ebp - 0x14], xmm0
mov byte [ebp - 6], 0
mov dword [ebp - 0xe4], 0xf
mov dword [ebp - 0xe8], 0
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov esi, eax
cmp esi, 0xffffffff
jne 0x1001e2ad
mov esi, dword [ebp - 0x128]
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
lea ecx, [ebp - 0x120]
mov eax, esi
push ecx
push eax
push 0x100643e0
push 0
inc esi
push edi
mov dword [ebp - 0x128], esi
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
jne 0x1001e0c0
jmp 0x1001e2f3
lea eax, [ebp - 0xe4]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xe8]
push eax
push 0
push str.PortName
push esi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x1001e2e5
lea eax, [ebp - 0x14]
push eax
push 0xf
push dword [ebp - 0x130]
call fcn.10042150
add esp, 0xc
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push ebx
call dword [sym.imp.KERNEL32.dll_LocalFree]
pop ebx
pop esi
test edi, edi
je 0x1001e300
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov ecx, dword [ebp - 4]
xor eax, eax
xor ecx, ebp
pop edi
call fcn.10033290
mov esp, ebp
pop ebp
ret 8