Function at 0x4561e4
Capabilities:
Query or enumerate registry value

Disassembly:
mov eax, 0x47c0ad
call fcn.004680bc
sub esp, 0x8ec
push ebx
push esi
mov esi, ecx
push edi
xor ebx, ebx
mov ecx, 0x1ff
xor eax, eax
lea edi, [ebp - 0x8f7]
mov byte [ebp - 0x8f8], bl
cmp word [ebp + 8], bx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [ebp - 0x1c], esi
stosb byte es:[edi], al
jne 0x456321
lea eax, [ebp + 0xb]
push ebx
push eax
push 0x49b294
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x74], 0x47e4b8
mov dword [ebp - 0x54], 0x47e4b0
call fcn.00405a89
lea eax, [ebp - 0xf8]
lea ecx, [esi + 0xbc]
push eax
mov dword [ebp - 4], ebx
call fcn.00406d24
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 1
push ecx
push eax
lea eax, [ebp - 0x9c]
push eax
call fcn.0041c3ce
add esp, 0xc
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 4
call fcn.00407421
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 3
call fcn.00407421
lea ecx, [ebp - 0x9c]
call fcn.00406608
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
mov esi, 0x800
lea eax, [ebp - 0x8f8]
push esi
push eax
push 0x49f938
mov ebx, str.Startup
push str.DoMaintenance
push ebx
call edi
mov ecx, dword [ebp - 0x1c]
xor eax, eax
cmp byte [ebp - 0x8f8], 0x4e
setne al
dec eax
mov word [ecx + 0x3fa], ax
lea ecx, [ebp - 0x9c]
call fcn.00406608
push eax
lea eax, [ebp - 0x8f8]
push esi
push eax
push 0x49f938
push str.NoAddRemove
push ebx
call edi
cmp byte [ebp - 0x8f8], 0x79
je 0x456303
cmp byte [ebp - 0x8f8], 0x59
jne 0x45630d
mov eax, dword [ebp - 0x1c]
mov byte [eax + 0x3f5], 1
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x9c]
call fcn.00407421
jmp 0x4564c3
lea eax, [ebp + 0xb]
push 1
push eax
lea ecx, [ebp - 0x4c]
call fcn.0040561b
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall_
lea ecx, [ebp - 0x4c]
mov dword [ebp - 4], 5
call fcn.004057de
push dword [0x47e4c4]
lea edi, [esi + 0x2f8]
mov eax, edi
neg eax
lea ecx, [edi + 4]
push ebx
sbb eax, eax
and eax, ecx
lea ecx, [ebp - 0x48]
push eax
call fcn.00408b32
mov dword [ebp - 0x14], ebx
mov esi, 0x800
push edi
mov byte [ebp - 4], 6
mov dword [ebp - 0x24], esi
call fcn.0044a3ef
neg al
sbb eax, eax
pop ecx
add eax, reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x4c]
mov dword [ebp + 8], eax
lea eax, [ebp - 0x14]
push eax
push 1
push ebx
call fcn.0040653c
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4563be
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x8f8]
push eax
push ebx
push ebx
push str.DoMaintenance
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp byte [ebp - 0x8f8], bl
jne 0x456483
lea eax, [ebp - 0x15]
push 1
push eax
push str.SoftwareMicrosoftWindowsCurrentVersionUninstallInstallShield_Uninstall_Information_
lea ecx, [ebp - 0xc4]
call fcn.0040572c
push dword [0x47e4c4]
lea eax, [ebp - 0xc4]
neg eax
sbb eax, eax
lea ecx, [ebp - 0xc0]
and eax, ecx
push ebx
push eax
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 7
call fcn.00407aa4
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 6
call fcn.00407421
push dword [0x47e4c4]
mov eax, edi
add edi, 4
lea ecx, [ebp - 0x48]
neg eax
sbb eax, eax
push ebx
and eax, edi
push eax
call fcn.00408b32
mov dword [ebp - 0x10], ebx
lea eax, [ebp - 0x10]
lea ecx, [ebp - 0x4c]
push eax
push 1
push ebx
mov byte [ebp - 4], 8
mov dword [ebp - 0x20], esi
call fcn.0040653c
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x456472
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x8f8]
push eax
push ebx
push ebx
push str.DoMaintenance
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
cmp dword [ebp - 0x10], ebx
je 0x456483
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x10], ebx
cmp byte [ebp - 0x8f8], 0x4e
je 0x456499
cmp byte [ebp - 0x8f8], 0x6e
je 0x456499
xor eax, eax
jmp 0x45649c
or eax, 0xffffffff
mov ecx, dword [ebp - 0x1c]
cmp dword [ebp - 0x14], ebx
mov word [ecx + 0x3fa], ax
je 0x4564b7
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x14], ebx
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x4c]
call fcn.00407421
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 4