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

Disassembly:
push ebp
lea ebp, [esp - 0x68]
sub esp, 0x1ec
push ebx
push esi
push edi
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.004111fc
push 0x25
mov dword [0x421478], eax
pop ecx
xor eax, eax
lea edi, [ebp - 0x184]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x184]
push eax
mov dword [ebp - 0x184], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x180], 6
jne 0x411718
cmp dword [ebp - 0x17c], 0
jne 0x411708
call fcn.00411567
cmp dword [ebp - 0x180], 6
jne 0x411718
cmp dword [ebp - 0x17c], 1
jae 0x41171a
cmp dword [ebp - 0x180], 6
jbe 0x41171f
call fcn.004115e8
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov eax, dword [ebp + 0x70]
mov dword [0x421470], eax
lea eax, [ebp - 0x94]
call fcn.004063ac
lea eax, [ebp + 0x40]
call fcn.004063ac
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ebx, eax
lea eax, [ebp + 0x5c]
call fcn.004020d2
lea ebx, [ebp + 0x40]
lea ecx, [ebp - 0x94]
lea edx, [ebp + 0x5c]
call fcn.0040978a
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
push 0x11
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c385
mov edi, eax
mov eax, 0x42156c
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
push 0x12
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c385
mov edi, eax
mov eax, 0x421578
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
push 0x16
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c385
mov edi, eax
mov eax, 0x421584
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
push 0x17
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c385
mov edi, eax
mov eax, 0x421590
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
push 0xf
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c385
mov edi, eax
mov eax, 0x42159c
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00412013
mov dword [esp], 0x2000
call fcn.0041207a
mov dword [ebp + 0x58], eax
pop ecx
mov ebx, 0x41b740
lea eax, [ebp + 4]
call fcn.004020d2
lea eax, [ebp - 0x34]
call fcn.004063ac
mov edi, dword [ebp + 0x40]
mov esi, str.__k
push esi
mov byte [ebp + 0x73], 0
push edi
call fcn.00412b4d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
jne 0x41185d
mov esi, 0x41b9f8
push esi
push edi
call fcn.00412b4d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
je 0x411863
mov byte [ebp + 0x73], 1
jmp 0x41188b
mov esi, 0x41b9f0
push esi
push edi
call fcn.00412b4d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
jne 0x41188b
mov esi, 0x41b9e8
push esi
push edi
call fcn.00412b4d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
je 0x4118b3
push esi
call fcn.004125ad
lea eax, [ebx + eax*2]
test eax, eax
pop ecx
je 0x4118b3
cmp byte [ebp + 0x73], 0
lea ecx, [ebp + 4]
push ecx
push eax
mov ecx, 0x41b9e0
jne 0x4118ae
mov ecx, 0x41b9d8
call fcn.004114b9
cmp dword [ebp + 8], 0
je 0x4118cf
push dword [ebp + 4]
mov ebx, dword [ebp + 0x58]
push ebx
call fcn.00412bab
pop ecx
pop ecx
lea eax, [ebp - 0x34]
call fcn.0040a431
push 0x41b9d0
push edi
call fcn.00412b4d
test eax, eax
pop ecx
pop ecx
jne 0x411917
push 0x41b9c8
push edi
call fcn.00412b4d
test eax, eax
pop ecx
pop ecx
jne 0x411917
push 0x41b9c0
push edi
call fcn.00412b4d
test eax, eax
pop ecx
pop ecx
jne 0x411917
push 0x41b9b8
push edi
call fcn.00412b4d
test eax, eax
pop ecx
pop ecx
mov byte [ebp + 0x58], 0
je 0x41191b
mov byte [ebp + 0x58], 1
lea eax, [ebp + 0x10]
call fcn.004063ac
lea eax, [ebp + 0x10]
push eax
push dword [0x421470]
call fcn.0040a763
lea eax, [ebp - 0x28]
call fcn.00409f24
push str.___InstallEnd__
push str.___Install__UTF_8_
push dword [ebp + 0x10]
lea ecx, [ebp - 0x28]
call fcn.00411264
test al, al
jne 0x41196d
cmp byte [ebp + 0x58], al
jne 0x411965
push dword [0x42156c]
push 0
call fcn.0040d153
xor ebx, ebx
inc ebx
jmp 0x411f41
lea eax, [ebp + 0x40]
push eax
call fcn.00409ae7
lea eax, [ebp + 0x40]
push eax
call fcn.00409a89
mov ebx, 0x41b9b0
lea eax, [ebp + 0x4c]
mov byte [ebp + 0x73], 0
call fcn.004020d2
mov esi, eax
lea eax, [ebp + 0x5c]
push eax
lea eax, [ebp + 0x40]
push eax
push 2
pop ecx
call fcn.004099fc
mov esi, dword [esi]
push dword [eax]
mov ecx, esi
call fcn.00409cf7
push dword [ebp + 0x5c]
mov ebx, eax
neg ebx
sbb bl, bl
inc bl
call fcn.00412013
push dword [ebp + 0x4c]
call fcn.00412013
test bl, bl
pop ecx
pop ecx
je 0x411a02
push 2
lea eax, [ebp + 0x5c]
push eax
lea eax, [ebp + 0x40]
mov byte [ebp + 0x73], 1
call fcn.0040992e
mov edi, eax
lea eax, [ebp + 0x40]
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
lea eax, [ebp + 0x40]
push eax
call fcn.00409ae7
lea eax, [ebp + 0x40]
push eax
call fcn.00409a89
lea eax, [ebp + 0x1c]
call fcn.004063ac
xor edi, edi
cmp dword [ebp - 0x24], edi
je 0x411b2d
lea eax, [ebp - 0x48]
call fcn.00411f81
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0040a0af
test al, al
jne 0x411a50
cmp byte [ebp + 0x58], al
jne 0x411a3f
push dword [0x421578]
push edi
call fcn.0040d153
lea eax, [ebp - 0x48]
push eax
call fcn.00411f9a
xor ebx, ebx
inc ebx
jmp 0x411f35
mov ebx, str.Title
lea eax, [ebp + 0x5c]
call fcn.004020d2
lea ecx, [ebp + 0x5c]
lea esi, [ebp - 0x48]
lea ebx, [ebp + 0x4c]
call fcn.0040a315
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
mov ebx, str.BeginPrompt
lea eax, [ebp + 0x5c]
call fcn.004020d2
lea ecx, [ebp + 0x5c]
lea ebx, [ebp + 0x34]
call fcn.0040a315
push dword [ebp + 0x5c]
call fcn.00412013
xor ebx, ebx
cmp dword [ebp + 0x38], ebx
pop ecx
je 0x411ada
cmp byte [ebp + 0x73], bl
jne 0x411ada
cmp byte [ebp + 0x58], bl
jne 0x411ada
push 0x24
push dword [ebp + 0x4c]
push dword [ebp + 0x34]
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
je 0x411ada
push dword [ebp + 0x34]
call fcn.00412013
push dword [ebp + 0x4c]
call fcn.00412013
pop ecx
pop ecx
lea eax, [ebp - 0x48]
push eax
call fcn.00411f9a
jmp 0x411f35
mov ebx, str.RunProgram
lea eax, [ebp + 0x5c]
call fcn.004020d2
lea ecx, [ebp + 0x5c]
lea esi, [ebp - 0x48]
lea ebx, [ebp + 0x28]
call fcn.0040a315
mov edi, eax
lea eax, [ebp + 0x1c]
call fcn.00409902
push dword [ebp + 0x28]
call fcn.00412013
push dword [ebp + 0x5c]
call fcn.00412013
push dword [ebp + 0x34]
call fcn.00412013
push dword [ebp + 0x4c]
call fcn.00412013
add esp, 0x10
lea eax, [ebp - 0x48]
push eax
call fcn.00411f9a
xor edi, edi
lea esi, [ebp - 0xc]
call fcn.004111bb
push dword [0x420a94]
mov eax, esi
call fcn.0040b5ee
test al, al
jne 0x411b5f
cmp byte [ebp + 0x58], al
jne 0x411b57
push dword [0x421584]
push edi
call fcn.0040d153
xor ebx, ebx
inc ebx
jmp 0x411f2c
push dword [ebp + 0x58]
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp - 8]
call fcn.0040a830
push eax
lea eax, [ebp + 0x10]
push eax
call fcn.00410c7f
push dword [ebp + 0x5c]
mov esi, eax
call fcn.00412013
cmp esi, edi
pop ecx
je 0x411bd5
xor ebx, ebx
inc ebx
cmp byte [ebp + 0x58], 0
jne 0x411f2c
cmp esi, ebx
jne 0x411ba4
push dword [0x421590]
jmp 0x411bb2
cmp esi, 0x80004005
jne 0x411bbd
push dword [0x42159c]
push edi
call fcn.0040d153
jmp 0x411f2c
cmp esi, 0x80004004
je 0x411f2c
push esi
push edi
call fcn.0040d182
jmp 0x411f2c
lea eax, [ebp - 0xac]
push eax
call fcn.004113e9
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
test eax, eax
jne 0x411bf6
xor ebx, ebx
inc ebx
jmp 0x411f21
cmp dword [ebp + 0x20], edi
jne 0x411c32
mov ebx, str.Setup.exe
lea eax, [ebp + 0x1c]
call fcn.0040a431
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x1c]
call fcn.0040daa5
push dword [eax]
call fcn.0040bc95
push dword [ebp + 0x5c]
mov bl, al
neg bl
sbb bl, bl
inc bl
call fcn.00412013
test bl, bl
pop ecx
jne 0x411bee
xor edi, edi
lea eax, [ebp + 0x28]
mov dword [ebp - 0xf0], 0x44
mov dword [ebp - 0xec], edi
mov dword [ebp - 0xe8], edi
mov dword [ebp - 0xe4], edi
mov dword [ebp - 0xc4], edi
mov word [ebp - 0xbe], di
mov dword [ebp - 0xbc], edi
call fcn.00409f24
push dword [ebp - 8]
lea eax, [ebp + 0x28]
call fcn.0040b081
test al, al
jne 0x411cc7
lea eax, [ebp + 0x4c]
call fcn.004063ac
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp - 8]
call fcn.0040a830
push dword [eax]
lea eax, [ebp + 0x4c]
call fcn.0040b03b
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x4c]
call fcn.0040daa5
mov edi, eax
lea eax, [ebp + 0x28]
call fcn.0040b644
push dword [ebp + 0x5c]
call fcn.00412013
push dword [ebp + 0x4c]
call fcn.00412013
pop ecx
pop ecx
lea edi, [ebp + 0x1c]
lea eax, [ebp + 0x34]
call fcn.0040686a
mov ebx, 0x41b958
lea eax, [ebp + 0x5c]
call fcn.004020d2
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x28]
call fcn.0040a830
lea ecx, [ebp + 0x5c]
mov ebx, eax
push ecx
lea eax, [ebp + 0x34]
call fcn.0040db94
push dword [ebp + 0x4c]
call fcn.00412013
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
pop ecx
push 0x20
lea esi, [ebp + 0x34]
call fcn.004063c5
lea edi, [ebp + 0x40]
call fcn.0040a6f7
lea edi, [ebp + 0x28]
lea eax, [ebp - 0xa0]
call fcn.00409f3d
mov eax, edi
call fcn.0040c08d
lea eax, [ebp + 0x4c]
call fcn.00409f24
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x10]
call fcn.0040daa5
push dword [eax]
lea eax, [ebp + 0x4c]
call fcn.0040b081
push dword [ebp + 0x5c]
mov bl, al
neg bl
sbb bl, bl
inc bl
call fcn.00412013
test bl, bl
pop ecx
je 0x411da0
lea eax, [ebp + 0x5c]
call fcn.004063ac
push dword [ebp + 0x10]
lea eax, [ebp + 0x5c]
call fcn.0040b03b
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp + 0x5c]
call fcn.0040daa5
mov edi, eax
lea eax, [ebp + 0x4c]
call fcn.0040b644
push dword [ebp - 0x18]
call fcn.00412013
push dword [ebp + 0x5c]
call fcn.00412013
pop ecx
pop ecx
lea eax, [ebp + 0x4c]
push eax
push str.__m_
lea eax, [ebp - 0x60]
call fcn.0040b60a
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x34]
call fcn.0040daa5
push eax
push 0x41b94c
lea eax, [ebp - 0x78]
call fcn.0040b60a
lea ecx, [ebp + 0x5c]
push ecx
mov ecx, eax
call fcn.0040b7fd
lea ecx, [ebp - 0x18]
push ecx
mov ecx, eax
call fcn.0040b7fd
lea ecx, [ebp - 0x54]
push ecx
mov ecx, eax
call fcn.0040b7fd
push dword [ebp - 0x18]
call fcn.00412013
push dword [ebp + 0x5c]
call fcn.00412013
push dword [ebp - 0x78]
call fcn.00412013
push dword [ebp - 0x6c]
call fcn.00412013
push dword [ebp - 0x60]
call fcn.00412013
add esp, 0x14
push 0x41b948
lea eax, [ebp + 0x5c]
call fcn.0040b60a
push eax
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x34]
call fcn.0040daa5
push eax
push str.___k_
lea eax, [ebp - 0x78]
call fcn.0040b60a
lea ecx, [ebp - 0x6c]
push ecx
mov ecx, eax
call fcn.0040b7fd
lea ecx, [ebp - 0x60]
push ecx
mov ecx, eax
call fcn.0040b7fd
mov edi, eax
lea esi, [ebp - 0x54]
call fcn.0040b8b9
push dword [ebp - 0x60]
call fcn.00412013
push dword [ebp - 0x6c]
call fcn.00412013
push dword [ebp - 0x78]
call fcn.00412013
push dword [ebp - 0x18]
call fcn.00412013
push dword [ebp + 0x5c]
call fcn.00412013
add esp, 0x14
lea eax, [ebp - 0x88]
push eax
lea eax, [ebp - 0xf0]
push eax
push dword [ebp - 8]
xor esi, esi
push esi
push esi
push esi
push esi
push esi
push dword [ebp - 0x54]
push esi
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x411ebc
push esi
call fcn.0040d1c4
xor ebx, ebx
inc ebx
jmp 0x411ef3
push 0xffffffffffffffff
push dword [ebp - 0x88]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp - 0x1c]
push eax
push dword [ebp - 0x88]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push dword [ebp - 0x84]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [ebp - 0x88]
call esi
mov ebx, dword [ebp - 0x1c]
push dword [ebp - 0x54]
call fcn.00412013
push dword [ebp + 0x4c]
call fcn.00412013
push dword [ebp - 0xa0]
call fcn.00412013
push dword [ebp + 0x34]
call fcn.00412013
push dword [ebp + 0x28]
call fcn.00412013
add esp, 0x14
lea esi, [ebp - 0xac]
call fcn.00411418
lea eax, [ebp - 0xc]
push eax
call fcn.004111c9
push dword [ebp + 0x1c]
call fcn.00412013
mov edi, dword [ebp + 0x40]
pop ecx
push dword [ebp - 0x28]
call fcn.00412013
push dword [ebp + 0x10]
call fcn.00412013
push dword [ebp - 0x34]
call fcn.00412013
push dword [ebp + 4]
call fcn.00412013
push edi
call fcn.00412013
push dword [ebp - 0x94]
call fcn.00412013
add esp, 0x18
pop edi
pop esi
mov eax, ebx
pop ebx
add ebp, 0x68
leave
ret 0x10