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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1924
call fcn.004f18a0
mov eax, dword [0x5322a8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov ebx, ecx
xor ecx, ecx
mov esi, edx
push 0x7fe
push ecx
lea edx, [ebp - 0x902]
push edx
mov dword [ebp - 0x1910], ebx
mov dword [ebp - 0x1924], eax
mov dword [ebp - 0x1918], esi
mov dword [ebp - 0x190c], 0
mov word [ebp - 0x904], cx
call fcn.004e7d90
add esp, 0xc
xor eax, eax
lea ecx, [ecx]
movzx ecx, word [eax + str.SoftwareMicrosoftWindowsCurrentVersionUninstall_]
mov word [ebp + eax - 0x904], cx
add eax, 2
test cx, cx
jne 0x4d2b80
mov eax, esi
mov edx, esi
jmp 0x4d2ba0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4d2ba0
lea edi, [ebp - 0x904]
sub eax, edx
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x4d2bb6
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x190c]
push eax
and ecx, 3
push 0x201
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
push 0
lea ecx, [ebp - 0x904]
push ecx
push reloc.WS2_32.dll_bind
call esi
test eax, eax
jne 0x4d2c2e
lea edx, [ebp - 0x1910]
push edx
push ebx
push eax
push eax
mov eax, dword [ebp - 0x190c]
push str.DisplayName
push eax
mov dword [ebp - 0x1910], 0x200
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov ecx, dword [ebp - 0x190c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4d2f3b
push 0x800
lea edx, [ebp - 0x904]
push 0
push edx
call fcn.004e7d90
add esp, 0xc
lea eax, [ebp - 0x190c]
push eax
push 8
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall
push reloc.WS2_32.dll_bind
call esi
test eax, eax
je 0x4d2c72
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004e3946
mov esp, ebp
pop ebp
ret
xor ecx, ecx
push 0xfe
push ecx
lea edx, [ebp - 0x102]
push edx
mov word [ebp - 0x104], cx
call fcn.004e7d90
push 0x80
lea eax, [ebp - 0x104]
push 0
push eax
mov dword [ebp - 0x1914], 0
call fcn.004e7d90
mov edx, dword [ebp - 0x190c]
add esp, 0x18
push 0x80
lea ecx, [ebp - 0x104]
push ecx
push 0
push edx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x4d2f28
mov ebx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
jmp 0x4d2ce0
push 9
lea eax, [ebp - 0x104]
push str.Office11.
push eax
call fcn.004e5e02
add esp, 0xc
test eax, eax
jne 0x4d2e78
mov edi, edi
movzx ecx, word [eax + str.SoftwareMicrosoftWindowsCurrentVersionUninstall_]
mov word [ebp + eax - 0x904], cx
add eax, 2
test cx, cx
jne 0x4d2d00
lea eax, [ebp - 0x104]
mov esi, eax
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4d2d20
lea edi, [ebp - 0x904]
sub eax, esi
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x4d2d36
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x1908]
push ecx
push 0x201
push 0
lea edx, [ebp - 0x904]
push edx
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4d2e78
push 0xffe
push eax
lea ecx, [ebp - 0x1902]
push ecx
mov dword [ebp - 0x1920], 1
mov word [ebp - 0x1904], ax
call fcn.004e7d90
add esp, 0xc
lea edx, [ebp - 0x191c]
push edx
mov edx, dword [ebp - 0x1908]
lea eax, [ebp - 0x1904]
push eax
lea ecx, [ebp - 0x1920]
push ecx
push 0
push str.ProductID
mov esi, 0x1000
push edx
mov dword [ebp - 0x191c], esi
call ebx
mov ecx, dword [ebp - 0x1924]
lea eax, [ebp - 0x1904]
push eax
push ecx
call fcn.004f20d4
add esp, 8
test eax, eax
je 0x4d2ebe
lea edx, [ebp - 0x191c]
push edx
mov edx, dword [ebp - 0x1908]
lea eax, [ebp - 0x1904]
push eax
lea ecx, [ebp - 0x1920]
push ecx
push 0
push str.ProductCodes
push edx
mov dword [ebp - 0x1920], 7
mov dword [ebp - 0x191c], esi
call ebx
mov eax, dword [ebp - 0x191c]
shr eax, 1
xor ecx, ecx
dec eax
je 0x4d2e4d
mov edi, edi
cmp word [ebp + ecx*2 - 0x1904], 0
jne 0x4d2e48
mov edx, 1
mov word [ebp + ecx*2 - 0x1904], dx
inc ecx
cmp ecx, eax
jb 0x4d2e30
mov eax, dword [ebp - 0x1918]
push eax
lea ecx, [ebp - 0x1904]
push ecx
call fcn.004e49bf
add esp, 8
test eax, eax
jne 0x4d2ef1
mov edx, dword [ebp - 0x1908]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
inc dword [ebp - 0x1914]
push 0x80
lea eax, [ebp - 0x104]
push 0
push eax
call fcn.004e7d90
mov edx, dword [ebp - 0x1914]
mov eax, dword [ebp - 0x190c]
add esp, 0xc
push 0x80
lea ecx, [ebp - 0x104]
push ecx
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
je 0x4d2ce0
jmp 0x4d2f28
mov edx, dword [ebp - 0x1910]
mov eax, dword [ebp - 0x1908]
lea ecx, [ebp - 0x1918]
push ecx
push edx
push 0
push 0
push str.DisplayName
push eax
mov dword [ebp - 0x1918], 0x200
call ebx
mov ecx, dword [ebp - 0x1908]
push ecx
jmp 0x4d2f22
mov eax, dword [ebp - 0x1910]
mov ecx, dword [ebp - 0x1908]
lea edx, [ebp - 0x1918]
push edx
push eax
push 0
push 0
push str.DisplayName
push ecx
mov dword [ebp - 0x1918], 0x200
call ebx
mov edx, dword [ebp - 0x1908]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x190c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ebx, dword [ebp - 0x1910]
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4d2f40
mov ecx, dword [ebp - 4]
pop edi
sub eax, edx
pop esi
xor ecx, ebp
sar eax, 1
pop ebx
call fcn.004e3946
mov esp, ebp
pop ebp
ret