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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x26cc
call fcn.004f18a0
mov eax, dword [0x5322a8]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [ebp - 0x26a4]
push eax
push 0x208
xor esi, esi
push esi
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
mov ebx, ecx
push reloc.WS2_32.dll_bind
mov dword [ebp - 0x26c8], ebx
mov dword [ebp - 0x26a4], esi
call edi
test eax, eax
jne 0x4ad6be
mov ecx, dword [ebp - 0x26a4]
push ebx
push 0x209
call fcn.004ad090
mov ecx, dword [ebp - 0x26a4]
add esp, 8
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.004bc7d0
test eax, eax
je 0x4ad705
lea edx, [ebp - 0x26a4]
push edx
push 0x108
push esi
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
push reloc.WS2_32.dll_bind
call edi
test eax, eax
jne 0x4ad705
mov ecx, dword [ebp - 0x26a4]
push ebx
push 0x109
call fcn.004ad090
mov eax, dword [ebp - 0x26a4]
add esp, 8
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x26a4]
push ecx
push 0x108
push esi
push str.SoftwareMicrosoftWindowsCurrentVersionInstallerUserDataS_1_5_18Products
push reloc.WS2_32.dll_bind
mov dword [ebp - 0x26a4], esi
call edi
test eax, eax
jne 0x4add6b
push 0x3fe
lea eax, [ebp - 0xa9a]
xor edx, edx
push esi
push eax
mov dword [ebp - 0x26b4], esi
mov word [ebp - 0xa9c], dx
call fcn.004e7d90
push 0x7fe
lea edx, [ebp - 0x1e9a]
xor ecx, ecx
push esi
push edx
mov word [ebp - 0x1e9c], cx
call fcn.004e7d90
push 0x206
lea ecx, [ebp - 0x492]
xor eax, eax
push esi
push ecx
mov dword [ebp - 0x26a0], esi
mov word [ebp - 0x494], ax
call fcn.004e7d90
push 0x400
lea edx, [ebp - 0x169c]
push esi
push edx
call fcn.004e7d90
mov ecx, dword [ebp - 0x26a4]
add esp, 0x30
push 0x400
lea eax, [ebp - 0x169c]
push eax
push esi
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x4add5e
mov ebx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
jmp 0x4ad7d2
xor esi, esi
push 0x800
lea edx, [ebp - 0x1e9c]
push esi
push edx
call fcn.004e7d90
mov esi, dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [ebp - 0x169c]
push eax
lea ecx, [ebp - 0x1e9c]
push str.SoftwareMicrosoftWindowsCurrentVersionInstallerUserDataS_1_5_18Products_s
push ecx
call esi
add esp, 0x18
lea edx, [ebp - 0x26bc]
push edx
push 0x101
push 0
lea eax, [ebp - 0x1e9c]
push eax
push reloc.WS2_32.dll_bind
mov dword [ebp - 0x26bc], 0
call edi
test eax, eax
jne 0x4add1a
xor ecx, ecx
push 0x3fe
push ecx
lea edx, [ebp - 0x269a]
push edx
mov word [ebp - 0x269c], cx
call fcn.004e7d90
lea eax, [ebp - 0x1e9c]
push eax
lea ecx, [ebp - 0x269c]
push str._sInstallProperties
push ecx
call esi
add esp, 0x18
lea edx, [ebp - 0x26b0]
push edx
push 0x101
push 0
lea eax, [ebp - 0x269c]
push eax
push reloc.WS2_32.dll_bind
mov dword [ebp - 0x26b0], 0
call edi
test eax, eax
jne 0x4add0d
lea ecx, [ebp - 0x26a0]
push ecx
lea edx, [ebp - 0x26c0]
push edx
push eax
push eax
mov dword [ebp - 0x26c0], eax
mov eax, dword [ebp - 0x26b0]
push str.SystemComponent
push eax
mov dword [ebp - 0x26a0], 4
call ebx
test eax, eax
jne 0x4ad8f3
mov eax, 1
cmp dword [ebp - 0x26c0], eax
jne 0x4ad8f3
mov ecx, dword [ebp - 0x26bc]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add dword [ebp - 0x26b4], eax
push ecx
call esi
mov edx, dword [ebp - 0x26b0]
push edx
call esi
jmp 0x4add20
push 0x208
lea eax, [ebp - 0x494]
push 0
push eax
mov dword [ebp - 0x26a0], 0x208
call fcn.004e7d90
mov eax, dword [ebp - 0x26b0]
add esp, 0xc
lea ecx, [ebp - 0x26a0]
push ecx
lea edx, [ebp - 0x494]
push edx
push 0
push 0
push str.DisplayName
push eax
call ebx
test eax, eax
jne 0x4add00
cmp dword [ebp - 0x26a0], eax
jbe 0x4add00
xor ecx, ecx
push 0x3fe
push ecx
lea edx, [ebp - 0xe9a]
push edx
mov word [ebp - 0xe9c], cx
call fcn.004e7d90
lea eax, [ebp - 0x1e9c]
push eax
lea ecx, [ebp - 0xe9c]
push str._sPatches
push ecx
call esi
add esp, 0x18
lea edx, [ebp - 0x26b8]
push edx
push 0x108
push 0
lea eax, [ebp - 0xe9c]
push eax
push reloc.WS2_32.dll_bind
mov dword [ebp - 0x26b8], 0
call edi
test eax, eax
jne 0x4add00
xor ecx, ecx
push 0x3fe
push ecx
lea edx, [ebp - 0x129a]
push edx
mov dword [ebp - 0x26ac], eax
mov word [ebp - 0x129c], cx
call fcn.004e7d90
mov ecx, dword [ebp - 0x26b8]
add esp, 0xc
push 0x400
lea eax, [ebp - 0x129c]
push eax
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x4adcf3
nop
xor edx, edx
push 0x3fe
push edx
lea eax, [ebp - 0x229a]
push eax
mov dword [ebp - 0x26a8], 0
mov word [ebp - 0x229c], dx
call fcn.004e7d90
lea ecx, [ebp - 0x129c]
push ecx
lea edx, [ebp - 0xe9c]
push edx
lea eax, [ebp - 0x229c]
push str._s_s
push eax
call esi
add esp, 0x1c
lea ecx, [ebp - 0x26a8]
push ecx
push 0x101
push 0
lea edx, [ebp - 0x229c]
push edx
push reloc.WS2_32.dll_bind
call edi
test eax, eax
jne 0x4adcc5
mov edx, dword [ebp - 0x26a8]
mov dword [ebp - 0x26c4], eax
lea eax, [ebp - 0x26a0]
push eax
lea ecx, [ebp - 0x26c4]
push ecx
push 0
push 0
push str.State
push edx
mov dword [ebp - 0x26a0], 4
call ebx
test eax, eax
jne 0x4adaad
cmp dword [ebp - 0x26c4], 2
jne 0x4adaad
mov eax, dword [ebp - 0x26a8]
inc dword [ebp - 0x26ac]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4adccb
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x28a]
push edx
mov word [ebp - 0x28c], cx
call fcn.004e7d90
mov edx, dword [ebp - 0x26a8]
add esp, 0xc
lea eax, [ebp - 0x26a0]
push eax
lea ecx, [ebp - 0x28c]
push ecx
push 0
push 0
push str.DisplayName
push edx
mov dword [ebp - 0x26a0], 0x208
call ebx
lea ecx, [ebp - 0x28c]
lea edi, [ecx + 2]
mov edi, edi
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4adb00
sub ecx, edi
sar ecx, 1
jne 0x4adb2f
mov eax, dword [ebp - 0x26a8]
inc dword [ebp - 0x26ac]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
jmp 0x4adccb
test eax, eax
jne 0x4adcb2
cmp dword [ebp - 0x26a0], eax
jbe 0x4adcb2
xor ecx, ecx
push 0x3e
push ecx
lea edx, [ebp - 0x82]
push edx
mov word [ebp - 0x84], cx
call fcn.004e7d90
mov edx, dword [ebp - 0x26b0]
add esp, 0xc
lea eax, [ebp - 0x26a0]
push eax
lea ecx, [ebp - 0x84]
push ecx
push 0
push 0
push str.Publisher
mov edi, 0x40
push edx
mov dword [ebp - 0x26a0], edi
call ebx
xor eax, eax
push 0x3e
push eax
lea ecx, [ebp - 0x42]
push ecx
mov word [ebp - 0x44], ax
call fcn.004e7d90
mov ecx, dword [ebp - 0x26a8]
add esp, 0xc
lea edx, [ebp - 0x26a0]
push edx
lea eax, [ebp - 0x44]
push eax
push 0
push 0
push str.Installed
push ecx
mov dword [ebp - 0x26a0], edi
call ebx
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x69a]
push eax
mov word [ebp - 0x69c], dx
call fcn.004e7d90
mov eax, dword [ebp - 0x26a8]
add esp, 0xc
lea ecx, [ebp - 0x26a0]
push ecx
lea edx, [ebp - 0x69c]
push edx
push 0
push 0
push str.MoreInfoURL
push eax
mov dword [ebp - 0x26a0], 0x208
call ebx
push 0x400
lea ecx, [ebp - 0xa9c]
push 0
push ecx
call fcn.004e7d90
lea edx, [ebp - 0x69c]
push edx
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x28c]
push ecx
lea edx, [ebp - 0xa9c]
push 0x5262bc
push edx
call esi
lea eax, [ebp - 0xa9c]
add esp, 0x20
lea edx, [eax + 2]
jmp 0x4adc50
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4adc50
sub eax, edx
sar eax, 1
mov ecx, 1
mov word [ebp + eax*2 - 0xa9c], cx
lea eax, [ebp - 0xa9c]
mov edx, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4adc74
mov edi, dword [ebp - 0x26c8]
sub eax, edx
add edi, 0xfffffffe
lea ebx, [ebx]
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x4adc90
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.USER32.dll_wsprintfW]
mov edx, dword [ebp - 0x26a8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
inc dword [ebp - 0x26ac]
mov ecx, dword [ebp - 0x26ac]
mov edx, dword [ebp - 0x26b8]
push 0x400
lea eax, [ebp - 0x129c]
push eax
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
je 0x4ad9f0
mov eax, dword [ebp - 0x26b8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x26b0]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [ebp - 0x26bc]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
inc dword [ebp - 0x26b4]
push 0x400
lea eax, [ebp - 0x169c]
push 0
push eax
call fcn.004e7d90
mov edx, dword [ebp - 0x26b4]
mov eax, dword [ebp - 0x26a4]
add esp, 0xc
push 0x400
lea ecx, [ebp - 0x169c]
push ecx
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
je 0x4ad7d0
mov ecx, dword [ebp - 0x26a4]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.004e3946
mov esp, ebp
pop ebp
ret