Function at 0x4a04e0
Capabilities:
Get installed programs
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x864
mov eax, dword [0x5159c4]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x864], ecx
mov ecx, dword [ebp - 0x864]
call fcn.004a0d00
mov dword [ebp - 4], 0
lea eax, [ebp - 4]
push eax
push 0x20019
push 0
push 0x502ae8
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4a08f5
push 0x208
push 0
lea ecx, [ebp - 0x218]
push ecx
call fcn.004c62e0
add esp, 0xc
mov dword [ebp - 0xc], 0x104
push 0
push 0
push 0
push 0
push 0
push 0
push 0
lea edx, [ebp - 8]
push edx
push 0
push 0
push 0
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
je 0x4a0578
mov dword [ebp - 8], 0
mov dword [ebp - 0x21c], 0
jmp 0x4a0593
mov ecx, dword [ebp - 0x21c]
add ecx, 1
mov dword [ebp - 0x21c], ecx
mov edx, dword [ebp - 0x21c]
cmp edx, dword [ebp - 8]
jae 0x4a08eb
push 0
push 0
push 0
push 0
lea eax, [ebp - 0xc]
push eax
lea ecx, [ebp - 0x218]
push ecx
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x4a08e6
push 0x502b50
lea ecx, [ebp - 0x220]
call fcn.00413a00
lea ecx, [ebp - 0x218]
push ecx
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push str._s_s
lea edx, [ebp - 0x220]
push edx
call fcn.00415220
add esp, 0x10
mov dword [ebp - 0x224], 0
lea eax, [ebp - 0x224]
push eax
push 0x20019
push 0
lea ecx, [ebp - 0x220]
call fcn.00413b20
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0x228], eax
cmp dword [ebp - 0x228], 0
jne 0x4a08be
push 0x208
push 0
lea ecx, [ebp - 0x640]
push ecx
call fcn.004c62e0
add esp, 0xc
push 0x208
push 0
lea edx, [ebp - 0x850]
push edx
call fcn.004c62e0
add esp, 0xc
push 0x208
push 0
lea eax, [ebp - 0x430]
push eax
call fcn.004c62e0
add esp, 0xc
mov dword [ebp - 0x854], 0x208
mov dword [ebp - 0x644], 1
lea ecx, [ebp - 0x854]
push ecx
lea edx, [ebp - 0x640]
push edx
lea eax, [ebp - 0x644]
push eax
push 0
push str.UninstallString
mov ecx, dword [ebp - 0x224]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea edx, [ebp - 0x854]
push edx
lea eax, [ebp - 0x430]
push eax
lea ecx, [ebp - 0x644]
push ecx
push 0
push str.InstallLocation
mov edx, dword [ebp - 0x224]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [ebp - 0x854]
push eax
lea ecx, [ebp - 0x850]
push ecx
lea edx, [ebp - 0x644]
push edx
push 0
push str.DisplayName
mov eax, dword [ebp - 0x224]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push 0x104
lea ecx, [ebp - 0x640]
push ecx
call fcn.004c6a43
add esp, 8
push 0x104
lea edx, [ebp - 0x850]
push edx
call fcn.004c6a43
add esp, 8
push 0x104
lea eax, [ebp - 0x430]
push eax
call fcn.004c6a43
add esp, 8
push str..exe
lea ecx, [ebp - 0x640]
push ecx
call fcn.004120f0
add esp, 8
mov dword [ebp - 0x434], eax
cmp dword [ebp - 0x434], 0
je 0x4a07a8
xor edx, edx
mov eax, dword [ebp - 0x434]
mov word [eax + 2], dx
push 0x5c
lea ecx, [ebp - 0x640]
push ecx
call fcn.0040d270
add esp, 8
mov dword [ebp - 0x434], eax
cmp dword [ebp - 0x434], 0
je 0x4a07a8
xor edx, edx
mov eax, dword [ebp - 0x434]
mov word [eax + 2], dx
push 0x22
lea ecx, [ebp - 0x640]
push ecx
call fcn.0040d270
add esp, 8
mov dword [ebp - 0x434], eax
cmp dword [ebp - 0x434], 0
je 0x4a07fc
mov edx, dword [ebp - 0x434]
add edx, 2
push edx
push 0x208
lea eax, [ebp - 0x640]
push eax
call fcn.00422b70
mov ecx, dword [ebp - 0x434]
push ecx
call fcn.004c635a
add esp, 4
xor edx, edx
mov word [ebp + eax*2 - 0x640], dx
lea eax, [ebp - 0x640]
push eax
call fcn.004c635a
add esp, 4
test eax, eax
jne 0x4a0826
lea ecx, [ebp - 0x430]
push ecx
call fcn.004c635a
add esp, 4
test eax, eax
je 0x4a08b1
lea edx, [ebp - 0x850]
push edx
call fcn.004c635a
add esp, 4
test eax, eax
je 0x4a08b1
lea eax, [ebp - 0x640]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveBackslashW]
lea ecx, [ebp - 0x430]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathRemoveBackslashW]
lea ecx, [ebp - 0x860]
call fcn.004a0b70
lea edx, [ebp - 0x850]
push edx
lea ecx, [ebp - 0x860]
call fcn.00413a60
lea eax, [ebp - 0x640]
push eax
lea ecx, [ebp - 0x85c]
call fcn.00413a60
lea ecx, [ebp - 0x430]
push ecx
lea ecx, [ebp - 0x858]
call fcn.00413a60
lea edx, [ebp - 0x860]
push edx
mov ecx, dword [ebp - 0x864]
call fcn.004a0c80
lea ecx, [ebp - 0x860]
call fcn.004a0ba0
mov eax, dword [ebp - 0x224]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0xc], 0x104
push 0x208
push 0
lea ecx, [ebp - 0x218]
push ecx
call fcn.004c62e0
add esp, 0xc
lea ecx, [ebp - 0x220]
call fcn.00413a40
jmp 0x4a0584
mov edx, dword [ebp - 4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004c62c9
mov esp, ebp
pop ebp
ret