Function at 0x40156f
Capabilities:
Accept command line arguments
Create process on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
push ebx
push esi
push edi
xor ebx, ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_DefWindowProcW]
sub esp, 0xc
call fcn.00401f87
test eax, eax
jns 0x4015a7
push 0x10
push ebx
push str.Initialization_failed
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x4018f3
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
xor edi, edi
mov ebx, eax
push edi
push 5
mov dword [esp + 0x24], ebx
call dword [sym.imp.msi.dll_MsiSetPropertyW]
mov esi, dword [sym.imp.msi.dll_MsiRecordGetStringA]
push str.46C3BCD6_F992_4D94_9C03_4960FF5F5A81
call esi
cmp eax, 5
jne 0x4015e5
push eax
push edi
push str.46C3BCD6_F992_4D94_9C03_4960FF5F5A81
jmp 0x4015f8
push str.7DABE060_FEE3_405e_9CE3_99578A7F88A1
call esi
cmp eax, 5
jne 0x401603
push eax
push edi
push str.7DABE060_FEE3_405e_9CE3_99578A7F88A1
call dword [sym.imp.msi.dll_MsiDatabaseCommit]
jmp 0x4018ee
call fcn.00404eb6
test al, al
je 0x401874
mov esi, dword [sym.imp.KERNEL32.dll_EnumResourceLanguagesW]
xor eax, eax
mov dword [esp + 0x24], eax
mov edi, 0x404c16
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x24]
push eax
push edi
push 0x14
push dword [0x41d0dc]
push dword [0x41c168]
call esi
cmp dword [esp + 0x28], 0
jle 0x40185d
lea eax, [esp + 0x24]
push eax
push edi
push 0x16
push dword [0x41d0dc]
push dword [0x41c168]
call esi
xor edi, edi
call fcn.004043b8
push eax
lea ecx, [esp + 0x24]
call fcn.004041ce
call fcn.004043b8
push eax
lea ecx, [esp + 0x1c]
call fcn.004041ce
xor esi, esi
mov byte [esp + 0x13], 0
inc esi
cmp dword [esp + 0x14], esi
jle 0x401776
test di, di
jne 0x4016f9
push dword [ebx + esi*4]
push 0x4189d8
call dword [sym.imp.SHLWAPI.dll_StrCmpIW]
test eax, eax
jne 0x4016f9
mov eax, dword [esp + 0x14]
dec eax
mov byte [esp + 0x13], 1
cmp esi, eax
jge 0x4016eb
push dword [ebx + esi*4 + 4]
call dword [sym.imp.SHLWAPI.dll_StrToIntW]
xor edi, edi
movzx ebx, ax
cmp dword [esp + 0x28], edi
jle 0x4016eb
push edi
lea ecx, [esp + 0x28]
call fcn.00401a0f
cmp word [eax], bx
je 0x4016e4
inc edi
cmp edi, dword [esp + 0x28]
jl 0x4016cc
jmp 0x4016eb
mov edi, ebx
test bx, bx
jne 0x4016f9
push 0
lea ecx, [esp + 0x28]
call fcn.00401a0f
movzx edi, word [eax]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
cmp dword [eax - 0xc], 0
jne 0x401737
push dword [ebx + esi*4]
push 0x4189e0
call dword [sym.imp.SHLWAPI.dll_StrCmpIW]
test eax, eax
jne 0x401737
mov eax, dword [esp + 0x14]
dec eax
cmp esi, eax
jge 0x401728
mov eax, dword [ebx + esi*4 + 4]
jmp 0x40172d
mov eax, str.install.log
push eax
lea ecx, [esp + 0x1c]
call fcn.00402186
push dword [ebx + esi*4]
push 0x20
push dword [ebx + esi*4]
call dword [sym.imp.SHLWAPI.dll_StrChrIW]
test eax, eax
mov edx, 0x418a0c
mov ecx, 0x418a00
lea eax, [esp + 0x24]
cmove ecx, edx
push ecx
push eax
call fcn.00401b3e
add esp, 0xc
inc esi
cmp esi, dword [esp + 0x14]
jl 0x401692
test di, di
jne 0x4017ff
xor ebx, ebx
mov dword [esp + 0x30], 0x418fd4
lea eax, [esp + 0x24]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], ebx
call dword [sym.imp.USER32.dll_GetActiveWindow]
push ebx
push ebx
lea ecx, [esp + 0x40]
mov esi, eax
call fcn.00401dad
test eax, eax
jne 0x4017c0
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
or esi, 0xffffffff
jmp 0x4017e6
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.00401d56
push ebx
push 0x401aaf
push esi
push 0x67
push dword [0x41c168]
call dword [sym.imp.USER32.dll_DialogBoxParamW]
mov esi, eax
movzx edi, si
cmp dword [esp + 0x44], ebx
je 0x4017f8
push dword [esp + 0x44]
call fcn.00405364
test si, si
je 0x401845
jmp 0x401801
xor ebx, ebx
push 0x418b6c
lea ecx, [esp + 0x20]
call fcn.0040201a
push ebx
lea ecx, [esp + 0x28]
call fcn.00401a0f
mov dl, byte [esp + 0x13]
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x1c]
movzx esi, di
push ecx
xor ecx, ecx
cmp word [eax], di
cmovne ecx, esi
call fcn.004012fc
pop ecx
pop ecx
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx - 0x10]
call fcn.00404784
mov ecx, dword [esp + 0x18]
lea ecx, [ecx - 0x10]
call fcn.00404784
mov ecx, dword [esp + 0x20]
lea ecx, [ecx - 0x10]
call fcn.00404784
cmp dword [esp + 0x24], 0
je 0x4018ee
push dword [esp + 0x24]
call fcn.004058c2
pop ecx
jmp 0x4018ee
push str.Microsoft_.NET_Framework_version_4.0_or_higher_is_not_detected._nDo_you_want_to_visit_download_page_
lea ecx, [esp + 0x24]
call fcn.0040201a
push ecx
lea eax, [esp + 0x24]
push eax
push 0x6a
pop edx
lea ecx, [esp + 0x24]
call fcn.00404b26
pop ecx
push 2
pop edx
mov ecx, eax
call fcn.00404ba2
pop ecx
mov ecx, dword [esp + 0x1c]
mov bl, al
add ecx, 0xfffffff0
call fcn.00404784
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.00404784
test bl, bl
je 0x4018ee
push str.http:__www.microsoft.com_download_details.aspx_id17851
lea ecx, [esp + 0x24]
call fcn.0040201a
push 1
xor eax, eax
push eax
push eax
push dword [esp + 0x2c]
push str.open
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov ecx, dword [esp + 0x20]
lea ecx, [ecx - 0x10]
call fcn.00404784
call fcn.00401ef5
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x10