Function at 0x140006060
Capabilities:
Delete directory
Delete file

Disassembly:
push rbp
push rsi
push rdi
lea rbp, [rsp - 0x240]
sub rsp, 0x340
mov qword [rbp - 0x60], 0xfffffffffffffffe
mov qword [rsp + 0x370], rbx
mov rax, qword [0x14025bd70]
xor rax, rsp
mov qword [rbp + 0x230], rax
mov rbx, rdx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x50], rcx
call fcn.140009adc
mov rcx, rax
xor esi, esi
mov edx, esi
test rax, rax
setne dl
test edx, edx
jne 0x1400060c2
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rbp - 0x48], rax
lea rax, vtable.CUtlCommonPath.0
mov qword [rbp - 0x50], rax
mov dword [rbp - 0x40], esi
or rdi, 0xffffffffffffffff
test rbx, rbx
jne 0x1400060eb
mov eax, esi
jmp 0x1400060fa
mov rax, rdi
nop
inc rax
cmp word [rbx + rax*2], 0
jne 0x1400060f0
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp - 0x48]
call fcn.140004870
nop
lea rcx, [rsp + 0x68]
call fcn.140018438
nop
xorps xmm0, xmm0
movdqa xmmword [rbp], xmm0
mov qword [rbp + 0x10], rsi
mov dword [rbp + 0x20], esi
call fcn.140009adc
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x140006143
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x20], rbx
lea rax, [0x140216d20]
test rax, 0xffffffffffff0000
jne 0x14000618a
movzx esi, ax
mov ecx, esi
call fcn.1400094ec
test rax, rax
je 0x1400061a1
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140004550
mov rbx, qword [rsp + 0x20]
jmp 0x1400061a1
xor r8d, r8d
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140004870
mov rbx, qword [rsp + 0x20]
jmp 0x1400061a3
xor esi, esi
call fcn.140009adc
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x1400061c2
mov ecx, 0x80004005
call fcn.140004af0
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x30], rax
mov rdx, qword [rbp - 0x48]
test rdx, rdx
je 0x14000621c
test rdx, 0xffffffffffff0000
jne 0x140006207
movzx esi, dx
mov ecx, esi
call fcn.1400094ec
test rax, rax
je 0x14000622d
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140004550
jmp 0x14000622d
mov rax, rdi
nop word [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x140006210
jmp 0x14000621e
mov eax, esi
mov r8d, eax
lea rcx, [rsp + 0x30]
call fcn.140004870
jmp 0x14000622f
xor esi, esi
mov rax, qword [rsp + 0x30]
movzx ecx, word [rax]
cmp cx, word [0x140216d20]
jne 0x140006244
mov eax, esi
jmp 0x140006249
sbb eax, eax
or eax, 1
test eax, eax
je 0x1400064be
lea rdx, [0x140216a20]
lea rcx, [rbp - 0x50]
call fcn.140005880
xor r8d, r8d
mov rdx, qword [rbp - 0x48]
lea rcx, [rsp + 0x68]
call fcn.14001876c
test eax, eax
je 0x1400064b2
nop word [rax + rax]
lea rcx, [rsp + 0x68]
call fcn.140018ab8
mov esi, eax
mov dword [rsp + 0x28], eax
lea rcx, [rsp + 0x68]
call fcn.14001907c
test eax, eax
jne 0x140006473
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x68]
call fcn.140018c58
nop
mov r8, qword [rax]
mov qword [rsp + 0x58], r8
lea rcx, [r8 - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x1400063f8
cmp dword [rdi + 0x10], 0
jl 0x140006303
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x140006303
call fcn.140004a20
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x1400062f5
mov rcx, qword [rdi]
mov r8, qword [rcx]
mov rdx, rdi
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x1400063f8
movsxd rsi, dword [r8 - 0x10]
test esi, esi
jne 0x14000635f
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x1400063f4
cmp dword [rdi + 0x10], 0
jge 0x140006335
cmp dword [rbx - 0xc], 0
jl 0x14000647c
xor eax, eax
mov dword [rbx - 0x10], eax
mov word [rbx], ax
jmp 0x1400063f4
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140006348
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
add rax, 0x18
mov qword [rsp + 0x20], rax
jmp 0x1400063f4
test r8, r8
je 0x14000649d
mov eax, dword [rbx - 0x10]
mov dword [rsp + 0x38], eax
mov rdx, r8
sub rdx, rbx
sar rdx, 1
mov qword [rsp + 0x60], rdx
test esi, esi
js 0x140006492
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x1400063b1
mov edx, esi
lea rcx, [rsp + 0x20]
call fcn.140004810
mov rbx, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0x58]
mov eax, dword [rsp + 0x38]
lea rdi, [rsi + rsi]
mov rcx, rbx
mov r9, rdi
cmp rdx, rax
ja 0x1400063d6
lea r8, [rbx + rdx*2]
movsxd rdx, dword [rbx - 0xc]
add rdx, rdx
call fcn.14018d548
jmp 0x1400063e2
movsxd rdx, dword [rbx - 0xc]
add rdx, rdx
call fcn.14018d4c0
cmp esi, dword [rbx - 0xc]
jg 0x140006487
mov dword [rbx - 0x10], esi
xor eax, eax
mov word [rdi + rbx], ax
mov esi, dword [rsp + 0x28]
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
or rdi, 0xffffffffffffffff
lock add dword [rdx + 0x10], edi
jg 0x140006414
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov edx, reloc.OLEAUT32.dll_SafeArrayGetDim
lea rcx, [rsp + 0x68]
mov rax, qword [rsp + 0x68]
call qword [rax + VarBstrFromDisp]
test eax, eax
je 0x14000643e
mov r8b, 1
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsp + 0x50]
call fcn.140006060
jmp 0x14000645a
xor r8d, r8d
lea rdx, [rbp]
mov rcx, qword [rsp + 0x20]
call fcn.14001ea48
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
xor r8d, r8d
lea rdx, [0x140216d20]
lea rcx, [rsp + 0x20]
call fcn.140004870
mov rbx, qword [rsp + 0x20]
test esi, esi
jle 0x1400064a8
jmp 0x140006280
mov ecx, 0x80070057
call fcn.140004af0
int3
mov ecx, 0x80070057
call fcn.140004af0
int3
mov ecx, 0x80070057
call fcn.140004af0
int3
mov ecx, 0x80070057
call fcn.140004af0
nop
lea rcx, [rsp + 0x68]
call fcn.14001870c
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
jg 0x1400064dc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
dec eax
jg 0x1400064fa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x68]
call fcn.140018698
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
dec edi
jg 0x14000651f
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbp + 0x230]
xor rcx, rsp
call fcn.14018d4a0
mov rbx, qword [rsp + 0x370]
add rsp, 0x340
pop rdi
pop rsi
pop rbp
ret