Function at 0x401c40
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x344
mov eax, dword [0x41f1d0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x320], eax
mov eax, dword [ebp + 0x10]
push esi
push edi
mov dword [ebp - 0x318], eax
mov eax, dword [ebp + 0x14]
push 0x103
mov dword [ebp - 0x310], eax
lea eax, [ebp - 0x107]
push 0
push eax
mov dword [ebp - 0x31c], ebx
mov byte [ebp - 0x108], 0
call fcn.00404050
add esp, 0xc
lea eax, [ebp - 0x330]
push eax
lea eax, [ebp - 0x334]
push eax
lea eax, [ebp - 0x328]
push eax
lea eax, [ebp - 0x33c]
push eax
lea eax, [ebp - 0x344]
push eax
lea eax, [ebp - 0x340]
push eax
lea eax, [ebp - 0x338]
push eax
lea eax, [ebp - 0x30c]
push eax
push 0
lea eax, [ebp - 0x324]
push eax
lea eax, [ebp - 0x108]
push eax
push ebx
mov dword [ebp - 0x324], 0x104
mov dword [ebp - 0x30c], 0
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyA]
mov eax, dword [ebp - 0x30c]
test eax, eax
je 0x401e8c
xor esi, esi
test eax, eax
je 0x401e8c
mov edi, dword [ebp + 0x18]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
jmp 0x401d20
lea eax, [ebp - 0x330]
push eax
push 0
push 0
push 0
lea eax, [ebp - 0x314]
push eax
lea eax, [ebp - 0x308]
push eax
push esi
push dword [ebp - 0x31c]
mov dword [ebp - 0x314], 0xff
call ebx
test eax, eax
jne 0x401e7f
lea eax, [ebp - 0x308]
push eax
push dword [ebp - 0x310]
lea eax, [ebp - 0x208]
push str._s_s
push eax
call fcn.00403e88
add esp, 0x10
push edi
push dword [ebp - 0x318]
lea eax, [ebp - 0x208]
push dword [ebp - 0x320]
push eax
call fcn.00401ec0
cmp eax, 1
jne 0x401e7f
lea eax, [ebp - 0x208]
push eax
push str.Device_HW_Key___s__n
call fcn.00403c2e
add esp, 8
mov ecx, str.QCDeviceMuxEnable
mov eax, 0x420e28
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x401dd7
test dl, dl
je 0x401dd3
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x401dd7
add eax, 2
add ecx, 2
test dl, dl
jne 0x401db7
xor eax, eax
jmp 0x401ddc
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401e7f
mov ecx, str.QCDeviceStartIf
mov eax, 0x420e28
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x401e10
test dl, dl
je 0x401e0c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x401e10
add eax, 2
add ecx, 2
test dl, dl
jne 0x401df0
xor eax, eax
jmp 0x401e15
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401e7f
mov ecx, str.QCDeviceNumIf
mov eax, 0x420e28
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x401e43
test dl, dl
je 0x401e3f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x401e43
add eax, 2
add ecx, 2
test dl, dl
jne 0x401e23
xor eax, eax
jmp 0x401e48
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x401e7f
mov eax, str.QCDeviceNumMuxIf
mov ecx, 0x420e28
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x401e76
test dl, dl
je 0x401e72
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x401e76
add ecx, 2
add eax, 2
test dl, dl
jne 0x401e56
xor eax, eax
jmp 0x401e7b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401ea1
inc esi
cmp esi, dword [ebp - 0x30c]
jb 0x401d20
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00404041
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.00404041
mov esp, ebp
pop ebp
ret 0x14