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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffa8
xor eax, eax
lea edx, [ebp - 4]
push ebx
push esi
push edi
mov dword [ebp - 0x30], eax
push edx
mov ecx, dword [ebp + 0x10]
mov esi, 0x400
push ecx
mov eax, dword [ebp + 0xc]
push eax
call sub.ADVAPI32.DLL_RegOpenKeyA
test eax, eax
je 0x404ebe
cmp eax, 2
jne 0x404eb7
mov eax, 1
jmp 0x405341
xor eax, eax
jmp 0x405341
mov edx, dword [ebp - 4]
push edx
call fcn.00404964
pop ecx
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x405335
lea edx, [ebp - 4]
push edx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xb4]
push eax
mov edx, dword [ebp + 0x10]
push edx
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.004049b4
add esp, 0x10
test eax, eax
je 0x405335
push esi
call fcn.004e0050
pop ecx
mov dword [ebp - 0x34], eax
push 0x400
call fcn.004e0050
pop ecx
mov dword [ebp - 0x38], eax
push 0x400
call fcn.004e0050
pop ecx
mov dword [ebp - 0x3c], eax
push 0x100
call fcn.004e0050
pop ecx
mov dword [ebp - 0x40], eax
push 0x100
call fcn.004e0050
pop ecx
mov edi, eax
push 0x100
call fcn.004e0050
pop ecx
mov dword [ebp - 0x44], eax
push 0x400
call fcn.004e0050
pop ecx
mov dword [ebp - 0x48], eax
mov ebx, dword [ebp - 0x48]
push esi
push edi
mov edi, ebx
mov eax, edi
mov esi, 0x50fe61
movsb byte es:[edi], byte [esi]
pop edi
pop esi
xor edx, edx
lea ecx, [ebp - 0x1c]
mov dword [ebp - 8], edx
mov dword [ebp - 0x18], 0x400
mov dword [ebp - 0x1c], esi
push ecx
mov eax, dword [ebp - 0x34]
push eax
mov edx, dword [ebp + 0x10]
push edx
mov ecx, dword [ebp - 4]
push ecx
call sub.ADVAPI32.DLL_RegQueryValueA
mov esi, dword [ebp - 0x1c]
push esi
mov eax, dword [ebp - 0x34]
push eax
call fcn.004e0070
add esp, 8
mov dword [ebp - 0x34], eax
lea edx, [ebp - 0x1c]
push edx
mov ecx, dword [ebp - 0x34]
push ecx
mov eax, dword [ebp + 0x10]
push eax
mov edx, dword [ebp - 4]
push edx
call sub.ADVAPI32.DLL_RegQueryValueA
mov ecx, dword [ebp - 0x34]
add ecx, dword [ebp - 0x1c]
add ecx, 0xffffffed
mov dword [ebp - 0x4c], ecx
mov byte [ebp - 0x25], 0
mov ebx, dword [ebp - 0x34]
jmp 0x404ff8
push 0x14
mov eax, dword [ebp + 8]
add eax, 0x1c
push eax
push ebx
call fcn.004e1044
add esp, 0xc
test eax, eax
jne 0x404ff7
push 0x14
mov edx, dword [ebp + 8]
add edx, 4
push edx
push ebx
call fcn.004e0b90
add esp, 0xc
add ebx, 0x13
mov byte [ebp - 0x25], 1
inc ebx
cmp ebx, dword [ebp - 0x4c]
jae 0x40501a
mov ecx, dword [ebp - 0x4c]
sub ecx, ebx
push ecx
mov ecx, dword [ebp + 8]
movsx eax, byte [ecx + 0x1c]
push eax
push ebx
call fcn.004e1035
add esp, 0xc
mov ebx, eax
test eax, eax
jne 0x404fc8
cmp byte [ebp - 0x25], 0
je 0x405044
mov edx, dword [ebp - 0x1c]
push edx
mov ecx, dword [ebp - 0x34]
push ecx
mov eax, dword [ebp - 0x20]
push eax
push 0
mov edx, dword [ebp - 0x48]
push edx
mov ecx, dword [ebp - 4]
push ecx
call sub.ADVAPI32.DLL_RegSetValueExA
test eax, eax
je 0x405044
jmp 0x4052d4
mov dword [ebp - 0x18], 0x400
mov dword [ebp - 0x1c], esi
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x20]
mov edx, dword [ebp - 0x34]
lea eax, [ebp - 0x18]
push edx
push ecx
push 0
push eax
mov edx, dword [ebp - 0x48]
push edx
mov ecx, dword [ebp - 8]
inc dword [ebp - 8]
push ecx
mov eax, dword [ebp - 4]
push eax
call sub.ADVAPI32.DLL_RegEnumValueA
cmp eax, 0xea
jne 0x4050c0
add dword [ebp - 0x1c], 0x400
mov esi, dword [ebp - 0x1c]
push esi
mov eax, dword [ebp - 0x34]
push eax
call fcn.004e0070
add esp, 8
mov dword [ebp - 0x34], eax
lea edx, [ebp - 0x1c]
lea eax, [ebp - 0x20]
push edx
lea edx, [ebp - 0x18]
mov ecx, dword [ebp - 0x34]
push ecx
push eax
push 0
push edx
mov ecx, dword [ebp - 0x48]
push ecx
mov eax, dword [ebp - 8]
dec eax
push eax
mov edx, dword [ebp - 4]
push edx
call sub.ADVAPI32.DLL_RegEnumValueA
cmp eax, 0xea
je 0x40507b
test eax, eax
je 0x404fb3
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp - 0x38]
push esi
push edi
xor eax, eax
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
mov eax, dword [ebp - 0x38]
push eax
call fcn.004e0ef8
mov esi, eax
pop ecx
add esi, dword [ebp - 0x38]
mov ebx, edi
mov byte [esi], 0x5c
inc esi
push esi
push edi
mov edi, ebx
mov esi, 0x50fe62
mov eax, edi
mov ebx, 2
movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 8]
pop edi
pop esi
lea edx, [eax + 0x20]
mov dword [ebp - 0x58], edx
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx]
push ecx
push 0x50fe63
mov eax, dword [ebp - 0x44]
push eax
call sub.USER32.DLL_wsprintfA
add esp, 0xc
mov edx, dword [ebp - 0x44]
push edx
push edi
call fcn.004e0e48
add esp, 8
inc ebx
add dword [ebp - 0x58], 4
cmp ebx, 6
jb 0x405122
mov ebx, dword [ebp - 0x40]
push esi
push edi
mov edi, ebx
mov eax, edi
mov esi, 0x50fe67
movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 8]
pop edi
pop esi
mov ebx, 2
lea edx, [eax + 8]
mov dword [ebp - 0x58], edx
mov ecx, dword [ebp - 0x58]
mov ecx, dword [ecx]
push ecx
push 0x50fe68
mov eax, dword [ebp - 0x44]
push eax
call sub.USER32.DLL_wsprintfA
add esp, 0xc
mov edx, dword [ebp - 0x44]
push edx
mov ecx, dword [ebp - 0x40]
push ecx
call fcn.004e0e48
add esp, 8
inc ebx
add dword [ebp - 0x58], 4
cmp ebx, 6
jb 0x40516f
xor eax, eax
mov dword [ebp - 8], eax
mov dword [ebp - 0x24], 0x400
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x24]
push edx
push 0
push 0
push 0
push eax
push esi
mov edx, dword [ebp - 8]
push edx
mov ecx, dword [ebp - 4]
push ecx
call sub.ADVAPI32.DLL_RegEnumKeyExA
cmp eax, 0x103
je 0x4052cd
test eax, eax
jne 0x4052cd
mov eax, dword [ebp - 0x38]
push eax
mov edx, dword [ebp + 0xc]
push edx
mov ecx, dword [ebp + 8]
push ecx
call fcn.00404e80
add esp, 0xc
test eax, eax
jne 0x4051f8
jmp 0x4052d4
xor ebx, ebx
jmp 0x4052b6
push edi
call fcn.004e0ef8
pop ecx
push eax
mov eax, ebx
add eax, esi
push eax
push edi
call fcn.004e0fd0
add esp, 0xc
test eax, eax
jne 0x4052b5
mov edx, dword [ebp - 0x38]
push edx
push 0x50fe6c
mov ecx, dword [ebp - 0x3c]
push ecx
call sub.USER32.DLL_wsprintfA
mov ecx, dword [ebp - 0x3c]
add esp, 0xc
add ecx, esi
sub ecx, dword [ebp - 0x38]
add ecx, ebx
mov dword [ebp - 0xc], ecx
mov eax, dword [ebp - 0x40]
mov dword [ebp - 0x50], eax
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x54], edx
mov ecx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
push esi
push edi
mov edi, eax
xor eax, eax
mov esi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
push edi
call fcn.004e0ef8
pop ecx
add ebx, esi
add eax, ebx
push eax
mov eax, dword [ebp - 0xc]
push eax
call fcn.004e0e48
add esp, 8
mov edx, dword [ebp + 8]
mov ecx, dword [edx + 0xb4]
push ecx
mov eax, dword [ebp - 0x3c]
push eax
mov edx, dword [ebp - 0x38]
push edx
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.00404ddc
mov dword [ebp - 8], 0xffffffff
add esp, 0x10
jmp 0x4052c5
inc ebx
push esi
call fcn.004e0ef8
pop ecx
cmp ebx, eax
jb 0x4051ff
inc dword [ebp - 8]
jmp 0x4051a5
mov dword [ebp - 0x30], 1
lea esi, [ebp - 4]
push esi
mov eax, dword [ebp - 0x2c]
push eax
push 0
push 0
call fcn.004049b4
add esp, 0x10
mov edx, dword [ebp - 0x2c]
push edx
call fcn.004e0060
pop ecx
mov ecx, dword [ebp - 0x34]
push ecx
call fcn.004e0060
pop ecx
mov eax, dword [ebp - 0x38]
push eax
call fcn.004e0060
pop ecx
mov edx, dword [ebp - 0x3c]
push edx
call fcn.004e0060
pop ecx
mov ecx, dword [ebp - 0x40]
push ecx
call fcn.004e0060
pop ecx
push edi
call fcn.004e0060
pop ecx
mov eax, dword [ebp - 0x44]
push eax
call fcn.004e0060
pop ecx
mov edx, dword [ebp - 0x48]
push edx
call fcn.004e0060
pop ecx
mov ecx, dword [ebp - 4]
push ecx
call sub.ADVAPI32.DLL_RegCloseKey
mov eax, dword [ebp - 0x30]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret