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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x442327
mov eax, dword fs:[0]
push eax
sub esp, 0x34c
mov eax, dword [0x4533e4]
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 - 0x354], esi
cmp dword [eax + 0x14], ebx
jb 0x407cf8
mov eax, dword [eax]
push eax
call fcn.004062e0
add esp, 4
test al, al
je 0x407f60
push str.Reboot_is_pending
push 0x4549c0
mov ecx, 0x446820
call fcn.00406580
xor eax, eax
xor ecx, ecx
add esp, 8
mov dword [ebp - 0x250], 7
mov dword [ebp - 0x254], eax
mov word [ebp - 0x264], cx
lea edx, [ebp - 0x264]
push edx
mov ecx, 0x1ff4
mov edx, 0x455c98
mov dword [ebp - 4], eax
call fcn.00412980
mov edi, dword [ebp - 0x264]
cmp dword [ebp - 0x250], ebx
jae 0x407d68
lea edi, [ebp - 0x264]
mov ecx, 7
xor eax, eax
xor edx, edx
mov dword [ebp - 0x288], ecx
mov dword [ebp - 0x28c], eax
mov word [ebp - 0x29c], dx
mov dword [ebp - 0x26c], ecx
mov dword [ebp - 0x270], eax
mov word [ebp - 0x280], ax
mov byte [ebp - 4], 2
mov eax, dword [0x455c88]
call fcn.00408880
test al, al
jne 0x407ec0
xor eax, eax
lea ecx, [ebp - 0x29c]
push ecx
mov dword [ebp - 0x248], eax
mov ecx, 0x4e20
mov edx, 0x455c98
mov dword [ebp - 0x244], eax
mov dword [ebp - 0x240], eax
mov dword [ebp - 0x23c], eax
mov dword [ebp - 0x238], eax
mov dword [ebp - 0x234], eax
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x22c], eax
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x248], 0x28
call fcn.00412980
cmp dword [ebp - 0x288], ebx
jb 0x407e21
mov edx, dword [ebp - 0x29c]
mov dword [ebp - 0x238], edx
jmp 0x407e2d
lea eax, [ebp - 0x29c]
mov dword [ebp - 0x238], eax
lea ecx, [ebp - 0x280]
push ecx
push edi
mov ecx, 0x455c98
mov dword [ebp - 0x230], 0x7f01
call fcn.00412e50
cmp dword [ebp - 0x26c], ebx
jb 0x407e5f
mov edx, dword [ebp - 0x280]
mov dword [ebp - 0x23c], edx
jmp 0x407e6b
lea eax, [ebp - 0x280]
mov dword [ebp - 0x23c], eax
xor edi, edi
mov dword [ebp - 0x234], edi
cmp dword [ebp - 0x230], edi
je 0x407e85
mov dword [ebp - 0x234], 0x80
mov cx, word [0x455c9a]
mov edx, 0x3ff
and cx, dx
movzx eax, cx
cmp eax, 1
je 0x407ea1
cmp eax, 0xd
jne 0x407eab
or dword [ebp - 0x234], 0x180000
lea eax, [ebp - 0x248]
push eax
mov dword [ebp - 0x244], edi
call dword [sym.imp.USER32.dll_MessageBoxIndirectW]
jmp 0x407ec2
xor edi, edi
cmp dword [ebp - 0x26c], ebx
jb 0x407ed9
mov ecx, dword [ebp - 0x280]
push ecx
call fcn.0042b948
add esp, 4
xor edx, edx
mov dword [ebp - 0x26c], 7
mov dword [ebp - 0x270], edi
mov word [ebp - 0x280], dx
cmp dword [ebp - 0x288], ebx
jb 0x407f09
mov eax, dword [ebp - 0x29c]
push eax
call fcn.0042b948
add esp, 4
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x250], ebx
jb 0x407f27
mov ecx, dword [ebp - 0x264]
push ecx
call fcn.0042b948
add esp, 4
push 0xa
push ebx
lea edx, [ebp - 0x274]
push edx
push 0x4e21
call fcn.0042ccbf
add esp, 0x10
lea eax, [ebp - 0x274]
push eax
lea ecx, [esi + 4]
mov ebx, str.IIF_EXITCODE
call fcn.00404120
mov edx, dword [esi]
mov eax, dword [edx + 0x20]
mov ecx, esi
call eax
jmp 0x40848a
push str.Riched20.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 4], 3
call fcn.00417cc0
test al, al
jne 0x40815f
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp ax, 6
jb 0x40811a
xor ecx, ecx
mov dword [ebp - 0x250], 7
mov dword [ebp - 0x254], 0
mov word [ebp - 0x264], cx
push str.Relaunching_setup_as_elevated
push 0x4549c0
mov ecx, 0x4462a0
mov byte [ebp - 4], 4
call fcn.00406580
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
lea edx, [ebp - 0x220]
push 0x104
push edx
call fcn.0042c4dd
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
test dx, dx
jne 0x407ff4
sub ecx, esi
sar ecx, 1
push ecx
lea esi, [ebp - 0x264]
call fcn.00402c70
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 0x446828
push str.BUTTON
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
test esi, esi
je 0x4080e2
lea eax, [ebp - 0x248]
push eax
push 2
push esi
mov dword [ebp - 0x248], 0x28
call dword [sym.imp.USER32.dll_MonitorFromWindow]
push eax
call dword [sym.imp.USER32.dll_GetMonitorInfoW]
mov eax, dword [ebp - 0x238]
sub eax, dword [ebp - 0x240]
push 0
cdq
sub eax, edx
push 1
sar eax, 1
push 1
push eax
mov eax, dword [ebp - 0x23c]
sub eax, dword [ebp - 0x244]
cdq
sub eax, edx
sar eax, 1
push eax
push esi
call dword [sym.imp.USER32.dll_MoveWindow]
cmp dword [ebp - 0x250], 8
mov eax, dword [ebp - 0x264]
jae 0x4080c8
lea eax, [ebp - 0x264]
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 0x4080f9
push str.Error_creating_top_level_window.
push 0x4549c0
mov ecx, 0x446820
call fcn.00406580
add esp, 8
cmp dword [ebp - 0x250], 8
jb 0x40848a
mov edx, dword [ebp - 0x264]
push edx
call fcn.0042b948
add esp, 4
jmp 0x40848a
push str.Administrator_rights_needed.
push 0x4549c0
mov ecx, 0x446820
call fcn.00406580
add esp, 8
push 0x1ff
push 5
lea eax, [ebp - 0x350]
push eax
mov ecx, str.Setup.cpp
mov ebx, 0x446828
call fcn.00402e60
push 0x44d554
lea ecx, [ebp - 0x350]
push ecx
call fcn.0042d423
lea edi, [esi + 4]
mov ebx, str.IIF_INSTALLEDPACKAGEVERSION
call fcn.004040e0
test al, al
jne 0x4081b4
push esi
call fcn.004086e0
cmp eax, 0xd
je 0x408186
push esi
call fcn.004086e0
cmp eax, 0xc
jne 0x4081b4
push str._uninstall_and__repair_is_invalid_if_the_product_is_not_installed
push 0x4549c0
mov ecx, 0x446470
call fcn.00406580
add esp, 8
mov eax, esi
call fcn.00408880
test al, al
jne 0x40848a
push esi
xor ecx, ecx
call fcn.0040bb60
push esi
call fcn.004086e0
test eax, eax
jne 0x4081c4
push esi
call fcn.004078a0
push esi
call fcn.004086e0
cmp eax, 0xd
ja case.0x4081d6.1
movzx edx, byte [eax + 0x4084c4]
jmp dword [edx*4 + 0x4084a8]
push str.Setup_mode:_None
push 0x4549c0
mov ecx, 0x4462a0
call fcn.00406580
add esp, 8
jmp case.0x4081d6.1
push str.Setup_mode:_Installation
jmp 0x408217
push str.Setup_mode:_Update
jmp 0x408217
push str.Setup_mode:_Repair
jmp 0x408217
push str.Setup_mode:_Uninstall
jmp 0x4081e2
push str.Setup_mode:_Modify
push 0x4549c0
mov ecx, 0x4462a0
call fcn.00406580
mov eax, dword [esi]
mov edx, dword [eax + 0x54]
add esp, 8
mov ecx, esi
call edx
push esi
call fcn.004086e0
test eax, eax
je 0x408312
lea ecx, [esi + 0x128]
call fcn.004213a0
mov eax, esi
call fcn.00408880
mov ecx, 0x4462a0
test al, al
je 0x40829a
push str.Silent_mode_is_enabled
push 0x4549c0
call fcn.00406580
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 0x4082b5
push str.Preparing_UI
push 0x4549c0
call fcn.00406580
mov edx, dword [esi]
mov eax, dword [edx + 0x5c]
add esp, 8
mov ecx, esi
call eax
push str.IIF_EXITCODE
call fcn.00404030
push eax
call fcn.0042c5e6
add esp, 4
test eax, eax
je 0x4082da
cmp eax, 0x669
je 0x4082da
cmp eax, 0xbc2
jne 0x408312
cmp byte [esi + 0x13c], 0
je 0x408312
push esi
call fcn.004086e0
cmp eax, 9
jl 0x408312
cmp eax, 0xc
jle 0x40830b
cmp eax, 0xd
jne 0x408312
mov ecx, esi
call fcn.00407510
mov dword [ebp - 4], 0xffffffff
jmp 0x408442
mov ecx, esi
call fcn.00406e10
mov dword [ebp - 4], 0xffffffff
jmp 0x408442
push str.IIF_EXITCODE
lea edi, [esi + 4]
call fcn.00404030
push eax
call fcn.0042c5e6
add esp, 4
cmp eax, 0xbc2
jne 0x40848a
cmp dword [esi + 0x44], 8
lea eax, [esi + 0x30]
jb 0x40846a
mov eax, dword [eax]
push eax
call fcn.004066e0
add esp, 4
push str.Created_reboot_lock
push 0x4549c0
mov ecx, 0x4462a0
call fcn.00406580
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.0042b939
mov esp, ebp
pop ebp
ret