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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x444711
mov eax, dword fs:[0]
push eax
sub esp, 0x314
mov eax, dword [0x4543e4]
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 + 0x34]
mov ebx, 8
mov dword [ebp - 0x31c], esi
cmp dword [eax + 0x14], ebx
jb 0x409828
mov eax, dword [eax]
push eax
call fcn.00407990
add esp, 4
test al, al
je 0x409904
push str.Reboot_is_pending
push 0x455a48
mov ecx, 0x449344
call fcn.00407c30
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, 0x456d68
mov dword [ebp - 4], edi
call fcn.00413ac0
mov edx, dword [ebp - 0x23c]
cmp dword [ebp - 0x228], ebx
jae 0x409898
lea edx, [ebp - 0x23c]
push edi
push edi
push 0x4e20
push edi
mov ecx, 2
call fcn.00405820
add esp, 0x10
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x228], ebx
jb 0x4098cb
mov edx, dword [ebp - 0x23c]
push edx
call fcn.0042e4d8
add esp, 4
push 0xa
push ebx
lea eax, [ebp - 0x230]
push eax
push 0x4e21
call fcn.0042f5d8
add esp, 0x10
lea ecx, [ebp - 0x230]
push ecx
lea ecx, [esi + 8]
mov ebx, str.IIF_EXITCODE
call fcn.00415d90
mov edx, dword [esi]
mov eax, dword [edx + 0x20]
mov ecx, esi
call eax
jmp 0x409c8e
push str.Riched20.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 4], 1
call fcn.00420190
test al, al
jne 0x409b0b
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp ax, 6
jb 0x409ac6
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 0x455a48
mov ecx, 0x448218
mov byte [ebp - 4], 2
call fcn.00407c30
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea edx, [ebp - 0x220]
push 0x104
push edx
call fcn.0042e563
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.SHLWAPI.dll_PathGetArgsW]
mov ecx, eax
lea esi, [ecx + 2]
jmp 0x4099a0
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x4099a0
sub ecx, esi
sar ecx, 1
push ecx
lea esi, [ebp - 0x23c]
call fcn.00403f50
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 0x448720
push str.BUTTON
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
test esi, esi
je 0x409a8e
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 0x409a74
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 0x409aa5
push str.Error_creating_top_level_window.
push 0x455a48
mov ecx, 0x449344
call fcn.00407c30
add esp, 8
cmp dword [ebp - 0x228], 8
jb 0x409c8e
mov edx, dword [ebp - 0x23c]
push edx
call fcn.0042e4d8
add esp, 4
jmp 0x409c8e
push str.Administrator_rights_needed.
push 0x455a48
mov ecx, 0x449344
call fcn.00407c30
add esp, 8
push 0x1d7
push 5
lea eax, [ebp - 0x318]
push eax
mov ecx, str.Setup.cpp
mov ebx, 0x448720
call fcn.00407e60
push 0x44f264
lea ecx, [ebp - 0x318]
push ecx
call fcn.0042fed2
lea edi, [esi + 8]
mov ebx, str.IIF_INSTALLEDPACKAGEVERSION
call fcn.00415d50
test al, al
jne 0x409b67
mov eax, dword [esi + 4]
cmp eax, 0xd
je 0x409b29
cmp eax, 0xc
jne 0x409b67
push str._uninstall_and__repair_is_invalid_if_the_product_is_not_installed
push 0x455a48
mov ecx, 0x4492d8
call fcn.00407c30
add esp, 8
mov eax, esi
call fcn.0040a090
test al, al
jne 0x409c8e
push 0x448720
mov ebx, str.IIF_SETUPMODE
mov ecx, edi
mov dword [esi + 4], 0
call fcn.00415d90
cmp dword [esi + 4], 0
jne 0x409b72
call fcn.00409560
mov eax, dword [esi + 4]
cmp eax, 0xd
ja case.0x409b81.1
movzx edx, byte [eax + 0x409e10]
jmp dword [edx*4 + 0x409df4]
push str.Setup_mode:_None
push 0x455a48
mov ecx, 0x448218
call fcn.00407c30
add esp, 8
jmp case.0x409b81.1
push str.Setup_mode:_Installation
jmp 0x409bc2
push str.Setup_mode:_Update
jmp 0x409bc2
push str.Setup_mode:_Repair
jmp 0x409bc2
push str.Setup_mode:_Uninstall
jmp 0x409b8d
push str.Setup_mode:_Modify
push 0x455a48
mov ecx, 0x448218
call fcn.00407c30
mov eax, dword [esi]
mov edx, dword [eax + 0x50]
add esp, 8
mov ecx, esi
call edx
cmp dword [esi + 4], 0
je 0x409c3f
lea ebx, [esi + 0x12c]
call fcn.00421790
mov eax, esi
call fcn.0040a090
mov ecx, 0x448218
test al, al
je 0x409caa
push str.Silent_mode_is_enabled
push 0x455a48
call fcn.00407c30
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]
mov dword [ebp - 4], 0xffffffff
push str.IIF_EXITCODE
lea edi, [esi + 8]
call fcn.00415ca0
push eax
call fcn.0042f82d
add esp, 4
cmp eax, 0xbc2
jne 0x409c8e
cmp dword [esi + 0x48], 8
lea eax, [esi + 0x34]
jb 0x409c6e
mov eax, dword [eax]
push eax
call fcn.00408090
add esp, 4
push str.Created_reboot_lock
push 0x455a48
mov ecx, 0x448218
call fcn.00407c30
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.0042e4c9
mov esp, ebp
pop ebp
ret
push str.Preparing_UI
push 0x455a48
call fcn.00407c30
mov edx, dword [esi]
mov eax, dword [edx + 0x58]
add esp, 8
mov ecx, esi
call eax
jmp 0x409c3f