Function at 0x140007140
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 [0x14025eb70]
xor rax, rsp
mov qword [rbp + 0x230], rax
mov rbx, rdx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x50], rcx
call fcn.14000ab8c
mov rcx, rax
xor esi, esi
mov edx, esi
test rax, rax
setne dl
test edx, edx
jne 0x1400071a2
mov ecx, 0x80004005
call fcn.140005bd0
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 0x1400071cb
mov eax, esi
jmp 0x1400071da
mov rax, rdi
nop
inc rax
cmp word [rbx + rax*2], 0
jne 0x1400071d0
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp - 0x48]
call fcn.140005950
nop
lea rcx, [rsp + 0x68]
call fcn.1400196b8
nop
xorps xmm0, xmm0
movdqa xmmword [rbp], xmm0
mov qword [rbp + 0x10], rsi
mov dword [rbp + 0x20], esi
call fcn.14000ab8c
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x140007223
mov ecx, 0x80004005
call fcn.140005bd0
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, [0x14021e450]
test rax, 0xffffffffffff0000
jne 0x14000726a
movzx esi, ax
mov ecx, esi
call fcn.14000a59c
test rax, rax
je 0x140007281
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140005630
mov rbx, qword [rsp + 0x20]
jmp 0x140007281
xor r8d, r8d
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140005950
mov rbx, qword [rsp + 0x20]
jmp 0x140007283
xor esi, esi
call fcn.14000ab8c
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x1400072a2
mov ecx, 0x80004005
call fcn.140005bd0
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 0x1400072fc
test rdx, 0xffffffffffff0000
jne 0x1400072e7
movzx esi, dx
mov ecx, esi
call fcn.14000a59c
test rax, rax
je 0x14000730d
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140005630
jmp 0x14000730d
mov rax, rdi
nop word [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x1400072f0
jmp 0x1400072fe
mov eax, esi
mov r8d, eax
lea rcx, [rsp + 0x30]
call fcn.140005950
jmp 0x14000730f
xor esi, esi
mov rax, qword [rsp + 0x30]
movzx ecx, word [rax]
cmp cx, word [0x14021e450]
jne 0x140007324
mov eax, esi
jmp 0x140007329
sbb eax, eax
or eax, 1
test eax, eax
je 0x14000759e
lea rdx, [0x14021e168]
lea rcx, [rbp - 0x50]
call fcn.140006960
xor r8d, r8d
mov rdx, qword [rbp - 0x48]
lea rcx, [rsp + 0x68]
call fcn.1400199ec
test eax, eax
je 0x140007592
nop word [rax + rax]
lea rcx, [rsp + 0x68]
call fcn.140019d38
mov esi, eax
mov dword [rsp + 0x28], eax
lea rcx, [rsp + 0x68]
call fcn.14001a2fc
test eax, eax
jne 0x140007553
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x68]
call fcn.140019ed8
nop
mov r8, qword [rax]
mov qword [rsp + 0x58], r8
lea rcx, [r8 - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x1400074d8
cmp dword [rdi + 0x10], 0
jl 0x1400073e3
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400073e3
call fcn.140005b00
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x1400073d5
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 0x1400074d8
movsxd rsi, dword [r8 - 0x10]
test esi, esi
jne 0x14000743f
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x1400074d4
cmp dword [rdi + 0x10], 0
jge 0x140007415
cmp dword [rbx - 0xc], 0
jl 0x14000755c
xor eax, eax
mov dword [rbx - 0x10], eax
mov word [rbx], ax
jmp 0x1400074d4
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140007428
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 0x1400074d4
test r8, r8
je 0x14000757d
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 0x140007572
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x140007491
mov edx, esi
lea rcx, [rsp + 0x20]
call fcn.1400058f0
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 0x1400074b6
lea r8, [rbx + rdx*2]
movsxd rdx, dword [rbx - 0xc]
add rdx, rdx
call fcn.1401931f8
jmp 0x1400074c2
movsxd rdx, dword [rbx - 0xc]
add rdx, rdx
call fcn.140193170
cmp esi, dword [rbx - 0xc]
jg 0x140007567
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 0x1400074f4
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 0x14000751e
mov r8b, 1
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsp + 0x50]
call fcn.140007140
jmp 0x14000753a
xor r8d, r8d
lea rdx, [rbp]
mov rcx, qword [rsp + 0x20]
call fcn.14001fc9c
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
xor r8d, r8d
lea rdx, [0x14021e450]
lea rcx, [rsp + 0x20]
call fcn.140005950
mov rbx, qword [rsp + 0x20]
test esi, esi
jle 0x140007588
jmp 0x140007360
mov ecx, 0x80070057
call fcn.140005bd0
int3
mov ecx, 0x80070057
call fcn.140005bd0
int3
mov ecx, 0x80070057
call fcn.140005bd0
int3
mov ecx, 0x80070057
call fcn.140005bd0
nop
lea rcx, [rsp + 0x68]
call fcn.14001998c
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 0x1400075bc
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 0x1400075da
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x68]
call fcn.140019918
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
dec edi
jg 0x1400075ff
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.140193150
mov rbx, qword [rsp + 0x370]
add rsp, 0x340
pop rdi
pop rsi
pop rbp
ret