Function at 0x140050040
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.1400519d0
test al, al
je 0x1400503e8
cmp qword [rbx], 0
je 0x1400500fa
mov rcx, rbx
call fcn.140051e50
lea rdx, str.RmRestart
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x1400500d2
xor r8d, r8d
xor edx, edx
mov ecx, dword [rbx + 0x18]
call rax
cmp qword [rbx], 0
je 0x1400500fa
mov rcx, rbx
call fcn.140051e50
lea rdx, str.RmEndSession
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x1400500fa
mov ecx, dword [rbx + 0x18]
call rax
lea r8, str.ICA.RmShutdownSuccess
lea rdx, [rsp + 0xc0]
lea rcx, [rsp + 0x38]
call fcn.140053520
mov rcx, qword [rax]
movzx eax, word [rcx]
xor ebp, ebp
cmp ax, word [reloc.msi.dll_MsiGetFeatureCostA]
jne 0x140050135
movzx eax, word [rcx + 2]
cmp ax, word [0x1402964f6]
jne 0x140050135
mov eax, ebp
jmp 0x14005013a
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 0x14005015b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test bl, bl
je 0x1400503e8
call fcn.140069614
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x140050182
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.140069614
mov rdx, rax
mov ecx, ebp
test rax, rax
setne cl
test ecx, ecx
jne 0x1400501b6
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.140053520
nop
mov r14, qword [rax]
lea rcx, [r14 - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x140050328
cmp dword [rdi + 0x10], 0
jl 0x140050251
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140050251
call fcn.1400116e0
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140050240
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 0x140050328
movsxd rsi, dword [r14 - 0x10]
test esi, esi
jne 0x1400502ab
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x140050328
cmp dword [rdi + 0x10], 0
jge 0x140050281
cmp dword [rbx - 0xc], 0
jl 0x14005038a
mov dword [rbx - 0x10], ebp
mov word [rbx], bp
jmp 0x140050328
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140050294
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 0x140050328
test r14, r14
je 0x1400503ab
mov r12d, dword [rbx - 0x10]
mov rbp, r14
sub rbp, rbx
sar rbp, 1
test esi, esi
js 0x1400503a0
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x1400502f1
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 0x140050312
lea r8, [rbx + rbp*2]
call fcn.1401f377c
jmp 0x14005031a
mov r8, r14
call fcn.1401f3698
cmp esi, dword [rbx - 0xc]
jg 0x140050395
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 0x140050344
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 0x14005035f
mov eax, ebp
jmp 0x140050364
sbb eax, eax
or eax, 1
test eax, eax
je 0x1400503b6
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 0x1400501d0
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 0x1400503cb
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 0x1400503e8
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