Function at 0x14003caa0
Capabilities:
Delete directory

Disassembly:
push rbp
push rsi
push rdi
lea rbp, [rsp - 0x47]
sub rsp, 0xf0
mov qword [rbp - 0x29], 0xfffffffffffffffe
mov qword [rsp + 0x120], rbx
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rbp + 0x37], rax
mov rbx, rdx
mov qword [rbp - 0x79], rcx
call fcn.140069614
mov rcx, rax
xor esi, esi
mov edx, esi
test rax, rax
setne dl
test edx, edx
jne 0x14003caf6
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x11], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp - 0x19], rax
mov dword [rbp - 9], esi
or rdi, 0xffffffffffffffff
test rbx, rbx
jne 0x14003cb1f
mov eax, esi
jmp 0x14003cb2c
mov rax, rdi
inc rax
cmp word [rbx + rax*2], 0
jne 0x14003cb22
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp - 0x11]
call fcn.140011b80
nop
mov edx, 2
lea rcx, [rbp - 0x19]
call fcn.14003d170
test al, al
je 0x14003ccf7
lea rdx, [0x140298918]
lea rcx, [rbp - 0x19]
call fcn.14003c240
lea rcx, [rbp - 0x61]
call fcn.140070fe4
nop
xor r8d, r8d
mov rdx, qword [rbp - 0x11]
lea rcx, [rbp - 0x61]
call fcn.140071200
test eax, eax
je 0x14003cced
call fcn.140069614
mov rcx, rax
test rax, rax
setne sil
test esi, esi
jne 0x14003cba2
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
lea rcx, [rbp - 0x61]
call fcn.14007154c
mov esi, eax
mov dword [rsp + 0x28], eax
lea rcx, [rbp - 0x61]
call fcn.140071b30
test eax, eax
jne 0x14003cc8a
lea rdx, [rbp - 0x69]
lea rcx, [rbp - 0x61]
call fcn.1400716ec
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14003cc37
cmp dword [rbx + 0x10], 0
jl 0x14003cc28
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14003cc28
call fcn.1400116e0
mov rsi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14003cc19
mov rcx, qword [rbx]
mov r8, qword [rcx]
mov rdx, rbx
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x20], rax
mov esi, dword [rsp + 0x28]
jmp 0x14003cc37
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140011b80
nop
mov rdx, qword [rbp - 0x69]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003cc4f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov edx, reloc.OLEAUT32.dll_SafeArrayGetDim
lea rcx, [rbp - 0x61]
mov rax, qword [rbp - 0x61]
call qword [rax + MsiRecordGetStringA]
test eax, eax
je 0x14003cc71
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rbp - 0x79]
call fcn.14003caa0
xor r8d, r8d
lea rdx, [0x140296e0c]
lea rcx, [rsp + 0x20]
call fcn.140011b80
mov rbx, qword [rsp + 0x20]
test esi, esi
jg 0x14003cbb1
lea rcx, [rbp - 0x61]
call fcn.1400711a0
lea rcx, [rbp - 0x19]
call fcn.14003c9d0
lea rdx, [rbp - 0x71]
lea rcx, [rbp - 0x19]
call fcn.14003c0d0
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov rdx, qword [rbp - 0x71]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003ccd3
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003cced
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rbp - 0x61]
call fcn.14007112c
nop
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp - 0x19], rax
mov rdx, qword [rbp - 0x11]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003cd1a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x37]
xor rcx, rsp
call fcn.1401f3080
mov rbx, qword [rsp + 0x120]
add rsp, 0xf0
pop rdi
pop rsi
pop rbp
ret