Function at 0x4023e0
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x240
mov eax, dword [0x41f1d0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x20c]
push eax
push 0x20019
push 0
push str.SYSTEMCurrentControlSetEnumUSB
push 0x80000002
mov dword [ebp - 0x210], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x402642
push edi
push 0x103
push eax
mov byte [ebp - 0x108], al
lea eax, [ebp - 0x107]
push eax
call fcn.00404050
add esp, 0xc
lea eax, [ebp - 0x230]
push eax
lea eax, [ebp - 0x238]
push eax
lea eax, [ebp - 0x224]
push eax
lea eax, [ebp - 0x240]
push eax
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x234]
push eax
lea eax, [ebp - 0x228]
push eax
lea eax, [ebp - 0x214]
push eax
push 0
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x108]
push eax
push dword [ebp - 0x20c]
mov dword [ebp - 0x218], 0x104
mov dword [ebp - 0x214], 0
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
mov edi, eax
mov eax, dword [ebp - 0x214]
test eax, eax
je 0x40252a
xor esi, esi
test eax, eax
je 0x402524
mov edi, dword [ebp + 0x10]
lea eax, [ebp - 0x230]
push eax
push 0
push 0
push 0
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x208]
push eax
push esi
push dword [ebp - 0x20c]
mov dword [ebp - 0x21c], 0xff
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
mov dword [ebp - 0x220], eax
test eax, eax
jne 0x402515
push edi
push ebx
push dword [ebp - 0x210]
lea eax, [ebp - 0x208]
push eax
call fcn.00402670
cmp eax, 1
je 0x402560
inc esi
cmp esi, dword [ebp - 0x214]
jb 0x4024c0
mov edi, dword [ebp - 0x220]
mov esi, dword [ebp - 0x210]
push dword [ebp - 0x20c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, str.QCDeviceMuxEnable
mov eax, 0x420e28
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402578
test dl, dl
je 0x40255c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402578
add eax, 2
add ecx, 2
test dl, dl
jne 0x402540
xor eax, eax
jmp 0x40257d
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00404041
mov esp, ebp
pop ebp
ret 0xc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40262d
mov ecx, str.QCDeviceStartIf
mov eax, 0x420e28
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4025b0
test dl, dl
je 0x4025ac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4025b0
add eax, 2
add ecx, 2
test dl, dl
jne 0x402590
xor eax, eax
jmp 0x4025b5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40262d
mov ecx, str.QCDeviceNumIf
mov eax, 0x420e28
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4025e3
test dl, dl
je 0x4025df
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4025e3
add eax, 2
add ecx, 2
test dl, dl
jne 0x4025c3
xor eax, eax
jmp 0x4025e8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40262d
mov ecx, str.QCDeviceNumMuxIf
mov eax, 0x420e28
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402616
test dl, dl
je 0x402612
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402616
add eax, 2
add ecx, 2
test dl, dl
jne 0x4025f6
xor eax, eax
jmp 0x40261b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40262d
push esi
push str.Error:_Device___s__does_not_exist_n
call fcn.00403c2e
add esp, 8
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00404041
mov esp, ebp
pop ebp
ret 0xc
push str.Error:_Fail_to_access_registry_n
call fcn.00403c2e
mov ecx, dword [ebp - 4]
add esp, 4
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.00404041
mov esp, ebp
pop ebp
ret 0xc