Function at 0x416c19
Capabilities:
Accept command line arguments
Check os version
Create process on windows

Disassembly:
push ebp
lea ebp, [esp - 0x19c]
sub esp, 0x2ac
mov eax, dword [0x42ab20]
xor eax, ebp
mov dword [ebp + 0x198], eax
mov eax, dword [ebp + 0x1a4]
mov dword [0x42ba24], eax
lea eax, [ebp + 0x84]
push eax
mov dword [ebp + 0x84], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x416c63
cmp dword [ebp + 0x94], 2
je 0x416c77
push str.Unsupported_Windows_version
push 0
call fcn.0040d8ab
xor eax, eax
inc eax
jmp 0x416d92
push ebx
call fcn.004114ab
lea ecx, [ebp - 0x50]
call fcn.00409205
lea ecx, [ebp + 0x64]
call fcn.00409205
lea ecx, [ebp - 0x28]
call fcn.00409205
lea ecx, [ebp - 4]
call fcn.00409205
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea ecx, [ebp + 0x70]
call fcn.00409229
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp + 0x70]
push eax
call fcn.00408b5f
push dword [ebp + 0x70]
call fcn.0040978c
pop ecx
lea ecx, [ebp - 0x1c]
call fcn.00409205
lea eax, [ebp - 0x1c]
push eax
call fcn.00409d81
lea ecx, [ebp + 0x64]
call fcn.004095ef
lea ecx, [ebp + 0x64]
call fcn.004095b6
xor ebx, ebx
push 0x42342c
lea ecx, [ebp + 0x64]
mov byte [ebp + 0x83], bl
call fcn.00408e6e
test al, al
je 0x416d26
mov eax, dword [ebp + 0x64]
add eax, 4
push eax
lea ecx, [ebp + 0x64]
mov byte [ebp + 0x83], 1
call fcn.004092bc
lea ecx, [ebp + 0x64]
call fcn.004095ef
lea ecx, [ebp + 0x64]
call fcn.004095b6
lea ecx, [ebp - 0x10]
call fcn.00408fa1
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x10]
push eax
push str.___InstallEnd__
mov edx, str.___Install__UTF_8_
call fcn.004169d8
test al, al
jne 0x416da9
cmp byte [ebp + 0x83], bl
jne 0x416d5b
push str.Cant_load_config_info
push ebx
call fcn.0040d8ab
push dword [ebp - 0x10]
call fcn.0040978c
push dword [ebp - 0x1c]
call fcn.0040978c
push dword [ebp - 4]
call fcn.0040978c
push dword [ebp - 0x28]
call fcn.0040978c
push dword [ebp + 0x64]
call fcn.0040978c
push dword [ebp - 0x50]
call fcn.0040978c
xor eax, eax
add esp, 0x18
inc eax
pop ebx
mov ecx, dword [ebp + 0x198]
xor ecx, ebp
call fcn.00417bcb
add ebp, 0x19c
leave
ret 0x10
push esi
push edi
push 0x4233f8
lea ecx, [ebp - 0x68]
call fcn.00409257
lea ecx, [ebp + 0x3c]
call fcn.00409205
mov edi, dword [sym.imp.USER32.dll_MessageBoxW]
mov byte [ebp + 0x60], 1
cmp dword [ebp - 0xc], ebx
je 0x416f92
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp - 0x10]
push eax
mov dword [ebp + 0x54], ebx
mov dword [ebp + 0x58], ebx
mov dword [ebp + 0x5c], ebx
call fcn.00409931
test al, al
jne 0x416e57
cmp byte [ebp + 0x83], bl
jne 0x416e00
push str.Config_failed
push ebx
call fcn.0040d8ab
xor ebx, ebx
inc ebx
lea ecx, [ebp + 0x54]
call fcn.00416b6f
push dword [ebp + 0x3c]
call fcn.0040978c
push dword [ebp - 0x68]
call fcn.0040978c
push dword [ebp - 0x10]
call fcn.0040978c
push dword [ebp - 0x1c]
call fcn.0040978c
push dword [ebp - 4]
call fcn.0040978c
push dword [ebp - 0x28]
call fcn.0040978c
push dword [ebp + 0x64]
call fcn.0040978c
push dword [ebp - 0x50]
call fcn.0040978c
add esp, 0x20
pop edi
mov eax, ebx
pop esi
jmp 0x416d91
push str.Title
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.004098b5
push str.BeginPrompt
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.004098b5
push str.Progress
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp - 0x74]
push eax
call fcn.004098b5
push 0x4233b8
push dword [ebp - 0x74]
call fcn.00408ede
test al, al
je 0x416ea1
mov byte [ebp + 0x60], bl
push str.Directory
lea eax, [ebp + 0x54]
push eax
call fcn.00409882
cmp eax, ebx
jl 0x416ec5
mov ecx, dword [ebp + 0x54]
mov eax, dword [ecx + eax*4]
add eax, 0xc
push eax
lea ecx, [ebp - 0x68]
call fcn.00409313
cmp dword [ebp - 0x40], ebx
je 0x416f02
cmp byte [ebp + 0x83], bl
jne 0x416f02
push 0x24
push dword [ebp - 0x80]
push dword [ebp - 0x44]
push ebx
call edi
cmp eax, 6
je 0x416f02
push dword [ebp - 0x74]
call fcn.0040978c
push dword [ebp - 0x44]
call fcn.0040978c
push dword [ebp - 0x80]
call fcn.0040978c
add esp, 0xc
jmp 0x416e03
push str.RunProgram
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp + 0x70]
push eax
call fcn.004098b5
push eax
lea ecx, [ebp + 0x3c]
call fcn.00409313
push dword [ebp + 0x70]
call fcn.0040978c
mov dword [esp], str.ExecuteFile
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp + 0x70]
push eax
call fcn.004098b5
push eax
lea ecx, [ebp - 0x28]
call fcn.00409313
push dword [ebp + 0x70]
call fcn.0040978c
mov dword [esp], str.ExecuteParameters
lea eax, [ebp + 0x54]
push eax
lea eax, [ebp + 0x70]
push eax
call fcn.004098b5
push eax
lea ecx, [ebp - 4]
call fcn.00409313
push dword [ebp + 0x70]
call fcn.0040978c
push dword [ebp - 0x74]
call fcn.0040978c
push dword [ebp - 0x44]
call fcn.0040978c
push dword [ebp - 0x80]
call fcn.0040978c
add esp, 0x10
lea ecx, [ebp + 0x54]
call fcn.00416b6f
lea ecx, [ebp + 0x24]
mov byte [ebp + 0x20], bl
call fcn.00409205
push 0x423070
lea ecx, [ebp + 0x20]
call fcn.0040a5f2
test al, al
jne 0x416fd1
cmp byte [ebp + 0x83], bl
jne 0x416fc1
push str.Can_not_create_temp_folder_archive
push ebx
call fcn.0040d8ab
lea ecx, [ebp + 0x20]
call fcn.004168bc
xor ebx, ebx
inc ebx
jmp 0x416e0b
push 0x18
call fcn.00409761
pop ecx
cmp eax, ebx
je 0x416fe8
mov ecx, eax
call fcn.00416bd7
mov esi, eax
jmp 0x416fea
xor esi, esi
push esi
lea ecx, [ebp + 0x7c]
call fcn.004022fe
mov ecx, esi
call fcn.0040e135
test eax, eax
je 0x417018
push str.Can_not_load_codecs
push ebx
call fcn.0040d8ab
mov eax, dword [ebp + 0x7c]
cmp eax, ebx
je 0x416fc1
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x416fc1
lea eax, [ebp + 0x24]
push eax
lea ecx, [ebp + 0x30]
call fcn.00409294
lea ecx, [ebp + 8]
mov byte [ebp + 0x82], bl
call fcn.00409205
lea eax, [ebp + 8]
push eax
lea eax, [ebp + 0x82]
push eax
push dword [ebp + 0x60]
lea eax, [ebp + 0x30]
push eax
lea eax, [ebp - 0x1c]
push eax
push esi
call fcn.0041672e
cmp eax, ebx
je 0x4170d8
cmp byte [ebp + 0x83], bl
jne 0x4170c1
cmp eax, 1
je 0x41706b
cmp byte [ebp + 0x82], bl
je 0x41707b
lea eax, [ebp + 8]
push eax
push 8
call fcn.0040bc19
mov eax, 0x80004005
cmp eax, 0x80004004
je 0x4170c1
cmp dword [ebp + 0xc], ebx
jne 0x4170a3
push eax
lea eax, [ebp + 0x70]
push eax
call fcn.00409e46
push eax
lea ecx, [ebp + 8]
call fcn.00409313
push dword [ebp + 0x70]
call fcn.0040978c
pop ecx
push 7
lea eax, [ebp + 0x70]
push eax
call fcn.0040bb09
push 0x10
push dword [eax]
push dword [ebp + 8]
push ebx
call edi
push dword [ebp + 0x70]
call fcn.0040978c
pop ecx
push dword [ebp + 8]
call fcn.0040978c
push dword [ebp + 0x30]
call fcn.0040978c
pop ecx
pop ecx
jmp 0x417009
push dword [ebp + 8]
call fcn.0040978c
pop ecx
lea ecx, [ebp - 0x38]
call fcn.004168e5
push dword [ebp + 0x30]
call fcn.00409fd1
test al, al
jne 0x417107
lea ecx, [ebp - 0x38]
call fcn.00416911
push dword [ebp + 0x30]
call fcn.0040978c
jmp 0x4170d2
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x24], ebx
je 0x417213
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp + 0x48]
call fcn.00409294
mov eax, dword [ebp + 0x48]
mov dword [ebp - 0xbc], 0x3c
mov dword [ebp - 0xb8], 0x140
mov dword [ebp - 0xb4], ebx
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xac], eax
cmp dword [ebp + 0x68], ebx
je 0x417164
lea ecx, [ebp - 4]
call fcn.004096b4
lea eax, [ebp + 0x64]
push eax
lea ecx, [ebp - 4]
call fcn.004094ba
lea eax, [ebp - 4]
push eax
lea ecx, [ebp + 0x14]
call fcn.00409294
mov eax, dword [ebp + 0x18]
neg eax
sbb eax, eax
and eax, dword [ebp + 0x14]
xor esi, esi
mov dword [ebp - 0xa8], eax
lea eax, [ebp - 0xbc]
inc esi
push eax
mov dword [ebp - 0xa4], ebx
mov dword [ebp - 0xa0], esi
mov dword [ebp - 0x84], ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
cmp dword [ebp - 0x9c], 0x20
ja 0x4171fd
cmp byte [ebp + 0x83], bl
jne 0x4171be
push str.Can_not_open_file
push ebx
call fcn.0040d8ab
push dword [ebp + 0x14]
call fcn.0040978c
push dword [ebp + 0x48]
call fcn.0040978c
pop ecx
pop ecx
lea ecx, [ebp - 0x38]
call fcn.00416911
push dword [ebp + 0x30]
call fcn.0040978c
mov eax, dword [ebp + 0x7c]
pop ecx
cmp eax, ebx
je 0x4171ee
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp + 0x20]
call fcn.004168bc
mov ebx, esi
jmp 0x416e0b
push dword [ebp + 0x14]
mov esi, dword [ebp - 0x84]
call fcn.0040978c
push dword [ebp + 0x48]
jmp 0x417393
cmp dword [ebp + 0x40], ebx
jne 0x41724d
push str.setup.exe
lea ecx, [ebp + 0x3c]
call fcn.004092bc
push dword [ebp + 0x3c]
call fcn.0040ae09
test al, al
jne 0x41724d
cmp byte [ebp + 0x83], bl
jne 0x4170f5
push str.Can_not_find_setup.exe
push ebx
call fcn.0040d8ab
jmp 0x4170f5
lea eax, [ebp + 0x30]
push eax
lea ecx, [ebp + 0x48]
call fcn.00409294
lea eax, [ebp + 0x48]
push eax
call fcn.0040b1ef
push str.__T_
lea ecx, [ebp + 0x14]
call fcn.00409229
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x14]
push eax
lea ecx, [ebp + 0x3c]
call fcn.004096f8
push dword [ebp + 0x14]
call fcn.0040978c
push dword [ebp + 0x48]
call fcn.0040978c
pop ecx
pop ecx
lea eax, [ebp + 0x3c]
push eax
lea ecx, [ebp + 0x70]
call fcn.00409294
push 0x423294
lea ecx, [ebp + 0x48]
call fcn.00409229
lea eax, [ebp + 0x30]
push eax
lea eax, [ebp + 0x48]
push eax
lea ecx, [ebp + 0x3c]
call fcn.004096f8
push dword [ebp + 0x48]
call fcn.0040978c
pop ecx
cmp dword [ebp + 0x68], ebx
je 0x4172dc
lea ecx, [ebp + 0x3c]
call fcn.004096ac
lea eax, [ebp + 0x64]
push eax
lea ecx, [ebp + 0x3c]
call fcn.004094ba
xor eax, eax
mov word [ebp - 0xde], ax
lea eax, [ebp + 0x3c]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp + 0x48]
push eax
mov dword [ebp - 0x110], 0x44
mov dword [ebp - 0x10c], ebx
mov dword [ebp - 0x108], ebx
mov dword [ebp - 0x104], ebx
mov dword [ebp - 0xe4], ebx
mov dword [ebp - 0xdc], ebx
call fcn.004091b3
push eax
lea ecx, [ebp - 0x5c]
call fcn.00409294
push dword [ebp + 0x48]
call fcn.0040978c
pop ecx
lea eax, [ebp - 0xcc]
push eax
lea eax, [ebp - 0x110]
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push dword [ebp - 0x5c]
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x41737a
cmp byte [ebp + 0x83], bl
jne 0x417363
lea eax, [ebp + 0x70]
push eax
call fcn.00416971
push dword [ebp - 0x5c]
call fcn.0040978c
push dword [ebp + 0x70]
call fcn.0040978c
pop ecx
pop ecx
jmp 0x4170f5
push dword [ebp - 0xc8]
call edi
push dword [ebp - 0x5c]
mov esi, dword [ebp - 0xcc]
call fcn.0040978c
push dword [ebp + 0x70]
call fcn.0040978c
pop ecx
pop ecx
cmp esi, ebx
je 0x4173bd
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp + 0x60]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push esi
call edi
mov esi, dword [ebp + 0x60]
jmp 0x4171d0
lea ecx, [ebp - 0x38]
call fcn.00416911
push dword [ebp + 0x30]
call fcn.0040978c
mov eax, dword [ebp + 0x7c]
pop ecx
cmp eax, ebx
je 0x4173db
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp + 0x20]
call fcn.004168bc
jmp 0x416e0b