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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x484540
mov eax, dword fs:[0]
push eax
sub esp, 0x64
mov eax, dword [0x4aa6b4]
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 esi, ecx
mov eax, dword [esi]
xor edi, edi
mov dword [ebp - 0x6c], esi
cmp eax, edi
je 0x401511
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [esi], edi
push esi
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallFC35EB43_F4A0_43B4_BEB1_66A470045416_is1
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
je 0x401537
push esi
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstallFC35EB43_F4A0_43B4_BEB1_66A470045416_is1
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyW]
mov ebx, 0x4b155c
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x64], 6
jmp 0x40154a
xor edi, edi
push 0xffffffffffffffff
push edi
lea ecx, [ebx + 8]
xor eax, eax
push ecx
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x38], 7
mov dword [ebp - 0x3c], edi
mov word [ebp - 0x4c], ax
call fcn.00401980
mov dword [ebp - 4], edi
mov esi, dword [ebp - 0x3c]
mov edx, esi
cmp esi, 0xc
jb 0x40157b
mov edx, 0xc
cmp dword [ebp - 0x38], 8
mov ecx, dword [ebp - 0x4c]
jae 0x401587
lea ecx, [ebp - 0x4c]
mov eax, 0x498078
cmp edx, edi
jbe 0x4015a3
mov di, word [ecx]
cmp di, word [eax]
jne 0x4015ad
add ecx, 2
add eax, 2
dec edx
jne 0x401590
xor edi, edi
cmp esi, 0xc
jae 0x4015b9
or eax, 0xffffffff
jmp 0x4015c1
sbb eax, eax
and eax, 0xfffffffe
inc eax
je 0x4015a1
xor edi, edi
jmp 0x4015c1
xor eax, eax
cmp esi, 0xc
setne al
cmp eax, edi
sete al
test al, al
je 0x401647
push 0x7e
lea esi, [ebp - 0x2c]
call fcn.004110d0
add esp, 4
mov esi, eax
lea eax, [ebp - 0x4c]
cmp eax, esi
je 0x401637
cmp dword [ebp - 0x38], 8
jb 0x4015f2
mov ecx, dword [ebp - 0x4c]
push ecx
call fcn.0041da61
add esp, 4
xor edx, edx
mov dword [ebp - 0x38], 7
mov dword [ebp - 0x3c], edi
mov word [ebp - 0x4c], dx
cmp dword [esi + 0x14], 8
jae 0x40161e
mov eax, dword [esi + 0x10]
inc eax
add eax, eax
push eax
lea ecx, [ebp - 0x4c]
push esi
push ecx
call fcn.0041d4d0
add esp, 0xc
jmp 0x401625
mov edx, dword [esi]
mov dword [ebp - 0x4c], edx
mov dword [esi], edi
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x3c], eax
mov ecx, dword [esi + 0x14]
mov dword [ebp - 0x38], ecx
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
mov byte [ebp - 4], 0
cmp dword [ebp - 0x18], 8
jb 0x40168c
mov edx, dword [ebp - 0x2c]
push edx
jmp 0x401684
push 3
push 0x498094
push esi
push edi
lea ecx, [ebp - 0x4c]
call fcn.00402380
test eax, eax
jne 0x40168c
push 0x7f
lea esi, [ebp - 0x2c]
call fcn.004110d0
add esp, 4
push eax
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 2
call fcn.00401900
mov byte [ebp - 4], 0
cmp dword [ebp - 0x18], 8
jb 0x40168c
mov eax, dword [ebp - 0x2c]
push eax
call fcn.0041da61
add esp, 4
lea ecx, [ebp - 0x68]
call fcn.0041cec0
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 3
call fcn.00412ce0
mov esi, dword [ebx - 4]
mov edx, esi
cmp esi, 0xb
jb 0x4016af
mov edx, 0xb
cmp dword [ebx], 8
lea edi, [ebx - 0x14]
jb 0x4016bb
mov ecx, dword [edi]
jmp 0x4016bd
mov ecx, edi
mov eax, str.InstallDate
test edx, edx
je 0x4016da
mov bx, word [ecx]
cmp bx, word [eax]
jne 0x4016e4
add ecx, 2
add eax, 2
dec edx
jne 0x4016c6
mov ebx, dword [ebp - 0x60]
cmp esi, 0xb
jae 0x4016f1
or eax, 0xffffffff
jmp 0x4016f9
sbb eax, eax
and eax, 0xfffffffe
inc eax
je 0x4016d7
mov ebx, dword [ebp - 0x60]
jmp 0x4016f9
xor eax, eax
cmp esi, 0xb
setne al
test eax, eax
sete al
test al, al
je 0x40177c
xor eax, eax
lea edx, [ebp - 0x5c]
push edx
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x50], eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx ecx, word [ebp - 0x5a]
movzx edx, word [ebp - 0x5c]
xor eax, eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
movzx eax, word [ebp - 0x56]
push eax
push ecx
push edx
lea eax, [ebp - 0x30]
push str._d_.2d_.2d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [ebp - 0x30]
add esp, 0x14
lea edx, [eax + 2]
jmp 0x401760
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x401760
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x30]
push ecx
lea ecx, [ebp - 0x4c]
call fcn.00401ad0
cmp dword [ebp - 0x38], 8
mov ecx, dword [ebp - 0x4c]
jae 0x401788
lea ecx, [ebp - 0x4c]
cmp dword [ebx], 8
jb 0x401791
mov eax, dword [edi]
jmp 0x401793
mov eax, edi
mov edx, dword [ebp - 0x3c]
add edx, edx
push edx
push ecx
push 1
push 0
push eax
mov eax, dword [ebp - 0x6c]
mov ecx, dword [eax]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
je 0x4017c3
cmp dword [ebx], 8
jb 0x4017b6
mov edi, dword [edi]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call fcn.00404bd0
lea ecx, [ebp - 0x68]
mov byte [ebp - 4], 0
call fcn.0041ced0
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x38], 8
jb 0x4017e8
mov edx, dword [ebp - 0x4c]
push edx
call fcn.0041da61
add esp, 4
add ebx, 0x38
dec dword [ebp - 0x64]
mov dword [ebp - 0x60], ebx
jne 0x401548
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.0041d331
mov esp, ebp
pop ebp
ret