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

Disassembly:
push ebx
mov ebx, eax
push esi
push edi
push ebp
add esp, 0xfffffb4c
mov eax, dword [ebx + 0x20]
mov edi, esp
lea ebp, [esp + 0xa4]
mov esi, 0x4ab40c
cmp dword [eax + 0x110], 0
jne 0x40f159
xor eax, eax
jmp 0x40f473
mov dword [esp + 0x10], 0x94
lea edx, [esp + 0x10]
push edx
call sub.KERNEL32.DLL_GetVersionExA
cmp dword [esp + 0x14], 4
ja 0x40f32d
push esi
push edi
mov edi, ebp
mov eax, edi
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov edx, dword [ebx + 0x20]
pop edi
pop esi
mov ecx, dword [edx + 0x110]
push ecx
push ebp
call fcn.00459fdc
add esp, 8
push edi
push ebp
push 0x80000002
call sub.ADVAPI32.DLL_RegOpenKeyA
test eax, eax
je 0x40f1ab
xor eax, eax
jmp 0x40f473
mov dword [esp + 4], 1
mov dword [esp + 8], 0x10
lea edx, [esp + 8]
push edx
lea ecx, [esp + 0x4a8]
push ecx
lea eax, [esp + 0xc]
push eax
lea edx, [esi + 6]
push 0
push edx
mov ecx, dword [edi]
push ecx
call sub.ADVAPI32.DLL_RegQueryValueExA
test eax, eax
je 0x40f1ee
mov eax, dword [edi]
push eax
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x40f473
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
push esi
push edi
add esi, 0xd
mov edi, ebp
mov eax, edi
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
pop edi
pop esi
lea edx, [esp + 0x4a4]
push edx
push ebp
call fcn.00459fdc
add esp, 8
lea ecx, [esi + 0x36]
push ecx
push ebp
call fcn.00459fdc
add esp, 8
push edi
push ebp
push 0x80000002
call sub.ADVAPI32.DLL_RegCreateKeyA
test eax, eax
je 0x40f23e
xor eax, eax
jmp 0x40f473
mov dword [esp + 0xc], 1
push 4
lea edx, [esp + 0x10]
push edx
push 4
push 0
lea ecx, [esi + 0x53]
push ecx
mov eax, dword [edi]
push eax
call sub.ADVAPI32.DLL_RegSetValueExA
test eax, eax
je 0x40f270
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x40f473
push 4
lea edx, [esp + 0x10]
push edx
push 4
push 0
lea ecx, [esi + 0x57]
push ecx
mov eax, dword [edi]
push eax
call sub.ADVAPI32.DLL_RegSetValueExA
test eax, eax
je 0x40f29a
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x40f473
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
push esi
push edi
add esi, 0x5b
mov edi, ebp
mov eax, edi
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
pop edi
pop esi
lea edx, [esp + 0x4a4]
push edx
push ebp
call fcn.00459fdc
add esp, 8
lea ecx, [esi + 0x84]
push ecx
push ebp
call fcn.00459fdc
add esp, 8
push edi
push ebp
push 0x80000002
call sub.ADVAPI32.DLL_RegCreateKeyA
test eax, eax
je 0x40f2ed
xor eax, eax
jmp 0x40f473
xor edx, edx
lea eax, [esi + 0xa0]
mov dword [esp + 0xc], edx
push 4
lea ecx, [esp + 0x10]
push ecx
push 4
push 0
push eax
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegSetValueExA
test eax, eax
je 0x40f320
mov ecx, dword [edi]
push ecx
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x40f473
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
jmp 0x40f46e
push esi
push edi
mov edi, ebp
add esi, 0xad
mov eax, edi
mov ecx, 0x14
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov edx, dword [ebx + 0x20]
pop edi
pop esi
mov ecx, dword [edx + 0x110]
push ecx
push ebp
call fcn.00459fdc
add esp, 8
lea eax, [esi + 0xff]
push eax
push ebp
call fcn.00459fdc
add esp, 8
push edi
push ebp
push 0x80000002
call sub.ADVAPI32.DLL_RegCreateKeyA
test eax, eax
je 0x40f37e
xor eax, eax
jmp 0x40f473
mov dword [esp + 0xc], 1
push 4
lea edx, [esp + 0x10]
push edx
push 4
push 0
lea ecx, [esi + 0x11c]
push ecx
mov eax, dword [edi]
push eax
call sub.ADVAPI32.DLL_RegSetValueExA
test eax, eax
je 0x40f3b3
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x40f473
push 4
lea edx, [esp + 0x10]
push edx
push 4
push 0
lea ecx, [esi + 0x120]
push ecx
mov eax, dword [edi]
push eax
call sub.ADVAPI32.DLL_RegSetValueExA
test eax, eax
je 0x40f3e0
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x40f473
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
push esi
push edi
mov edi, ebp
add esi, 0x124
mov eax, edi
mov ecx, 0x14
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov edx, dword [ebx + 0x20]
pop edi
pop esi
mov ecx, dword [edx + 0x110]
push ecx
push ebp
call fcn.00459fdc
add esp, 8
lea eax, [esi + 0x176]
push eax
push ebp
call fcn.00459fdc
add esp, 8
push edi
push ebp
push 0x80000002
call sub.ADVAPI32.DLL_RegCreateKeyA
test eax, eax
je 0x40f436
xor eax, eax
jmp 0x40f473
xor edx, edx
lea eax, [esi + 0x192]
mov dword [esp + 0xc], edx
push 4
lea ecx, [esp + 0x10]
push ecx
push 4
push 0
push eax
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegSetValueExA
test eax, eax
je 0x40f466
mov ecx, dword [edi]
push ecx
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x40f473
mov edx, dword [edi]
push edx
call sub.ADVAPI32.DLL_RegCloseKey
mov eax, 1
add esp, 0x4b4
pop ebp
pop edi
pop esi
pop ebx
ret