Function at 0x451c08
Capabilities:
Delete registry key
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x238
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
push 0xcd
call fcn.00424eff
mov esi, eax
push esi
call fcn.00423a59
pop ecx
mov edi, esi
pop ecx
xor eax, eax
or ecx, 0xffffffff
mov ebx, dword [ebp + 8]
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x451c6d
mov eax, ebx
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x451c60
test cl, cl
je 0x451c5c
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x451c60
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x451c3e
xor eax, eax
jmp 0x451c65
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x451e24
push 0xce
call fcn.00424eff
mov esi, eax
push esi
call fcn.00423a59
pop ecx
mov edi, esi
pop ecx
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x451cc0
mov eax, ebx
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x451cb3
test cl, cl
je 0x451caf
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x451cb3
inc eax
inc eax
inc esi
inc esi
test cl, cl
jne 0x451c91
xor eax, eax
jmp 0x451cb8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x451e24
mov eax, dword [0x40afdc]
push 0x40
mov dword [ebp - 0x134], eax
pop ecx
xor eax, eax
lea edi, [ebp - 0x130]
rep stosd dword es:[edi], eax
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x451e24
mov esi, dword [ebp - 4]
push ebx
mov ecx, esi
push dword [esi + 0xb20]
call fcn.00451b6d
test eax, eax
jne 0x451e24
and dword [ebp - 0x2c], eax
push ebx
mov ecx, esi
mov dword [ebp - 0x30], 7
mov dword [ebp - 0x28], ebx
call fcn.00451b16
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x30]
push eax
push 0
push 0x401
push dword [esi + 0xb20]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
call esi
mov ebx, 0x410db4
mov edi, SysReAllocStringLen
push ebx
push edi
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
lea eax, [ebp - 8]
push eax
push ebx
push edi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x451e24
mov ebx, dword [ebp - 4]
xor edi, edi
push edi
push edi
push 0x146
push dword [ebx + 0xb20]
call esi
push 0x18
mov dword [ebp + 8], eax
pop eax
cmp dword [ebp + 8], eax
jle 0x451d7d
mov dword [ebp + 8], eax
xor eax, eax
cmp dword [ebp + 8], edi
mov dword [ebp - 0xc], eax
jle 0x451e1b
mov dword [ebp - 4], 1
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x238]
mov dword [ebp - 0x28], eax
and byte [ebp - 0x238], 0
lea eax, [ebp - 0x30]
mov dword [ebp - 0x24], 0x104
push eax
push 0
push 0x404
push dword [ebx + 0xb20]
call esi
lea eax, [ebp - 0x131]
push 0xa
push eax
push dword [ebp - 4]
call dword [sym.imp.MSVCRT.dll__itoa]
mov edx, dword [ebp - 0x28]
add esp, 0xc
test edx, edx
je 0x451e0b
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x451e0b
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
push 1
push eax
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
inc dword [ebp - 4]
mov eax, dword [ebp - 0xc]
inc eax
cmp eax, dword [ebp + 8]
mov dword [ebp - 0xc], eax
jl 0x451d92
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop edi
pop esi
pop ebx
leave
ret 4