Function at 0x14000d9f0
Capabilities:
Delete directory

Disassembly:
mov rax, rsp
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rax - 0x68]
sub rsp, 0x140
mov qword [rbp - 0x28], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rbp + 0x30], rax
mov rbx, rcx
call fcn.14000f4e0
lea rcx, [rbx + 0x1a0]
call fcn.140053ef0
lea rdx, [0x140296e0c]
mov ecx, 0x92000000
test al, al
je 0x14000da59
call fcn.14002b0d0
call fcn.14000ea90
mov esi, eax
jmp 0x14000de45
call fcn.14002b0d0
mov rcx, rbx
call fcn.14000e500
mov esi, eax
test eax, eax
je 0x14000da7a
cmp eax, 0x669
je 0x14000da7a
cmp eax, 0xbc2
jne 0x14000da7f
call fcn.140013880
lea rcx, [rsp + 0x60]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
nop
lea r12, vtable.CUtlXIca.0
mov qword [rsp + 0x60], r12
lea rax, [rbp - 0x80]
mov qword [rsp + 0x48], rax
lea r15, vtable.CUtlXProperty.0
mov qword [rbp - 0x80], r15
lea rcx, [rbp - 0x78]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
lea r14, vtable.CUtlX.0
mov qword [rbp - 0x78], r14
mov edx, 2
lea rcx, [rbp - 0x78]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::SetFileIndex_enum_XMLFILENAMES____ptr64]
nop
mov qword [rbp - 0x58], 0
lea rax, vtable.CUtlXSetupMsi.0
mov qword [rsp + 0x60], rax
mov qword [rbp - 0x50], r15
lea rcx, [rbp - 0x48]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::constructor_void____ptr64]
mov qword [rbp - 0x48], r14
mov edx, 2
lea rcx, [rbp - 0x48]
call qword [sym.imp.SetupXML.dll_public:_void___cdecl_CXMLFileManagerInterface::SetFileIndex_enum_XMLFILENAMES____ptr64]
nop
call fcn.1400694ec
mov rdx, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x14000db25
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 + 0x30], rax
lea r8, str.managed
lea rdx, str.__ICA_Setups_Msi___s_1__
lea rcx, [rsp + 0x30]
call fcn.140011640
mov rbx, qword [rsp + 0x30]
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.1400408b0
mov edi, eax
lea rdx, [rbx - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000db78
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
test edi, edi
je 0x14000de0a
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x60]
mov rax, qword [rsp + 0x60]
call qword [rax + MsiGetFeatureCostA]
xor dil, dil
mov rcx, qword [rax]
call qword [sym.imp.msi.dll_MsiRecordGetStringA]
cmp eax, 5
je 0x14000dba8
cmp eax, 2
jne 0x14000dbab
mov dil, 1
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000dbc4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test dil, dil
jne 0x14000de0a
lea r8, [0x140296860]
lea rdx, [rsp + 0x20]
lea rcx, [rbp - 0x50]
call fcn.140053410
nop
mov rax, qword [rsp + 0x20]
movzx ecx, word [rax]
cmp cx, word [0x140296e0c]
jne 0x14000dbf8
xor ecx, ecx
jmp 0x14000dbfd
sbb ecx, ecx
or ecx, 1
test ecx, ecx
je 0x14000ddf5
mov rdx, rax
lea rcx, [rbp - 0x20]
call fcn.14003be00
nop
mov rdx, qword [rsp + 0x20]
lea rcx, [rbp - 0x20]
call fcn.14003c990
lea rdx, [rsp + 0x38]
lea rcx, [rbp - 0x20]
call fcn.14003e480
nop
lea rdx, [rsp + 0x40]
lea rcx, [rbp - 0x20]
call fcn.14003c070
mov rdx, qword [rax]
xor eax, eax
test rdx, rdx
setne al
test eax, eax
je 0x14000ddea
mov rax, qword [rsp + 0x38]
sub rdx, rax
nop dword [rax + rax]
movzx ecx, word [rax]
cmp cx, word [rax + rdx]
jne 0x14000dc76
add rax, 2
test cx, cx
jne 0x14000dc60
xor eax, eax
jmp 0x14000dc7b
sbb eax, eax
or eax, 1
test eax, eax
setne dil
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000dc9a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test dil, dil
je 0x14000dda6
lea rdx, [rsp + 0x58]
lea rcx, [rbp - 0x20]
call fcn.14003bfc0
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000dcd3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rsp + 0x28]
lea rcx, [rbp - 0x20]
call fcn.14003c070
nop
lea rcx, [rbp - 0x20]
call fcn.14003c8c0
lea rdx, [rsp + 0x48]
lea rcx, [rbp - 0x20]
call fcn.14003c070
mov rdx, qword [rax]
xor eax, eax
test rdx, rdx
setne al
test eax, eax
je 0x14000dd9b
mov rax, qword [rsp + 0x28]
sub rdx, rax
movzx ecx, word [rax]
cmp cx, word [rax + rdx]
jne 0x14000dd2a
add rax, 2
test cx, cx
jne 0x14000dd14
xor eax, eax
jmp 0x14000dd2f
sbb eax, eax
or eax, 1
test eax, eax
sete dil
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000dd4f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
test dil, dil
jne 0x14000dd89
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000dd6d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rdx, [rsp + 0x40]
lea rcx, [rbp - 0x20]
call fcn.14003c070
mov rdx, qword [rax]
test rdx, rdx
jne 0x14000dc50
jmp 0x14000ddea
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000dda6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14000dda6
mov ecx, 0x80004005
call fcn.140011b60
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000ddc0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp - 0x20], rax
mov rdx, qword [rbp - 0x18]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000dde3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsp + 0x20]
jmp 0x14000ddf5
mov ecx, 0x80004005
call fcn.140011b60
nop
lea rdx, [rax - 0x18]
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14000de0a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov qword [rbp - 0x50], r15
mov qword [rbp - 0x48], r14
lea rcx, [rbp - 0x48]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
mov qword [rsp + 0x60], r12
mov qword [rbp - 0x80], r15
mov qword [rbp - 0x78], r14
lea rcx, [rbp - 0x78]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
nop
mov qword [rsp + 0x60], r14
lea rcx, [rsp + 0x60]
call qword [sym.imp.SetupXML.dll_public_virtual:_void___cdecl_CXMLFileManagerInterface::destructor_void____ptr64]
mov r8d, esi
lea rdx, [0x14029709c]
mov ecx, 0x95000000
call fcn.14002b0d0
mov eax, esi
mov rcx, qword [rbp + 0x30]
xor rcx, rsp
call fcn.1401f2f70
lea r11, [rsp + 0x140]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret