Function at 0x460218
Capabilities:
Get common file path
Get installed programs
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x8a
push 0
push 0
dec ecx
jne 0x460220
push ecx
push ebx
push esi
push edi
mov dword [ebp - 0x10], eax
xor eax, eax
push ebp
push 0x460518
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x18]
push eax
push 0x20019
push 0
push 0x460528
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA_1
test eax, eax
jne 0x460294
mov dword [ebp - 0x20], pe_nt_image_headers32
mov eax, dword [ebp - 0x20]
call fcn.00402ef0
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x20]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0
push 0
push 0x460568
mov eax, dword [ebp - 0x18]
push eax
call sub.advapi32.dll_RegQueryValueExA_1
mov eax, dword [ebp - 0x18]
push eax
call sub.advapi32.dll_RegCloseKey_1
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x46029e
cmp byte [eax], 0
je 0x4604dd
push 0
push 5
lea eax, [ebp - 0x125]
push eax
push 0
call sub.shell32.dll_SHGetSpecialFolderPathA_1
lea eax, [ebp - 0x338]
lea edx, [ebp - 0x125]
mov ecx, 0x105
call fcn.00405698
mov eax, dword [ebp - 0x338]
lea edx, [ebp - 0x334]
call fcn.0045ff6c
mov edx, dword [ebp - 0x334]
lea eax, [ebp - 4]
mov ecx, 0x460580
call fcn.00405740
lea eax, [ebp - 0x340]
mov edx, dword [ebp - 0x1c]
call fcn.00405620
mov eax, dword [ebp - 0x340]
lea edx, [ebp - 0x33c]
call fcn.0045ff6c
mov edx, dword [ebp - 0x33c]
lea eax, [ebp - 0xc]
mov ecx, 0x4605a4
call fcn.00405740
mov eax, dword [ebp - 0xc]
call fcn.004058b8
push eax
mov eax, dword [ebp - 0x1c]
movzx eax, byte [eax]
push eax
push 0x4605c0
push 0x4605c4
call sub.kernel32.dll_GetPrivateProfileIntA
mov ebx, eax
dec ebx
test ebx, ebx
jl 0x4604dd
mov eax, 0x4a84ec
call fcn.00405428
lea edx, [ebp - 0x440]
mov eax, ebx
call fcn.00403e64
lea edx, [ebp - 0x440]
lea eax, [ebp - 8]
call fcn.0040568c
cmp ebx, 9
jle 0x460388
lea eax, [ebp - 8]
mov ecx, dword [ebp - 8]
mov edx, 0x4605d8
call fcn.00405740
jmp 0x460398
lea eax, [ebp - 8]
mov ecx, dword [ebp - 8]
mov edx, 0x4605ec
call fcn.00405740
mov eax, dword [ebp - 0xc]
call fcn.004058b8
mov edi, eax
push edi
push 0x400
lea eax, [ebp - 0x125]
push eax
push 0x4605f8
push 0x4605fc
mov eax, dword [ebp - 8]
call fcn.004058b8
mov esi, eax
push esi
call sub.kernel32.dll_GetPrivateProfileStringA
push edi
push 0x400
lea eax, [ebp - 0x22a]
push eax
push 0x4605f8
push 0x460604
push esi
call sub.kernel32.dll_GetPrivateProfileStringA
push edi
push 0x400
lea eax, [ebp - 0x32f]
push eax
push 0x4605f8
push 0x460618
push esi
call sub.kernel32.dll_GetPrivateProfileStringA
lea eax, [ebp - 0x444]
movzx edx, byte [ebp - 0x22a]
call fcn.00405610
mov eax, dword [ebp - 0x444]
lea edx, [ebp - 0x20]
call fcn.00403e70
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
sub eax, 1
jb 0x460475
je 0x46044a
dec eax
jne 0x4604a9
mov eax, 0x4a84ec
lea edx, [ebp - 0x32f]
mov ecx, 0x105
call fcn.00405698
jmp 0x4604a9
lea eax, [ebp - 0x448]
lea edx, [ebp - 0x125]
mov ecx, 0x105
call fcn.00405698
mov ecx, dword [ebp - 0x448]
mov eax, 0x4a84ec
mov edx, dword [ebp - 4]
call fcn.00405740
jmp 0x4604a9
lea eax, [ebp - 0x450]
mov edx, dword [ebp - 0x1c]
call fcn.00405620
mov eax, dword [ebp - 0x450]
lea edx, [ebp - 0x44c]
call fcn.0045ff6c
mov edx, dword [ebp - 0x44c]
mov eax, 0x4a84ec
mov ecx, 0x460638
call fcn.00405740
mov eax, 0x4a84ec
mov edx, 0x460650
call fcn.004056f4
lea eax, [ebp - 0x454]
call fcn.0045ffe4
mov edx, dword [ebp - 0x454]
mov eax, dword [ebp - 0x10]
call fcn.004056f4
mov eax, dword [ebp - 0x10]
dec ebx
test ebx, ebx
jge 0x46034c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46051f
lea eax, [ebp - 0x454]
mov edx, 5
call fcn.0040544c
lea eax, [ebp - 0x340]
mov edx, 4
call fcn.0040544c
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.0040544c
ret