Function at 0x40e1e0
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4304db
mov eax, dword fs:[0]
push eax
sub esp, 0x168
mov eax, dword [0x442074]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ecx, ecx
or ebx, 0xffffffff
mov dword [ebp - 0x13c], 0
mov dword [ebp - 0x158], ecx
mov dword [ebp - 0x154], ecx
mov dword [ebp - 0x138], ecx
lea edi, [ecx + 5]
mov dword [ebp - 0x140], ecx
mov dword [ebp - 0x150], ecx
mov dword [ebp - 0x164], ecx
mov dword [ebp - 0x148], ecx
mov dword [ebp - 0x14c], ecx
mov dword [ebp - 0x174], ecx
mov dword [ebp - 0x15c], ebx
mov dword [ebp - 0x118], 7
mov dword [ebp - 0x11c], ecx
mov word [ebp - 0x12c], cx
mov dword [ebp - 4], ecx
mov dword [0x443b04], eax
lea eax, [ebp - 0x13c]
push eax
mov dword [ebp - 0x160], 1
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov edx, eax
mov dword [ebp - 0x130], edx
test edx, edx
jne 0x40e2dc
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x40e2bd
movzx esi, si
or esi, 0x80070000
test esi, esi
mov eax, 0x80004005
cmovns esi, eax
push esi
push 0x4ef
push str.setupexe.cpp
call fcn.00410870
jmp 0x40e8ed
mov esi, 1
cmp dword [ebp - 0x13c], esi
jle 0x40e88b
mov ebx, dword [sym.imp.KERNEL32.dll_CompareStringW]
mov dword [ebp - 0x134], 2
nop dword [eax]
mov edx, dword [edx + esi*4]
movzx eax, word [edx]
cmp eax, 0x2d
je 0x40e314
cmp eax, 0x2f
jne 0x40e87e
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x168], eax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e320
sub ecx, dword [ebp - 0x168]
sar ecx, 1
cmp ecx, 1
jbe 0x40e87e
push 0xffffffffffffffff
push 0x43e000
push 0xffffffffffffffff
lea eax, [edx + 2]
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e7e9
mov eax, dword [ebp - 0x130]
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 0x40e7e9
mov eax, dword [ebp - 0x130]
push 0xffffffffffffffff
push 0x43e018
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e7e9
mov eax, dword [ebp - 0x130]
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 0x40e4d6
mov ecx, dword [ebp - 0x134]
mov edx, dword [ebp - 0x130]
cmp ecx, dword [ebp - 0x13c]
jge 0x40e451
mov eax, dword [edx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e451
cmp eax, 0x2d
je 0x40e451
cmp eax, 0x2f
je 0x40e451
push dword [edx + esi*4 + 4]
inc dword [ebp - 0x134]
lea ecx, [ebp - 0x12c]
inc esi
call fcn.004019a0
lea ecx, [ebp - 0x12c]
call fcn.0040b9c0
push 0x43d870
lea ecx, [ebp - 0x12c]
call fcn.00402270
cmp dword [ebp - 0x118], 8
lea eax, [ebp - 0x12c]
push 0
cmovae eax, dword [ebp - 0x12c]
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.0040fb40
mov edx, dword [ebp - 0x130]
mov ecx, dword [ebp - 0x134]
mov eax, dword [ebp - 0x138]
inc esi
inc ecx
mov dword [ebp - 0x134], ecx
cmp esi, dword [ebp - 0x13c]
jl 0x40e300
mov ecx, dword [ebp - 0x154]
test ecx, ecx
je 0x40e833
lea eax, [ebp - 0x148]
push eax
push 0xc739
push dword [0x443b04]
call fcn.004100c0
mov esi, eax
test esi, esi
js 0x40e8ed
lea eax, [ebp - 0x14c]
push eax
push 0x7d5
push dword [0x443b04]
call fcn.004100c0
mov esi, eax
test esi, esi
js 0x40e8ed
push 0
push dword [ebp - 0x148]
push dword [ebp - 0x14c]
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x40e8ed
mov eax, dword [ebp - 0x130]
push 0xffffffffffffffff
push str.forcequiet
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e4fe
mov edi, eax
jmp 0x40e445
mov eax, dword [ebp - 0x130]
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 0x40e58f
lea eax, [ebp - 0x144]
xor edi, edi
push eax
push 8
mov dword [ebp - 0x144], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x40e572
lea eax, [ebp - 0x16c]
mov dword [ebp - 0x16c], 4
push eax
push 4
lea eax, [ebp - 0x170]
push eax
push 0x14
push dword [ebp - 0x144]
call dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
test eax, eax
cmovne edi, dword [ebp - 0x170]
mov eax, dword [ebp - 0x144]
test eax, eax
je 0x40e583
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
neg edi
sbb edi, edi
add edi, 3
jmp 0x40e445
mov eax, dword [ebp - 0x130]
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 0x40e5b8
lea edi, [eax + 1]
jmp 0x40e445
mov eax, dword [ebp - 0x130]
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 0x40e5e5
push 0
push str.REBOOTReallySuppress
jmp 0x40e439
mov eax, dword [ebp - 0x130]
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 0x40e612
push 0
push str.REBOOTForce
jmp 0x40e439
mov eax, dword [ebp - 0x130]
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 0x40e63f
push 0
push str.REBOOTPROMPT
jmp 0x40e439
mov eax, dword [ebp - 0x130]
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 0x40e67a
cmp edi, 5
mov dword [ebp - 0x160], 7
mov eax, 3
cmove edi, eax
jmp 0x40e445
mov eax, dword [ebp - 0x130]
push 0xffffffffffffffff
push 0x43dddc
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e6f2
mov ecx, dword [ebp - 0x134]
mov edx, dword [ebp - 0x130]
cmp ecx, dword [ebp - 0x13c]
jge 0x40e451
mov eax, dword [edx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e451
cmp eax, 0x2d
je 0x40e451
cmp eax, 0x2f
je 0x40e451
inc dword [ebp - 0x134]
lea eax, [ebp - 0x150]
inc esi
push 0
push dword [edx + esi*4]
push eax
call fcn.0040fdd0
jmp 0x40e445
mov eax, dword [ebp - 0x130]
push 0xffffffffffffffff
push str.lang
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e773
mov ecx, dword [ebp - 0x134]
cmp ecx, dword [ebp - 0x13c]
jge 0x40e87e
mov edx, dword [ebp - 0x130]
mov eax, dword [edx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e87e
cmp eax, 0x2d
je 0x40e87e
cmp eax, 0x2f
je 0x40e87e
push dword [edx + esi*4 + 4]
inc esi
inc ecx
mov dword [ebp - 0x134], ecx
call fcn.00420242
add esp, 4
mov dword [ebp - 0x15c], eax
mov dword [ebp - 4], 0
jmp 0x40e445
mov eax, dword [ebp - 0x130]
push 0xffffffffffffffff
push 0x43e164
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e7da
mov eax, dword [ebp - 0x130]
push 0xffffffffffffffff
push 0x43e168
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
je 0x40e7da
mov eax, dword [ebp - 0x130]
push 0xffffffffffffffff
push 0x43e16c
push 0xffffffffffffffff
mov eax, dword [eax + esi*4]
add eax, 2
push eax
push 1
push 0x7f
call ebx
cmp eax, 2
jne 0x40e87e
mov dword [ebp - 0x154], 1
jmp 0x40e445
mov eax, dword [ebp - 0x134]
cmp eax, dword [ebp - 0x13c]
jge 0x40e849
mov edx, dword [ebp - 0x130]
mov eax, dword [edx + esi*4 + 4]
movzx eax, word [eax]
test ax, ax
je 0x40e849
cmp eax, 0x2d
je 0x40e849
cmp eax, 0x2f
je 0x40e849
mov ecx, dword [ebp - 0x134]
inc esi
mov dword [ebp - 0x158], 1
inc ecx
mov eax, dword [edx + esi*4]
mov dword [ebp - 0x138], eax
jmp 0x40e457
mov ecx, dword [ebp - 0x158]
test ecx, ecx
je 0x40e885
mov ecx, eax
call fcn.0040d1f0
jmp 0x40e8eb
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.00414870
mov eax, dword [ebp - 0x130]
push dword [eax + esi*4]
lea eax, [ebp - 0x114]
push str.Must_specify_a_filename_with_the__s_switch.
push 0x104
push eax
call fcn.00402940
add esp, 0x1c
mov esi, 0x80070057
jmp 0x40e8ed
mov ebx, dword [ebp - 0x15c]
lea eax, [ebp - 0x174]
push eax
lea eax, [ebp - 0x164]
push eax
push 0xc73a
push 0
call fcn.0040ff80
mov esi, eax
cmp esi, 0x80070716
jne 0x40e8b3
xor esi, esi
jmp 0x40e8b7
test esi, esi
js 0x40e8ed
call fcn.0040c0d0
test eax, eax
jne 0x40e8ed
call fcn.0040c360
test eax, eax
je 0x40e8ed
push dword [ebp - 0x160]
mov edx, dword [ebp - 0x140]
mov ecx, dword [ebp - 0x164]
push edi
push dword [ebp - 0x150]
push ebx
call fcn.0040d620
add esp, 0x10
mov esi, eax
mov eax, dword [ebp - 0x140]
test eax, eax
je 0x40e8fd
push eax
call fcn.0040fe60
mov eax, dword [ebp - 0x148]
test eax, eax
je 0x40e90d
push eax
call fcn.0040fe60
mov eax, dword [ebp - 0x14c]
test eax, eax
je 0x40e91d
push eax
call fcn.0040fe60
mov eax, dword [ebp - 0x150]
test eax, eax
je 0x40e92d
push eax
call fcn.0040fe60
mov ecx, dword [ebp - 0x118]
movzx esi, si
cmp ecx, 8
jb 0x40e94e
inc ecx
push ecx
push dword [ebp - 0x12c]
lea ecx, [ebp - 0x12c]
call fcn.00401c00
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00411e49
mov esp, ebp
pop ebp
ret 0x10