Function at 0x140002200
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 - 0x278]
sub rsp, 0x360
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 [0x14025eb70]
xor rax, rsp
mov qword [rbp + 0x250], 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.14000980c
xor ecx, ecx
call fcn.14000aed8
xor r9d, r9d
lea edx, [r9 + 0x66]
lea r8d, [r9 + 0x68]
lea rcx, [rbp - 0x40]
call fcn.1400167c8
nop
lea rax, vtable.CSetupARPDlg.1.0
mov qword [rbp - 0x40], rax
lea rax, vtable.CSetupARPDlg.0
mov qword [rbp + 0xe0], rax
mov word [rbp + 0x240], 0
call fcn.14001d318
call fcn.14001d318
mov edx, 0x80
mov rcx, qword [rax + 0x18]
call qword [sym.imp.USER32.dll_LoadIconW]
mov qword [rbp + 0x238], rax
lea rax, [rbp - 0x40]
mov qword [rsi + 0x40], rax
xor r8d, r8d
lea edx, [r8 + 0x66]
lea rcx, [rbp - 0x40]
call fcn.14000c278
mov byte [rbp + 0x241], 1
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.140012d28
mov rcx, rsi
call fcn.140003120
mov rcx, rsi
call fcn.140002e50
lea rcx, [rsi + 0x178]
call qword [sym.imp.KERNEL32.dll_GetVersionExW]
call fcn.14000ab7c
mov rdx, rax
xor r15d, r15d
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x14000232e
mov ecx, 0x80004005
call fcn.140005bc0
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.14000ab7c
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x140002360
mov ecx, 0x80004005
call fcn.140005bc0
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.14000ab7c
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x140002392
mov ecx, 0x80004005
call fcn.140005bc0
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 0x1400023fc
mov r8, qword [rsi + 0x298]
lea rdx, str._sSetupArp.exe
lea rcx, [rsp + 0x40]
call fcn.140005500
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 0x140002752
cmp eax, 5
jne 0x14000240b
mov dword [rsi + 0x28c], 4
cmp dword [rsi + 0x28c], 3
jne 0x140002424
cmp dword [rsi + 0x17c], 6
jae 0x140002424
mov dword [rsi + 0x28c], r15d
mov r8, qword [rsi + 0x298]
lea rdx, str._sSetup.exe
lea rcx, [rsp + 0x40]
call fcn.140005500
mov r8, qword [rsi + 0x298]
lea rdx, str.SETUP_FOLDER_ROOT__s_
lea rcx, [rsp + 0x38]
call fcn.140005500
mov rdx, qword [rsi + 0x298]
lea rcx, [rdx - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x1400024b0
cmp dword [rdi + 0x10], 0
jl 0x14000249d
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14000249d
call fcn.140005af0
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140002492
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 0x1400024b0
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x30]
call fcn.140005940
mov rbx, qword [rsp + 0x30]
cmp dword [rsi + 0x28c], 4
jl 0x14000257e
mov rcx, rsi
call fcn.1400039b0
test al, al
je 0x14000253f
mov r8, qword [rsi + 0x290]
lea rdx, str._sSetup.exe
lea rcx, [rsp + 0x40]
call fcn.140005500
mov rdx, qword [rsi + 0x290]
lea rcx, [rdx - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x14000255e
cmp dword [rdi + 0x10], 0
jl 0x14000252a
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x14000252a
call fcn.140005af0
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x14000251f
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 0x14000255e
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x30]
call fcn.140005940
mov rbx, qword [rsp + 0x30]
jmp 0x14000255e
mov r8, qword [rsi + 0x298]
lea rdx, str.SETUP_FOLDER_ROOT__s_
lea rcx, [rsp + 0x38]
call fcn.140005500
mov dword [rsi + 0x28c], r15d
cmp dword [rsi + 0x28c], 4
jne 0x14000257e
mov r8d, 9
lea rdx, str.__arpmode
lea rcx, [rsp + 0x38]
call fcn.140005040
cmp dword [rsi + 0x28c], 1
jl 0x14000259e
mov r8d, reloc.OLEAUT32.dll_SafeArrayUnaccessData
lea rdx, str._USER_TOKEN_AVAILABLE1
lea rcx, [rsp + 0x38]
call fcn.140005040
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.1400165e4
test r12d, r12d
jne 0x140002601
cmp dword [rsi + 0x28c], 1
jl 0x140002752
call fcn.140002dc0
call fcn.140002bf0
mov rcx, rsi
call fcn.1400028b0
jmp 0x140002752
call fcn.14000ab7c
mov rdx, rax
mov ecx, r15d
test rax, rax
setne cl
test ecx, ecx
jne 0x140002621
mov ecx, 0x80004005
call fcn.140005bc0
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 0x14000264d
mov eax, r15d
jmp 0x14000265a
mov rax, r14
inc rax
cmp word [rdi + rax*2], 0
jne 0x140002650
mov r8d, eax
mov rdx, rdi
lea rcx, [rsp + 0x78]
call fcn.140005940
nop
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x70]
call fcn.140007620
nop
call fcn.14000ab7c
mov rcx, rax
test rax, rax
setne r15b
test r15d, r15d
jne 0x14000269a
mov ecx, 0x80004005
call fcn.140005bc0
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.1400027f0
nop
mov r9, qword [rax]
mov r8, rdi
lea rdx, str._s_n_n_s
lea rcx, [rsp + 0x48]
call fcn.140005500
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x1400026e8
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.1400107ac
nop
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000271a
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 0x140002734
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 0x14000274d
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 0x140002767
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 0x140002781
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 0x14000279b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rbp - 0x40]
call fcn.1400169c0
xor eax, eax
mov rcx, qword [rbp + 0x250]
xor rcx, rsp
call fcn.140193140
lea r11, [rsp + 0x360]
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