Function at 0x4025d0
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
xor eax, eax
mov dword [ebp - 0x1c], 0
push ebx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 8]
push esi
push edi
mov dword [0x41b194], eax
mov edi, 5
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x10], 0
push eax
mov dword [ebp - 0x30], 0xffffffff
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x2c], 1
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
mov ebx, eax
test ebx, ebx
jne 0x402667
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x402650
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x402bb0
mov esi, 0x80004005
pop edi
movzx eax, si
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov esi, 1
cmp dword [ebp - 0x1c], esi
jle 0x402aea
mov edi, dword [sym.imp.KERNEL32.dll_CompareStringW]
nop dword [eax + eax]
mov ecx, dword [ebx + esi*4]
movzx eax, word [ecx]
cmp eax, 0x2d
je 0x402694
cmp eax, 0x2f
jne 0x4029b1
push 0xffffffffffffffff
push 0x4189dc
push 0xffffffffffffffff
lea eax, [ecx + 2]
push eax
push 1
push 0x7f
call edi
cmp eax, 2
je 0x402945
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.extract
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
je 0x402945
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push 0x4189f4
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x402703
inc esi
cmp esi, dword [ebp - 0x1c]
jge 0x4029b1
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x28], 1
jmp 0x402953
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.msicl
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x402745
mov edx, dword [ebx + esi*4 + 4]
inc esi
push ecx
lea ecx, [ebp - 0x18]
call fcn.00402f30
push ecx
mov edx, 0x418a08
lea ecx, [ebp - 0x18]
call fcn.00402f30
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push 0x418a0c
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x40276e
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 4]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.passive
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x40279b
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x20], 3
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.norestart
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x4027cf
push ecx
mov edx, str.REBOOTReallySuppress
lea ecx, [ebp - 0x18]
call fcn.00402f30
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.forcerestart
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x402803
push ecx
mov edx, str.REBOOTForce
lea ecx, [ebp - 0x18]
call fcn.00402f30
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.promptrestart
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x402837
push ecx
mov edx, str.REBOOTPROMPT
lea ecx, [ebp - 0x18]
call fcn.00402f30
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.uninstall
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x402875
mov eax, dword [ebp - 0x20]
mov ecx, 3
mov edx, dword [ebp - 0x10]
cmp eax, 5
mov dword [ebp - 0x2c], 7
cmove eax, ecx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 4]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push 0x41880c
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x4028a9
mov edx, dword [ebx + esi*4 + 4]
inc esi
push ecx
lea ecx, [ebp - 0x24]
call fcn.00402d70
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push str.lang
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x4028e4
inc esi
cmp esi, dword [ebp - 0x1c]
jge 0x4029b1
push dword [ebx + esi*4]
call fcn.00405f7e
mov edx, dword [ebp - 0x10]
add esp, 4
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 4]
jmp 0x402959
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push 0x418b00
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
je 0x402935
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push 0x418b04
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
je 0x402935
mov eax, dword [ebx + esi*4]
push 0xffffffffffffffff
push 0x418b08
push 0xffffffffffffffff
add eax, 2
push eax
push 1
push 0x7f
call edi
cmp eax, 2
jne 0x4029b1
mov eax, dword [ebp - 4]
mov ecx, 1
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x14], ecx
jmp 0x40295c
inc esi
cmp esi, dword [ebp - 0x1c]
jge 0x4029b1
mov edx, 1
mov dword [ebp - 0x10], edx
mov eax, dword [ebx + esi*4]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0x14]
inc esi
cmp esi, dword [ebp - 0x1c]
jl 0x402680
test ecx, ecx
je 0x4029bb
lea eax, [ebp - 8]
mov edx, 0xc739
push eax
call fcn.00403260
mov esi, eax
test esi, esi
js 0x402b24
lea eax, [ebp - 0xc]
mov edx, 0x7d5
push eax
call fcn.00403260
mov edi, dword [ebp - 8]
mov esi, eax
mov ebx, dword [ebp - 0xc]
test esi, esi
js 0x402b2a
push 0
push edi
push ebx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
jmp 0x402b2a
mov esi, 0x80070057
jmp 0x402b24
test edx, edx
je 0x402aaa
mov ecx, eax
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x34], 0
mov dword [ebp + 8], 0
call fcn.00403570
mov esi, eax
test esi, esi
js 0x402b24
lea eax, [ebp - 0x34]
mov edx, str.MANIFEST
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.00403310
mov esi, eax
test esi, esi
js 0x402b24
mov ecx, dword [ebp - 0x20]
xor bl, bl
cmp byte [ecx + 1], bl
jbe 0x402b24
mov edx, dword [ebp - 4]
movzx eax, bl
imul edi, eax, 0xa8
push ecx
add edi, 4
add edi, ecx
lea ecx, [ebp + 8]
mov dword [ebp - 0x34], edi
call fcn.00402d70
mov esi, eax
test esi, esi
js 0x402a7c
push ecx
mov edx, 0x41898c
lea ecx, [ebp + 8]
call fcn.00402f30
mov esi, eax
test esi, esi
js 0x402a7c
push ecx
lea edx, [edi + 0xc]
lea ecx, [ebp + 8]
call fcn.00402f30
mov esi, eax
test esi, esi
js 0x402a7c
mov edi, dword [ebp + 8]
mov edx, edi
push ecx
mov ecx, dword [ebp - 0x34]
call fcn.004033c0
mov esi, eax
test esi, esi
js 0x402a7f
mov ecx, dword [ebp - 0x20]
inc bl
cmp bl, byte [ecx + 1]
jb 0x402a13
jmp 0x402a7f
mov edi, dword [ebp + 8]
test edi, edi
je 0x402b24
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
test eax, eax
jne 0x402b24
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x402b24
cmp dword [ebp - 0x28], 0
je 0x402ae7
lea eax, [ebp - 0x34]
mov dword [ebp + 8], 0
push eax
lea eax, [ebp + 8]
mov dword [ebp - 0x34], 0
push eax
mov edx, str.MANIFEST
call fcn.00403310
mov esi, eax
test esi, esi
js 0x402b24
mov edx, dword [ebp - 4]
push ecx
mov ecx, dword [ebp + 8]
lea ecx, [ecx + 4]
call fcn.004033c0
jmp 0x402b22
mov edi, dword [ebp - 0x20]
lea eax, [ebp - 0x38]
mov edx, 0xc73a
push eax
lea eax, [ebp - 0x34]
push eax
call fcn.00403310
mov esi, eax
cmp esi, 0x80070716
je 0x402b0a
test esi, esi
js 0x402b24
push dword [ebp - 0x2c]
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x34]
push edi
push dword [ebp - 0x24]
push dword [ebp - 0x30]
call fcn.00401cc0
add esp, 0x10
mov esi, eax
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x402b4b
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
test eax, eax
jne 0x402b4b
call dword [sym.imp.KERNEL32.dll_GetLastError]
test edi, edi
je 0x402b6d
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x402b73
call edi
jmp 0x402b73
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
test ebx, ebx
je 0x402b91
push ebx
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push eax
call ebx
test eax, eax
jne 0x402b97
call edi
jmp 0x402b97
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x402bb0
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call ebx
test eax, eax
jne 0x402bb0
call edi
pop edi
movzx eax, si
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10