Function at 0x408bd4
Capabilities:
Delete registry value
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffcc
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x408e23
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 5], 0
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0xc]
push eax
push 0
push 3
push 0
push 0
push 0
push 0x408e34
push 0x80000002
call sub.advapi32.dll_RegCreateKeyExA
test eax, eax
je 0x408c65
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x34]
mov edx, dword [0x40b190]
call fcn.004033c0
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x30], eax
mov eax, 0x408e74
mov dword [ebp - 0x2c], eax
lea edx, [ebp - 0x30]
mov ecx, 1
mov al, 0x37
call fcn.00407628
mov ecx, dword [ebp - 0x28]
mov dl, 1
mov eax, 0x404c6c
call fcn.00406154
call fcn.00402fb0
lea eax, [ebp - 0x1c]
push eax
push 0
lea eax, [ebp - 0x14]
push eax
push 0
mov eax, dword [ebp - 4]
call fcn.004035cc
mov ebx, eax
push ebx
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
je 0x408c97
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey
jmp 0x408e00
mov dword [ebp - 0x10], 2
mov dword [ebp - 0x18], 4
xor eax, eax
push ebp
push 0x408d5f
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x14]
dec eax
je 0x408cc6
sub eax, 2
je 0x408ceb
dec eax
je 0x408d27
jmp 0x408d55
mov edx, ebx
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 0xc]
call fcn.0040734c
test al, al
je 0x408d55
mov eax, dword [ebp - 0x24]
call fcn.00405320
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x18], 1
jmp 0x408d55
cmp dword [ebp - 0x1c], 1
jl 0x408d55
cmp dword [ebp - 0x1c], 4
jg 0x408d55
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0
mov eax, dword [ebp - 4]
call fcn.004035cc
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
je 0x408d1e
call fcn.00406134
mov dword [ebp - 0x18], 3
jmp 0x408d55
mov dword [ebp - 0x1c], 4
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x10]
push eax
push 0
push 0
mov eax, dword [ebp - 4]
call fcn.004035cc
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
je 0x408d55
call fcn.00406134
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x408d70
dec dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0
jg 0x408d91
mov byte [ebp - 5], 1
mov eax, dword [ebp - 4]
call fcn.004035cc
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegDeleteValueA
jmp 0x408df7
mov eax, dword [ebp - 0x18]
dec eax
je 0x408da1
add eax, 0xfffffffe
sub eax, 2
jb 0x408dd9
jmp 0x408df7
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 0x10]
call fcn.004052f0
mov eax, dword [ebp - 0x24]
call fcn.00403408
inc eax
push eax
mov eax, dword [ebp - 0x24]
call fcn.004035cc
push eax
mov eax, dword [ebp - 0x18]
push eax
push 0
mov eax, dword [ebp - 4]
call fcn.004035cc
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegSetValueExA
jmp 0x408df7
push 4
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x18]
push eax
push 0
mov eax, dword [ebp - 4]
call fcn.004035cc
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegSetValueExA
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_RegCloseKey
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x408e2a
lea eax, [ebp - 0x34]
call fcn.00403294
lea eax, [ebp - 0x28]
mov edx, 2
call fcn.004032b4
ret