Function at 0x40cb10
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc8
xor eax, eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
xor eax, eax
push ebp
push 0x40cf0b
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 1], 0
lea eax, [ebp - 8]
push eax
push 0x20019
push 0
mov eax, dword [0x4207dc]
push dword [eax]
push 0x40cf24
mov eax, dword [0x4206cc]
push dword [eax]
lea eax, [ebp - 0x2c]
mov edx, 3
call fcn.00403ad4
mov eax, dword [ebp - 0x2c]
call fcn.00403c14
push eax
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
je 0x40cc13
lea eax, [ebp - 8]
push eax
mov eax, dword [0x4207dc]
push dword [eax]
push 0x40cf24
mov eax, dword [0x4206cc]
push dword [eax]
lea eax, [ebp - 0x30]
mov edx, 3
call fcn.00403ad4
mov eax, dword [ebp - 0x30]
call fcn.00403c14
push eax
push 0x80000002
call sub.advapi32.dll_RegCreateKeyA
mov eax, dword [0x4206f4]
mov eax, dword [eax]
call fcn.00403a14
push eax
mov eax, dword [0x4206f4]
mov eax, dword [eax]
call fcn.00403c14
push eax
push 1
push 0
push 0x40cf28
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegSetValueExA
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403a14
push eax
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403c14
push eax
push 1
push 0
mov eax, dword [0x4207e4]
mov eax, dword [eax]
call fcn.00403c14
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegSetValueExA
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegCloseKey_1
lea eax, [ebp - 8]
push eax
push 0x2001f
push 0
mov eax, dword [0x4207dc]
push dword [eax]
push 0x40cf24
mov eax, dword [0x420640]
push dword [eax]
lea eax, [ebp - 0x34]
mov edx, 3
call fcn.00403ad4
mov eax, dword [ebp - 0x34]
call fcn.00403c14
push eax
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
je 0x40cd01
lea eax, [ebp - 8]
push eax
mov eax, dword [0x4207dc]
push dword [eax]
push 0x40cf24
mov eax, dword [0x420640]
push dword [eax]
lea eax, [ebp - 0x38]
mov edx, 3
call fcn.00403ad4
mov eax, dword [ebp - 0x38]
call fcn.00403c14
push eax
push 0x80000002
call sub.advapi32.dll_RegCreateKeyA
mov eax, dword [0x42057c]
mov dword [ebp - 0x18], eax
mov eax, dword [0x420580]
mov dword [ebp - 0x14], eax
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x18]
mov ecx, 8
call fcn.0040264c
push ebp
call fcn.0040ca34
pop ecx
mov dword [ebp - 0x20], eax
xor eax, eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x1c], eax
push 0x10
lea eax, [ebp - 0x28]
push eax
push 3
push 0
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403c14
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegSetValueExA
jmp 0x40cee7
xor eax, eax
mov dword [ebp - 0x10], eax
cmp byte [0x420564], 0
jne 0x40cd35
lea eax, [ebp - 0x10]
push eax
push 0
lea eax, [ebp - 0xc]
push eax
push 0
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403c14
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
test eax, eax
je 0x40cda4
mov eax, dword [0x42057c]
mov dword [ebp - 0x18], eax
mov eax, dword [0x420580]
mov dword [ebp - 0x14], eax
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x18]
mov ecx, 8
call fcn.0040264c
push ebp
call fcn.0040ca34
pop ecx
mov dword [ebp - 0x20], eax
xor eax, eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x1c], eax
push 0x10
lea eax, [ebp - 0x28]
push eax
push 3
push 0
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403c14
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegSetValueExA
mov byte [0x420564], 0
jmp 0x40cee7
cmp dword [ebp - 0xc], 3
jne 0x40cee7
cmp dword [ebp - 0x10], 0x10
jne 0x40cee7
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0xc]
push eax
push 0
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403c14
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x24], eax
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x28]
mov ecx, 8
call fcn.0040264c
fld qword [0x42057c]
fcomp qword [ebp - 0x18]
fnstsw ax
sahf
jae 0x40ce76
push dword [0x420580]
push dword [0x42057c]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
call fcn.0040b404
cmp eax, 5
jle 0x40ce76
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x1c], eax
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 0xa
jle 0x40ce42
mov byte [ebp - 1], 1
mov al, byte [ebp - 1]
mov byte [0x420564], al
jmp 0x40cee7
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x1c], eax
push 0x10
lea eax, [ebp - 0x28]
push eax
push 3
push 0
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403c14
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegSetValueExA
jmp 0x40cee7
mov byte [0x420564], 0
push dword [0x420580]
push dword [0x42057c]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
call fcn.0040b404
cmp eax, 5
jle 0x40cee7
mov eax, dword [0x42057c]
mov dword [ebp - 0x18], eax
mov eax, dword [0x420580]
mov dword [ebp - 0x14], eax
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x18]
mov ecx, 8
call fcn.0040264c
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
xor dword [ebp - 0x24], eax
push 0x10
lea eax, [ebp - 0x28]
push eax
push 3
push 0
mov eax, dword [0x4206f0]
mov eax, dword [eax]
call fcn.00403c14
push eax
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegSetValueExA
mov eax, dword [ebp - 8]
push eax
call sub.advapi32.dll_RegCloseKey_1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40cf12
lea eax, [ebp - 0x38]
mov edx, 4
call fcn.004037c4
ret