Function at 0x140007130
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.14000ab7c
mov rcx, rax
xor esi, esi
mov edx, esi
test rax, rax
setne dl
test edx, edx
jne 0x140007192
mov ecx, 0x80004005
call fcn.140005bc0
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 0x1400071bb
mov eax, esi
jmp 0x1400071ca
mov rax, rdi
nop
inc rax
cmp word [rbx + rax*2], 0
jne 0x1400071c0
mov r8d, eax
mov rdx, rbx
lea rcx, [rbp - 0x48]
call fcn.140005940
nop
lea rcx, [rsp + 0x68]
call fcn.1400196a8
nop
xorps xmm0, xmm0
movdqa xmmword [rbp], xmm0
mov qword [rbp + 0x10], rsi
mov dword [rbp + 0x20], esi
call fcn.14000ab7c
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x140007213
mov ecx, 0x80004005
call fcn.140005bc0
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, [0x14021e440]
test rax, 0xffffffffffff0000
jne 0x14000725a
movzx esi, ax
mov ecx, esi
call fcn.14000a58c
test rax, rax
je 0x140007271
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140005620
mov rbx, qword [rsp + 0x20]
jmp 0x140007271
xor r8d, r8d
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.140005940
mov rbx, qword [rsp + 0x20]
jmp 0x140007273
xor esi, esi
call fcn.14000ab7c
mov rdx, rax
mov ecx, esi
test rax, rax
setne cl
test ecx, ecx
jne 0x140007292
mov ecx, 0x80004005
call fcn.140005bc0
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 0x1400072ec
test rdx, 0xffffffffffff0000
jne 0x1400072d7
movzx esi, dx
mov ecx, esi
call fcn.14000a58c
test rax, rax
je 0x1400072fd
mov r8d, esi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140005620
jmp 0x1400072fd
mov rax, rdi
nop word [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x1400072e0
jmp 0x1400072ee
mov eax, esi
mov r8d, eax
lea rcx, [rsp + 0x30]
call fcn.140005940
jmp 0x1400072ff
xor esi, esi
mov rax, qword [rsp + 0x30]
movzx ecx, word [rax]
cmp cx, word [0x14021e440]
jne 0x140007314
mov eax, esi
jmp 0x140007319
sbb eax, eax
or eax, 1
test eax, eax
je 0x14000758e
lea rdx, [0x14021e150]
lea rcx, [rbp - 0x50]
call fcn.140006950
xor r8d, r8d
mov rdx, qword [rbp - 0x48]
lea rcx, [rsp + 0x68]
call fcn.1400199dc
test eax, eax
je 0x140007582
nop word [rax + rax]
lea rcx, [rsp + 0x68]
call fcn.140019d28
mov esi, eax
mov dword [rsp + 0x28], eax
lea rcx, [rsp + 0x68]
call fcn.14001a2ec
test eax, eax
jne 0x140007543
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x68]
call fcn.140019ec8
nop
mov r8, qword [rax]
mov qword [rsp + 0x58], r8
lea rcx, [r8 - 0x18]
lea rdi, [rbx - 0x18]
cmp rcx, rdi
je 0x1400074c8
cmp dword [rdi + 0x10], 0
jl 0x1400073d3
mov rax, qword [rdi]
cmp qword [rcx], rax
jne 0x1400073d3
call fcn.140005af0
mov rbx, rax
lock add dword [rdi + 0x10], 0xffffffff
jg 0x1400073c5
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 0x1400074c8
movsxd rsi, dword [r8 - 0x10]
test esi, esi
jne 0x14000742f
mov rsi, qword [rdi]
cmp dword [rdi + 8], 0
je 0x1400074c4
cmp dword [rdi + 0x10], 0
jge 0x140007405
cmp dword [rbx - 0xc], 0
jl 0x14000754c
xor eax, eax
mov dword [rbx - 0x10], eax
mov word [rbx], ax
jmp 0x1400074c4
lock add dword [rdi + 0x10], 0xffffffff
jg 0x140007418
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 0x1400074c4
test r8, r8
je 0x14000756d
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 0x140007562
mov ecx, 1
sub ecx, dword [rdi + 0x10]
mov eax, dword [rdi + 0xc]
sub eax, esi
or eax, ecx
jge 0x140007481
mov edx, esi
lea rcx, [rsp + 0x20]
call fcn.1400058e0
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 0x1400074a6
lea r8, [rbx + rdx*2]
movsxd rdx, dword [rbx - 0xc]
add rdx, rdx
call fcn.1401931e8
jmp 0x1400074b2
movsxd rdx, dword [rbx - 0xc]
add rdx, rdx
call fcn.140193160
cmp esi, dword [rbx - 0xc]
jg 0x140007557
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 0x1400074e4
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 0x14000750e
mov r8b, 1
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsp + 0x50]
call fcn.140007130
jmp 0x14000752a
xor r8d, r8d
lea rdx, [rbp]
mov rcx, qword [rsp + 0x20]
call fcn.14001fc8c
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
xor r8d, r8d
lea rdx, [0x14021e440]
lea rcx, [rsp + 0x20]
call fcn.140005940
mov rbx, qword [rsp + 0x20]
test esi, esi
jle 0x140007578
jmp 0x140007350
mov ecx, 0x80070057
call fcn.140005bc0
int3
mov ecx, 0x80070057
call fcn.140005bc0
int3
mov ecx, 0x80070057
call fcn.140005bc0
int3
mov ecx, 0x80070057
call fcn.140005bc0
nop
lea rcx, [rsp + 0x68]
call fcn.14001997c
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 0x1400075ac
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 0x1400075ca
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, [rsp + 0x68]
call fcn.140019908
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], edi
dec edi
jg 0x1400075ef
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.140193140
mov rbx, qword [rsp + 0x370]
add rsp, 0x340
pop rdi
pop rsi
pop rbp
ret