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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
mov eax, dword [0x429a80]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov dword [0x42a984], eax
push edi
lea eax, [ebp - 0x98]
push eax
mov dword [ebp - 0x98], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
xor ebx, ebx
test eax, eax
je 0x4158e4
cmp dword [ebp - 0x88], 2
mov byte [0x42a988], 1
je 0x4158ea
mov byte [0x42a988], bl
lea ecx, [ebp - 0x19c]
mov dword [ebp - 0xa0], ebx
call fcn.004091f7
lea ecx, [ebp - 0x180]
call fcn.004091f7
lea ecx, [ebp - 0x15c]
mov dword [ebp - 0x108], ebx
mov dword [ebp - 0x104], ebx
mov dword [ebp - 0x100], ebx
call fcn.004091f7
lea ecx, [ebp - 0x144]
call fcn.004091f7
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea ecx, [ebp - 0xd4]
call fcn.0040921b
lea eax, [ebp - 0x180]
push eax
lea eax, [ebp - 0x19c]
push eax
lea eax, [ebp - 0xd4]
push eax
call fcn.00408993
push dword [ebp - 0xd4]
call fcn.0040983f
pop ecx
lea eax, [ebp - 0x108]
push eax
lea eax, [ebp - 0x180]
push eax
call fcn.00408af2
lea ecx, [ebp - 0x150]
call fcn.004091f7
lea eax, [ebp - 0x150]
push eax
call fcn.0040a0b2
lea ecx, [ebp - 0xf0]
call fcn.004091f7
xor esi, esi
mov byte [ebp - 0x99], bl
cmp dword [ebp - 0x104], ebx
jbe 0x415a9f
mov eax, dword [ebp - 0x108]
mov eax, dword [eax + esi*4]
push 0x42238c
push dword [eax]
call fcn.00418c28
pop ecx
pop ecx
test eax, eax
jne 0x4159d6
mov byte [ebp - 0x99], 1
jmp 0x415a92
mov eax, dword [ebp - 0x108]
mov ecx, dword [eax + esi*4]
push str._sp_
call fcn.00408d9f
test al, al
je 0x415a92
mov eax, dword [ebp - 0x108]
mov eax, dword [eax + esi*4]
mov eax, dword [eax]
add eax, 8
push eax
lea ecx, [ebp - 0xf0]
call fcn.00409276
lea ecx, [ebp - 0xf0]
call fcn.004095bf
lea ecx, [ebp - 0xf0]
call fcn.00409586
cmp dword [ebp - 0xec], ebx
je 0x415a41
dec dword [ebp - 0xec]
mov ecx, dword [ebp - 0xf0]
mov edx, dword [ebp - 0xec]
xor eax, eax
mov word [ecx + edx*2], ax
push 0x422380
lea ecx, [ebp - 0xb0]
call fcn.0040921b
push 0x422378
lea ecx, [ebp - 0xd4]
call fcn.0040921b
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xd4]
push eax
lea ecx, [ebp - 0xf0]
call fcn.004097ab
push dword [ebp - 0xd4]
call fcn.0040983f
push dword [ebp - 0xb0]
call fcn.0040983f
pop ecx
pop ecx
inc esi
cmp esi, dword [ebp - 0x104]
jb 0x4159af
lea ecx, [ebp - 0x168]
call fcn.00408f1b
push 0x4218ec
lea ecx, [ebp - 0x174]
call fcn.0040921b
lea ecx, [ebp - 0xe0]
call fcn.004091f7
lea ecx, [ebp - 0x138]
call fcn.004091f7
mov ecx, dword [ebp - 0x150]
lea eax, [ebp - 0x168]
push eax
push str.___InstallEnd__
mov edx, str.___Install__UTF_8_
mov byte [ebp - 0xe4], 1
call fcn.0041560a
mov edi, dword [sym.imp.USER32.dll_MessageBoxW]
test al, al
jne 0x415b0c
mov dword [ebp - 0xa0], 0xe
jmp 0x415e48
cmp dword [ebp - 0x164], ebx
je 0x415e48
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x168]
push eax
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xac], ebx
mov dword [ebp - 0xa8], ebx
call fcn.00409c08
test al, al
jne 0x415b50
mov dword [ebp - 0xa0], 0xb
jmp 0x415e3d
push str.Title
lea ecx, [ebp - 0xbc]
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.00409bcc
push dword [ebp - 0xbc]
call fcn.0040983f
lea ecx, [ebp - 0xbc]
mov dword [esp], str.BeginPrompt
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xd4]
push eax
call fcn.00409bcc
push dword [ebp - 0xbc]
call fcn.0040983f
lea ecx, [ebp - 0xbc]
mov dword [esp], str.Silent
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x12c]
push eax
call fcn.00409bcc
push dword [ebp - 0xbc]
call fcn.0040983f
pop ecx
cmp dword [ebp - 0x128], ebx
je 0x415c03
mov byte [ebp - 0x99], 1
push 0x422330
lea ecx, [ebp - 0xbc]
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x120]
push eax
call fcn.00409bcc
push dword [ebp - 0xbc]
call fcn.0040983f
pop ecx
cmp byte [ebp - 0x99], bl
jne 0x415c55
push 0x42232c
push dword [ebp - 0x120]
call fcn.00408de8
test al, al
je 0x415c5b
mov byte [ebp - 0xe4], bl
push str.Directory
lea ecx, [ebp - 0xbc]
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
call fcn.00409b98
push dword [ebp - 0xbc]
mov esi, eax
call fcn.0040983f
cmp esi, ebx
pop ecx
jl 0x415ca8
mov eax, dword [ebp - 0xb0]
mov eax, dword [eax + esi*4]
add eax, 0xc
push eax
lea ecx, [ebp - 0x174]
call fcn.004092cf
cmp dword [ebp - 0xd0], ebx
je 0x415cd8
cmp byte [ebp - 0x99], bl
jne 0x415cd8
push 0x24
push dword [ebp - 0xc8]
push dword [ebp - 0xd4]
push ebx
call edi
cmp eax, 6
je 0x415cd8
mov dword [ebp - 0xa0], 3
push str.RunProgram
lea ecx, [ebp - 0xbc]
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.00409bcc
push eax
lea ecx, [ebp - 0xe0]
call fcn.004092cf
push dword [ebp - 0xfc]
call fcn.0040983f
push dword [ebp - 0xbc]
call fcn.0040983f
pop ecx
pop ecx
push str.RunProgramParameters
lea ecx, [ebp - 0xbc]
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.00409bcc
push eax
lea ecx, [ebp - 0x138]
call fcn.004092cf
push dword [ebp - 0xfc]
call fcn.0040983f
push dword [ebp - 0xbc]
call fcn.0040983f
pop ecx
pop ecx
push str.ExecuteFile
lea ecx, [ebp - 0xbc]
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.00409bcc
push eax
lea ecx, [ebp - 0x15c]
call fcn.004092cf
push dword [ebp - 0xfc]
call fcn.0040983f
push dword [ebp - 0xbc]
call fcn.0040983f
pop ecx
pop ecx
push str.ExecuteParameters
lea ecx, [ebp - 0xbc]
call fcn.0040921b
lea eax, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.00409bcc
push eax
lea ecx, [ebp - 0x144]
call fcn.004092cf
push dword [ebp - 0xfc]
call fcn.0040983f
push dword [ebp - 0xbc]
call fcn.0040983f
push dword [ebp - 0x120]
call fcn.0040983f
push dword [ebp - 0x12c]
call fcn.0040983f
push dword [ebp - 0xd4]
call fcn.0040983f
push dword [ebp - 0xc8]
call fcn.0040983f
add esp, 0x18
lea ecx, [ebp - 0xb0]
call fcn.0040e4e5
lea ecx, [ebp - 0x18c]
mov byte [ebp - 0x190], bl
call fcn.004091f7
cmp dword [ebp - 0xa0], ebx
jne 0x415e93
push dword [0x429a24]
lea ecx, [ebp - 0x190]
call fcn.0040abf7
test al, al
jne 0x415e93
cmp byte [ebp - 0x99], bl
jne 0x415e89
push str.Can_not_create_temp_folder_archive
push ebx
call fcn.0040dfa4
mov dword [ebp - 0xa0], 0xd
xor esi, esi
cmp dword [ebp - 0xa0], ebx
jne 0x415eee
push 0x18
call fcn.00409814
pop ecx
cmp eax, ebx
je 0x415eb2
mov ecx, eax
call fcn.00415823
jmp 0x415eb4
xor eax, eax
mov esi, eax
cmp eax, ebx
je 0x415ed1
mov ecx, eax
call fcn.0040e862
test eax, eax
je 0x415eee
mov dword [ebp - 0xa0], 0xa
jmp 0x415edb
mov dword [ebp - 0xa0], 9
cmp byte [ebp - 0x99], bl
jne 0x415eee
push str.Can_not_load_codecs
push ebx
call fcn.0040dfa4
lea eax, [ebp - 0x18c]
push eax
lea ecx, [ebp - 0x114]
call fcn.0040924b
cmp dword [ebp - 0xa0], ebx
jne 0x415fe6
lea ecx, [ebp - 0xb0]
mov byte [ebp - 0xa1], bl
call fcn.004091f7
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xa1]
push eax
push dword [ebp - 0xe4]
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x150]
push eax
push esi
call fcn.0041535e
cmp eax, ebx
je 0x415fda
cmp byte [ebp - 0x99], bl
jne 0x415fd0
cmp eax, 1
je 0x415f62
cmp byte [ebp - 0xa1], bl
je 0x415f75
lea eax, [ebp - 0xb0]
push eax
push 8
call fcn.0040c4f4
mov eax, 0x80004005
cmp eax, 0x80004004
je 0x415fd0
cmp dword [ebp - 0xac], ebx
jne 0x415fa9
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.0040a249
push eax
lea ecx, [ebp - 0xb0]
call fcn.004092cf
push dword [ebp - 0xfc]
call fcn.0040983f
pop ecx
push 7
lea eax, [ebp - 0xfc]
push eax
call fcn.0040c388
push 0x10
push dword [eax]
push dword [ebp - 0xb0]
push ebx
call edi
push dword [ebp - 0xfc]
call fcn.0040983f
pop ecx
mov dword [ebp - 0xa0], 0xf
push dword [ebp - 0xb0]
call fcn.0040983f
pop ecx
lea ecx, [ebp - 0x1f8]
call fcn.00415517
cmp dword [ebp - 0xa0], ebx
jne 0x416025
push dword [ebp - 0x114]
call fcn.0040a4e5
test al, al
jne 0x416025
cmp byte [ebp - 0x99], bl
jne 0x41601b
push str.Invalid_Current_Directory
push ebx
call fcn.0040dfa4
mov dword [ebp - 0xa0], 8
mov esi, dword [ebp - 0xa0]
xor edi, edi
cmp esi, ebx
jne 0x416453
cmp dword [ebp - 0x158], ebx
je 0x416133
lea eax, [ebp - 0x15c]
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.0040c50c
mov eax, dword [ebp - 0xc8]
mov dword [ebp - 0x1d8], 0x3c
mov dword [ebp - 0x1d4], 0x140
mov dword [ebp - 0x1d0], ebx
mov dword [ebp - 0x1cc], ebx
mov dword [ebp - 0x1c8], eax
cmp dword [ebp - 0xec], ebx
je 0x4160a5
lea ecx, [ebp - 0x144]
call fcn.00409766
lea eax, [ebp - 0xf0]
push eax
lea ecx, [ebp - 0x144]
call fcn.004093bf
lea eax, [ebp - 0x144]
push eax
lea eax, [ebp - 0xd4]
push eax
call fcn.0040c50c
mov eax, dword [ebp - 0xd0]
neg eax
sbb eax, eax
and eax, dword [ebp - 0xd4]
mov dword [ebp - 0x1c0], ebx
mov dword [ebp - 0x1c4], eax
lea eax, [ebp - 0x1d8]
push eax
mov dword [ebp - 0x1bc], 1
mov dword [ebp - 0x1a0], ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
cmp dword [ebp - 0x1b8], 0x20
ja 0x416112
cmp byte [ebp - 0x99], bl
jne 0x41610d
push str.Can_not_open_file
push ebx
call fcn.0040dfa4
push 4
pop esi
jmp 0x416118
mov edi, dword [ebp - 0x1a0]
push dword [ebp - 0xd4]
call fcn.0040983f
push dword [ebp - 0xc8]
call fcn.0040983f
jmp 0x41640b
cmp dword [ebp - 0xdc], ebx
jne 0x416177
push str.setup.exe
lea ecx, [ebp - 0xe0]
call fcn.00409276
push dword [ebp - 0xe0]
call fcn.0040b544
test al, al
jne 0x416177
cmp byte [ebp - 0x99], bl
jne 0x41616d
push str.Can_not_find_setup.exe
push ebx
call fcn.0040dfa4
mov dword [ebp - 0xa0], 5
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0xb0]
call fcn.0040924b
lea eax, [ebp - 0xb0]
push eax
call fcn.0040b976
mov esi, str.__T_
push esi
lea ecx, [ebp - 0xc8]
call fcn.0040921b
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xc8]
push eax
lea ecx, [ebp - 0xe0]
call fcn.004097ab
push dword [ebp - 0xc8]
call fcn.0040983f
pop ecx
push esi
lea ecx, [ebp - 0xc8]
call fcn.0040921b
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xc8]
push eax
lea ecx, [ebp - 0x138]
call fcn.004097ab
push dword [ebp - 0xc8]
call fcn.0040983f
push dword [ebp - 0xb0]
call fcn.0040983f
pop ecx
pop ecx
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0x120]
call fcn.0040924b
mov esi, 0x422178
push esi
lea ecx, [ebp - 0xc8]
call fcn.0040921b
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0xc8]
push eax
lea ecx, [ebp - 0xe0]
call fcn.004097ab
push dword [ebp - 0xc8]
call fcn.0040983f
pop ecx
push esi
lea ecx, [ebp - 0xc8]
call fcn.0040921b
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0xc8]
push eax
lea ecx, [ebp - 0x138]
call fcn.004097ab
push dword [ebp - 0xc8]
call fcn.0040983f
pop ecx
mov esi, 0x422380
push esi
lea ecx, [ebp - 0xb0]
call fcn.0040921b
push eax
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0x174]
push eax
push esi
lea ecx, [ebp - 0xd4]
call fcn.0040921b
push eax
lea eax, [ebp - 0xbc]
push eax
call fcn.004091a5
push eax
lea eax, [ebp - 0xc8]
push eax
call fcn.004091a5
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.004091a5
push eax
lea ecx, [ebp - 0xe0]
call fcn.004092cf
push dword [ebp - 0xfc]
call fcn.0040983f
push dword [ebp - 0xc8]
call fcn.0040983f
push dword [ebp - 0xbc]
call fcn.0040983f
push dword [ebp - 0xd4]
call fcn.0040983f
push dword [ebp - 0xb0]
call fcn.0040983f
add esp, 0x14
lea ecx, [ebp - 0xe0]
cmp dword [ebp - 0xec], ebx
je 0x416335
call fcn.0040975e
lea eax, [ebp - 0xf0]
jmp 0x416340
call fcn.0040975e
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0xe0]
call fcn.004093bf
xor eax, eax
mov word [ebp - 0x20a], ax
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0x12c]
push eax
mov dword [ebp - 0x23c], 0x44
mov dword [ebp - 0x238], ebx
mov dword [ebp - 0x234], ebx
mov dword [ebp - 0x230], ebx
mov dword [ebp - 0x210], ebx
mov dword [ebp - 0x208], ebx
call fcn.0040c50c
cmp dword [ebp - 0xa0], ebx
jne 0x4163ef
lea eax, [ebp - 0x1e8]
push eax
lea eax, [ebp - 0x23c]
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push dword [ebp - 0x12c]
push ebx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x4163dd
cmp byte [ebp - 0x99], bl
jne 0x4163d1
lea eax, [ebp - 0x120]
push eax
call fcn.004155a3
mov dword [ebp - 0xa0], 0x28
jmp 0x4163ef
push dword [ebp - 0x1e4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x1e8]
push dword [ebp - 0x12c]
call fcn.0040983f
push dword [ebp - 0x120]
call fcn.0040983f
mov esi, dword [ebp - 0xa0]
pop ecx
pop ecx
cmp esi, ebx
jne 0x416453
cmp edi, ebx
je 0x416450
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0xe4]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
je 0x416444
mov eax, dword [ebp - 0xe4]
test eax, 0xffff0000
jne 0x416444
shl eax, 0x10
mov esi, eax
jmp 0x416447
push 7
pop esi
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x416453
push 7
pop esi
lea ecx, [ebp - 0x1f8]
call fcn.00415543
push dword [ebp - 0x114]
call fcn.0040983f
pop ecx
lea ecx, [ebp - 0x190]
call fcn.004154ee
push dword [ebp - 0x138]
call fcn.0040983f
push dword [ebp - 0xe0]
call fcn.0040983f
push dword [ebp - 0x174]
call fcn.0040983f
push dword [ebp - 0x168]
call fcn.0040983f
push dword [ebp - 0xf0]
call fcn.0040983f
push dword [ebp - 0x150]
call fcn.0040983f
push dword [ebp - 0x144]
call fcn.0040983f
push dword [ebp - 0x15c]
call fcn.0040983f
add esp, 0x20
lea ecx, [ebp - 0x108]
call fcn.004040a6
push dword [ebp - 0x180]
call fcn.0040983f
push dword [ebp - 0x19c]
call fcn.0040983f
pop ecx
pop ecx
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.00416ceb
leave
ret 0x10