Function at 0x404095
Capabilities:
Query or enumerate registry key
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4f8
mov eax, dword [0x40dd98]
push eax
lea ecx, [ebp - 0x19c]
push ecx
call fcn.00401bc7
add esp, 8
test eax, eax
jge 0x4040be
xor eax, eax
jmp 0x4043cc
mov edx, dword [ebp + 8]
push edx
call fcn.00401e41
add esp, 4
lea eax, [ebp - 0x19c]
push eax
mov ecx, dword [0x40dd98]
push ecx
push 0x40e520
lea edx, [ebp - 0x2dc]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
mov dword [ebp - 0x2b4], 0
jmp 0x404108
mov eax, dword [ebp - 0x2b4]
add eax, 1
mov dword [ebp - 0x2b4], eax
cmp dword [ebp - 0x2b4], 0x17
jge 0x40413f
mov ecx, dword [ebp + 8]
xor edx, edx
mov dx, word [ecx]
mov eax, dword [ebp - 0x2b4]
shl eax, 4
xor ecx, ecx
mov cx, word [eax + 0x40ecca]
cmp edx, ecx
jne 0x40413d
mov edx, dword [ebp - 0x2b4]
mov dword [ebp - 0x1a0], edx
jmp 0x40413f
jmp 0x4040f9
push 1
mov eax, dword [ebp - 0x1a0]
push eax
lea ecx, [ebp - 0x19c]
push ecx
call fcn.0040608d
add esp, 0xc
lea edx, [ebp - 0x2dc]
push edx
lea eax, [ebp - 0x19c]
push eax
mov ecx, dword [ebp - 0x1a0]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.004043d0
add esp, 0x10
lea eax, [ebp - 0x3e0]
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x3fe
push ecx
call fcn.00401c82
add esp, 8
mov edx, dword [ebp + 8]
push edx
lea eax, [ebp - 0x3e0]
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x3fe
push ecx
call fcn.00403fa3
add esp, 0xc
mov edx, dword [ebp + 8]
push edx
lea eax, [ebp - 0x3e0]
push eax
call fcn.00403eaf
add esp, 8
mov dword [ebp - 0x2ac], 0
lea ecx, [ebp - 0x2a8]
push ecx
mov edx, dword [str.Config_ManagerEnum_]
push edx
push 0x80000006
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x404351
mov dword [ebp - 0x3ec], 0
mov dword [ebp - 0x3e8], 0x104
mov eax, dword [ebp - 0x3e8]
push eax
lea ecx, [ebp - 0x4f4]
push ecx
mov edx, dword [ebp - 0x3ec]
mov dword [ebp - 0x4f8], edx
mov eax, dword [ebp - 0x4f8]
push eax
mov ecx, dword [ebp - 0x2a8]
push ecx
mov edx, dword [ebp - 0x3ec]
add edx, 1
mov dword [ebp - 0x3ec], edx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
test eax, eax
je 0x404246
jmp 0x404344
lea eax, [ebp - 0x2b0]
push eax
lea ecx, [ebp - 0x4f4]
push ecx
mov edx, dword [ebp - 0x2a8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
je 0x40426a
jmp 0x404337
mov dword [ebp - 0x3e8], 0x104
mov dword [ebp - 0x3f0], 1
lea eax, [ebp - 0x3e8]
push eax
lea ecx, [ebp - 0x4f4]
push ecx
push 0
push 0
mov edx, dword [str.HardWareKey]
push edx
mov eax, dword [ebp - 0x2b0]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ecx, dword [ebp + 8]
add ecx, 0x3fe
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea edx, [ebp - 0x4f4]
push edx
mov eax, dword [ebp + 8]
add eax, 0x3fe
push eax
call fcn.00407d20
add esp, 0xc
test eax, eax
je 0x4042e0
mov ecx, dword [ebp - 0x2b0]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x404337
mov dword [ebp - 0x3e8], 0x190
mov dword [ebp - 0x3f0], 3
lea edx, [ebp - 0x3e8]
push edx
lea eax, [ebp - 0x190]
push eax
push 0
push 0
push str.Allocation
mov ecx, dword [ebp - 0x2b0]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x404328
mov edx, dword [ebp - 0x3e8]
mov dword [ebp - 0x2ac], edx
mov eax, dword [ebp - 0x2b0]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x404344
mov ecx, 1
test ecx, ecx
jne 0x4041f6
mov edx, dword [ebp - 0x2a8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [str.LogConfig]
push eax
mov ecx, dword [ebp + 8]
add ecx, 0x3fe
push ecx
mov edx, dword [str.Enum_]
push edx
push 0x40e534
lea eax, [ebp - 0x2a4]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
lea ecx, [ebp - 0x3e4]
push ecx
lea edx, [ebp - 0x2a4]
push edx
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
mov eax, dword [ebp - 0x2ac]
push eax
lea ecx, [ebp - 0x190]
push ecx
push 3
push 0
push str.0000
mov edx, dword [ebp - 0x3e4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [ebp - 0x3e4]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 1
mov esp, ebp
pop ebp
ret