Function at 0x430c80
Capabilities:
Get installed programs

Disassembly:
push 0xffffffffffffffff
push 0x4d5153
mov eax, dword fs:[0]
push eax
sub esp, 0x22c
mov eax, dword [0x54d158]
xor eax, esp
mov dword [esp + 0x228], eax
push ebx
push ebp
push edi
mov eax, dword [0x54d158]
xor eax, esp
push eax
lea eax, [esp + 0x23c]
mov dword fs:[0], eax
mov eax, dword [esp + 0x24c]
mov ebp, dword [esp + 0x250]
xor ebx, ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], vtable.Cy_Registry.0
mov dword [esp + 0x20], ebx
mov dword [esp + 0x244], 1
call fcn.004a08e6
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x430d03
push 0x80004005
call fcn.004103e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov byte [esp + 0x244], 2
call fcn.004a08e6
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x430d35
push 0x80004005
call fcn.004103e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
push ebp
lea ecx, [esp + 0x28]
mov byte [esp + 0x248], 3
call fcn.0040fdf0
push 0x34
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
lea ecx, [esp + 0x1c]
call fcn.0040fe70
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.0040ee60
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x430da8
push eax
call dword [sym.imp.ADVAPI32.dll_RegFlushKey]
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor edx, edx
cmp eax, ebx
sete dl
mov dword [esp + 0x20], ebx
mov eax, edx
cmp eax, ebx
jne 0x430da8
xor edi, edi
jmp 0x430dcc
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x20]
push eax
push 0x20019
push ebx
push ecx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
xor edx, edx
cmp eax, ebx
sete dl
mov edi, edx
call fcn.004a08e6
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x430de6
push 0x80004005
call fcn.004103e0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
mov ecx, dword [esp + 0x10]
add eax, 0x10
mov dword [ecx], eax
cmp edi, 1
mov dword [esp + 0x2c], 1
jne 0x430fa7
call fcn.00410250
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x34]
push edx
push str.InstallLocation
lea eax, [esp + 0x24]
push eax
mov dword [esp + 0x38], 0x104
call fcn.0042acc0
cmp eax, edi
jne 0x430e47
cmp dword [esp + 0x28], ebx
jbe 0x430e47
lea ecx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x14]
call fcn.00410090
mov ecx, dword [esi]
mov eax, dword [ecx - 0xc]
cmp eax, ebx
jg 0x430ed5
mov eax, dword [ebp]
push str.AA890DB4_7357_4237_82BB_D0B931AAB420
push eax
call fcn.004ad47d
add esp, 8
test eax, eax
jne 0x430e7a
push str.9.2.1
mov ecx, esi
call fcn.00410090
jmp 0x430f89
mov eax, dword [ebp]
push str.E05CD7D8_28AF_4577_89AC_E4F1F8ABF046
push eax
call fcn.004ad47d
add esp, 8
test eax, eax
jne 0x430ea0
push 0x5202ec
mov ecx, esi
call fcn.00410090
jmp 0x430f89
mov ebp, dword [ebp]
push str.0D02E53C_704A_4B5D_88FD_353A5AA4202E
push ebp
call fcn.004ad47d
add esp, 8
test eax, eax
mov ecx, esi
jne 0x430ec6
push 0x5202d4
call fcn.00410090
jmp 0x430f89
push 0x520304
call fcn.00410090
jmp 0x430f89
xor edi, edi
cmp eax, ebx
jle 0x430f89
push 0x2e
push ecx
call fcn.004ae2db
add esp, 8
cmp eax, ebx
je 0x430f89
mov edx, dword [esi]
sub eax, edx
sar eax, 1
mov ecx, eax
cmp ecx, 0xffffffff
jle 0x430f89
cmp edi, 2
jge 0x430f3a
lea eax, [ecx + 1]
mov ecx, dword [edx - 0xc]
add edi, 1
cmp eax, ebx
jl 0x430f89
cmp eax, ecx
jge 0x430f89
lea edx, [edx + eax*2]
push 0x2e
push edx
call fcn.004ae2db
add esp, 8
cmp eax, ebx
je 0x430f89
mov edx, dword [esi]
sub eax, edx
sar eax, 1
mov ecx, eax
cmp ecx, 0xffffffff
jg 0x430f03
jmp 0x430f89
cmp ecx, 0xffffffff
jle 0x430f89
mov eax, dword [esi]
mov eax, dword [eax - 0xc]
sub eax, ecx
push esi
call fcn.0040db40
mov eax, dword [esi]
cmp dword [eax - 0xc], ebx
jge 0x430f58
or ecx, 0xffffffff
jmp 0x430f75
push 0x520680
push eax
call fcn.004ae27d
add esp, 8
cmp eax, ebx
jne 0x430f6f
or ecx, 0xffffffff
jmp 0x430f75
sub eax, dword [esi]
sar eax, 1
mov ecx, eax
mov edx, dword [esi]
mov eax, dword [edx - 0xc]
lea edx, [eax - 2]
cmp ecx, edx
jne 0x430f89
sub eax, ecx
push esi
call fcn.0040db40
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x430fa7
push eax
call dword [sym.imp.ADVAPI32.dll_RegFlushKey]
mov eax, dword [esp + 0x20]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [esp + 0x20], ebx
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
mov eax, dword [edx - 0xc]
cmp eax, ebx
jle 0x430fdc
lea ecx, [eax - 1]
cmp ecx, ebx
jl 0x43107b
cmp ecx, eax
jg 0x43107b
movzx eax, word [edx + ecx*2]
cmp ax, 0x5c
je 0x430fdc
mov ecx, dword [esp + 0x10]
push 0x5c
call fcn.00431d70
mov byte [esp + 0x244], 2
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x431004
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x244], 1
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x43102c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
cmp eax, ebx
mov dword [esp + 0x18], vtable.Cy_Registry.0
je 0x43104e
push eax
call dword [sym.imp.ADVAPI32.dll_RegFlushKey]
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x23c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop ebp
pop ebx
mov ecx, dword [esp + 0x228]
xor ecx, esp
call fcn.004ac89d
add esp, 0x238
ret 8
push 0x80070057
call fcn.004103e0
int3