Function at 0x40e400
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x42a4fb
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 0x40e4fa
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x40e4db
movzx esi, si
or esi, 0x80070000
test esi, esi
mov eax, 0x80004005
cmovns esi, eax
push esi
push 0x4dd
push str.setupexe.cpp
call fcn.004109e0
jmp 0x40e9e0
mov esi, 1
cmp dword [esp + 0x1c], esi
jle 0x40e98a
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 0x40e526
cmp eax, 0x2f
jne 0x40e97b
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esp + 0x44], eax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e530
sub ecx, dword [esp + 0x44]
sar ecx, 1
cmp ecx, 1
jbe 0x40e97b
push 0xffffffffffffffff
push 0x432fa0
push 0xffffffffffffffff
lea eax, [edx + 2]
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e901
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 0x40e901
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 0x40e901
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 0x40e6a9
mov ecx, dword [esp + 0x10]
cmp edi, dword [esp + 0x1c]
jge 0x40e634
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e634
cmp eax, 0x2d
je 0x40e634
cmp eax, 0x2f
je 0x40e634
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.0040fcc0
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 0x40e512
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x40e939
lea eax, [esp + 0x30]
push eax
push 0xc739
push dword [0x439bc8]
call fcn.00410410
mov esi, eax
test esi, esi
js 0x40e9e0
lea eax, [esp + 0x2c]
push eax
push 0x7d5
push dword [0x439bc8]
call fcn.00410410
mov esi, eax
test esi, esi
js 0x40e9e0
push 0
push dword [esp + 0x34]
push dword [esp + 0x34]
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40e9e0
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 0x40e6d1
mov dword [esp + 0x24], eax
jmp 0x40e630
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 0x40e6fd
mov dword [esp + 0x24], 3
jmp 0x40e630
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 0x40e728
push 0
push str.REBOOTReallySuppress
jmp 0x40e626
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 0x40e753
push 0
push str.REBOOTForce
jmp 0x40e626
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 0x40e77e
push 0
push str.REBOOTPROMPT
jmp 0x40e626
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 0x40e7bd
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 0x40e630
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 0x40e822
mov ecx, dword [esp + 0x10]
cmp edi, dword [esp + 0x1c]
jge 0x40e634
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e634
cmp eax, 0x2d
je 0x40e634
cmp eax, 0x2f
je 0x40e634
inc esi
lea eax, [esp + 0x28]
push 0
inc edi
push dword [ecx + esi*4]
push eax
call fcn.0040ff50
jmp 0x40e630
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 0x40e893
cmp edi, dword [esp + 0x1c]
jge 0x40e97b
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e97b
cmp eax, 0x2d
je 0x40e97b
cmp eax, 0x2f
je 0x40e97b
push dword [ecx + esi*4 + 4]
inc esi
inc edi
call fcn.00413911
add esp, 4
mov dword [esp + 0x3c], eax
mov dword [esp + 0x180], 0
jmp 0x40e630
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 0x40e8f4
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 0x40e8f4
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 0x40e97b
mov dword [esp + 0x38], 1
jmp 0x40e630
cmp edi, dword [esp + 0x1c]
jge 0x40e949
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e949
cmp eax, 0x2d
je 0x40e949
cmp eax, 0x2f
je 0x40e949
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 0x40e63c
test edx, edx
je 0x40e982
mov ecx, eax
call fcn.0040d500
jmp 0x40e9de
push 0x104
lea eax, [esp + 0x68]
push 0
push eax
call fcn.004142a0
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.004121c0
add esp, 0x10
mov esi, 0x80070057
jmp 0x40e9e0
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.004102d0
mov esi, eax
cmp esi, 0x80070716
jne 0x40e9ae
xor esi, esi
jmp 0x40e9b2
test esi, esi
js 0x40e9e0
call fcn.0040c450
test eax, eax
jne 0x40e9e0
call fcn.0040c6e0
test eax, eax
je 0x40e9e0
push dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x44]
push edi
push dword [esp + 0x30]
push ebx
call fcn.0040d930
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40e9ee
push eax
call fcn.0040ffd0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40e9fc
push eax
call fcn.0040ffd0
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40ea0a
push eax
call fcn.0040ffd0
mov eax, dword [esp + 0x28]
test eax, eax
je 0x40ea18
push eax
call fcn.0040ffd0
and esi, 0xffff
cmp dword [esp + 0x60], 8
jb 0x40ea31
push dword [esp + 0x4c]
call fcn.00411c96
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.004114dd
mov esp, ebp
pop ebp
ret 0x10