Function at 0x14003c990
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.1400694ec
mov rcx, rax
xor esi, esi
mov edx, esi
test rax, rax
setne dl
test edx, edx
jne 0x14003c9e6
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 0x14003ca0f
mov eax, esi
jmp 0x14003ca1c
mov rax, rdi
inc rax
cmp word [rbx + rax*2], 0
jne 0x14003ca12
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp - 0x11]
call fcn.140011b80
nop
mov edx, 2
lea rcx, [rbp - 0x19]
call fcn.14003d060
test al, al
je 0x14003cbe7
lea rdx, [0x140298918]
lea rcx, [rbp - 0x19]
call fcn.14003c130
lea rcx, [rbp - 0x61]
call fcn.140070da8
nop
xor r8d, r8d
mov rdx, qword [rbp - 0x11]
lea rcx, [rbp - 0x61]
call fcn.140070fc4
test eax, eax
je 0x14003cbdd
call fcn.1400694ec
mov rcx, rax
test rax, rax
setne sil
test esi, esi
jne 0x14003ca92
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.140071310
mov esi, eax
mov dword [rsp + 0x28], eax
lea rcx, [rbp - 0x61]
call fcn.1400718f4
test eax, eax
jne 0x14003cb7a
lea rdx, [rbp - 0x69]
lea rcx, [rbp - 0x61]
call fcn.1400714b0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14003cb27
cmp dword [rbx + 0x10], 0
jl 0x14003cb18
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14003cb18
call fcn.1400116e0
mov rsi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14003cb09
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 0x14003cb27
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 0x14003cb3f
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 0x14003cb61
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rbp - 0x79]
call fcn.14003c990
xor r8d, r8d
lea rdx, [0x140296e0c]
lea rcx, [rsp + 0x20]
call fcn.140011b80
mov rbx, qword [rsp + 0x20]
test esi, esi
jg 0x14003caa1
lea rcx, [rbp - 0x61]
call fcn.140070f64
lea rcx, [rbp - 0x19]
call fcn.14003c8c0
lea rdx, [rbp - 0x71]
lea rcx, [rbp - 0x19]
call fcn.14003bfc0
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 0x14003cbc3
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 0x14003cbdd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rbp - 0x61]
call fcn.140070ef0
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 0x14003cc0a
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.1401f2f70
mov rbx, qword [rsp + 0x120]
add rsp, 0xf0
pop rdi
pop rsi
pop rbp
ret