Function at 0x14000871c
Capabilities:
Check if file exists
Get file attributes

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], rbx
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x318]
sub rsp, 0x3e0
mov r13, r9
mov r12, rdx
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x40], xmm0
xor r14d, r14d
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x28], r14
lea r8, [0x14003f018]
mov rdx, qword [rdx]
lea rcx, [rsp + 0x28]
call fcn.1400215b0
cmp qword [rsp + 0x28], r14
jne 0x1400087b2
lea rcx, [rsp + 0x40]
call fcn.140002ad0
nop
mov rdx, qword [r12]
sub rdx, 0x18
or rdi, 0xffffffffffffffff
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140008861
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
jmp 0x14000885b
lea rcx, [rbp - 0x30]
call fcn.140014d0c
nop
mov rdx, qword [rsp + 0x28]
lea rcx, [rbp - 0x30]
call fcn.140015038
test eax, eax
je 0x1400087d9
lea rcx, [rbp - 0x30]
call fcn.140014ec4
jmp 0x14000877b
mov rbx, qword [rbp + 8]
test rbx, rbx
je 0x140008818
lea rdi, [0x14003f020]
mov rcx, rbx
call fcn.14001396c
cmp rdi, rax
je 0x140008881
mov r8d, 0x7fffffff
mov rdx, rax
mov rcx, rdi
call fcn.1400218a0
test eax, eax
je 0x140008881
mov rbx, qword [rbx + 0x50]
test rbx, rbx
jne 0x1400087e9
mov rcx, qword [rsp + 0x28]
call fcn.14002168c
nop
lea rcx, [rbp - 0x30]
call fcn.140014ec4
nop
lea rcx, [rsp + 0x40]
call fcn.140002ad0
nop
mov rdx, qword [r12]
sub rdx, 0x18
or rdi, 0xffffffffffffffff
mov ecx, edi
lock xadd dword [rdx + 0x10], ecx
add ecx, edi
test ecx, ecx
jg 0x140008861
mov rcx, qword [rdx]
mov r8, qword [rcx]
mov rax, qword [r8 + 8]
call qword [case.0x14001405b.0]
mov eax, 1
mov rbx, qword [rsp + 0x430]
add rsp, 0x3e0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov qword [rsp + 0x20], rbx
test rbx, rbx
je 0x140008818
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008818
lea r8, [0x14003f030]
lea rdx, [rbp - 0x70]
lea rcx, [rsp + 0x20]
call fcn.140005594
or rdi, 0xffffffffffffffff
mov rbx, qword [rbp - 0x70]
test rbx, rbx
je 0x140008963
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008963
test rbx, rbx
je 0x140008963
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008963
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008963
test rbx, rbx
je 0x140008920
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008920
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001405b.0]
jmp 0x140008923
mov rax, r14
mov rcx, rax
call fcn.14001396c
test rax, rax
je 0x140008963
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.1400056c0
test rax, rax
jne 0x140008947
mov ecx, r14d
jmp 0x140008954
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x14000894a
mov r8d, ecx
mov rdx, rax
lea rcx, [r13 + 0x18]
call fcn.1400020f4
lea r8, [0x14003f040]
lea rdx, [rbp - 0x68]
lea rcx, [rsp + 0x20]
call fcn.140005594
mov rbx, qword [rbp - 0x68]
test rbx, rbx
je 0x1400089f6
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x1400089f6
test rbx, rbx
je 0x1400089b3
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x1400089b3
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001405b.0]
jmp 0x1400089b6
mov rax, r14
mov rcx, rax
call fcn.14001396c
test rax, rax
je 0x1400089f6
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.1400056c0
test rax, rax
jne 0x1400089da
mov ecx, r14d
jmp 0x1400089e7
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x1400089dd
mov r8d, ecx
mov rdx, rax
lea rcx, [r13 + 0x20]
call fcn.1400020f4
lea r8, [0x14003f048]
lea rdx, [rbp - 0x60]
lea rcx, [rsp + 0x20]
call fcn.140005594
mov rbx, qword [rbp - 0x60]
test rbx, rbx
je 0x140008a89
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008a89
test rbx, rbx
je 0x140008a89
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008a89
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008a89
mov rcx, rax
call fcn.14001396c
test rax, rax
je 0x140008a89
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.1400056c0
test rax, rax
jne 0x140008a6d
mov ecx, r14d
jmp 0x140008a7a
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008a70
mov r8d, ecx
mov rdx, rax
lea rcx, [r13 + 0x28]
call fcn.1400020f4
lea r8, [0x14003f058]
lea rdx, [rbp - 0x58]
lea rcx, [rsp + 0x20]
call fcn.140005594
mov rbx, qword [rbp - 0x58]
test rbx, rbx
je 0x140008b1c
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008b1c
test rbx, rbx
je 0x140008b1c
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008b1c
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008b1c
mov rcx, rax
call fcn.14001396c
test rax, rax
je 0x140008b1c
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.1400056c0
test rax, rax
jne 0x140008b00
mov ecx, r14d
jmp 0x140008b0d
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008b03
mov r8d, ecx
mov rdx, rax
lea rcx, [r13 + 0x30]
call fcn.1400020f4
lea r8, [0x14003f068]
lea rdx, [rbp - 0x50]
lea rcx, [rsp + 0x20]
call fcn.140005594
mov rbx, qword [rbp - 0x50]
test rbx, rbx
je 0x140008baf
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008baf
test rbx, rbx
je 0x140008baf
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008baf
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140008baf
mov rcx, rax
call fcn.14001396c
test rax, rax
je 0x140008baf
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.1400056c0
test rax, rax
jne 0x140008b93
mov ecx, r14d
jmp 0x140008ba0
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008b96
mov r8d, ecx
mov rdx, rax
lea rcx, [r13 + 0x50]
call fcn.1400020f4
mov rcx, qword [r12]
sub rcx, 0x18
call fcn.140001ea0
lea rbx, [rax + 0x18]
mov qword [rbp + 0x320], rbx
mov r15d, 0x5c
mov edx, r15d
mov rcx, qword [r12]
call fcn.1400188cc
test rax, rax
je 0x140008c35
sub rax, qword [r12]
sar rax, 1
test eax, eax
js 0x140008c35
mov r8d, eax
lea rdx, [rbp - 0x48]
mov rcx, r12
call fcn.140003c4c
nop
mov rdx, rax
lea rcx, [rbp + 0x320]
call fcn.140004164
nop
mov rdx, qword [rbp - 0x48]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140008c2e
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
mov rbx, qword [rbp + 0x320]
movsxd rsi, dword [rbx - 0x10]
cmp esi, 1
jg 0x140008c52
lea rcx, [rbx - 0x18]
call fcn.140001ea0
add rax, 0x18
mov qword [rsp + 0x58], rax
jmp 0x140008ca5
mov rcx, qword [rbx - 0x18]
test rcx, rcx
je 0x140008c6d
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x14001405b.0]
test rax, rax
jne 0x140008c85
call fcn.1400016e0
mov rdx, rax
mov rcx, qword [rax]
mov rax, qword [rcx + 0x20]
mov rcx, rdx
call qword [case.0x14001405b.0]
lea rcx, [rsi - 1]
lea rdx, [rbx + rcx*2]
mov r9, rax
mov r8d, 1
lea rcx, [rsp + 0x58]
call fcn.1400044d8
mov rax, qword [rsp + 0x58]
movzx ebx, word [rax]
sub ebx, r15d
jne 0x140008cb7
movzx ebx, word [rax + 2]
movzx ecx, r14w
sub ebx, ecx
lea rdx, [rax - 0x18]
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140008cd8
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test ebx, ebx
je 0x140008cff
lea rdx, [0x14003e69c]
mov rax, rdi
inc rax
cmp word [rdx + rax*2], r14w
jne 0x140008ce6
mov r8d, eax
lea rcx, [rbp + 0x320]
call fcn.1400046c4
lea r8, str.FileList
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x20]
call fcn.140005594
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x14000909f
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x14000909f
lea r8, str.FileItem
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x60]
call fcn.140005594
mov rbx, qword [rsp + 0x38]
mov r12d, 1
test rbx, rbx
je 0x140009024
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test rax, rax
je 0x140009024
test rbx, rbx
je 0x140008d93
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
jmp 0x140008d96
mov rax, r14
lea rdx, str.name
mov rcx, rax
call fcn.14001471c
test rax, rax
jne 0x140008daf
mov r15, r14
jmp 0x140008dbb
lea rcx, [rax + 0x20]
call fcn.140013274
mov r15, rax
test rbx, rbx
je 0x140008dd2
mov rcx, qword [rbx]
mov rax, qword [rcx + 8]
mov rcx, rbx
call qword [case.0x14001405b.0]
jmp 0x140008dd5
mov rax, r14
lea rdx, str.description
mov rcx, rax
call fcn.14001471c
test rax, rax
je 0x140008df5
lea rcx, [rax + 0x20]
call fcn.140013274
mov r14, rax
test rbx, rbx
je 0x140008e0c
mov rcx, qword [rbx]
mov rax, qword [rcx + 8]
mov rcx, rbx
call qword [case.0x14001405b.0]
jmp 0x140008e0e
xor eax, eax
lea rdx, str.optional
mov rcx, rax
call fcn.14001471c
test rax, rax
jne 0x140008e26
xor esi, esi
jmp 0x140008e32
lea rcx, [rax + 0x20]
call fcn.140013274
mov rsi, rax
test r15, r15
je 0x140008fbf
mov rdx, r15
lea rcx, [rsp + 0x40]
call fcn.1400056c0
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.1400041e8
nop
lea rcx, [rsp + 0x68]
call fcn.140005604
nop
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x68]
call fcn.140004164
lea r8, [rsp + 0x30]
lea rdx, [rbp + 0x320]
lea rcx, [rbp - 0x40]
call fcn.1400099dc
nop
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.140004164
nop
mov rdx, qword [rbp - 0x40]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140008eb9
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
test r14, r14
je 0x140008ef5
mov rdx, r14
lea rcx, [rsp + 0x40]
call fcn.1400056c0
xor r14d, r14d
test rax, rax
jne 0x140008ed8
mov ecx, r14d
jmp 0x140008ee5
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008edb
mov r8d, ecx
mov rdx, rax
lea rcx, [rsp + 0x78]
call fcn.1400020f4
mov dword [rbp - 0x80], r14d
test rsi, rsi
je 0x140008f1e
movzx ecx, byte [rsi]
sub ecx, 0x31
jne 0x140008f10
movzx ecx, byte [rsi + 1]
movzx eax, r14b
sub ecx, eax
mov esi, dword [rbp - 0x7c]
test ecx, ecx
cmove esi, r12d
mov dword [rbp - 0x7c], esi
jmp 0x140008f21
mov esi, dword [rbp - 0x7c]
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140008f87
test al, 0x10
jne 0x140008f87
lea rcx, [r13 + 0xc0]
lea rdx, [rsp + 0x30]
call fcn.1400098cc
mov rbx, rax
lea rdx, [rsp + 0x68]
mov rcx, rax
call fcn.140004164
lea rcx, [rbx + 8]
lea rdx, [rsp + 0x70]
call fcn.140004164
lea rcx, [rbx + 0x10]
lea rdx, [rsp + 0x78]
call fcn.140004164
mov dword [rbx + 0x18], r14d
mov dword [rbx + 0x1c], esi
lea rcx, [rbx + 0x20]
lea rdx, [rbp - 0x78]
call fcn.140004164
nop
lea rcx, [rsp + 0x68]
call fcn.140008038
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140008fb8
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
mov rbx, qword [rsp + 0x38]
jmp 0x140008fc2
xor r14d, r14d
test rbx, rbx
je 0x140008fd9
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
jmp 0x140008fdc
mov rax, r14
mov rbx, qword [rax + 0x50]
test rbx, rbx
je 0x140009017
lea rsi, str.FileItem
mov rcx, rbx
call fcn.14001396c
cmp rax, rsi
je 0x14000900e
mov r8d, 0x7fffffff
mov rdx, rsi
mov rcx, rax
call fcn.1400218a0
test eax, eax
jne 0x14000901a
mov rbx, qword [rbx + 0x50]
test rbx, rbx
jne 0x140008fec
mov rbx, r14
mov qword [rsp + 0x38], rbx
jmp 0x140008d5a
mov rdx, qword [rbp + 0x320]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
mov r12, qword [rbp + 0x328]
jg 0x140009053
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
mov rcx, qword [rsp + 0x28]
call fcn.14002168c
nop
lea rcx, [rbp - 0x30]
call fcn.140014ec4
nop
lea rcx, [rsp + 0x40]
call fcn.140002ad0
nop
mov rdx, qword [r12]
sub rdx, 0x18
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140009098
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
xor eax, eax
jmp 0x140008866
mov rcx, qword [rsp + 0x28]
call fcn.14002168c
nop
mov rdx, qword [rbp + 0x320]
add rdx, 0xffffffffffffffe8
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x1400090d3
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001405b.0]
nop
lea rcx, [rbp - 0x30]
call fcn.140014ec4
nop
lea rcx, [rsp + 0x40]
call fcn.140002ad0
nop
mov rdx, qword [r12]
sub rdx, 0x18
jmp 0x140008792