Function at 0x14003d440
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.1400694ec
mov rcx, rax
xor ebx, ebx
mov edx, ebx
test rax, rax
setne dl
test edx, edx
jne 0x14003d4a2
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 0x14003d4cb
mov eax, ebx
jmp 0x14003d4da
mov rax, rdi
nop
inc rax
cmp word [rsi + rax*2], 0
jne 0x14003d4d0
mov r8d, eax
mov rdx, rsi
lea rcx, [rbp - 0x68]
call fcn.140011b80
nop
lea rcx, [rsp + 0x50]
call fcn.140070da8
nop
xorps xmm0, xmm0
movdqa xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], rbx
mov dword [rbp], ebx
call fcn.1400694ec
mov rdx, rax
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
jne 0x14003d523
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 0x14003d565
movzx esi, ax
mov ecx, esi
call fcn.140068f14
test rax, rax
je 0x14003d576
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140011830
jmp 0x14003d576
xor r8d, r8d
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140011b80
nop
call fcn.1400694ec
mov rdx, rax
mov ecx, ebx
test rax, rax
setne cl
test ecx, ecx
jne 0x14003d595
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 0x14003d5ec
test rdx, 0xffffffffffff0000
jne 0x14003d5da
movzx esi, dx
mov ecx, esi
call fcn.140068f14
test rax, rax
je 0x14003d5fc
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x28]
call fcn.140011830
jmp 0x14003d5fc
mov rax, rdi
nop dword [rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x14003d5e0
jmp 0x14003d5ee
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 0x14003d612
sbb ebx, ebx
or ebx, 1
test ebx, ebx
je 0x14003d763
lea rdx, [0x140298918]
lea rcx, [rbp - 0x70]
call fcn.14003c130
xor r8d, r8d
mov rdx, qword [rbp - 0x68]
lea rcx, [rsp + 0x50]
call fcn.140070fc4
test eax, eax
je 0x14003d757
lea rcx, [rsp + 0x50]
call fcn.140071310
mov esi, eax
mov dword [rsp + 0x30], eax
lea rcx, [rsp + 0x50]
call fcn.1400718f4
test eax, eax
jne 0x14003d745
lea rdx, [rsp + 0x48]
lea rcx, [rsp + 0x50]
call fcn.1400714b0
nop
mov rdx, qword [rax]
lea rcx, [rdx - 0x18]
mov rbx, qword [rsp + 0x20]
add rbx, 0xffffffffffffffe8
cmp rcx, rbx
je 0x14003d6d2
cmp dword [rbx + 0x10], 0
jl 0x14003d6c3
mov rax, qword [rbx]
cmp qword [rcx], rax
jne 0x14003d6c3
call fcn.1400116e0
mov rsi, rax
lock add dword [rbx + 0x10], 0xffffffff
jg 0x14003d6b4
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 0x14003d6d2
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 0x14003d6eb
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 0x14003d715
mov r8b, 1
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsp + 0x38]
call fcn.14003d440
jmp 0x14003d731
xor r8d, r8d
lea rdx, [rbp - 0x20]
mov rcx, qword [rsp + 0x20]
call fcn.140072310
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 0x14003d643
lea rcx, [rsp + 0x50]
call fcn.140070f64
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 0x14003d77d
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 0x14003d797
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x50]
call fcn.140070ef0
nop
mov rdx, qword [rbp - 0x68]
add rdx, 0xffffffffffffffe8
lock add dword [rdx + 0x10], 0xffffffff
jg 0x14003d7ba
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.1401f2f70
mov rbx, qword [rsp + 0x350]
add rsp, 0x320
pop rdi
pop rsi
pop rbp
ret