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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa64
push ebx
push esi
push edi
push 1
pop eax
xor ebx, ebx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], eax
push dword [ebp - 0x20]
lea eax, [ebp - 0x40]
push str.Registry_d
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
push 0x421734
lea eax, [ebp - 0xa64]
push 0x410
push eax
lea eax, [ebp - 0x40]
push ebx
push eax
push str.Registry
call fcn.0040c615
add esp, 0x24
test eax, eax
je 0x404f37
lea eax, [ebp - 0xa64]
push 0x41e41c
push eax
push ebx
call fcn.0040bb2c
mov esi, dword [sym.imp.KERNEL32.DLL_lstrcmpA]
pop ecx
pop ecx
push eax
call esi
mov edi, eax
push 0x41e41c
neg edi
sbb edi, edi
push ebx
push ebx
inc edi
call fcn.0040bb2c
pop ecx
pop ecx
push eax
call esi
neg eax
sbb eax, eax
push ebx
inc eax
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x654]
push eax
call fcn.0040bb2c
lea eax, [ebp - 0x654]
push eax
call fcn.004130c6
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x450]
push ebx
push eax
call fcn.0040bb2c
mov esi, dword [sym.imp.KERNEL32.DLL_lstrcpynA]
add esp, 0x14
lea eax, [ebp - 0x450]
push 0x104
push eax
lea eax, [ebp - 0x34c]
push eax
call esi
lea eax, [ebp - 0x248]
push ebx
push eax
call fcn.0040bb2c
push ebx
push ebx
call fcn.0040bb2c
push eax
call fcn.004130c6
add esp, 0x14
dec eax
je 0x404c0c
dec eax
je 0x404c03
dec eax
je 0x404bfa
mov dword [ebp - 0xc], ebx
jmp 0x404c13
mov dword [ebp - 0xc], 3
jmp 0x404c13
mov dword [ebp - 0xc], 4
jmp 0x404c13
mov dword [ebp - 0xc], 1
lea eax, [ebp - 0xa64]
mov dword [ebp - 0x18], ebx
push 0x2c
push eax
call fcn.00412f00
pop ecx
cmp eax, ebx
pop ecx
je 0x404c38
inc eax
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 6
jl 0x404c1c
cmp eax, ebx
jne 0x404c3d
mov eax, 0x423224
push 0x104
push eax
lea eax, [ebp - 0x144]
push eax
call esi
lea eax, [ebp - 0x34c]
push eax
call fcn.0040bd1b
push 0x5c
push eax
call fcn.00412f00
add esp, 0xc
mov esi, eax
cmp esi, ebx
je 0x404cdc
lea eax, [ebp - 4]
mov byte [esi], bl
push eax
push 1
lea eax, [ebp - 0x34c]
push ebx
push eax
mov eax, dword [ebp - 0x10]
push dword [eax*4 + 0x41a918]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x404ca6
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [esi], 0x5c
inc esi
push 0x5c
push esi
call fcn.00412f00
pop ecx
pop ecx
jmp 0x404c63
cmp dword [ebp - 0x24], ebx
jne 0x404cdc
lea eax, [ebp - 0x34c]
push eax
lea eax, [ebp - 0xa64]
push dword [ebp - 0x10]
push str._d__s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [ebp - 0xa64]
push eax
push ebx
push str.RegistrySubKey
call fcn.00402ad0
add esp, 0x1c
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 4]
push eax
push ebx
push 3
push ebx
push ebx
lea eax, [ebp - 0x450]
push ebx
push eax
mov eax, dword [ebp - 0x10]
push dword [eax*4 + 0x41a918]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x404f2c
cmp dword [ebp - 0xc], ebx
je 0x404f21
cmp edi, ebx
je 0x404d7a
push ebx
push ebx
push ebx
lea eax, [ebp - 0x248]
push ebx
push eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x404d7a
lea eax, [ebp - 0x248]
test eax, eax
je 0x404d44
cmp byte [ebp - 0x248], bl
jne 0x404ee0
mov dword [ebp - 0x10], 2
xor esi, esi
push ebx
push ebx
push ebx
lea eax, [ebp - 0x10]
push ebx
push eax
lea eax, [ebp - 0x1a]
push eax
push esi
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueA]
cmp eax, ebx
je 0x404d6e
cmp eax, 0xea
jne 0x404d7a
cmp byte [ebp - 0x1a], bl
je 0x404ee0
inc esi
jmp 0x404d4d
mov eax, dword [ebp - 0xc]
dec eax
je 0x404ea3
dec eax
dec eax
je 0x404e07
dec eax
jne 0x404ee0
lea eax, [ebp - 0x144]
push eax
call fcn.0040bcb1
lea eax, [ebp - 0x144]
mov dword [esp], 0x41e4ac
push eax
call fcn.00412fc0
pop ecx
pop ecx
lea ecx, [ebp - 0x144]
cmp ecx, eax
je 0x404de2
lea eax, [ebp - 0x144]
push 0x41e4a8
push eax
call fcn.00412fc0
pop ecx
pop ecx
lea ecx, [ebp - 0x144]
cmp ecx, eax
je 0x404de2
lea eax, [ebp - 0x28]
push eax
push 0x41e4a4
jmp 0x404deb
lea eax, [ebp - 0x28]
push eax
push 0x41e4a0
lea eax, [ebp - 0x144]
push eax
call fcn.00413151
add esp, 0xc
lea eax, [ebp - 0x28]
push 4
push eax
push 4
jmp 0x404ec8
mov al, byte [0x423224]
push 0x3f
mov byte [ebp - 0x550], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x54f]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor esi, esi
lea eax, [ebp - 0x144]
mov cl, byte [eax]
cmp cl, 0x20
je 0x404e40
cmp cl, 9
je 0x404e40
cmp cl, 0x2c
je 0x404e40
cmp cl, 0x3b
jne 0x404e47
cmp cl, bl
je 0x404e47
inc eax
jmp 0x404e2a
mov cl, byte [eax]
mov edi, eax
cmp cl, 0x20
je 0x404e97
cmp cl, 9
je 0x404e6c
cmp cl, 0x2c
je 0x404e6c
cmp cl, 0x3b
je 0x404e6c
cmp cl, bl
je 0x404e6c
mov cl, byte [edi + 1]
inc edi
cmp cl, 0x20
jne 0x404e50
cmp eax, edi
je 0x404e97
mov cl, byte [edi]
mov byte [edi], bl
mov byte [ebp - 5], cl
lea ecx, [ebp + esi - 0x550]
push ecx
push 0x41e49c
push eax
inc esi
call fcn.00413151
mov al, byte [ebp - 5]
add esp, 0xc
mov byte [edi], al
mov eax, edi
jmp 0x404e2a
lea eax, [ebp - 0x550]
push esi
push eax
push 3
jmp 0x404ec8
lea eax, [ebp - 0x144]
push eax
call fcn.00402f1e
pop ecx
lea eax, [ebp - 0x144]
push eax
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
inc eax
push eax
lea eax, [ebp - 0x144]
push eax
push 1
lea eax, [ebp - 0x248]
push ebx
push eax
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x404ee0
mov dword [ebp - 0x14], ebx
cmp dword [ebp - 0x24], ebx
jne 0x404f21
lea eax, [ebp - 0x248]
push eax
lea eax, [ebp - 0x450]
push eax
lea eax, [ebp - 0x654]
push eax
lea eax, [ebp - 0xa64]
push str._s__s__s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [ebp - 0xa64]
push eax
push ebx
push str.RegistryValue
call fcn.00402ad0
add esp, 0x20
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x404f2f
mov dword [ebp - 0x14], ebx
inc dword [ebp - 0x20]
jmp 0x404b0e
mov eax, dword [ebp - 0x14]
pop edi
pop esi
pop ebx
leave
ret