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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x421f0b
mov eax, dword fs:[0]
push eax
mov eax, 0x342c
call fcn.004181c0
mov eax, dword [0x42e460]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x3434], 0
mov dword [ebp - 0x341c], 0xf
mov dword [ebp - 0x3420], 0
mov byte [ebp - 0x3430], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x3414], 0x400
call fcn.0040ebb0
lea eax, [ebp - 0x3434]
push eax
push 0x20119
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x40d46a
xor esi, esi
mov dword [ebp - 0x3418], 0x400
push esi
push esi
push esi
push esi
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3414], 0x400
push eax
lea eax, [ebp - 0x410]
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x40d462
jmp 0x40d330
lea eax, [ebp - 0x3438]
mov dword [ebp - 0x3418], 0x400
push eax
push 0x20119
push 0
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push dword [ebp - 0x3434]
inc esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40d423
lea eax, [ebp - 0x3418]
mov dword [ebp - 0x3418], 0x1000
push eax
lea eax, [ebp - 0x3410]
push eax
push 0
push 0
push str.DisplayName
push dword [ebp - 0x3438]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40d423
push eax
push eax
push 0x1000
lea eax, [ebp - 0x1410]
push eax
push 0x1000
lea eax, [ebp - 0x3410]
push eax
push 0x200
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp byte [ebp - 0x1410], 0
jne 0x40d3d7
xor ecx, ecx
jmp 0x40d3e9
lea ecx, [ebp - 0x1410]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40d3e0
sub ecx, edx
push ecx
lea eax, [ebp - 0x1410]
push eax
lea ecx, [ebp - 0x3430]
call fcn.00401b50
lea edx, [ebp - 0x3430]
mov ecx, edi
call fcn.0040cee0
test al, al
jne 0x40d41b
lea eax, [ebp - 0x3430]
mov ecx, edi
push eax
call fcn.00407300
push dword [ebp - 0x3438]
call ebx
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3418], 0x400
push eax
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x40d330
push dword [ebp - 0x3434]
call ebx
lea eax, [ebp - 0x3434]
push eax
push 0x20119
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40d60a
xor esi, esi
mov dword [ebp - 0x3418], 0x400
push esi
push esi
push esi
push esi
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3414], 0x400
push eax
lea eax, [ebp - 0x410]
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x40d602
lea ecx, [ecx]
lea eax, [ebp - 0x3438]
mov dword [ebp - 0x3418], 0x400
push eax
push 0x20119
push 0
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push dword [ebp - 0x3434]
inc esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40d5c3
lea eax, [ebp - 0x3418]
mov dword [ebp - 0x3418], 0x1000
push eax
lea eax, [ebp - 0x3410]
push eax
push 0
push 0
push str.DisplayName
push dword [ebp - 0x3438]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40d5c3
push eax
push eax
push 0x1000
lea eax, [ebp - 0x1410]
push eax
push 0x1000
lea eax, [ebp - 0x3410]
push eax
push 0x200
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp byte [ebp - 0x1410], 0
jne 0x40d577
xor ecx, ecx
jmp 0x40d589
lea ecx, [ebp - 0x1410]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40d580
sub ecx, edx
push ecx
lea eax, [ebp - 0x1410]
push eax
lea ecx, [ebp - 0x3430]
call fcn.00401b50
lea edx, [ebp - 0x3430]
mov ecx, edi
call fcn.0040cee0
test al, al
jne 0x40d5bb
lea eax, [ebp - 0x3430]
mov ecx, edi
push eax
call fcn.00407300
push dword [ebp - 0x3438]
call ebx
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3418], 0x400
push eax
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x40d4d0
push dword [ebp - 0x3434]
call ebx
lea eax, [ebp - 0x3434]
push eax
push 0x20219
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40d7aa
xor esi, esi
mov dword [ebp - 0x3418], 0x400
push esi
push esi
push esi
push esi
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3414], 0x400
push eax
lea eax, [ebp - 0x410]
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x40d7a2
lea ecx, [ecx]
lea eax, [ebp - 0x3438]
mov dword [ebp - 0x3418], 0x400
push eax
push 0x20219
push 0
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push dword [ebp - 0x3434]
inc esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40d763
lea eax, [ebp - 0x3418]
mov dword [ebp - 0x3418], 0x1000
push eax
lea eax, [ebp - 0x3410]
push eax
push 0
push 0
push str.DisplayName
push dword [ebp - 0x3438]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40d763
push eax
push eax
push 0x1000
lea eax, [ebp - 0x1410]
push eax
push 0x1000
lea eax, [ebp - 0x3410]
push eax
push 0x200
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp byte [ebp - 0x1410], 0
jne 0x40d717
xor ecx, ecx
jmp 0x40d729
lea ecx, [ebp - 0x1410]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40d720
sub ecx, edx
push ecx
lea eax, [ebp - 0x1410]
push eax
lea ecx, [ebp - 0x3430]
call fcn.00401b50
lea edx, [ebp - 0x3430]
mov ecx, edi
call fcn.0040cee0
test al, al
jne 0x40d75b
lea eax, [ebp - 0x3430]
mov ecx, edi
push eax
call fcn.00407300
push dword [ebp - 0x3438]
call ebx
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3418], 0x400
push eax
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x40d670
push dword [ebp - 0x3434]
call ebx
lea eax, [ebp - 0x3434]
push eax
push 0x20219
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40d94a
xor esi, esi
mov dword [ebp - 0x3418], 0x400
push esi
push esi
push esi
push esi
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3414], 0x400
push eax
lea eax, [ebp - 0x410]
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x40d942
lea ecx, [ecx]
lea eax, [ebp - 0x3438]
mov dword [ebp - 0x3418], 0x400
push eax
push 0x20219
push 0
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push dword [ebp - 0x3434]
inc esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40d903
lea eax, [ebp - 0x3418]
mov dword [ebp - 0x3418], 0x1000
push eax
lea eax, [ebp - 0x3410]
push eax
push 0
push 0
push str.DisplayName
push dword [ebp - 0x3438]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40d903
push eax
push eax
push 0x1000
lea eax, [ebp - 0x1410]
push eax
push 0x1000
lea eax, [ebp - 0x3410]
push eax
push 0x200
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp byte [ebp - 0x1410], 0
jne 0x40d8b7
xor ecx, ecx
jmp 0x40d8c9
lea ecx, [ebp - 0x1410]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40d8c0
sub ecx, edx
push ecx
lea eax, [ebp - 0x1410]
push eax
lea ecx, [ebp - 0x3430]
call fcn.00401b50
lea edx, [ebp - 0x3430]
mov ecx, edi
call fcn.0040cee0
test al, al
jne 0x40d8fb
lea eax, [ebp - 0x3430]
mov ecx, edi
push eax
call fcn.00407300
push dword [ebp - 0x3438]
call ebx
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x3414]
mov dword [ebp - 0x3418], 0x400
push eax
lea eax, [ebp - 0x410]
mov dword [ebp - 0x3414], 0x400
push eax
push esi
push dword [ebp - 0x3434]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x40d810
push dword [ebp - 0x3434]
call ebx
cmp dword [ebp - 0x341c], 0x10
jb 0x40d961
push dword [ebp - 0x3430]
call fcn.00411307
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004112f8
mov esp, ebp
pop ebp
ret