Function at 0x402b5f
Capabilities:
Create process on windows
Get installed programs
Read file on windows
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc88
push ebx
push edi
mov dword [ebp - 0x678], 0
cmp dword [0x404304], 0
je 0x402b8c
push 0
push 0
push 4
call dword [0x404304]
add esp, 0xc
push 0
push pe_nt_image_headers32
push 3
push 0
push 1
push 0x80000000
push dword [ebp + 0xc]
call sub.KERNEL32.DLL_CreateFileA
mov dword [ebp - 0x468], eax
cmp dword [ebp - 0x468], 0xffffffff
jne 0x402bd9
call sub.KERNEL32.DLL_GetLastError
mov dword [ebp - 0xa2c], eax
push 0
push str.Error
push str.Cannot_open_self.
push dword [ebp + 8]
call sub.USER32.DLL_MessageBoxA
jmp 0x403376
push 2
push 0
push 0
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_SetFilePointer
push 1
push 0
push 0
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_SetFilePointer
mov dword [ebp - 0xa20], eax
sub dword [ebp - 0xa20], 8
push 0
push 0
push dword [ebp - 0xa20]
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_SetFilePointer
push 0
lea edi, [ebp - 0x678]
push edi
push 8
lea edi, [ebp - 0xa28]
push edi
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_ReadFile
cmp dword [ebp - 0xa24], 0x2222
je 0x402c5f
push 0
push str.Error
push str.Not_linked_with_install_package.
push dword [ebp + 8]
call sub.USER32.DLL_MessageBoxA
jmp 0x403376
push 0
push 0
push dword [ebp - 0xa28]
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_SetFilePointer
push 0
lea edi, [ebp - 0x678]
push edi
push 0x254
lea edi, [ebp - 0x8cc]
push edi
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_ReadFile
push 0x404530
call fcn.0040129c
add esp, 4
lea edi, [ebp - 0x87c]
push edi
push str.Default_path__s
call fcn.00401494
add esp, 8
lea edi, [ebp - 0x8bc]
push edi
push str.program__s
call fcn.00401e08
add esp, 8
movzx edi, word [ebp - 0x8c8]
shl edi, 0x10
push edi
push 0
push 0x5f5
push dword [ebp + 8]
call sub.USER32.DLL_PostMessageA
push str.Setup_registry..
call fcn.00401494
add esp, 4
push dword [ebp + 8]
call fcn.00401cea
add esp, 4
mov dword [ebp - 0xa18], 0
jmp 0x402e5b
push 0
lea edi, [ebp - 0x678]
push edi
push 0x248
lea edi, [ebp - 0xc74]
push edi
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_ReadFile
mov ebx, dword [ebp - 0xc74]
cmp ebx, 0
jl case.default.0x402d3a
cmp ebx, 5
jg case.default.0x402d3a
jmp dword [ebx*4 + 0x4052a0]
mov dword [ebp - 0xc7c], 0x80000000
jmp case.default.0x402d3a
mov dword [ebp - 0xc7c], 0x80000001
jmp case.default.0x402d3a
mov dword [ebp - 0xc7c], 0x80000002
jmp case.default.0x402d3a
mov dword [ebp - 0xc7c], 0x80000003
jmp case.default.0x402d3a
mov dword [ebp - 0xc7c], 0x80000005
jmp case.default.0x402d3a
mov dword [ebp - 0xc7c], 0x80000006
lea edi, [ebp - 0xc84]
push edi
lea edi, [ebp - 0xc78]
push edi
push 0
push 0xf003f
push 0
push 0x40560a
push 0
lea edi, [ebp - 0xc70]
push edi
push dword [ebp - 0xc7c]
call sub.ADVAPI32.DLL_RegCreateKeyExA
mov dword [ebp - 0xc80], eax
cmp dword [ebp - 0xc80], 0
je 0x402dcb
jmp 0x402e55
cmp dword [ebp - 0xb70], 4
jne 0x402e0e
lea edi, [ebp - 0xb2c]
push edi
call sub.CRTDLL.DLL_atoi
add esp, 4
mov dword [ebp - 0xc88], eax
push 4
lea edi, [ebp - 0xc88]
push edi
push dword [ebp - 0xb70]
push 0
lea edi, [ebp - 0xb6c]
push edi
push dword [ebp - 0xc78]
call sub.ADVAPI32.DLL_RegSetValueExA
jmp 0x402e55
lea edi, [ebp - 0x464]
push edi
lea edi, [ebp - 0xb2c]
push edi
call fcn.00401ec0
add esp, 8
lea edi, [ebp - 0x464]
push edi
call sub.CRTDLL.DLL_strlen
add esp, 4
push eax
lea edi, [ebp - 0x464]
push edi
push dword [ebp - 0xb70]
push 0
lea edi, [ebp - 0xb6c]
push edi
push dword [ebp - 0xc78]
call sub.ADVAPI32.DLL_RegSetValueExA
inc dword [ebp - 0xa18]
mov edi, dword [ebp - 0x8c0]
cmp dword [ebp - 0xa18], edi
jb 0x402d0a
mov dword [ebp - 0xa18], 0
jmp 0x402e9c
push 0
lea edi, [ebp - 0x678]
push edi
push 0x40
lea edi, [ebp - 0x9cc]
push edi
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_ReadFile
inc dword [ebp - 0xa18]
mov edi, dword [ebp - 0x8c4]
cmp dword [ebp - 0xa18], edi
jb 0x402e79
push 1
push 0
push 0
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_SetFilePointer
mov dword [ebp - 0xa20], eax
mov dword [ebp - 0xa1c], 0
jmp 0x40321c
push 0
lea edi, [ebp - 0x678]
push edi
push 0x44
lea edi, [ebp - 0xa14]
push edi
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_ReadFile
push dword [ebp - 0x9d4]
lea edi, [ebp - 0xa14]
push edi
push str.Category:__s___d_destination_s_
call fcn.00401494
add esp, 0xc
mov dword [ebp - 0x9d0], 0
jmp 0x403204
push 0
lea edi, [ebp - 0x678]
push edi
push 0x104
lea edi, [ebp - 0x674]
push edi
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_ReadFile
lea edi, [ebp - 0x570]
push edi
lea edi, [ebp - 0x674]
push edi
call fcn.00401ec0
add esp, 8
push dword [ebp - 0x574]
lea edi, [ebp - 0x570]
push edi
push str.Destination:__s___d_file_s_
call fcn.00401494
add esp, 0xc
lea edi, [ebp - 0x570]
push edi
call fcn.0040129c
add esp, 4
mov dword [ebp - 0x46c], 0
jmp 0x4031ec
push 0
lea edi, [ebp - 0x678]
push edi
push 0x360
lea edi, [ebp - 0x360]
push edi
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_ReadFile
lea edi, [ebp - 0x120]
push edi
lea edi, [ebp - 0x120]
push edi
call fcn.00401ec0
add esp, 8
lea edi, [ebp - 0x220]
push edi
lea edi, [ebp - 0x220]
push edi
call fcn.00401ec0
add esp, 8
lea edi, [ebp - 0x570]
push edi
lea edi, [ebp - 0x464]
push edi
call sub.CRTDLL.DLL_strcpy
add esp, 8
push 0x405683
lea edi, [ebp - 0x464]
push edi
call sub.CRTDLL.DLL_strcat
add esp, 8
lea edi, [ebp - 0x360]
push edi
lea edi, [ebp - 0x464]
push edi
call sub.CRTDLL.DLL_strcat
add esp, 8
test dword [ebp - 0x1c], 0x80
je 0x40302d
push 1
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_SetFilePointer
jmp 0x403077
push dword [ebp + 8]
push dword [ebp - 0x468]
lea edi, [ebp - 0x464]
push edi
lea edi, [ebp - 0x360]
push edi
call fcn.0040337a
add esp, 0x10
cmp eax, 0
jne 0x403077
push 1
push 0
push dword [ebp - 0x20]
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_SetFilePointer
lea edi, [ebp - 0x464]
push edi
push str.File:__s
call fcn.00401494
add esp, 8
push dword [ebp + 8]
call fcn.00401cea
add esp, 4
test dword [ebp - 0x1c], 4
je 0x4030c3
push str.Add_to_start_menu.
call fcn.00401494
add esp, 4
lea edi, [ebp - 0x120]
push edi
lea edi, [ebp - 0x220]
push edi
lea edi, [ebp - 0x260]
push edi
lea edi, [ebp - 0x464]
push edi
lea edi, [ebp - 0x77c]
push edi
call fcn.0040222c
add esp, 0x14
test dword [ebp - 0x1c], 2
je 0x4030fd
push str.Add___to_desktop.
call fcn.00401494
add esp, 4
lea edi, [ebp - 0x120]
push edi
lea edi, [ebp - 0x220]
push edi
lea edi, [ebp - 0x260]
push edi
lea edi, [ebp - 0x464]
push edi
call fcn.0040233e
add esp, 0x10
test dword [ebp - 0x1c], 8
je 0x403137
push str.Add_to_quicklaunch.
call fcn.00401494
add esp, 4
lea edi, [ebp - 0x120]
push edi
lea edi, [ebp - 0x220]
push edi
lea edi, [ebp - 0x260]
push edi
lea edi, [ebp - 0x464]
push edi
call fcn.0040241b
add esp, 0x10
test dword [ebp - 0x1c], 0x20
je 0x403166
push str.Execute.
call fcn.00401494
add esp, 4
push 1
push 0
push 0
lea edi, [ebp - 0x464]
push edi
push str.open
push 0
call sub.SHELL32.DLL_ShellExecuteA
test dword [ebp - 0x1c], 0x100
je 0x40319e
lea edi, [ebp - 0x464]
push edi
push str.regsvr32__s___s_
lea edi, [ebp - 0x9cc]
push edi
call sub.CRTDLL.DLL_sprintf
add esp, 0xc
lea edi, [ebp - 0x464]
push edi
push str.Registered__s
call fcn.00401494
add esp, 8
test dword [ebp - 0x1c], 0x10
je 0x4031ca
lea edi, [ebp - 0x464]
push edi
call sub.CRTDLL.DLL__unlink
add esp, 4
lea edi, [ebp - 0x464]
push edi
push str.Removed_temp_file__s
call fcn.00401494
add esp, 8
push 0
push 0
push 0x5f6
push dword [ebp + 8]
call sub.USER32.DLL_PostMessageA
push dword [ebp + 8]
call fcn.00401cea
add esp, 4
inc dword [ebp - 0x46c]
mov edi, dword [ebp - 0x574]
cmp dword [ebp - 0x46c], edi
jb 0x402f84
inc dword [ebp - 0x9d0]
mov edi, dword [ebp - 0x9d4]
cmp dword [ebp - 0x9d0], edi
jb 0x402f16
inc dword [ebp - 0xa1c]
mov edi, dword [ebp - 0x8c4]
cmp dword [ebp - 0xa1c], edi
jb 0x402ed0
push dword [ebp - 0x468]
call sub.KERNEL32.DLL_CloseHandle
test dword [ebp - 0x67c], 1
je 0x40332e
push str.SOFTWAREmicrosoftwindowscurrentversionuninstall_
lea edi, [ebp - 0x9cc]
push edi
call sub.CRTDLL.DLL_strcpy
add esp, 8
lea edi, [ebp - 0x8bc]
push edi
lea edi, [ebp - 0x9cc]
push edi
call sub.CRTDLL.DLL_strcat
add esp, 8
lea edi, [ebp - 0xb34]
push edi
lea edi, [ebp - 0xb30]
push edi
push 0
push 0xf003f
push 0
push 0
push 0
lea edi, [ebp - 0x9cc]
push edi
push 0x80000002
call sub.ADVAPI32.DLL_RegCreateKeyExA
cmp eax, 0
je 0x4032a9
jmp 0x403376
lea edi, [ebp - 0x8bc]
push edi
call sub.CRTDLL.DLL_strlen
add esp, 4
push eax
lea edi, [ebp - 0x8bc]
push edi
push 1
push 0
push str.DisplayName
push dword [ebp - 0xb30]
call sub.ADVAPI32.DLL_RegSetValueExA
lea edi, [ebp - 0x87c]
push edi
lea edi, [ebp - 0x87c]
push edi
push str._suninstall.exe__sinstall.log
lea edi, [ebp - 0xb2b]
push edi
call sub.CRTDLL.DLL_sprintf
add esp, 0x10
lea edi, [ebp - 0xb2b]
push edi
call sub.CRTDLL.DLL_strlen
add esp, 4
push eax
lea edi, [ebp - 0xb2b]
push edi
push 1
push 0
push str.UninstallString
push dword [ebp - 0xb30]
call sub.ADVAPI32.DLL_RegSetValueExA
push str.Added_uninstall_settings..
call fcn.00401494
add esp, 4
lea edi, [ebp - 0x8bc]
push edi
push str.Install_of___s__complete.
call fcn.00401494
add esp, 8
cmp dword [0x404304], 0
je 0x40335a
push 0
push 0
push 5
call dword [0x404304]
add esp, 0xc
push 0
push 0
push 0x5f4
push dword [ebp + 8]
call sub.USER32.DLL_PostMessageA
push dword [ebp + 8]
call fcn.00401cea
add esp, 4
pop edi
pop ebx
leave
ret