Function at 0x4115ce
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.00411129
push 0x25
mov dword [0x421498], 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 0x411642
cmp dword [ebp - 0x17c], 0
jne 0x411632
call fcn.00411491
cmp dword [ebp - 0x180], 6
jne 0x411642
cmp dword [ebp - 0x17c], 1
jae 0x411644
cmp dword [ebp - 0x180], 6
jbe 0x411649
call fcn.00411512
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov eax, dword [ebp + 0x70]
mov dword [0x421490], eax
lea eax, [ebp - 0x94]
call fcn.004063db
lea eax, [ebp + 0x40]
call fcn.004063db
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ebx, eax
lea eax, [ebp + 0x5c]
call fcn.004020bd
lea ebx, [ebp + 0x40]
lea ecx, [ebp - 0x94]
lea edx, [ebp + 0x5c]
call fcn.004097b6
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
push 0x11
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c264
mov edi, eax
mov eax, 0x42158c
call fcn.0040992e
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
push 0x12
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c264
mov edi, eax
mov eax, 0x421598
call fcn.0040992e
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
push 0x16
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c264
mov edi, eax
mov eax, 0x4215a4
call fcn.0040992e
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
push 0x17
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c264
mov edi, eax
mov eax, 0x4215b0
call fcn.0040992e
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
push 0xf
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c264
mov edi, eax
mov eax, 0x4215bc
call fcn.0040992e
push dword [ebp + 0x5c]
call fcn.00411f3d
mov dword [esp], 0x2000
call fcn.00411fa4
mov dword [ebp + 0x58], eax
pop ecx
mov ebx, 0x41b740
lea eax, [ebp + 4]
call fcn.004020bd
lea eax, [ebp - 0x34]
call fcn.004063db
mov edi, dword [ebp + 0x40]
mov esi, str.__k
push esi
mov byte [ebp + 0x73], 0
push edi
call fcn.00412a5d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
jne 0x411787
mov esi, 0x41b9ec
push esi
push edi
call fcn.00412a5d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
je 0x41178d
mov byte [ebp + 0x73], 1
jmp 0x4117b5
mov esi, 0x41b9e4
push esi
push edi
call fcn.00412a5d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
jne 0x4117b5
mov esi, 0x41b9dc
push esi
push edi
call fcn.00412a5d
mov ebx, eax
test ebx, ebx
pop ecx
pop ecx
je 0x4117dd
push esi
call fcn.004124dd
lea eax, [ebx + eax*2]
test eax, eax
pop ecx
je 0x4117dd
cmp byte [ebp + 0x73], 0
lea ecx, [ebp + 4]
push ecx
push eax
mov ecx, 0x41b9d4
jne 0x4117d8
mov ecx, 0x41b9cc
call fcn.004113e3
cmp dword [ebp + 8], 0
je 0x4117f9
push dword [ebp + 4]
mov ebx, dword [ebp + 0x58]
push ebx
call fcn.00412abb
pop ecx
pop ecx
lea eax, [ebp - 0x34]
call fcn.0040a497
push 0x41b9c4
push edi
call fcn.00412a5d
test eax, eax
pop ecx
pop ecx
jne 0x411841
push 0x41b9bc
push edi
call fcn.00412a5d
test eax, eax
pop ecx
pop ecx
jne 0x411841
push 0x41b9b4
push edi
call fcn.00412a5d
test eax, eax
pop ecx
pop ecx
jne 0x411841
push 0x41b9ac
push edi
call fcn.00412a5d
test eax, eax
pop ecx
pop ecx
mov byte [ebp + 0x58], 0
je 0x411845
mov byte [ebp + 0x58], 1
lea eax, [ebp + 0x10]
call fcn.004063db
lea eax, [ebp + 0x10]
push eax
push dword [0x421490]
call fcn.0040a7c9
lea eax, [ebp - 0x28]
call fcn.00409f47
mov ecx, dword [ebp + 0x10]
push str.___InstallEnd__
push str.___Install__UTF_8_
lea edx, [ebp - 0x28]
call fcn.00411191
test al, al
jne 0x411897
cmp byte [ebp + 0x58], al
jne 0x41188f
push dword [0x42158c]
push 0
call fcn.0040d019
xor ebx, ebx
inc ebx
jmp 0x411e6b
lea eax, [ebp + 0x40]
push eax
call fcn.00409b13
lea eax, [ebp + 0x40]
push eax
call fcn.00409ab5
mov ebx, 0x41b9a4
lea eax, [ebp + 0x4c]
mov byte [ebp + 0x73], 0
call fcn.004020bd
mov esi, eax
lea eax, [ebp + 0x5c]
push eax
lea eax, [ebp + 0x40]
push eax
push 2
pop ecx
call fcn.00409a28
mov esi, dword [esi]
push dword [eax]
mov ecx, esi
call fcn.00409d23
push dword [ebp + 0x5c]
mov ebx, eax
neg ebx
sbb bl, bl
inc bl
call fcn.00411f3d
push dword [ebp + 0x4c]
call fcn.00411f3d
test bl, bl
pop ecx
pop ecx
je 0x41192c
push 2
lea eax, [ebp + 0x5c]
push eax
lea eax, [ebp + 0x40]
mov byte [ebp + 0x73], 1
call fcn.0040995a
mov edi, eax
lea eax, [ebp + 0x40]
call fcn.0040992e
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
lea eax, [ebp + 0x40]
push eax
call fcn.00409b13
lea eax, [ebp + 0x40]
push eax
call fcn.00409ab5
lea eax, [ebp + 0x1c]
call fcn.004063db
xor edi, edi
cmp dword [ebp - 0x24], edi
je 0x411a57
lea eax, [ebp - 0x48]
call fcn.00411eab
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0040a0d2
test al, al
jne 0x41197a
cmp byte [ebp + 0x58], al
jne 0x411969
push dword [0x421598]
push edi
call fcn.0040d019
lea eax, [ebp - 0x48]
push eax
call fcn.00411ec4
xor ebx, ebx
inc ebx
jmp 0x411e5f
mov ebx, str.Title
lea eax, [ebp + 0x5c]
call fcn.004020bd
lea ecx, [ebp + 0x5c]
lea esi, [ebp - 0x48]
lea ebx, [ebp + 0x4c]
call fcn.0040a338
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
mov ebx, str.BeginPrompt
lea eax, [ebp + 0x5c]
call fcn.004020bd
lea ecx, [ebp + 0x5c]
lea ebx, [ebp + 0x34]
call fcn.0040a338
push dword [ebp + 0x5c]
call fcn.00411f3d
xor ebx, ebx
cmp dword [ebp + 0x38], ebx
pop ecx
je 0x411a04
cmp byte [ebp + 0x73], bl
jne 0x411a04
cmp byte [ebp + 0x58], bl
jne 0x411a04
push 0x24
push dword [ebp + 0x4c]
push dword [ebp + 0x34]
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
je 0x411a04
push dword [ebp + 0x34]
call fcn.00411f3d
push dword [ebp + 0x4c]
call fcn.00411f3d
pop ecx
pop ecx
lea eax, [ebp - 0x48]
push eax
call fcn.00411ec4
jmp 0x411e5f
mov ebx, str.RunProgram
lea eax, [ebp + 0x5c]
call fcn.004020bd
lea ecx, [ebp + 0x5c]
lea esi, [ebp - 0x48]
lea ebx, [ebp + 0x28]
call fcn.0040a338
mov edi, eax
lea eax, [ebp + 0x1c]
call fcn.0040992e
push dword [ebp + 0x28]
call fcn.00411f3d
push dword [ebp + 0x5c]
call fcn.00411f3d
push dword [ebp + 0x34]
call fcn.00411f3d
push dword [ebp + 0x4c]
call fcn.00411f3d
add esp, 0x10
lea eax, [ebp - 0x48]
push eax
call fcn.00411ec4
xor edi, edi
lea esi, [ebp - 0xc]
call fcn.004110e8
push dword [0x420a94]
mov eax, esi
call fcn.0040b5d9
test al, al
jne 0x411a89
cmp byte [ebp + 0x58], al
jne 0x411a81
push dword [0x4215a4]
push edi
call fcn.0040d019
xor ebx, ebx
inc ebx
jmp 0x411e56
push dword [ebp + 0x58]
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp - 8]
call fcn.0040a896
push eax
lea eax, [ebp + 0x10]
push eax
call fcn.00410bb6
push dword [ebp + 0x5c]
mov esi, eax
call fcn.00411f3d
cmp esi, edi
pop ecx
je 0x411aff
xor ebx, ebx
inc ebx
cmp byte [ebp + 0x58], 0
jne 0x411e56
cmp esi, ebx
jne 0x411ace
push dword [0x4215b0]
jmp 0x411adc
cmp esi, 0x80004005
jne 0x411ae7
push dword [0x4215bc]
push edi
call fcn.0040d019
jmp 0x411e56
cmp esi, 0x80004004
je 0x411e56
push esi
push edi
call fcn.0040d048
jmp 0x411e56
lea eax, [ebp - 0xac]
push eax
call fcn.00411313
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
test eax, eax
jne 0x411b20
xor ebx, ebx
inc ebx
jmp 0x411e4b
cmp dword [ebp + 0x20], edi
jne 0x411b5c
mov ebx, str.Setup.exe
lea eax, [ebp + 0x1c]
call fcn.0040a497
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x1c]
call fcn.0040d8ff
push dword [eax]
call fcn.0040bc22
push dword [ebp + 0x5c]
mov bl, al
neg bl
sbb bl, bl
inc bl
call fcn.00411f3d
test bl, bl
pop ecx
jne 0x411b18
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.00409f47
push dword [ebp - 8]
lea eax, [ebp + 0x28]
call fcn.0040b06c
test al, al
jne 0x411bf1
lea eax, [ebp + 0x4c]
call fcn.004063db
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp - 8]
call fcn.0040a896
push dword [eax]
lea eax, [ebp + 0x4c]
call fcn.0040b026
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x4c]
call fcn.0040d8ff
mov edi, eax
lea eax, [ebp + 0x28]
call fcn.0040b62f
push dword [ebp + 0x5c]
call fcn.00411f3d
push dword [ebp + 0x4c]
call fcn.00411f3d
pop ecx
pop ecx
lea edi, [ebp + 0x1c]
lea eax, [ebp + 0x34]
call fcn.00406899
mov ebx, 0x41b94c
lea eax, [ebp + 0x5c]
call fcn.004020bd
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x28]
call fcn.0040a896
lea ecx, [ebp + 0x5c]
mov ebx, eax
push ecx
lea eax, [ebp + 0x34]
call fcn.0040d9ee
push dword [ebp + 0x4c]
call fcn.00411f3d
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
pop ecx
push 0x20
lea esi, [ebp + 0x34]
call fcn.004063f4
lea edi, [ebp + 0x40]
call fcn.0040a75d
lea edi, [ebp + 0x28]
lea eax, [ebp - 0xa0]
call fcn.00409f60
mov eax, edi
call fcn.0040bf6c
lea eax, [ebp + 0x4c]
call fcn.00409f47
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x10]
call fcn.0040d8ff
push dword [eax]
lea eax, [ebp + 0x4c]
call fcn.0040b06c
push dword [ebp + 0x5c]
mov bl, al
neg bl
sbb bl, bl
inc bl
call fcn.00411f3d
test bl, bl
pop ecx
je 0x411cca
lea eax, [ebp + 0x5c]
call fcn.004063db
push dword [ebp + 0x10]
lea eax, [ebp + 0x5c]
call fcn.0040b026
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp + 0x5c]
call fcn.0040d8ff
mov edi, eax
lea eax, [ebp + 0x4c]
call fcn.0040b62f
push dword [ebp - 0x18]
call fcn.00411f3d
push dword [ebp + 0x5c]
call fcn.00411f3d
pop ecx
pop ecx
lea eax, [ebp + 0x4c]
push eax
push str.__m_
lea eax, [ebp - 0x60]
call fcn.0040b5f5
push eax
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp + 0x34]
call fcn.0040d8ff
push eax
push 0x41b940
lea eax, [ebp - 0x78]
call fcn.0040b5f5
lea ecx, [ebp + 0x5c]
push ecx
mov ecx, eax
call fcn.0040b78a
lea ecx, [ebp - 0x18]
push ecx
mov ecx, eax
call fcn.0040b78a
lea ecx, [ebp - 0x54]
push ecx
mov ecx, eax
call fcn.0040b78a
push dword [ebp - 0x18]
call fcn.00411f3d
push dword [ebp + 0x5c]
call fcn.00411f3d
push dword [ebp - 0x78]
call fcn.00411f3d
push dword [ebp - 0x6c]
call fcn.00411f3d
push dword [ebp - 0x60]
call fcn.00411f3d
add esp, 0x14
push 0x41b93c
lea eax, [ebp + 0x5c]
call fcn.0040b5f5
push eax
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x34]
call fcn.0040d8ff
push eax
push str.___k_
lea eax, [ebp - 0x78]
call fcn.0040b5f5
lea ecx, [ebp - 0x6c]
push ecx
mov ecx, eax
call fcn.0040b78a
lea ecx, [ebp - 0x60]
push ecx
mov ecx, eax
call fcn.0040b78a
mov edi, eax
lea esi, [ebp - 0x54]
call fcn.0040b846
push dword [ebp - 0x60]
call fcn.00411f3d
push dword [ebp - 0x6c]
call fcn.00411f3d
push dword [ebp - 0x78]
call fcn.00411f3d
push dword [ebp - 0x18]
call fcn.00411f3d
push dword [ebp + 0x5c]
call fcn.00411f3d
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 0x411de6
push esi
call fcn.0040d08a
xor ebx, ebx
inc ebx
jmp 0x411e1d
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.00411f3d
push dword [ebp + 0x4c]
call fcn.00411f3d
push dword [ebp - 0xa0]
call fcn.00411f3d
push dword [ebp + 0x34]
call fcn.00411f3d
push dword [ebp + 0x28]
call fcn.00411f3d
add esp, 0x14
lea esi, [ebp - 0xac]
call fcn.00411342
lea eax, [ebp - 0xc]
push eax
call fcn.004110f6
push dword [ebp + 0x1c]
call fcn.00411f3d
mov edi, dword [ebp + 0x40]
pop ecx
push dword [ebp - 0x28]
call fcn.00411f3d
push dword [ebp + 0x10]
call fcn.00411f3d
push dword [ebp - 0x34]
call fcn.00411f3d
push dword [ebp + 4]
call fcn.00411f3d
push edi
call fcn.00411f3d
push dword [ebp - 0x94]
call fcn.00411f3d
add esp, 0x18
pop edi
pop esi
mov eax, ebx
pop ebx
add ebp, 0x68
leave
ret 0x10