Function at 0x408c70
Capabilities:
Accept command line arguments
Check os version
Create process on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x443f61
mov eax, dword fs:[0]
push eax
sub esp, 0x314
mov eax, dword [0x4563d4]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
lea eax, [esi + 0x30]
mov ebx, 8
mov dword [ebp - 0x31c], esi
cmp dword [eax + 0x14], ebx
jb 0x408cb8
mov eax, dword [eax]
push eax
call fcn.004048f0
add esp, 4
test al, al
je 0x408d94
push str.Reboot_is_pending
push 0x4579e4
mov ecx, 0x448290
call fcn.00404b90
xor edi, edi
xor eax, eax
add esp, 8
mov dword [ebp - 0x228], 7
mov dword [ebp - 0x22c], edi
mov word [ebp - 0x23c], ax
lea ecx, [ebp - 0x23c]
push ecx
mov ecx, 0x1ff4
mov edx, 0x458d28
mov dword [ebp - 4], edi
call fcn.00418900
mov edx, dword [ebp - 0x23c]
cmp dword [ebp - 0x228], ebx
jae 0x408d28
lea edx, [ebp - 0x23c]
push edi
push edi
push 0x4e20
push edi
mov ecx, 2
call fcn.00405240
add esp, 0x10
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x228], ebx
jb 0x408d5b
mov edx, dword [ebp - 0x23c]
push edx
call fcn.0042d224
add esp, 4
push 0xa
push ebx
lea eax, [ebp - 0x230]
push eax
push 0x4e21
call fcn.0042e517
add esp, 0x10
lea ecx, [ebp - 0x230]
push ecx
lea ecx, [esi + 4]
mov ebx, str.IIF_EXITCODE
call fcn.00413c30
mov edx, dword [esi]
mov eax, dword [edx + 0x20]
mov ecx, esi
call eax
jmp 0x4092cf
push str.MSFTEDIT.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 4], 1
call fcn.00417b10
test al, al
jne 0x408f9b
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp ax, 6
jb 0x408f56
xor ecx, ecx
mov dword [ebp - 0x228], 7
mov dword [ebp - 0x22c], 0
mov word [ebp - 0x23c], cx
push str.Relaunching_setup_as_elevated
push 0x4579e4
mov ecx, 0x44842c
mov byte [ebp - 4], 2
call fcn.00404b90
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea edx, [ebp - 0x220]
push 0x104
push edx
call fcn.0042dc9b
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.SHLWAPI.dll_PathGetArgsW]
mov ecx, eax
lea esi, [ecx + 2]
jmp 0x408e30
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x408e30
sub ecx, esi
sar ecx, 1
push ecx
lea esi, [ebp - 0x23c]
call fcn.004047c0
lea ecx, [ebp - 0x220]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathRemoveArgsW]
lea edx, [ebp - 0x220]
push edx
call dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
push 0
push 0
push 1
push 1
push 0
push 0
push 0x90000000
push 0x44967c
push str.BUTTON
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
test esi, esi
je 0x408f1e
lea eax, [ebp - 0x264]
push eax
push 2
push esi
mov dword [ebp - 0x264], 0x28
call dword [sym.imp.USER32.dll_MonitorFromWindow]
push eax
call dword [sym.imp.USER32.dll_GetMonitorInfoW]
mov eax, dword [ebp - 0x254]
sub eax, dword [ebp - 0x25c]
push 0
cdq
sub eax, edx
push 1
sar eax, 1
push 1
push eax
mov eax, dword [ebp - 0x258]
sub eax, dword [ebp - 0x260]
cdq
sub eax, edx
sar eax, 1
push eax
push esi
call dword [sym.imp.USER32.dll_MoveWindow]
cmp dword [ebp - 0x228], 8
mov eax, dword [ebp - 0x23c]
jae 0x408f04
lea eax, [ebp - 0x23c]
push 5
push 0
push eax
lea ecx, [ebp - 0x220]
push ecx
push str.runas
push esi
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x408f35
push str.Error_creating_top_level_window.
push 0x4579e4
mov ecx, 0x448290
call fcn.00404b90
add esp, 8
cmp dword [ebp - 0x228], 8
jb 0x4092cf
mov edx, dword [ebp - 0x23c]
push edx
call fcn.0042d224
add esp, 4
jmp 0x4092cf
push str.Administrator_rights_needed.
push 0x4579e4
mov ecx, 0x448290
call fcn.00404b90
add esp, 8
push 0x220
push 5
lea eax, [ebp - 0x318]
push eax
mov ecx, str.Setup.cpp
mov ebx, 0x44967c
call fcn.004073e0
push 0x450a78
lea ecx, [ebp - 0x318]
push ecx
call fcn.0042ed12
lea edi, [esi + 4]
mov ebx, str.IIF_INSTALLEDPACKAGEVERSION
call fcn.00413bf0
test al, al
jne 0x408ff0
push esi
call fcn.00409520
cmp eax, 0xd
je 0x408fc2
push esi
call fcn.00409520
cmp eax, 0xc
jne 0x408ff0
push str._uninstall_and__repair_is_invalid_if_the_product_is_not_installed
push 0x4579e4
mov ecx, 0x448aac
call fcn.00404b90
add esp, 8
mov eax, esi
call fcn.004096c0
test al, al
jne 0x4092cf
push esi
xor ecx, ecx
call fcn.0040cb10
push esi
call fcn.00409520
test eax, eax
jne 0x409001
mov ecx, esi
call fcn.00408960
push esi
call fcn.00409520
cmp eax, 0xd
ja case.0x409013.1
movzx edx, byte [eax + 0x409308]
jmp dword [edx*4 + 0x4092ec]
push str.Setup_mode:_None
push 0x4579e4
mov ecx, 0x44842c
call fcn.00404b90
add esp, 8
jmp case.0x409013.1
push str.Setup_mode:_Installation
jmp 0x409054
push str.Setup_mode:_Update
jmp 0x409054
push str.Setup_mode:_Repair
jmp 0x409054
push str.Setup_mode:_Uninstall
jmp 0x40901f
push str.Setup_mode:_Modify
push 0x4579e4
mov ecx, 0x44842c
call fcn.00404b90
mov eax, dword [esi]
mov edx, dword [eax + 0x54]
add esp, 8
mov ecx, esi
call edx
push esi
call fcn.00409520
test eax, eax
je 0x409157
lea ebx, [esi + 0x128]
push ebx
call fcn.00416740
mov ecx, ebx
call fcn.00416810
mov eax, esi
call fcn.004096c0
mov ecx, 0x44842c
test al, al
je 0x4090df
push str.Silent_mode_is_enabled
push 0x4579e4
call fcn.00404b90
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
add esp, 8
mov ecx, esi
mov dword [esi + 0x148], 0
call edx
mov eax, dword [esi]
mov edx, dword [eax + 0x24]
mov ecx, esi
call edx
mov eax, dword [esi + 0x140]
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
jmp 0x4090fa
push str.Preparing_UI
push 0x4579e4
call fcn.00404b90
mov edx, dword [esi]
mov eax, dword [edx + 0x5c]
add esp, 8
mov ecx, esi
call eax
push str.IIF_EXITCODE
call fcn.00413b40
push eax
call fcn.0042e8c6
add esp, 4
test eax, eax
je 0x40911f
cmp eax, 0x669
je 0x40911f
cmp eax, 0xbc2
jne 0x409157
cmp byte [esi + 0x13c], 0
je 0x409157
push esi
call fcn.00409520
cmp eax, 9
jl 0x409157
cmp eax, 0xc
jle 0x409150
cmp eax, 0xd
jne 0x409157
mov ecx, esi
call fcn.004085d0
mov dword [ebp - 4], 0xffffffff
jmp 0x409287
mov ecx, esi
call fcn.00407ed0
mov dword [ebp - 4], 0xffffffff
jmp 0x409287
push str.IIF_EXITCODE
lea edi, [esi + 4]
call fcn.00413b40
push eax
call fcn.0042e8c6
add esp, 4
cmp eax, 0xbc2
jne 0x4092cf
cmp dword [esi + 0x44], 8
lea eax, [esi + 0x30]
jb 0x4092af
mov eax, dword [eax]
push eax
call fcn.00407590
add esp, 4
push str.Created_reboot_lock
push 0x4579e4
mov ecx, 0x44842c
call fcn.00404b90
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0042d215
mov esp, ebp
pop ebp
ret