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

Disassembly:
push ebp
lea ebp, [esp - 0x68]
sub esp, 0x1e0
push ebx
push esi
push edi
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.0041101e
push 0x25
mov dword [0x421478], eax
pop ecx
xor eax, eax
lea edi, [ebp - 0x178]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x178]
push eax
mov dword [ebp - 0x178], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0x174], 6
jne 0x411537
cmp dword [ebp - 0x170], 0
jne 0x411527
call fcn.00411386
cmp dword [ebp - 0x174], 6
jne 0x411537
cmp dword [ebp - 0x170], 1
jae 0x411539
cmp dword [ebp - 0x174], 6
jbe 0x41153e
call fcn.00411407
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov eax, dword [ebp + 0x70]
mov dword [0x421470], eax
lea eax, [ebp - 0x88]
call fcn.00406383
lea eax, [ebp + 0x40]
call fcn.00406383
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ebx, eax
lea eax, [ebp + 0x5c]
call fcn.00402152
lea ebx, [ebp + 0x40]
lea ecx, [ebp - 0x88]
lea edx, [ebp + 0x5c]
call fcn.0040978a
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
push 0x11
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c20b
mov edi, eax
mov eax, 0x42156c
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
push 0x12
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c20b
mov edi, eax
mov eax, 0x421578
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
push 0x16
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c20b
mov edi, eax
mov eax, 0x421584
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
push 0x17
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c20b
mov edi, eax
mov eax, 0x421590
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
push 0xf
lea eax, [ebp + 0x5c]
push eax
call fcn.0040c20b
mov edi, eax
mov eax, 0x42159c
call fcn.00409902
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
lea eax, [ebp - 0x1c]
call fcn.00406383
mov ebx, 0x41b740
lea eax, [ebp + 0x34]
call fcn.00402152
mov esi, str.__k
push esi
push dword [ebp + 0x40]
xor bl, bl
call fcn.004129ad
pop ecx
pop ecx
mov edi, eax
test edi, edi
jne 0x41166c
mov esi, 0x41b9ec
push esi
push dword [ebp + 0x40]
call fcn.004129ad
mov edi, eax
test edi, edi
pop ecx
pop ecx
je 0x411670
mov bl, 1
jmp 0x41169c
mov esi, 0x41b9e4
push esi
push dword [ebp + 0x40]
call fcn.004129ad
mov edi, eax
test edi, edi
pop ecx
pop ecx
jne 0x41169c
mov esi, 0x41b9dc
push esi
push dword [ebp + 0x40]
call fcn.004129ad
mov edi, eax
test edi, edi
pop ecx
pop ecx
je 0x4116c2
push esi
call fcn.0041240d
lea eax, [edi + eax*2]
test eax, eax
pop ecx
je 0x4116c2
test bl, bl
lea ecx, [ebp + 0x34]
push ecx
push eax
mov ecx, 0x41b9d4
jne 0x4116bd
mov ecx, 0x41b9cc
call fcn.004112d8
mov eax, dword [ebp + 0x38]
test eax, eax
je 0x4116e7
add eax, eax
push eax
call fcn.00411ede
push dword [ebp + 0x34]
mov ebx, eax
push ebx
call fcn.00412a0b
add esp, 0xc
lea eax, [ebp - 0x1c]
call fcn.0040a43e
push dword [ebp + 0x34]
call fcn.00411e77
mov esi, dword [ebp + 0x40]
mov dword [esp], 0x41b9c4
push esi
call fcn.004129ad
test eax, eax
pop ecx
pop ecx
jne 0x41173c
push 0x41b9bc
push esi
call fcn.004129ad
test eax, eax
pop ecx
pop ecx
jne 0x41173c
push 0x41b9b4
push esi
call fcn.004129ad
test eax, eax
pop ecx
pop ecx
jne 0x41173c
push 0x41b9ac
push esi
call fcn.004129ad
test eax, eax
pop ecx
pop ecx
mov byte [ebp + 0x58], 0
je 0x411740
mov byte [ebp + 0x58], 1
lea eax, [ebp + 0x34]
call fcn.00406383
lea eax, [ebp + 0x34]
push eax
push dword [0x421470]
call fcn.0040a770
lea eax, [ebp - 0x28]
call fcn.00409f24
mov ecx, dword [ebp + 0x34]
push str.___InstallEnd__
push str.___Install__UTF_8_
lea edx, [ebp - 0x28]
call fcn.00411086
test al, al
jne 0x411792
cmp byte [ebp + 0x58], al
jne 0x41178a
push dword [0x42156c]
push 0
call fcn.0040cfd9
xor ebx, ebx
inc ebx
jmp 0x411d54
lea eax, [ebp + 0x40]
push eax
call fcn.00409ae7
lea eax, [ebp + 0x40]
push eax
call fcn.00409a89
mov ebx, 0x41b9a4
lea eax, [ebp + 0x4c]
mov byte [ebp + 0x73], 0
call fcn.00402152
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.00411e77
push dword [ebp + 0x4c]
call fcn.00411e77
test bl, bl
pop ecx
pop ecx
je 0x411827
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.00411e77
pop ecx
lea eax, [ebp + 0x40]
push eax
call fcn.00409ae7
lea eax, [ebp + 0x40]
push eax
call fcn.00409a89
lea eax, [ebp + 0x10]
call fcn.00406383
xor edi, edi
cmp dword [ebp - 0x24], edi
je 0x411952
lea eax, [ebp - 0x3c]
call fcn.00411d8e
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0040a0af
test al, al
jne 0x411875
cmp byte [ebp + 0x58], al
jne 0x411864
push dword [0x421578]
push edi
call fcn.0040cfd9
lea eax, [ebp - 0x3c]
push eax
call fcn.00411da7
xor ebx, ebx
inc ebx
jmp 0x411d4b
mov ebx, str.Title
lea eax, [ebp + 0x5c]
call fcn.00402152
lea ecx, [ebp + 0x5c]
lea esi, [ebp - 0x3c]
lea ebx, [ebp + 0x4c]
call fcn.0040a2df
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
mov ebx, str.BeginPrompt
lea eax, [ebp + 0x5c]
call fcn.00402152
lea ecx, [ebp + 0x5c]
lea ebx, [ebp + 0x28]
call fcn.0040a2df
push dword [ebp + 0x5c]
call fcn.00411e77
xor ebx, ebx
cmp dword [ebp + 0x2c], ebx
pop ecx
je 0x4118ff
cmp byte [ebp + 0x73], bl
jne 0x4118ff
cmp byte [ebp + 0x58], bl
jne 0x4118ff
push 0x24
push dword [ebp + 0x4c]
push dword [ebp + 0x28]
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
je 0x4118ff
push dword [ebp + 0x28]
call fcn.00411e77
push dword [ebp + 0x4c]
call fcn.00411e77
pop ecx
pop ecx
lea eax, [ebp - 0x3c]
push eax
call fcn.00411da7
jmp 0x411d4b
mov ebx, str.RunProgram
lea eax, [ebp + 0x5c]
call fcn.00402152
lea ecx, [ebp + 0x5c]
lea esi, [ebp - 0x3c]
lea ebx, [ebp + 0x1c]
call fcn.0040a2df
mov edi, eax
lea eax, [ebp + 0x10]
call fcn.00409902
push dword [ebp + 0x1c]
call fcn.00411e77
push dword [ebp + 0x5c]
call fcn.00411e77
push dword [ebp + 0x28]
call fcn.00411e77
push dword [ebp + 0x4c]
call fcn.00411e77
add esp, 0x10
lea eax, [ebp - 0x3c]
push eax
call fcn.00411da7
xor edi, edi
lea esi, [ebp - 4]
call fcn.00410fdd
push dword [0x420a94]
mov eax, esi
call fcn.0040b580
test al, al
jne 0x411984
cmp byte [ebp + 0x58], al
jne 0x41197c
push dword [0x421584]
push edi
call fcn.0040cfd9
xor ebx, ebx
inc ebx
jmp 0x411d42
push dword [ebp + 0x58]
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp]
call fcn.0040a83d
push eax
lea eax, [ebp + 0x34]
push eax
call fcn.00410aa1
push dword [ebp + 0x5c]
mov esi, eax
call fcn.00411e77
cmp esi, edi
pop ecx
je 0x4119fa
xor ebx, ebx
inc ebx
cmp byte [ebp + 0x58], 0
jne 0x411d42
cmp esi, ebx
jne 0x4119c9
push dword [0x421590]
jmp 0x4119d7
cmp esi, 0x80004005
jne 0x4119e2
push dword [0x42159c]
push edi
call fcn.0040cfd9
jmp 0x411d42
cmp esi, 0x80004004
je 0x411d42
push esi
push edi
call fcn.0040d008
jmp 0x411d42
lea eax, [ebp - 0xa0]
push eax
call fcn.00411208
push dword [ebp]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
test eax, eax
jne 0x411a1b
xor ebx, ebx
inc ebx
jmp 0x411d37
cmp dword [ebp + 0x14], edi
jne 0x411a57
mov ebx, str.Setup.exe
lea eax, [ebp + 0x10]
call fcn.0040a43e
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x10]
call fcn.0040d8bc
push dword [eax]
call fcn.0040bbc9
push dword [ebp + 0x5c]
mov bl, al
neg bl
sbb bl, bl
inc bl
call fcn.00411e77
test bl, bl
pop ecx
jne 0x411a13
xor edi, edi
lea eax, [ebp + 0x1c]
mov dword [ebp - 0xe4], 0x44
mov dword [ebp - 0xe0], edi
mov dword [ebp - 0xdc], edi
mov dword [ebp - 0xd8], edi
mov dword [ebp - 0xb8], edi
mov word [ebp - 0xb2], di
mov dword [ebp - 0xb0], edi
call fcn.00409f24
push dword [ebp]
lea eax, [ebp + 0x1c]
call fcn.0040b013
test al, al
jne 0x411aec
lea eax, [ebp + 0x4c]
call fcn.00406383
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp]
call fcn.0040a83d
push dword [eax]
lea eax, [ebp + 0x4c]
call fcn.0040afcd
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x4c]
call fcn.0040d8bc
mov edi, eax
lea eax, [ebp + 0x1c]
call fcn.0040b5d6
push dword [ebp + 0x5c]
call fcn.00411e77
push dword [ebp + 0x4c]
call fcn.00411e77
pop ecx
pop ecx
lea edi, [ebp + 0x10]
lea eax, [ebp + 0x28]
call fcn.00406841
mov ebx, 0x41b94c
lea eax, [ebp + 0x5c]
call fcn.00402152
lea eax, [ebp + 0x4c]
push eax
lea ecx, [ebp + 0x1c]
call fcn.0040a83d
lea ecx, [ebp + 0x5c]
mov ebx, eax
push ecx
lea eax, [ebp + 0x28]
call fcn.0040d9ab
push dword [ebp + 0x4c]
call fcn.00411e77
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
pop ecx
push 0x20
lea esi, [ebp + 0x28]
call fcn.0040639c
lea edi, [ebp + 0x40]
call fcn.0040a704
lea edi, [ebp + 0x1c]
lea eax, [ebp - 0x94]
call fcn.00409f3d
mov eax, edi
call fcn.0040bf13
lea eax, [ebp + 0x4c]
call fcn.00409f24
lea eax, [ebp + 0x5c]
push eax
lea ecx, [ebp + 0x34]
call fcn.0040d8bc
push dword [eax]
lea eax, [ebp + 0x4c]
call fcn.0040b013
push dword [ebp + 0x5c]
mov bl, al
neg bl
sbb bl, bl
inc bl
call fcn.00411e77
test bl, bl
pop ecx
je 0x411bc5
lea eax, [ebp + 0x5c]
call fcn.00406383
push dword [ebp + 0x34]
lea eax, [ebp + 0x5c]
call fcn.0040afcd
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp + 0x5c]
call fcn.0040d8bc
mov edi, eax
lea eax, [ebp + 0x4c]
call fcn.0040b5d6
push dword [ebp - 0x10]
call fcn.00411e77
push dword [ebp + 0x5c]
call fcn.00411e77
pop ecx
pop ecx
lea eax, [ebp + 0x4c]
push eax
push str.__m_
lea eax, [ebp - 0x54]
call fcn.0040b59c
push eax
lea eax, [ebp - 0x60]
push eax
lea ecx, [ebp + 0x28]
call fcn.0040d8bc
push eax
push 0x41b940
lea eax, [ebp - 0x6c]
call fcn.0040b59c
lea ecx, [ebp + 0x5c]
push ecx
mov ecx, eax
call fcn.0040b731
lea ecx, [ebp - 0x10]
push ecx
mov ecx, eax
call fcn.0040b731
lea ecx, [ebp - 0x48]
push ecx
mov ecx, eax
call fcn.0040b731
push dword [ebp - 0x10]
call fcn.00411e77
push dword [ebp + 0x5c]
call fcn.00411e77
push dword [ebp - 0x6c]
call fcn.00411e77
push dword [ebp - 0x60]
call fcn.00411e77
push dword [ebp - 0x54]
call fcn.00411e77
add esp, 0x14
push 0x41b93c
lea eax, [ebp + 0x5c]
call fcn.0040b59c
push eax
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x1c]
call fcn.0040d8bc
push eax
push str.___k_
lea eax, [ebp - 0x6c]
call fcn.0040b59c
lea ecx, [ebp - 0x60]
push ecx
mov ecx, eax
call fcn.0040b731
lea ecx, [ebp - 0x54]
push ecx
mov ecx, eax
call fcn.0040b731
mov edi, eax
lea esi, [ebp - 0x48]
call fcn.0040b7ed
push dword [ebp - 0x54]
call fcn.00411e77
push dword [ebp - 0x60]
call fcn.00411e77
push dword [ebp - 0x6c]
call fcn.00411e77
push dword [ebp - 0x10]
call fcn.00411e77
push dword [ebp + 0x5c]
call fcn.00411e77
add esp, 0x14
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp - 0xe4]
push eax
push dword [ebp]
xor esi, esi
push esi
push esi
push esi
push esi
push esi
push dword [ebp - 0x48]
push esi
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
jne 0x411cde
push esi
call fcn.0040d04a
xor ebx, ebx
inc ebx
jmp 0x411d09
push 0xffffffffffffffff
push dword [ebp - 0x7c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [ebp + 0xc]
push eax
push dword [ebp - 0x7c]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
push dword [ebp - 0x78]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push dword [ebp - 0x7c]
call esi
mov ebx, dword [ebp + 0xc]
push dword [ebp - 0x48]
call fcn.00411e77
push dword [ebp + 0x4c]
call fcn.00411e77
push dword [ebp - 0x94]
call fcn.00411e77
push dword [ebp + 0x28]
call fcn.00411e77
push dword [ebp + 0x1c]
call fcn.00411e77
add esp, 0x14
lea esi, [ebp - 0xa0]
call fcn.00411237
lea eax, [ebp - 4]
push eax
call fcn.00410feb
push dword [ebp + 0x10]
call fcn.00411e77
pop ecx
push dword [ebp - 0x28]
call fcn.00411e77
push dword [ebp + 0x34]
call fcn.00411e77
push dword [ebp - 0x1c]
call fcn.00411e77
push dword [ebp + 0x40]
call fcn.00411e77
push dword [ebp - 0x88]
call fcn.00411e77
add esp, 0x14
pop edi
pop esi
mov eax, ebx
pop ebx
add ebp, 0x68
leave
ret 0x10