Function at 0x14003d550
Capabilities:
Delete directory
Delete file

Disassembly:
push rbp
push rsi
push rdi
lea rbp, [rsp - 0x220]
sub rsp, 0x320
mov qword [rbp - 0x78], 0xfffffffffffffffe
mov qword [rsp + 0x350], rbx
mov rax, qword [0x1402fcb80]
xor rax, rsp
mov qword [rbp + 0x210], rax
mov rsi, rdx
mov qword [rsp + 0x40], rdx
mov qword [rsp + 0x38], rcx
call fcn.140069614
mov rcx, rax
xor ebx, ebx
mov edx, ebx
test rax, rax
setne dl
test edx, edx
jne 0x14003d5b2
mov ecx, 0x80004005
call fcn.140011b60
int3
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x68], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp - 0x70], rax
mov dword [rbp - 0x60], ebx
or rdi, 0xffffffffffffffff
test rsi, rsi
jne 0x14003d5db
mov eax, ebx
jmp 0x14003d5ea
mov rax, rdi
nop
inc rax
cmp word [rsi + rax*2], 0
jne 0x14003d5e0
mov r8d, eax
mov rdx, rsi
lea rcx, [rbp - 0x68]
call fcn.140011b80
nop
lea rcx, [rsp + 0x50]
call fcn.140070fe4
nop
xorps xmm0, xmm0
movdqa xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], rbx
mov dword [rbp], ebx
call fcn.140069614
mov rdx, rax
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
jne 0x14003d633
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 + 0x20], rax
lea rax, [0x140296e0c]
test rax, 0xffffffffffff0000
jne 0x14003d675
movzx esi, ax
mov ecx, esi
call fcn.140069024
test rax, rax
je 0x14003d686
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140011830
jmp 0x14003d686
xor r8d, r8d
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140011b80
nop
call fcn.140069614
mov rdx, rax
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
jne 0x14003d6a5
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 + 0x28], rax
mov rdx, qword [rbp - 0x68]
test rdx, rdx
je 0x14003d6fc
test rdx, 0xffffffffffff0000
jne 0x14003d6ea
movzx esi, dx
mov ecx, esi
call fcn.140069024
test rax, rax
je 0x14003d70c
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x28]
call fcn.140011830
jmp 0x14003d70c
mov rax, rdi
nop dword [rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x14003d6f0
jmp 0x14003d6fe
mov eax, ebx
mov r8d, eax
lea rcx, [rsp + 0x28]
call fcn.140011b80
nop
mov rax, qword [rsp + 0x28]
movzx ecx, word [rax]
cmp cx, word [0x140296e0c]
je 0x14003d722
sbb ebx, ebx
or ebx, 1
test ebx, ebx
je 0x14003d873
lea rdx, [0x140298918]
lea rcx, [rbp - 0x70]
call fcn.14003c240
xor r8d, r8d
mov rdx, qword [rbp - 0x68]
lea rcx, [rsp + 0x50]
call fcn.140071200
test eax, eax
je 0x14003d867
lea rcx, [rsp + 0x50]
call fcn.14007154c
mov esi, eax
mov dword [rsp + 0x30], eax
lea rcx, [rsp + 0x50]
call fcn.140071b30
test eax, eax
jne 0x14003d855
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x50]
call fcn.1400716ec
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rbx, qword [rsp + 0x20]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14003d7e2
cmp dword [rbx + 0x10], 0
jl 0x14003d7d3
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14003d7d3
call fcn.1400116e0
mov rsi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14003d7c4
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 + 0x30]
jmp 0x14003d7e2
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.140011b80
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003d7fb
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov edx, reloc.OLEAUT32.dll_SafeArrayGetDim
lea rcx, [rsp + 0x50]
mov rax, qword [rsp + 0x50]
call qword [rax + MsiRecordGetStringA]
test eax, eax
je 0x14003d825
mov r8b, 1
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsp + 0x38]
call fcn.14003d550
jmp 0x14003d841
xor r8d, r8d
lea rdx, [rbp - 0x20]
mov rcx, qword [rsp + 0x20]
call fcn.14007254c
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
xor r8d, r8d
lea rdx, [0x140296e0c]
lea rcx, [rsp + 0x20]
call fcn.140011b80
test esi, esi
jg 0x14003d753
lea rcx, [rsp + 0x50]
call fcn.1400711a0
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003d88d
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 0x14003d8a7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x50]
call fcn.14007112c
nop
mov rdx, qword [rbp - 0x68]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003d8ca
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x210]
xor rcx, rsp
call fcn.1401f3080
mov rbx, qword [rsp + 0x350]
add rsp, 0x320
pop rdi
pop rsi
pop rbp
ret