Function at 0x41558f
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.0041eb84
mov esi, dword [ebp + 0xc]
xor ebx, ebx
cmp dword [esi + 4], ebx
lea eax, [esi + 4]
jbe 0x4155c7
push eax
lea ecx, [ebp + 0x18]
call fcn.0041edf1
push 0x5c
lea ecx, [ebp + 0x18]
call fcn.0041ed24
cmp dword [esi + 0x1c], ebx
mov dword [ebp - 0xc], ebx
mov edi, 0x482320
jle 0x415844
push dword [ebp - 0xc]
lea ecx, [esi + 0x10]
call fcn.00421b62
mov ebx, eax
push dword [ebx + 0x24]
call fcn.00414c54
test al, al
pop ecx
je 0x415833
push ebx
mov ecx, edi
call fcn.00418d60
lea esi, [ebx + 0xc]
mov ecx, edi
push esi
call fcn.00418d60
push ebx
mov ecx, edi
call fcn.0041d46a
push esi
mov ecx, edi
call fcn.0041d46a
push 0x7fffffff
push ebx
mov ecx, edi
call fcn.0041e10f
push 0x7fffffff
push esi
mov ecx, edi
call fcn.0041e10f
lea ecx, [ebp - 0x28]
call fcn.0041eab0
mov eax, dword [ebx + 0x18]
cmp eax, 1
je 0x41576a
cmp eax, 2
je 0x41576a
cmp eax, 4
jne 0x415671
mov ecx, esi
call fcn.0041fa6a
push eax
call fcn.00428713
pop ecx
mov dword [ebp - 0x18], eax
push 4
lea eax, [ebp - 0x18]
pop esi
jmp 0x4157d4
cmp eax, 3
jne 0x41572b
and dword [ebp - 8], 0
cmp dword [esi], 0
jbe 0x41571b
mov eax, dword [ebp - 8]
push 3
xor edx, edx
pop ecx
div ecx
cmp edx, 2
mov dword [ebp - 0x1c], edx
je 0x41570d
push dword [ebp - 8]
mov ecx, esi
call fcn.0041f608
cmp al, 0x30
jl 0x4156b6
cmp al, 0x39
jg 0x4156b6
movsx eax, al
sub eax, 0x30
mov dword [ebp - 4], eax
jmp 0x4156f1
cmp al, 0x41
jl 0x4156c6
cmp al, 0x46
jg 0x4156c6
movsx eax, al
sub eax, 0x37
jmp 0x4156d4
cmp al, 0x61
jl 0x4156d9
cmp al, 0x66
jg 0x4156d9
movsx eax, al
sub eax, 0x57
mov dword [ebp - 4], eax
jmp 0x4156ee
push 0x432428
lea ecx, [ebp - 0x28]
call fcn.0041ec53
lea ecx, [ebp - 0x28]
call fcn.0041fa6a
mov eax, dword [ebp - 4]
cmp dword [ebp - 0x1c], 0
jne 0x4156ff
shl al, 4
mov byte [ebp - 0x14], al
jmp 0x41570d
add byte [ebp - 0x14], al
push dword [ebp - 0x14]
lea ecx, [ebp - 0x28]
call fcn.0041ed24
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [esi]
jb 0x415687
lea ecx, [ebp - 0x28]
call fcn.0041fa6a
mov esi, dword [ebp - 0x28]
jmp 0x4157d4
push 1
push 0
push 0
push 0x430134
push str._0_
mov ecx, esi
call fcn.0041f93a
xor eax, eax
mov ecx, esi
push eax
push eax
push eax
push 1
call fcn.0041f90a
mov eax, dword [esi]
mov ecx, esi
dec eax
push eax
call fcn.0041f608
test al, al
je 0x4157ca
push 0
mov ecx, esi
call fcn.0041ed24
jmp 0x4157ca
push 1
push str.UninstallString
mov ecx, ebx
call fcn.0041ef26
test al, al
je 0x4157ca
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
lea ecx, [ebp - 0x34]
call fcn.0041ef26
test al, al
je 0x4157ca
push 0
mov ecx, esi
call fcn.0041f608
cmp al, 0x22
je 0x4157ca
push 0
push 0x20
mov ecx, esi
call fcn.0041f3d9
cmp eax, 0xffffffff
je 0x4157ca
push 0
push 0
push 0x4300dc
mov ecx, esi
call fcn.0041f761
push 0
push 0x4300dc
mov ecx, esi
call fcn.0041ed73
mov ecx, esi
call fcn.0041fa6a
mov esi, dword [esi]
inc esi
push esi
push eax
push dword [ebx + 0x18]
xor esi, esi
mov ecx, ebx
push esi
call fcn.0041fa6a
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x4157fb
mov eax, dword [ebp + 0x10]
inc dword [eax]
mov dword [ebx + 0x1c], esi
jmp 0x415802
mov dword [ebx + 0x1c], 1
mov eax, dword [ebp + 0x14]
or dword [ebx + 0x1c], 2
inc dword [eax]
mov ecx, dword [0x482838]
mov eax, dword [eax]
cmp ecx, esi
jbe 0x415828
imul eax, eax, 0x64
xor edx, edx
push esi
div ecx
mov ecx, dword [ebp - 0x10]
push eax
call fcn.00416feb
lea ecx, [ebp - 0x28]
call fcn.0041ebe6
mov esi, dword [ebp + 0xc]
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [esi + 0x1c]
jl 0x4155d8
xor ebx, ebx
cmp dword [esi + 0x30], ebx
mov dword [ebp - 8], ebx
jle 0x4159bd
push dword [ebp - 8]
lea ecx, [esi + 0x24]
call fcn.00421b62
mov ebx, eax
push dword [ebx + 0x40]
call fcn.00414c54
test al, al
pop ecx
je 0x4159ae
lea esi, [ebx + 4]
mov ecx, edi
push esi
call fcn.00418d60
push esi
mov ecx, edi
call fcn.0041d46a
push 0x7fffffff
push esi
mov ecx, edi
call fcn.0041e10f
mov ecx, dword [0x483658]
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.0041fa6a
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x41594c
mov ecx, dword [0x483658]
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.0041fa6a
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x41594c
mov ecx, dword [0x483658]
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.0041fa6a
push eax
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x41594c
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
inc dword [eax]
inc dword [ecx]
mov ecx, dword [0x482838]
test ecx, ecx
jbe 0x4159ab
mov eax, dword [eax]
xor edx, edx
imul eax, eax, 0x64
div ecx
mov ecx, dword [ebp - 0x10]
push 0
push eax
call fcn.00416feb
jmp 0x4159ab
mov esi, dword [ebp + 0x14]
inc dword [esi]
mov ecx, dword [0x482838]
mov eax, dword [esi]
test ecx, ecx
jbe 0x41596f
imul eax, eax, 0x64
xor edx, edx
push 0
div ecx
mov ecx, dword [ebp - 0x10]
push eax
call fcn.00416feb
push 1
pop eax
cmp dword [ebp - 0x14], eax
jne 0x41597c
mov dword [ebx + 0x38], eax
jmp 0x415980
and dword [ebx + 0x38], 0
or dword [ebx + 0x38], 2
sub esp, 0xc
lea eax, [ebp + 0x18]
mov ecx, esp
push eax
call fcn.0041eb84
push esi
mov ecx, dword [ebp - 0x10]
push dword [ebp + 0x10]
push ebx
push dword [ebp - 0xc]
call fcn.0041558f
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 0x415850
lea ecx, [ebp - 0x34]
call fcn.0041ebe6
lea ecx, [ebp + 0x18]
call fcn.0041ebe6
pop edi
pop esi
pop ebx
leave
ret 0x1c