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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x443151
mov eax, dword fs:[0]
push eax
sub esp, 0x314
mov eax, dword [0x4553d4]
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 edi, 8
mov dword [ebp - 0x31c], esi
cmp dword [eax + 0x14], edi
jb 0x408d58
mov eax, dword [eax]
push eax
call fcn.00404a40
add esp, 4
test al, al
je 0x408e34
push str.Reboot_is_pending
push 0x4569dc
mov ecx, 0x447290
call fcn.00404ce0
xor ebx, ebx
xor eax, eax
add esp, 8
mov dword [ebp - 0x228], 7
mov dword [ebp - 0x22c], ebx
mov word [ebp - 0x23c], ax
lea ecx, [ebp - 0x23c]
push ecx
mov ecx, 0x1ff4
mov edx, 0x457d28
mov dword [ebp - 4], ebx
call fcn.00418a80
mov edx, dword [ebp - 0x23c]
cmp dword [ebp - 0x228], edi
jae 0x408dc8
lea edx, [ebp - 0x23c]
push ebx
push ebx
push 0x4e20
push ebx
mov ecx, 2
call fcn.004053a0
add esp, 0x10
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x228], edi
jb 0x408dfb
mov edx, dword [ebp - 0x23c]
push edx
call fcn.0042c691
add esp, 4
push 0xa
push edi
lea eax, [ebp - 0x230]
push eax
push 0x4e21
call fcn.0042d95b
add esp, 0x10
lea ecx, [ebp - 0x230]
push ecx
lea ecx, [esi + 4]
mov ebx, str.IIF_EXITCODE
call fcn.00414ab0
mov edx, dword [esi]
mov eax, dword [edx + 0x20]
mov ecx, esi
call eax
jmp 0x40934b
push str.Riched20.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 4], 1
call fcn.00417e10
test al, al
jne 0x409024
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp ax, 6
jb 0x408fdf
xor ebx, ebx
xor ecx, ecx
mov dword [ebp - 0x228], 7
mov dword [ebp - 0x22c], ebx
mov word [ebp - 0x23c], cx
push str.Relaunching_setup_as_elevated
push 0x4569dc
mov ecx, 0x44742c
mov byte [ebp - 4], 2
call fcn.00404ce0
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea edx, [ebp - 0x220]
push 0x104
push edx
call fcn.0042d2d5
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.SHLWAPI.dll_PathGetArgsW]
mov ecx, eax
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
cmp dx, bx
jne 0x408ec6
sub ecx, esi
sar ecx, 1
push ecx
lea esi, [ebp - 0x23c]
call fcn.00404910
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 ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
push ebx
push ebx
push 1
push 1
push ebx
push ebx
push 0x90000000
push 0x448704
push str.BUTTON
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
cmp esi, ebx
je 0x408fa7
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 ebx
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 0x408f8e
lea eax, [ebp - 0x23c]
push 5
push ebx
push eax
lea ecx, [ebp - 0x220]
push ecx
push str.runas
push esi
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x408fbe
push str.Error_creating_top_level_window.
push 0x4569dc
mov ecx, 0x447290
call fcn.00404ce0
add esp, 8
cmp dword [ebp - 0x228], 8
jb 0x40934b
mov edx, dword [ebp - 0x23c]
push edx
call fcn.0042c691
add esp, 4
jmp 0x40934b
push str.Administrator_rights_needed.
push 0x4569dc
mov ecx, 0x447290
call fcn.00404ce0
add esp, 8
push 0x1ff
push 5
lea eax, [ebp - 0x318]
push eax
mov ecx, str.Setup.cpp
mov ebx, 0x448704
call fcn.00407520
push 0x44f4e0
lea ecx, [ebp - 0x318]
push ecx
call fcn.0042e152
lea edi, [esi + 4]
mov ebx, str.IIF_INSTALLEDPACKAGEVERSION
call fcn.00414a70
test al, al
jne 0x409079
push esi
call fcn.004095a0
cmp eax, 0xd
je 0x40904b
push esi
call fcn.004095a0
cmp eax, 0xc
jne 0x409079
push str._uninstall_and__repair_is_invalid_if_the_product_is_not_installed
push 0x4569dc
mov ecx, 0x447a28
call fcn.00404ce0
add esp, 8
mov eax, esi
call fcn.00409740
test al, al
jne 0x40934b
push esi
xor ecx, ecx
call fcn.0040ca60
push esi
call fcn.004095a0
xor ebx, ebx
cmp eax, ebx
jne 0x40908a
call fcn.00408a70
push esi
call fcn.004095a0
cmp eax, 0xd
ja case.0x40909c.1
movzx edx, byte [eax + 0x409384]
jmp dword [edx*4 + 0x409368]
push str.Setup_mode:_None
push 0x4569dc
mov ecx, 0x44742c
call fcn.00404ce0
add esp, 8
jmp case.0x40909c.1
push str.Setup_mode:_Installation
jmp 0x4090dd
push str.Setup_mode:_Update
jmp 0x4090dd
push str.Setup_mode:_Repair
jmp 0x4090dd
push str.Setup_mode:_Uninstall
jmp 0x4090a8
push str.Setup_mode:_Modify
push 0x4569dc
mov ecx, 0x44742c
call fcn.00404ce0
mov eax, dword [esi]
mov edx, dword [eax + 0x54]
add esp, 8
mov ecx, esi
call edx
push esi
call fcn.004095a0
cmp eax, ebx
je 0x4091d3
lea ecx, [esi + 0x128]
call fcn.004139a0
mov eax, esi
call fcn.00409740
mov ecx, 0x44742c
test al, al
je 0x40915c
push str.Silent_mode_is_enabled
push 0x4569dc
call fcn.00404ce0
mov eax, dword [esi]
mov edx, dword [eax + 0x14]
add esp, 8
mov ecx, esi
mov dword [esi + 0x148], ebx
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 0x409177
push str.Preparing_UI
push 0x4569dc
call fcn.00404ce0
mov edx, dword [esi]
mov eax, dword [edx + 0x5c]
add esp, 8
mov ecx, esi
call eax
push str.IIF_EXITCODE
call fcn.004149c0
push eax
call fcn.0042dd06
add esp, 4
cmp eax, ebx
je 0x40919c
cmp eax, 0x669
je 0x40919c
cmp eax, 0xbc2
jne 0x4091d3
cmp byte [esi + 0x13c], bl
je 0x4091d3
push esi
call fcn.004095a0
cmp eax, 9
jl 0x4091d3
cmp eax, 0xc
jle 0x4091cc
cmp eax, 0xd
jne 0x4091d3
mov ecx, esi
call fcn.004086e0
mov dword [ebp - 4], 0xffffffff
jmp 0x409303
mov ecx, esi
call fcn.00407fe0
mov dword [ebp - 4], 0xffffffff
jmp 0x409303
push str.IIF_EXITCODE
lea edi, [esi + 4]
call fcn.004149c0
push eax
call fcn.0042dd06
add esp, 4
cmp eax, 0xbc2
jne 0x40934b
cmp dword [esi + 0x44], 8
lea eax, [esi + 0x30]
jb 0x40932b
mov eax, dword [eax]
push eax
call fcn.004076d0
add esp, 4
push str.Created_reboot_lock
push 0x4569dc
mov ecx, 0x44742c
call fcn.00404ce0
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.0042c682
mov esp, ebp
pop ebp
ret