Function at 0x411ffe
Capabilities:
Accept command line arguments
Check os version
Create process on windows
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x228
mov eax, dword [0x427030]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov dword [0x427ed8], eax
lea eax, [ebp - 0x98]
push eax
mov dword [ebp - 0x98], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x412044
cmp dword [ebp - 0x88], 2
mov byte [0x427edc], 1
je 0x41204b
mov byte [0x427edc], 0
push ebx
push esi
push edi
lea ecx, [ebp - 0x18c]
call fcn.00403eeb
lea ecx, [ebp - 0xc4]
call fcn.00403eeb
lea ecx, [ebp - 0x144]
call fcn.00403eeb
lea ecx, [ebp - 0x138]
call fcn.00403eeb
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea ecx, [ebp - 0xa8]
call fcn.004086b4
lea eax, [ebp - 0xc4]
push eax
lea eax, [ebp - 0x18c]
push eax
lea eax, [ebp - 0xa8]
push eax
call fcn.00408995
push dword [ebp - 0xa8]
call fcn.00408db6
pop ecx
xor edi, edi
lea ecx, [ebp - 0x15c]
mov dword [ebp - 0x120], edi
call fcn.00403eeb
lea eax, [ebp - 0x15c]
push eax
push dword [0x427ed8]
call fcn.004098b3
lea ecx, [ebp - 0xc4]
call fcn.00408a54
lea ecx, [ebp - 0xc4]
call fcn.00408a2e
push 0x41ef3c
lea ecx, [ebp - 0x150]
mov byte [ebp - 0x99], 0
call fcn.004086b4
mov esi, eax
push 2
lea eax, [ebp - 0xa8]
push eax
lea ecx, [ebp - 0xc4]
call fcn.004087e9
push dword [esi]
push dword [eax]
call fcn.00408ba4
push dword [ebp - 0xa8]
mov ebx, eax
neg ebx
sbb bl, bl
inc bl
call fcn.00408db6
push dword [ebp - 0x150]
call fcn.00408db6
pop ecx
pop ecx
test bl, bl
je 0x412190
push 2
lea eax, [ebp - 0xa8]
push eax
lea ecx, [ebp - 0xc4]
mov byte [ebp - 0x99], 1
call fcn.004088e6
push eax
lea ecx, [ebp - 0xc4]
call fcn.004086ec
push dword [ebp - 0xa8]
call fcn.00408db6
pop ecx
lea ecx, [ebp - 0xc4]
call fcn.00408a54
lea ecx, [ebp - 0xc4]
call fcn.00408a2e
lea ecx, [ebp - 0x168]
call fcn.00408e40
mov ecx, dword [ebp - 0x15c]
lea eax, [ebp - 0x168]
push eax
push str.___InstallEnd__
mov edx, str.___Install__UTF_8_
call fcn.00411d0e
test al, al
jne 0x412227
cmp byte [ebp - 0x99], al
jne 0x4121ce
push str.Cant_load_config_info
push edi
call fcn.0040c7eb
push dword [ebp - 0x168]
call fcn.00408db6
push dword [ebp - 0x15c]
call fcn.00408db6
push dword [ebp - 0x138]
call fcn.00408db6
push dword [ebp - 0x144]
call fcn.00408db6
push dword [ebp - 0xc4]
call fcn.00408db6
push dword [ebp - 0x18c]
call fcn.00408db6
xor eax, eax
add esp, 0x18
inc eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004145fb
leave
ret 0x10
push 0x41ef04
lea ecx, [ebp - 0x150]
call fcn.004086b4
lea ecx, [ebp - 0xdc]
call fcn.00403eeb
mov ebx, dword [sym.imp.USER32.dll_MessageBoxW]
mov byte [ebp - 0x11c], 1
cmp dword [ebp - 0x164], edi
je 0x4125b3
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0x168]
push eax
mov dword [ebp - 0x114], edi
mov dword [ebp - 0x110], edi
mov dword [ebp - 0x10c], edi
mov dword [ebp - 0x108], 4
mov dword [ebp - method.CObjectVector_struct_CTextConfigPair_.virtual_0], vtable.CObjectVector_struct_CTextConfigPair_.0
call fcn.0040919a
test al, al
jne 0x41231f
cmp byte [ebp - 0x99], al
jne 0x4122af
push str.Config_failed
push edi
call fcn.0040c7eb
xor esi, esi
inc esi
lea ecx, [ebp - 0x118]
call fcn.00411c80
push dword [ebp - 0xdc]
call fcn.00408db6
push dword [ebp - 0x150]
call fcn.00408db6
push dword [ebp - 0x168]
call fcn.00408db6
push dword [ebp - 0x15c]
call fcn.00408db6
push dword [ebp - 0x138]
call fcn.00408db6
push dword [ebp - 0x144]
call fcn.00408db6
push dword [ebp - 0xc4]
call fcn.00408db6
push dword [ebp - 0x18c]
call fcn.00408db6
add esp, 0x20
mov eax, esi
jmp 0x412216
push str.Title
lea ecx, [ebp - 0xa8]
call fcn.004086b4
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0x180]
push eax
call fcn.0040915d
push dword [ebp - 0xa8]
call fcn.00408db6
lea ecx, [ebp - 0xa8]
mov dword [esp], str.BeginPrompt
call fcn.004086b4
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0x174]
push eax
call fcn.0040915d
push dword [ebp - 0xa8]
call fcn.00408db6
lea ecx, [ebp - 0xa8]
mov dword [esp], 0x41eeb0
call fcn.004086b4
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0x198]
push eax
call fcn.0040915d
push dword [ebp - 0xa8]
call fcn.00408db6
mov dword [esp], 0x41eea8
push dword [ebp - 0x198]
call fcn.00408ba4
test eax, eax
jne 0x4123de
mov byte [ebp - 0x11c], al
push str.Directory
lea ecx, [ebp - 0xa8]
call fcn.004086b4
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x118]
push eax
call fcn.00409125
push dword [ebp - 0xa8]
mov esi, eax
call fcn.00408db6
cmp esi, edi
pop ecx
jl 0x41242b
mov eax, dword [ebp - 0x10c]
mov eax, dword [eax + esi*4]
add eax, 0xc
push eax
lea ecx, [ebp - 0x150]
call fcn.004086ec
cmp dword [ebp - 0x170], edi
je 0x41247d
cmp byte [ebp - 0x99], 0
jne 0x41247d
push 0x24
push dword [ebp - 0x180]
push dword [ebp - 0x174]
push edi
call ebx
cmp eax, 6
je 0x41247d
push dword [ebp - 0x198]
call fcn.00408db6
push dword [ebp - 0x174]
call fcn.00408db6
push dword [ebp - 0x180]
call fcn.00408db6
add esp, 0xc
xor esi, esi
jmp 0x4122b2
push str.RunProgram
lea ecx, [ebp - 0xa8]
call fcn.004086b4
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.0040915d
push eax
lea ecx, [ebp - 0xdc]
call fcn.004086ec
push dword [ebp - 0xb8]
call fcn.00408db6
push dword [ebp - 0xa8]
call fcn.00408db6
pop ecx
pop ecx
push str.ExecuteFile
lea ecx, [ebp - 0xa8]
call fcn.004086b4
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.0040915d
push eax
lea ecx, [ebp - 0x144]
call fcn.004086ec
push dword [ebp - 0xb8]
call fcn.00408db6
push dword [ebp - 0xa8]
call fcn.00408db6
pop ecx
pop ecx
push str.ExecuteParameters
lea ecx, [ebp - 0xa8]
call fcn.004086b4
lea eax, [ebp - 0xc4]
push eax
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0x118]
push eax
lea eax, [ebp - 0xe8]
push eax
call fcn.0040915d
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.0040a206
push eax
lea ecx, [ebp - 0x138]
call fcn.004086ec
push dword [ebp - 0xb8]
call fcn.00408db6
push dword [ebp - 0xe8]
call fcn.00408db6
push dword [ebp - 0xa8]
call fcn.00408db6
push dword [ebp - 0x198]
call fcn.00408db6
push dword [ebp - 0x174]
call fcn.00408db6
push dword [ebp - 0x180]
call fcn.00408db6
add esp, 0x18
lea ecx, [ebp - 0x118]
call fcn.00411c80
lea ecx, [ebp - 0x100]
mov byte [ebp - 0x104], 0
call fcn.00408e40
push dword [0x426f70]
lea ecx, [ebp - 0x104]
call fcn.0040a70a
test al, al
jne 0x412600
cmp byte [ebp - 0x99], al
jne 0x4125ed
push str.Can_not_create_temp_folder_archive
push edi
call fcn.0040c7eb
lea ecx, [ebp - 0x104]
call fcn.00411c26
xor esi, esi
inc esi
jmp 0x4122bd
push 0x1c
call fcn.00408d8b
pop ecx
cmp eax, edi
je 0x412617
mov ecx, eax
call fcn.00411f2e
mov esi, eax
jmp 0x412619
xor esi, esi
push esi
lea ecx, [ebp - 0xac]
call fcn.0040212f
mov ecx, esi
call fcn.0040d2e1
test eax, eax
je 0x41264d
push str.Can_not_load_codecs
push edi
call fcn.0040c7eb
mov eax, dword [ebp - 0xac]
cmp eax, edi
je 0x4125ed
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4125ed
lea eax, [ebp - 0x100]
push eax
lea eax, [ebp - 0xf4]
push eax
call fcn.00409980
lea ecx, [ebp - 0x12c]
mov byte [ebp - 0x9a], 0
call fcn.00403eeb
lea eax, [ebp - 0x12c]
push eax
lea eax, [ebp - 0x9a]
push eax
push dword [ebp - 0x11c]
lea eax, [ebp - 0xf4]
push eax
lea eax, [ebp - 0x15c]
push eax
push esi
call fcn.00411aba
cmp eax, edi
je 0x412737
cmp byte [ebp - 0x99], 0
jne 0x41271a
cmp eax, 1
je 0x4126b9
cmp byte [ebp - 0x9a], 0
je 0x4126e4
push 8
lea eax, [ebp - 0xa8]
push eax
call fcn.0040b1db
push eax
lea ecx, [ebp - 0x12c]
call fcn.004086ec
push dword [ebp - 0xa8]
call fcn.00408db6
pop ecx
mov eax, 0x80004005
cmp eax, 0x80004004
je 0x41271a
cmp dword [ebp - 0x128], edi
je 0x41271a
push 7
lea eax, [ebp - 0xa8]
push eax
call fcn.0040b1db
push 0x10
push dword [eax]
push dword [ebp - 0x12c]
push edi
call ebx
push dword [ebp - 0xa8]
call fcn.00408db6
pop ecx
push dword [ebp - 0x12c]
call fcn.00408db6
push dword [ebp - 0xf4]
call fcn.00408db6
pop ecx
pop ecx
jmp 0x41263b
push dword [ebp - 0x12c]
call fcn.00408db6
pop ecx
lea ecx, [ebp - 0xd0]
call fcn.00411f06
push dword [ebp - 0x100]
mov esi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
call esi
test eax, eax
jne 0x412770
push dword [ebp - 0xd0]
call esi
push dword [ebp - 0xd0]
jmp 0x412720
cmp dword [ebp - 0x140], edi
je 0x4128b9
lea eax, [ebp - 0x144]
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.004096df
mov eax, dword [ebp - 0xb8]
mov dword [ebp - 0x1d4], 0x3c
mov dword [ebp - 0x1d0], 0x140
mov dword [ebp - 0x1cc], edi
mov dword [ebp - 0x1c8], edi
mov dword [ebp - 0x1c4], eax
cmp dword [ebp - 0xc0], edi
je 0x4127d5
lea eax, [ebp - 0xc4]
push eax
lea ecx, [ebp - 0x138]
call fcn.00409490
lea eax, [ebp - 0x138]
push eax
lea eax, [ebp - 0xe8]
push eax
call fcn.004096df
mov eax, dword [ebp - 0xe4]
neg eax
sbb eax, eax
and eax, dword [ebp - 0xe8]
xor ebx, ebx
mov dword [ebp - 0x1c0], eax
lea eax, [ebp - 0x1d4]
inc ebx
push eax
mov dword [ebp - 0x1bc], edi
mov dword [ebp - 0x1b8], ebx
mov dword [ebp - 0x19c], edi
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
cmp dword [ebp - 0x1b4], 0x20
ja 0x412897
cmp byte [ebp - 0x99], 0
jne 0x41283d
push str.Can_not_open_file
push edi
call fcn.0040c7eb
push dword [ebp - 0xe8]
call fcn.00408db6
push dword [ebp - 0xb8]
call fcn.00408db6
pop ecx
pop ecx
push dword [ebp - 0xd0]
call esi
push dword [ebp - 0xd0]
call fcn.00408db6
push dword [ebp - 0xf4]
call fcn.00408db6
mov eax, dword [ebp - 0xac]
pop ecx
pop ecx
cmp eax, edi
je 0x412885
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x104]
call fcn.00411c26
mov esi, ebx
jmp 0x4122bd
push dword [ebp - 0xe8]
mov ebx, dword [ebp - 0x19c]
call fcn.00408db6
push dword [ebp - 0xb8]
call fcn.00408db6
pop ecx
jmp 0x412aa0
cmp dword [ebp - 0xd8], edi
jne 0x412920
push str.setup.exe
lea ecx, [ebp - 0xdc]
call fcn.004097df
lea eax, [ebp - 0xdc]
push eax
lea eax, [ebp - 0xb8]
push eax
call fcn.004096df
push dword [eax]
call fcn.0040ab53
push dword [ebp - 0xb8]
mov bl, al
neg bl
sbb bl, bl
inc bl
call fcn.00408db6
pop ecx
test bl, bl
je 0x412920
cmp byte [ebp - 0x99], 0
jne 0x412760
push str.Can_not_find_setup.exe
push edi
call fcn.0040c7eb
jmp 0x412760
lea eax, [ebp - 0xf4]
push eax
lea ecx, [ebp - 0xb8]
call fcn.00403feb
lea eax, [ebp - 0xb8]
push eax
call fcn.0040af24
push str.__T_
lea ecx, [ebp - 0xe8]
call fcn.004086b4
lea eax, [ebp - 0xb8]
push eax
lea eax, [ebp - 0xe8]
push eax
lea ecx, [ebp - 0xdc]
call fcn.0040e488
push dword [ebp - 0xe8]
call fcn.00408db6
push dword [ebp - 0xb8]
call fcn.00408db6
pop ecx
pop ecx
push 0x41ed50
lea ecx, [ebp - 0xb8]
call fcn.004086b4
lea eax, [ebp - 0xf4]
push eax
lea eax, [ebp - 0xb8]
push eax
lea ecx, [ebp - 0xdc]
call fcn.0040e488
push dword [ebp - 0xb8]
call fcn.00408db6
pop ecx
cmp dword [ebp - 0xc0], edi
je 0x4129db
push 0x20
lea ecx, [ebp - 0xdc]
call fcn.00408726
lea eax, [ebp - 0xc4]
push eax
lea ecx, [ebp - 0xdc]
call fcn.00409490
xor eax, eax
mov word [ebp - 0x1f6], ax
lea eax, [ebp - 0xdc]
push eax
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0xb8]
push eax
mov dword [ebp - 0x228], 0x44
mov dword [ebp - 0x224], edi
mov dword [ebp - 0x220], edi
mov dword [ebp - 0x21c], edi
mov dword [ebp - 0x1fc], edi
mov dword [ebp - 0x1f4], edi
call fcn.0040a206
push eax
lea eax, [ebp - 0xa8]
push eax
call fcn.004096df
push dword [ebp - 0xb8]
call fcn.00408db6
pop ecx
lea eax, [ebp - 0x1e4]
push eax
lea eax, [ebp - 0x228]
push eax
push edi
push edi
push edi
push edi
push edi
push edi
push dword [ebp - 0xa8]
push edi
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x412a83
cmp byte [ebp - 0x99], al
jne 0x412a72
push edi
call fcn.0040c86b
push dword [ebp - 0xa8]
call fcn.00408db6
pop ecx
jmp 0x412760
push dword [ebp - 0x1e0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [ebp - 0xa8]
mov ebx, dword [ebp - 0x1e4]
call fcn.00408db6
pop ecx
cmp ebx, edi
je 0x412ac3
push 0xffffffffffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x120]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebx, dword [ebp - 0x120]
jmp 0x412855