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

Disassembly:
mov eax, 0x41d4d3
call fcn.00415348
sub esp, 0x1dc
push ebx
push esi
push edi
mov edi, 0x425a2c
push str._t_Registry_
mov ecx, edi
call fcn.0041c151
push eax
call fcn.004039b0
mov eax, dword [0x425adc]
test eax, eax
pop ecx
jne 0x40514a
xor ecx, ecx
jmp 0x40514c
mov ecx, dword [eax]
cmp ecx, eax
mov dword [ebp - 0x18], ecx
je 0x4055a5
mov esi, dword [ebp - 0x18]
add esi, 8
lea eax, [ebp - 0xac]
push esi
push eax
call fcn.004039c9
lea eax, [esi + 0x20]
push eax
lea eax, [ebp - 0x74]
xor ebx, ebx
push eax
mov dword [ebp - 4], ebx
call fcn.004039c9
lea eax, [esi + 0x3c]
push eax
lea eax, [ebp - 0x58]
push eax
mov byte [ebp - 4], 1
call fcn.004039c9
add esp, 0x18
mov eax, dword [esi + 0x1c]
push str._t_t_RegValue_
mov ecx, edi
mov byte [ebp - 4], 2
mov dword [ebp - 0x10], eax
call fcn.0041c151
push eax
call fcn.004039b0
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0x1b0]
push eax
call fcn.0040f1d0
add esp, 0xc
cmp dword [eax + 0x18], 0x10
mov byte [ebp - 4], 3
jb 0x4051d1
mov eax, dword [eax + 4]
jmp 0x4051d4
add eax, 4
push str.__Key_
push eax
push str._t_t_t_Key_
mov ecx, edi
call fcn.0041c151
mov ecx, eax
call fcn.0041c151
mov ecx, eax
call fcn.0041c151
push eax
call fcn.004039b0
pop ecx
xor esi, esi
inc esi
push esi
lea ecx, [ebp - 0x1b0]
mov byte [ebp - 4], 2
call fcn.004017dc
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x178]
push eax
call fcn.0040f1d0
pop ecx
pop ecx
cmp dword [eax + 0x18], 0x10
mov byte [ebp - 4], 4
jb 0x40522f
mov eax, dword [eax + 4]
jmp 0x405232
add eax, 4
push str.__Name_
push eax
push str._t_t_t_Name_
mov ecx, edi
call fcn.0041c151
mov ecx, eax
call fcn.0041c151
mov ecx, eax
call fcn.0041c151
push eax
call fcn.004039b0
pop ecx
push esi
lea ecx, [ebp - 0x178]
mov byte [ebp - 4], 2
call fcn.004017dc
push str._t_t__RegValue_
mov ecx, edi
call fcn.0041c151
push eax
call fcn.004039b0
pop ecx
push ebx
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x20], 0xf
call fcn.0040196d
push 5
push ebx
lea eax, [ebp - 0x1e8]
push eax
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 5
call fcn.0040164f
push str.HKLM_
mov ecx, eax
mov byte [ebp - 4], 6
call fcn.00403860
mov ebx, eax
neg ebx
sbb bl, bl
push esi
lea ecx, [ebp - 0x1e8]
inc bl
mov byte [ebp - 4], 5
call fcn.004017dc
test bl, bl
lea ecx, [ebp - 0xac]
je 0x405305
push 0xffffffffffffffff
push 5
lea eax, [ebp - 0x1cc]
push eax
mov ebx, 0x80000002
call fcn.0040164f
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 7
call fcn.00401695
lea ecx, [ebp - 0x1cc]
jmp 0x405377
push 5
push 0
lea eax, [ebp - 0x194]
push eax
call fcn.0040164f
push str.HKCU_
mov ecx, eax
mov byte [ebp - 4], 8
call fcn.00403860
mov ebx, eax
neg ebx
sbb bl, bl
push esi
lea ecx, [ebp - 0x194]
inc bl
mov byte [ebp - 4], 5
call fcn.004017dc
test bl, bl
je 0x4057e7
push 0xffffffffffffffff
push 5
lea eax, [ebp - 0xc8]
push eax
lea ecx, [ebp - 0xac]
mov ebx, 0x80000001
call fcn.0040164f
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 9
call fcn.00401695
lea ecx, [ebp - 0xc8]
push esi
mov byte [ebp - 4], 5
call fcn.004017dc
cmp dword [ebp - 0x20], 0x10
mov ecx, dword [ebp - 0x34]
jae 0x40538d
lea ecx, [ebp - 0x34]
lea eax, [ebp - 0xe8]
push eax
lea eax, [ebp - 0x14]
push eax
xor eax, eax
push eax
push 0xf003f
push eax
push 0x420034
push eax
push ecx
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
xor ebx, ebx
cmp eax, ebx
jne 0x405735
cmp dword [ebp - 0x10], ebx
jne 0x4053eb
cmp dword [ebp - 0x40], 0x10
mov ecx, dword [ebp - 0x54]
jae 0x4053ca
lea ecx, [ebp - 0x54]
cmp dword [ebp - 0x5c], 0x10
mov eax, dword [ebp - 0x70]
jae 0x4053d6
lea eax, [ebp - 0x70]
push dword [ebp - 0x44]
push ecx
push esi
push ebx
push eax
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
jmp 0x40555d
cmp dword [ebp - 0x10], esi
jne 0x40541c
cmp dword [ebp - 0x40], 0x10
mov eax, dword [ebp - 0x54]
jae 0x4053fc
lea eax, [ebp - 0x54]
push eax
call fcn.00413e47
cmp dword [ebp - 0x5c], 0x10
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x70]
pop ecx
jae 0x405412
lea eax, [ebp - 0x70]
push 4
lea ecx, [ebp - 0x1c]
push ecx
push 4
jmp 0x4053db
cmp dword [ebp - 0x10], 2
jne 0x405769
push ebx
lea ecx, [ebp - 0xe4]
mov dword [ebp - 0xcc], 0xf
call fcn.0040196d
cmp dword [ebp - 0x44], 0
mov byte [ebp - 4], 0xe
mov dword [ebp - 0x10], ebx
jle 0x40551b
cmp dword [ebp - 0x40], 0x10
mov eax, dword [ebp - 0x54]
jae 0x405459
lea eax, [ebp - 0x54]
cmp byte [eax + ebx], 0x20
je 0x40550e
push 2
push ebx
lea eax, [ebp - 0x90]
push eax
lea ecx, [ebp - 0x58]
call fcn.0040164f
push eax
lea eax, [ebp - 0x15c]
push eax
mov byte [ebp - 4], 0xf
call fcn.0040f0f0
pop ecx
pop ecx
push esi
lea ecx, [ebp - 0x90]
mov byte [ebp - 4], 0x11
call fcn.004017dc
cmp dword [ebp - 0x148], 2
jne 0x4054cd
lea eax, [ebp - 0x1c]
push eax
lea ebx, [ebp - 0x15c]
call fcn.004050d7
test al, al
pop ecx
je 0x4054ca
push dword [ebp - 0x1c]
lea ecx, [ebp - 0xe4]
push 1
call fcn.0040735c
xor esi, esi
inc esi
jmp 0x4054fa
xor esi, esi
inc esi
push str.Binary_formatting_error_in_registry_value
lea ecx, [ebp - 0x108]
call fcn.0040162c
lea eax, [ebp - 0x108]
push eax
mov byte [ebp - 4], 0x12
call fcn.00403f91
pop ecx
push esi
lea ecx, [ebp - 0x108]
call fcn.004017dc
mov ebx, dword [ebp - 0x10]
push esi
lea ecx, [ebp - 0x15c]
inc ebx
mov byte [ebp - 4], 0xe
call fcn.004017dc
inc ebx
cmp ebx, dword [ebp - 0x44]
mov dword [ebp - 0x10], ebx
jl 0x40544d
cmp dword [ebp - 0xcc], 0x10
mov ecx, dword [ebp - 0xe0]
jae 0x405530
lea ecx, [ebp - 0xe0]
cmp dword [ebp - 0x5c], 0x10
mov eax, dword [ebp - 0x70]
jae 0x40553c
lea eax, [ebp - 0x70]
push dword [ebp - 0xd0]
push ecx
push 3
push 0
push eax
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push esi
lea ecx, [ebp - 0xe4]
call fcn.004017dc
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x18]
mov ebx, dword [eax]
push esi
lea ecx, [ebp - 0x38]
mov dword [ebp - 0x18], ebx
call fcn.004017dc
push esi
lea ecx, [ebp - 0x58]
call fcn.004017dc
push esi
lea ecx, [ebp - 0x74]
call fcn.004017dc
or dword [ebp - 4], 0xffffffff
push esi
lea ecx, [ebp - 0xac]
call fcn.004017dc
cmp ebx, dword [0x425adc]
jne 0x405157
push str.InstallName
lea ecx, [ebp - 0x108]
call fcn.0040162c
lea eax, [ebp - 0x108]
push eax
lea eax, [ebp - 0x90]
push eax
mov ecx, 0x425b7c
mov dword [ebp - 4], 0x15
call fcn.0040c840
push eax
lea eax, [ebp - 0x140]
push eax
mov byte [ebp - 4], 0x16
call fcn.004039c9
pop ecx
pop ecx
xor ebx, ebx
inc ebx
push ebx
lea ecx, [ebp - 0x90]
call fcn.004017dc
push ebx
lea ecx, [ebp - 0x108]
mov byte [ebp - 4], 0x18
call fcn.004017dc
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x124]
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
push eax
call fcn.00403781
add esp, 0xc
cmp dword [ebp - 0x10c], 0x10
mov eax, dword [ebp - 0x120]
mov byte [ebp - 4], 0x1a
jae 0x40563a
lea eax, [ebp - 0x120]
lea ecx, [ebp - 0xec]
push ecx
lea ecx, [ebp - 0x3c]
push ecx
xor esi, esi
push esi
push 0xf003f
push esi
push 0x420034
push esi
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x4056f7
lea eax, [ebp - 0x140]
push eax
lea ecx, [ebp - 0x38]
call fcn.0040160d
cmp dword [ebp - 0x20], 0x10
mov eax, dword [ebp - 0x34]
mov byte [ebp - 4], 0x1b
jae 0x405687
lea eax, [ebp - 0x34]
push dword [ebp - 0x24]
push eax
push ebx
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push str.DisplayName
push dword [ebp - 0x3c]
call esi
lea eax, [ebp - 0x90]
push 0x425b28
push eax
call fcn.004039c9
pop ecx
pop ecx
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x1c
call fcn.00401695
push ebx
lea ecx, [ebp - 0x90]
call fcn.004017dc
cmp dword [ebp - 0x20], 0x10
mov eax, dword [ebp - 0x34]
jae 0x4056d9
lea eax, [ebp - 0x34]
push dword [ebp - 0x24]
push eax
push ebx
push 0
push str.UninstallString
push dword [ebp - 0x3c]
call esi
push ebx
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0x1a
call fcn.004017dc
push str._t__Registry_
mov ecx, edi
call fcn.0041c151
push eax
call fcn.004039b0
lea eax, [ebp - 0x124]
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.0040f1d0
add esp, 0xc
cmp dword [eax + 0x18], 0x10
mov byte [ebp - 4], 0x1d
jb 0x40581e
mov eax, dword [eax + 4]
jmp 0x405821
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0xc8]
push str.Failed_to_Create_Key_
push eax
call fcn.00403781
push 0x42005c
push eax
lea eax, [ebp - 0x90]
push eax
mov byte [ebp - 4], 0xc
call fcn.00403735
mov byte [ebp - 4], 0xd
jmp 0x405798
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0xc8]
push str.Invalid_Key_Type_on_
push eax
call fcn.00403781
push 0x42005c
push eax
lea eax, [ebp - 0x90]
push eax
mov byte [ebp - 4], 0x13
call fcn.00403735
mov byte [ebp - 4], 0x14
push eax
call fcn.00403f91
add esp, 0x1c
push esi
lea ecx, [ebp - 0x90]
call fcn.004017dc
push esi
lea ecx, [ebp - 0xc8]
call fcn.004017dc
push esi
lea ecx, [ebp - 0x38]
call fcn.004017dc
push esi
lea ecx, [ebp - 0x58]
call fcn.004017dc
push esi
lea ecx, [ebp - 0x74]
call fcn.004017dc
push esi
lea ecx, [ebp - 0xac]
call fcn.004017dc
xor al, al
jmp 0x40586e
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0xc8]
push str.Invalid_Key_
push eax
call fcn.00403781
push 0x42005c
push eax
lea eax, [ebp - 0x90]
push eax
mov byte [ebp - 4], 0xa
call fcn.00403735
mov byte [ebp - 4], 0xb
jmp 0x405798
add eax, 4
push str.__UninstallDelRegKey_
push eax
push str._t_UninstallDelRegKey_HKLM_
mov ecx, edi
call fcn.0041c151
mov ecx, eax
call fcn.0041c151
mov ecx, eax
call fcn.0041c151
push eax
call fcn.004039b0
pop ecx
push ebx
lea ecx, [ebp - 0xc8]
call fcn.004017dc
push ebx
lea ecx, [ebp - 0x124]
call fcn.004017dc
push ebx
lea ecx, [ebp - 0x140]
call fcn.004017dc
mov al, 1
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret