Function at 0x40e450
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x42a55b
mov eax, dword fs:[0]
push eax
sub esp, 0x168
mov eax, dword [0x4371c0]
xor eax, esp
mov dword [esp + 0x160], eax
push ebx
push esi
push edi
mov eax, dword [0x4371c0]
xor eax, esp
push eax
lea eax, [esp + 0x178]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ecx, ecx
or ebx, 0xffffffff
mov dword [esp + 0x1c], 0
mov edi, 5
mov dword [esp + 0x14], 0
mov dword [esp + 0x38], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x60], 7
mov dword [esp + 0x5c], ecx
mov word [esp + 0x4c], cx
mov dword [esp + 0x180], ecx
mov dword [0x439bc8], eax
lea eax, [esp + 0x1c]
push eax
mov dword [esp + 0x38], 1
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov ecx, eax
mov dword [esp + 0x10], ecx
test ecx, ecx
jne 0x40e54a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x40e52b
movzx esi, si
or esi, 0x80070000
test esi, esi
mov eax, 0x80004005
cmovns esi, eax
push esi
push 0x4eb
push str.setupexe.cpp
call fcn.00410a40
jmp 0x40ea3f
mov esi, 1
cmp dword [esp + 0x1c], esi
jle 0x40e9e9
mov ebx, dword [sym.imp.KERNEL32.dll_CompareStringW]
lea edi, [esi + 1]
mov edx, dword [ecx + esi*4]
movzx eax, word [edx]
cmp eax, 0x2d
je 0x40e576
cmp eax, 0x2f
jne 0x40e9da
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esp + 0x44], eax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e580
sub ecx, dword [esp + 0x44]
sar ecx, 1
cmp ecx, 1
jbe 0x40e9da
push 0xffffffffffffffff
push 0x432fa0
push 0xffffffffffffffff
lea eax, [edx + 2]
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e960
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.extract
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e960
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push 0x432fb8
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e960
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.msicl
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e6f9
mov ecx, dword [esp + 0x10]
cmp edi, dword [esp + 0x1c]
jge 0x40e684
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e684
cmp eax, 0x2d
je 0x40e684
cmp eax, 0x2f
je 0x40e684
push dword [ecx + esi*4 + 4]
inc esi
lea ecx, [esp + 0x50]
inc edi
call fcn.00401c90
lea ecx, [esp + 0x4c]
call fcn.0040bdf0
push 0x432858
lea ecx, [esp + 0x50]
call fcn.004027f0
cmp dword [esp + 0x60], 8
lea eax, [esp + 0x4c]
push 0
cmovae eax, dword [esp + 0x50]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040fd20
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
inc esi
inc edi
cmp esi, dword [esp + 0x1c]
jl 0x40e562
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x40e998
lea eax, [esp + 0x30]
push eax
push 0xc739
push dword [0x439bc8]
call fcn.00410470
mov esi, eax
test esi, esi
js 0x40ea3f
lea eax, [esp + 0x2c]
push eax
push 0x7d5
push dword [0x439bc8]
call fcn.00410470
mov esi, eax
test esi, esi
js 0x40ea3f
push 0
push dword [esp + 0x34]
push dword [esp + 0x34]
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40ea3f
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.quiet
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e730
call fcn.0040ce80
movzx eax, al
neg eax
sbb eax, eax
add eax, 3
mov dword [esp + 0x24], eax
jmp 0x40e680
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.passive
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e75c
mov dword [esp + 0x24], 3
jmp 0x40e680
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.norestart
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e787
push 0
push str.REBOOTReallySuppress
jmp 0x40e676
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.forcerestart
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e7b2
push 0
push str.REBOOTForce
jmp 0x40e676
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.promptrestart
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e7dd
push 0
push str.REBOOTPROMPT
jmp 0x40e676
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push str.uninstall
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e81c
mov eax, dword [esp + 0x24]
mov ecx, 3
cmp eax, 5
mov dword [esp + 0x34], 7
cmove eax, ecx
mov dword [esp + 0x24], eax
jmp 0x40e680
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push 0x432dc4
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e881
mov ecx, dword [esp + 0x10]
cmp edi, dword [esp + 0x1c]
jge 0x40e684
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e684
cmp eax, 0x2d
je 0x40e684
cmp eax, 0x2f
je 0x40e684
inc esi
lea eax, [esp + 0x28]
push 0
inc edi
push dword [ecx + esi*4]
push eax
call fcn.0040ffb0
jmp 0x40e680
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push 0x4330e0
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e8f2
cmp edi, dword [esp + 0x1c]
jge 0x40e9da
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e9da
cmp eax, 0x2d
je 0x40e9da
cmp eax, 0x2f
je 0x40e9da
push dword [ecx + esi*4 + 4]
inc esi
inc edi
call fcn.00413971
add esp, 4
mov dword [esp + 0x3c], eax
mov dword [esp + 0x180], 0
jmp 0x40e680
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push 0x4330ec
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e953
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push 0x4330f0
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e953
mov eax, dword [esp + 0x10]
push 0xffffffffffffffff
push 0x4330f4
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e9da
mov dword [esp + 0x38], 1
jmp 0x40e680
cmp edi, dword [esp + 0x1c]
jge 0x40e9a8
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e9a8
cmp eax, 0x2d
je 0x40e9a8
cmp eax, 0x2f
je 0x40e9a8
mov eax, dword [ecx + esi*4 + 4]
inc esi
mov edx, 1
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
inc edi
jmp 0x40e68c
test edx, edx
je 0x40e9e1
mov ecx, eax
call fcn.0040d570
jmp 0x40ea3d
push 0x104
lea eax, [esp + 0x68]
push 0
push eax
call fcn.00414300
mov eax, dword [esp + 0x1c]
add esp, 0xc
push dword [eax + esi*4]
lea eax, [esp + 0x68]
push str.Must_specify_a_filename_with_the__s_switch.
push 0x104
push eax
call fcn.00412220
add esp, 0x10
mov esi, 0x80070057
jmp 0x40ea3f
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x3c]
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x44]
push eax
push 0xc73a
push 0
call fcn.00410330
mov esi, eax
cmp esi, 0x80070716
jne 0x40ea0d
xor esi, esi
jmp 0x40ea11
test esi, esi
js 0x40ea3f
call fcn.0040c450
test eax, eax
jne 0x40ea3f
call fcn.0040c6e0
test eax, eax
je 0x40ea3f
push dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x44]
push edi
push dword [esp + 0x30]
push ebx
call fcn.0040d9a0
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40ea4d
push eax
call fcn.00410030
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40ea5b
push eax
call fcn.00410030
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40ea69
push eax
call fcn.00410030
mov eax, dword [esp + 0x28]
test eax, eax
je 0x40ea77
push eax
call fcn.00410030
and esi, 0xffff
cmp dword [esp + 0x60], 8
jb 0x40ea90
push dword [esp + 0x4c]
call fcn.00411cf6
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x178]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x160]
xor ecx, esp
call fcn.0041153d
mov esp, ebp
pop ebp
ret 0x10