Function at 0x140001130
Capabilities:
Check os version
Create process on windows
Inspect load icon resource

Disassembly:
mov rax, rsp
push rbp
push r14
push r15
lea rbp, [rax - 0x268]
sub rsp, 0x350
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r12
mov rax, qword [0x14025bd70]
xor rax, rsp
mov qword [rbp + 0x240], rax
mov rsi, rcx
mov dword [rsp + 0x50], 8
mov dword [rsp + 0x54], 0xff
lea rcx, [rsp + 0x50]
call qword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov rcx, rsi
call fcn.140008760
xor ecx, ecx
call fcn.140009d78
xor r9d, r9d
lea edx, [r9 + 0x66]
lea r8d, [r9 + 0x68]
lea rcx, [rbp - 0x40]
call fcn.140015538
nop
lea rax, vtable.CSetupARPDlg.1.0
mov qword [rbp - 0x40], rax
lea rax, vtable.CSetupARPDlg.0
mov qword [rbp + 0xd8], rax
mov word [rbp + 0x238], 0
call fcn.14001c0cc
call fcn.14001c0cc
mov edx, 0x80
mov rcx, qword [rax + 0x18]
call qword [sym.imp.USER32.dll_LoadIconW]
mov qword [rbp + 0x230], rax
lea rax, [rbp - 0x40]
mov qword [rsi + 0x40], rax
xor r8d, r8d
lea edx, [r8 + 0x66]
lea rcx, [rbp - 0x40]
call fcn.14000b118
mov byte [rbp + 0x239], 1
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.140011b7c
mov rcx, rsi
call fcn.140002050
mov rcx, rsi
call fcn.140001d80
lea rcx, [rsi + 0x178]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
call fcn.140009adc
mov rdx, rax
xor r15d, r15d
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x14000125e
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x40], rax
call fcn.140009adc
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x140001290
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x38], rax
call fcn.140009adc
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x1400012c2
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x30], rbx
mov eax, dword [rsi + 0x28c]
or r14, 0xffffffffffffffff
cmp eax, 2
jne 0x14000132c
mov r8, qword [rsi + 0x298]
lea rdx, str._sSetupArp.exe
lea rcx, [rsp + 0x40]
call fcn.140004430
mov rax, qword [rsi + 0x298]
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], rax
lea r9, str._WaitVista
mov r8, qword [rsp + 0x40]
xor edx, edx
mov rcx, qword [rbp]
call qword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x140001682
cmp eax, 5
jne 0x14000133b
mov dword [rsi + 0x28c], 4
cmp dword [rsi + 0x28c], 3
jne 0x140001354
cmp dword [rsi + 0x17c], 6
jae 0x140001354
mov dword [rsi + 0x28c], r15d
mov r8, qword [rsi + 0x298]
lea rdx, str._sSetup.exe
lea rcx, [rsp + 0x40]
call fcn.140004430
mov r8, qword [rsi + 0x298]
lea rdx, str.SETUP_FOLDER_ROOT__s_
lea rcx, [rsp + 0x38]
call fcn.140004430
mov rdx, qword [rsi + 0x298]
lea rcx, [rdx - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x1400013e0
cmp dword [rdi + 0x10], 0
jl 0x1400013cd
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400013cd
call fcn.140004a20
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x1400013c2
mov rcx, qword [rdi]
mov r8, qword [rcx]
mov rdx, rdi
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
add rbx, 0x18
mov qword [rsp + 0x30], rbx
jmp 0x1400013e0
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x30]
call fcn.140004870
mov rbx, qword [rsp + 0x30]
cmp dword [rsi + 0x28c], 4
jl 0x1400014ae
mov rcx, rsi
call fcn.1400028e0
test al, al
je 0x14000146f
mov r8, qword [rsi + 0x290]
lea rdx, str._sSetup.exe
lea rcx, [rsp + 0x40]
call fcn.140004430
mov rdx, qword [rsi + 0x290]
lea rcx, [rdx - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x14000148e
cmp dword [rdi + 0x10], 0
jl 0x14000145a
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14000145a
call fcn.140004a20
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x14000144f
mov rcx, qword [rdi]
mov r8, qword [rcx]
mov rdx, rdi
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
add rbx, 0x18
mov qword [rsp + 0x30], rbx
jmp 0x14000148e
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x30]
call fcn.140004870
mov rbx, qword [rsp + 0x30]
jmp 0x14000148e
mov r8, qword [rsi + 0x298]
lea rdx, str.SETUP_FOLDER_ROOT__s_
lea rcx, [rsp + 0x38]
call fcn.140004430
mov dword [rsi + 0x28c], r15d
cmp dword [rsi + 0x28c], 4
jne 0x1400014ae
mov r8d, 9
lea rdx, str.__arpmode
lea rcx, [rsp + 0x38]
call fcn.140003f70
cmp dword [rsi + 0x28c], 1
jl 0x1400014ce
mov r8d, reloc.OLEAUT32.dll_SafeArrayUnaccessData
lea rdx, str._USER_TOKEN_AVAILABLE1
lea rcx, [rsp + 0x38]
call fcn.140003f70
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], rbx
mov r9, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
mov r8, rdi
xor edx, edx
mov rcx, qword [rbp]
call qword [sym.imp.SHELL32.dll_ShellExecuteW]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.140015354
test r12d, r12d
jne 0x140001531
cmp dword [rsi + 0x28c], 1
jl 0x140001682
call fcn.140001cf0
call fcn.140001b20
mov rcx, rsi
call fcn.1400017e0
jmp 0x140001682
call fcn.140009adc
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x140001551
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x78], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rsp + 0x70], rax
mov dword [rbp - 0x80], r15d
test rdi, rdi
jne 0x14000157d
mov eax, r15d
jmp 0x14000158a
mov rax, r14
inc rax
cmp word [rdi + rax*2], 0
jne 0x140001580
mov r8d, eax
mov rdx, rdi
lea rcx, [rsp + 0x78]
call fcn.140004870
nop
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x70]
call fcn.140006550
nop
call fcn.140009adc
mov rcx, rax
test rax, rax
setne r15b
test r15d, r15d
jne 0x1400015ca
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x48], rax
mov r8d, r12d
lea rdx, [rsp + 0x60]
call fcn.140001720
nop
mov r9, qword [rax]
mov r8, rdi
lea rdx, str._s_n_n_s
lea rcx, [rsp + 0x48]
call fcn.140004430
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x140001618
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r9d, reloc.OLEAUT32.dll_SafeArrayGetDim
mov r8, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x48]
mov rdx, rbx
lea rcx, [rbp - 0x40]
call fcn.14000f614
nop
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000164a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x140001664
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000167d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x30]
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x140001697
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x1400016b1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x1400016cb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rbp - 0x40]
call fcn.140015710
xor eax, eax
mov rcx, qword [rbp + 0x240]
xor rcx, rsp
call fcn.14018d4a0
lea r11, [rsp + 0x350]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rdi, qword [r11 + 0x30]
mov r12, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop rbp
ret