Function at 0x41560d
Capabilities:
Get installed programs
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
push esi
mov dword [ebp - 0x10], ecx
lea eax, [ebp + 0x18]
push edi
push eax
lea ecx, [ebp - 0x34]
call fcn.0041f009
mov esi, dword [ebp + 0xc]
xor ebx, ebx
cmp dword [esi + 4], ebx
lea eax, [esi + 4]
jbe 0x415645
push eax
lea ecx, [ebp + 0x18]
call fcn.0041f28b
push 0x5c
lea ecx, [ebp + 0x18]
call fcn.0041f1be
cmp dword [esi + 0x1c], ebx
mov dword [ebp - 0xc], ebx
mov edi, 0x482408
jle 0x4158c2
push dword [ebp - 0xc]
lea ecx, [esi + 0x10]
call fcn.00421fff
mov ebx, eax
push dword [ebx + 0x24]
call fcn.00414cd2
test al, al
pop ecx
je 0x4158b1
push ebx
mov ecx, edi
call fcn.00418e4f
lea esi, [ebx + 0xc]
mov ecx, edi
push esi
call fcn.00418e4f
push ebx
mov ecx, edi
call fcn.0041d6f6
push esi
mov ecx, edi
call fcn.0041d6f6
push 0x7fffffff
push ebx
mov ecx, edi
call fcn.0041e39b
push 0x7fffffff
push esi
mov ecx, edi
call fcn.0041e39b
lea ecx, [ebp - 0x28]
call fcn.0041ef35
mov eax, dword [ebx + 0x18]
cmp eax, 1
je 0x4157e8
cmp eax, 2
je 0x4157e8
cmp eax, 4
jne 0x4156ef
mov ecx, esi
call fcn.0041ff07
push eax
call fcn.00428dc3
pop ecx
mov dword [ebp - 0x18], eax
push 4
lea eax, [ebp - 0x18]
pop esi
jmp 0x415852
cmp eax, 3
jne 0x4157a9
and dword [ebp - 8], 0
cmp dword [esi], 0
jbe 0x415799
mov eax, dword [ebp - 8]
push 3
xor edx, edx
pop ecx
div ecx
cmp edx, 2
mov dword [ebp - 0x1c], edx
je 0x41578b
push dword [ebp - 8]
mov ecx, esi
call fcn.0041f1a9
cmp al, 0x30
jl 0x415734
cmp al, 0x39
jg 0x415734
movsx eax, al
sub eax, 0x30
mov dword [ebp - 4], eax
jmp 0x41576f
cmp al, 0x41
jl 0x415744
cmp al, 0x46
jg 0x415744
movsx eax, al
sub eax, 0x37
jmp 0x415752
cmp al, 0x61
jl 0x415757
cmp al, 0x66
jg 0x415757
movsx eax, al
sub eax, 0x57
mov dword [ebp - 4], eax
jmp 0x41576c
push 0x432518
lea ecx, [ebp - 0x28]
call fcn.0041f0d8
lea ecx, [ebp - 0x28]
call fcn.0041ff07
mov eax, dword [ebp - 4]
cmp dword [ebp - 0x1c], 0
jne 0x41577d
shl al, 4
mov byte [ebp - 0x14], al
jmp 0x41578b
add byte [ebp - 0x14], al
push dword [ebp - 0x14]
lea ecx, [ebp - 0x28]
call fcn.0041f1be
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [esi]
jb 0x415705
lea ecx, [ebp - 0x28]
call fcn.0041ff07
mov esi, dword [ebp - 0x28]
jmp 0x415852
push 1
push 0
push 0
push 0x43014c
push str._0_
mov ecx, esi
call fcn.0041fdd7
xor eax, eax
mov ecx, esi
push eax
push eax
push eax
push 1
call fcn.0041fda7
mov eax, dword [esi]
mov ecx, esi
dec eax
push eax
call fcn.0041f1a9
test al, al
je 0x415848
push 0
mov ecx, esi
call fcn.0041f1be
jmp 0x415848
push 1
push str.UninstallString
mov ecx, ebx
call fcn.0041f3c0
test al, al
je 0x415848
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
lea ecx, [ebp - 0x34]
call fcn.0041f3c0
test al, al
je 0x415848
push 0
mov ecx, esi
call fcn.0041f1a9
cmp al, 0x22
je 0x415848
push 0
push 0x20
mov ecx, esi
call fcn.0041f873
cmp eax, 0xffffffff
je 0x415848
push 0
push 0
push 0x4300f4
mov ecx, esi
call fcn.0041fbe6
push 0
push 0x4300f4
mov ecx, esi
call fcn.0041f20d
mov ecx, esi
call fcn.0041ff07
mov esi, dword [esi]
inc esi
push esi
push eax
push dword [ebx + 0x18]
xor esi, esi
mov ecx, ebx
push esi
call fcn.0041ff07
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x415879
mov eax, dword [ebp + 0x10]
inc dword [eax]
mov dword [ebx + 0x1c], esi
jmp 0x415880
mov dword [ebx + 0x1c], 1
mov eax, dword [ebp + 0x14]
or dword [ebx + 0x1c], 2
inc dword [eax]
mov ecx, dword [0x482940]
mov eax, dword [eax]
cmp ecx, esi
jbe 0x4158a6
imul eax, eax, 0x64
xor edx, edx
push esi
div ecx
mov ecx, dword [ebp - 0x10]
push eax
call fcn.00417086
lea ecx, [ebp - 0x28]
call fcn.0041f06b
mov esi, dword [ebp + 0xc]
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [esi + 0x1c]
jl 0x415656
xor ebx, ebx
cmp dword [esi + 0x30], ebx
mov dword [ebp - 8], ebx
jle 0x415a3b
push dword [ebp - 8]
lea ecx, [esi + 0x24]
call fcn.00421fff
mov ebx, eax
push dword [ebx + 0x40]
call fcn.00414cd2
test al, al
pop ecx
je 0x415a2c
lea esi, [ebx + 4]
mov ecx, edi
push esi
call fcn.00418e4f
push esi
mov ecx, edi
call fcn.0041d6f6
push 0x7fffffff
push esi
mov ecx, edi
call fcn.0041e39b
mov ecx, dword [0x483760]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
push eax
xor eax, eax
or ecx, 0x2001f
push eax
push ecx
push eax
push eax
push eax
mov ecx, esi
call fcn.0041ff07
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x4159ca
mov ecx, dword [0x483760]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
push eax
xor eax, eax
or ecx, 0x20006
push eax
push ecx
push eax
push eax
push eax
mov ecx, esi
call fcn.0041ff07
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x4159ca
mov ecx, dword [0x483760]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
push eax
xor eax, eax
or ecx, 0x20019
push eax
push ecx
push eax
push eax
push eax
mov ecx, esi
call fcn.0041ff07
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x4159ca
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
inc dword [eax]
inc dword [ecx]
mov ecx, dword [0x482940]
test ecx, ecx
jbe 0x415a29
mov eax, dword [eax]
xor edx, edx
imul eax, eax, 0x64
div ecx
mov ecx, dword [ebp - 0x10]
push 0
push eax
call fcn.00417086
jmp 0x415a29
mov esi, dword [ebp + 0x14]
inc dword [esi]
mov ecx, dword [0x482940]
mov eax, dword [esi]
test ecx, ecx
jbe 0x4159ed
imul eax, eax, 0x64
xor edx, edx
push 0
div ecx
mov ecx, dword [ebp - 0x10]
push eax
call fcn.00417086
push 1
pop eax
cmp dword [ebp - 0x14], eax
jne 0x4159fa
mov dword [ebx + 0x38], eax
jmp 0x4159fe
and dword [ebx + 0x38], 0
or dword [ebx + 0x38], 2
sub esp, 0xc
lea eax, [ebp + 0x18]
mov ecx, esp
push eax
call fcn.0041f009
push esi
mov ecx, dword [ebp - 0x10]
push dword [ebp + 0x10]
push ebx
push dword [ebp - 0xc]
call fcn.0041560d
push dword [ebp - 0xc]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp + 0xc]
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x30]
jl 0x4158ce
lea ecx, [ebp - 0x34]
call fcn.0041f06b
lea ecx, [ebp + 0x18]
call fcn.0041f06b
pop edi
pop esi
pop ebx
leave
ret 0x1c