Function at 0x40e460
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 0x40e55a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x40e53b
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.00410a50
jmp 0x40ea4f
mov esi, 1
cmp dword [esp + 0x1c], esi
jle 0x40e9f9
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 0x40e586
cmp eax, 0x2f
jne 0x40e9ea
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esp + 0x44], eax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e590
sub ecx, dword [esp + 0x44]
sar ecx, 1
cmp ecx, 1
jbe 0x40e9ea
push 0xffffffffffffffff
push 0x432fa0
push 0xffffffffffffffff
lea eax, [edx + 2]
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e970
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 0x40e970
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 0x40e970
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 0x40e709
mov ecx, dword [esp + 0x10]
cmp edi, dword [esp + 0x1c]
jge 0x40e694
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e694
cmp eax, 0x2d
je 0x40e694
cmp eax, 0x2f
je 0x40e694
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.0040fd30
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 0x40e572
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x40e9a8
lea eax, [esp + 0x30]
push eax
push 0xc739
push dword [0x439bc8]
call fcn.00410480
mov esi, eax
test esi, esi
js 0x40ea4f
lea eax, [esp + 0x2c]
push eax
push 0x7d5
push dword [0x439bc8]
call fcn.00410480
mov esi, eax
test esi, esi
js 0x40ea4f
push 0
push dword [esp + 0x34]
push dword [esp + 0x34]
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40ea4f
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 0x40e740
call fcn.0040ce70
movzx eax, al
neg eax
sbb eax, eax
add eax, 3
mov dword [esp + 0x24], eax
jmp 0x40e690
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 0x40e76c
mov dword [esp + 0x24], 3
jmp 0x40e690
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 0x40e797
push 0
push str.REBOOTReallySuppress
jmp 0x40e686
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 0x40e7c2
push 0
push str.REBOOTForce
jmp 0x40e686
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 0x40e7ed
push 0
push str.REBOOTPROMPT
jmp 0x40e686
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 0x40e82c
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 0x40e690
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 0x40e891
mov ecx, dword [esp + 0x10]
cmp edi, dword [esp + 0x1c]
jge 0x40e694
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e694
cmp eax, 0x2d
je 0x40e694
cmp eax, 0x2f
je 0x40e694
inc esi
lea eax, [esp + 0x28]
push 0
inc edi
push dword [ecx + esi*4]
push eax
call fcn.0040ffc0
jmp 0x40e690
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 0x40e902
cmp edi, dword [esp + 0x1c]
jge 0x40e9ea
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e9ea
cmp eax, 0x2d
je 0x40e9ea
cmp eax, 0x2f
je 0x40e9ea
push dword [ecx + esi*4 + 4]
inc esi
inc edi
call fcn.00413981
add esp, 4
mov dword [esp + 0x3c], eax
mov dword [esp + 0x180], 0
jmp 0x40e690
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 0x40e963
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 0x40e963
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 0x40e9ea
mov dword [esp + 0x38], 1
jmp 0x40e690
cmp edi, dword [esp + 0x1c]
jge 0x40e9b8
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e9b8
cmp eax, 0x2d
je 0x40e9b8
cmp eax, 0x2f
je 0x40e9b8
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 0x40e69c
test edx, edx
je 0x40e9f1
mov ecx, eax
call fcn.0040d560
jmp 0x40ea4d
push 0x104
lea eax, [esp + 0x68]
push 0
push eax
call fcn.00414310
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.00412230
add esp, 0x10
mov esi, 0x80070057
jmp 0x40ea4f
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.00410340
mov esi, eax
cmp esi, 0x80070716
jne 0x40ea1d
xor esi, esi
jmp 0x40ea21
test esi, esi
js 0x40ea4f
call fcn.0040c450
test eax, eax
jne 0x40ea4f
call fcn.0040c6e0
test eax, eax
je 0x40ea4f
push dword [esp + 0x34]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x44]
push edi
push dword [esp + 0x30]
push ebx
call fcn.0040d990
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40ea5d
push eax
call fcn.00410040
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40ea6b
push eax
call fcn.00410040
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x40ea79
push eax
call fcn.00410040
mov eax, dword [esp + 0x28]
test eax, eax
je 0x40ea87
push eax
call fcn.00410040
and esi, 0xffff
cmp dword [esp + 0x60], 8
jb 0x40eaa0
push dword [esp + 0x4c]
call fcn.00411d06
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.0041154d
mov esp, ebp
pop ebp
ret 0x10