Function at 0x14004ff30
Capabilities:
Create process on windows

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov qword [rsp + 0x30], 0xfffffffffffffffe
mov rbx, rcx
lea rax, vtable.CUtlXProperty.0
mov qword [rsp + 0x38], rax
lea rcx, [rsp + 0x40]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
lea rax, vtable.CUtlX.0
mov qword [rsp + 0x40], rax
mov edx, 2
lea rcx, [rsp + 0x40]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::SetFileIndex_enum_XMLFILENAMES____ptr64]
nop
add rbx, 8
mov rcx, rbx
call fcn.1400518c0
test al, al
je 0x1400502d8
cmp qword [rbx], 0
je 0x14004ffea
mov rcx, rbx
call fcn.140051d40
lea rdx, str.RmRestart
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x14004ffc2
xor r8d, r8d
xor edx, edx
mov ecx, dword [rbx + 0x18]
call rax
cmp qword [rbx], 0
je 0x14004ffea
mov rcx, rbx
call fcn.140051d40
lea rdx, str.RmEndSession
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x14004ffea
mov ecx, dword [rbx + 0x18]
call rax
lea r8, str.ICA.RmShutdownSuccess
lea rdx, [rsp + 0xc0]
lea rcx, [rsp + 0x38]
call fcn.140053410
mov rcx, qword [rax]
movzx eax, word [rcx]
xor ebp, ebp
cmp ax, word [reloc.msi.dll_MsiGetFeatureCostA]
jne 0x140050025
movzx eax, word [rcx + 2]
cmp ax, word [0x1402964f6]
jne 0x140050025
mov eax, ebp
jmp 0x14005002a
sbb eax, eax
or eax, 1
test eax, eax
sete bl
mov rdx, qword [rsp + 0xc0]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14005004b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test bl, bl
je 0x1400502d8
call fcn.1400694ec
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x140050072
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0xb8], rax
call fcn.1400694ec
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x1400500a6
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rsp + 0xb0], rbx
mov r13d, ebp
nop
mov r8d, r13d
lea rdx, str.Files.In.Use.Exe._d
lea rcx, [rsp + 0xb8]
call fcn.140011640
mov r8, qword [rsp + 0xb8]
lea rdx, [rsp + 0xc8]
lea rcx, [rsp + 0x38]
call fcn.140053410
nop
mov r14, qword [rax]
lea rcx, [r14 - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x140050218
cmp dword [rdi + 0x10], 0
jl 0x140050141
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140050141
call fcn.1400116e0
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140050130
mov rcx, qword [rdi]
mov r8, qword [rcx]
mov rdx, rdi
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rbx + 0x18]
mov qword [rsp + 0xb0], rax
jmp 0x140050218
movsxd rsi, dword [r14 - 0x10]
test esi, esi
jne 0x14005019b
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x140050218
cmp dword [rdi + 0x10], 0
jge 0x140050171
cmp dword [rbx - 0xc], 0
jl 0x14005027a
mov dword [rbx - 0x10], ebp
mov word [rbx], bp
jmp 0x140050218
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140050184
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0xb0], rax
jmp 0x140050218
test r14, r14
je 0x14005029b
mov r12d, dword [rbx - 0x10]
mov rbp, r14
sub rbp, rbx
sar rbp, 1
test esi, esi
js 0x140050290
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x1400501e1
mov edx, esi
lea rcx, [rsp + 0xb0]
call fcn.140011b00
mov rbx, qword [rsp + 0xb0]
lea rdi, [rsi + rsi]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
mov r9, rdi
add rdx, rdx
cmp rbp, r12
ja 0x140050202
lea r8, [rbx + rbp*2]
call fcn.1401f366c
jmp 0x14005020a
mov r8, r14
call fcn.1401f3588
cmp esi, dword [rbx - 0xc]
jg 0x140050285
mov dword [rbx - 0x10], esi
xor ebp, ebp
mov word [rdi + rbx], bp
mov rdx, qword [rsp + 0xc8]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x140050234
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
inc r13d
mov rbx, qword [rsp + 0xb0]
movzx eax, word [rbx]
cmp ax, word [0x140296e0c]
jne 0x14005024f
mov eax, ebp
jmp 0x140050254
sbb eax, eax
or eax, 1
test eax, eax
je 0x1400502a6
mov dword [rsp + 0x28], 1
mov qword [rsp + 0x20], rbp
xor r9d, r9d
mov r8, rbx
xor edx, edx
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp 0x1400500c0
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, 0x80070057
call fcn.140011b60
int3
mov ecx, 0x80070057
call fcn.140011b60
nop
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x1400502bb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0xb8]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x1400502d8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rax, vtable.CUtlXProperty.0
mov qword [rsp + 0x38], rax
lea rax, vtable.CUtlX.0
mov qword [rsp + 0x40], rax
lea rcx, [rsp + 0x40]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret