Function at 0x1400086e4
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.140021560
cmp qword [rsp + 0x28], r14
jne 0x14000877a
lea rcx, [rsp + 0x40]
call fcn.140002a98
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 0x140008829
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
jmp 0x140008823
lea rcx, [rbp - 0x30]
call fcn.140014cbc
nop
mov rdx, qword [rsp + 0x28]
lea rcx, [rbp - 0x30]
call fcn.140014fe8
test eax, eax
je 0x1400087a1
lea rcx, [rbp - 0x30]
call fcn.140014e74
jmp 0x140008743
mov rbx, qword [rbp + 8]
test rbx, rbx
je 0x1400087e0
lea rdi, [0x14003f020]
mov rcx, rbx
call fcn.14001391c
cmp rdi, rax
je 0x140008849
mov r8d, 0x7fffffff
mov rdx, rax
mov rcx, rdi
call fcn.140021850
test eax, eax
je 0x140008849
mov rbx, qword [rbx + 0x50]
test rbx, rbx
jne 0x1400087b1
mov rcx, qword [rsp + 0x28]
call fcn.14002163c
nop
lea rcx, [rbp - 0x30]
call fcn.140014e74
nop
lea rcx, [rsp + 0x40]
call fcn.140002a98
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 0x140008829
mov rcx, qword [rdx]
mov r8, qword [rcx]
mov rax, qword [r8 + 8]
call qword [case.0x14001400b.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 0x1400087e0
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x1400087e0
lea r8, [0x14003f030]
lea rdx, [rbp - 0x70]
lea rcx, [rsp + 0x20]
call fcn.14000555c
or rdi, 0xffffffffffffffff
mov rbx, qword [rbp - 0x70]
test rbx, rbx
je 0x14000892b
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x14000892b
test rbx, rbx
je 0x14000892b
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x14000892b
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001400b.0]
test rax, rax
je 0x14000892b
test rbx, rbx
je 0x1400088e8
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x1400088e8
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001400b.0]
jmp 0x1400088eb
mov rax, r14
mov rcx, rax
call fcn.14001391c
test rax, rax
je 0x14000892b
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140005688
test rax, rax
jne 0x14000890f
mov ecx, r14d
jmp 0x14000891c
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008912
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.14000555c
mov rbx, qword [rbp - 0x68]
test rbx, rbx
je 0x1400089be
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x1400089be
test rbx, rbx
je 0x14000897b
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x14000897b
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001400b.0]
jmp 0x14000897e
mov rax, r14
mov rcx, rax
call fcn.14001391c
test rax, rax
je 0x1400089be
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140005688
test rax, rax
jne 0x1400089a2
mov ecx, r14d
jmp 0x1400089af
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x1400089a5
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.14000555c
mov rbx, qword [rbp - 0x60]
test rbx, rbx
je 0x140008a51
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140008a51
test rbx, rbx
je 0x140008a51
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008a51
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140008a51
mov rcx, rax
call fcn.14001391c
test rax, rax
je 0x140008a51
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140005688
test rax, rax
jne 0x140008a35
mov ecx, r14d
jmp 0x140008a42
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008a38
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.14000555c
mov rbx, qword [rbp - 0x58]
test rbx, rbx
je 0x140008ae4
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140008ae4
test rbx, rbx
je 0x140008ae4
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008ae4
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140008ae4
mov rcx, rax
call fcn.14001391c
test rax, rax
je 0x140008ae4
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140005688
test rax, rax
jne 0x140008ac8
mov ecx, r14d
jmp 0x140008ad5
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008acb
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.14000555c
mov rbx, qword [rbp - 0x50]
test rbx, rbx
je 0x140008b77
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140008b77
test rbx, rbx
je 0x140008b77
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140008b77
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140008b77
mov rcx, rax
call fcn.14001391c
test rax, rax
je 0x140008b77
mov rdx, rax
lea rcx, [rsp + 0x40]
call fcn.140005688
test rax, rax
jne 0x140008b5b
mov ecx, r14d
jmp 0x140008b68
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008b5e
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.14001887c
test rax, rax
je 0x140008bfd
sub rax, qword [r12]
sar rax, 1
test eax, eax
js 0x140008bfd
mov r8d, eax
lea rdx, [rbp - 0x48]
mov rcx, r12
call fcn.140003c14
nop
mov rdx, rax
lea rcx, [rbp + 0x320]
call fcn.14000412c
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 0x140008bf6
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
mov rbx, qword [rbp + 0x320]
movsxd rsi, dword [rbx - 0x10]
cmp esi, 1
jg 0x140008c1a
lea rcx, [rbx - 0x18]
call fcn.140001ea0
add rax, 0x18
mov qword [rsp + 0x58], rax
jmp 0x140008c6d
mov rcx, qword [rbx - 0x18]
test rcx, rcx
je 0x140008c35
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x14001400b.0]
test rax, rax
jne 0x140008c4d
call fcn.1400016e0
mov rdx, rax
mov rcx, qword [rax]
mov rax, qword [rcx + 0x20]
mov rcx, rdx
call qword [case.0x14001400b.0]
lea rcx, [rsi - 1]
lea rdx, [rbx + rcx*2]
mov r9, rax
mov r8d, 1
lea rcx, [rsp + 0x58]
call fcn.1400044a0
mov rax, qword [rsp + 0x58]
movzx ebx, word [rax]
sub ebx, r15d
jne 0x140008c7f
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 0x140008ca0
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test ebx, ebx
je 0x140008cc7
lea rdx, [0x14003e69c]
mov rax, rdi
inc rax
cmp word [rdx + rax*2], r14w
jne 0x140008cae
mov r8d, eax
lea rcx, [rbp + 0x320]
call fcn.14000468c
lea r8, str.FileList
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x20]
call fcn.14000555c
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x140009067
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140009067
lea r8, str.FileItem
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x60]
call fcn.14000555c
mov rbx, qword [rsp + 0x38]
mov r12d, 1
test rbx, rbx
je 0x140008fec
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test rax, rax
je 0x140008fec
test rbx, rbx
je 0x140008d5b
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
jmp 0x140008d5e
mov rax, r14
lea rdx, str.name
mov rcx, rax
call fcn.1400146cc
test rax, rax
jne 0x140008d77
mov r15, r14
jmp 0x140008d83
lea rcx, [rax + 0x20]
call fcn.140013224
mov r15, rax
test rbx, rbx
je 0x140008d9a
mov rcx, qword [rbx]
mov rax, qword [rcx + 8]
mov rcx, rbx
call qword [case.0x14001400b.0]
jmp 0x140008d9d
mov rax, r14
lea rdx, str.description
mov rcx, rax
call fcn.1400146cc
test rax, rax
je 0x140008dbd
lea rcx, [rax + 0x20]
call fcn.140013224
mov r14, rax
test rbx, rbx
je 0x140008dd4
mov rcx, qword [rbx]
mov rax, qword [rcx + 8]
mov rcx, rbx
call qword [case.0x14001400b.0]
jmp 0x140008dd6
xor eax, eax
lea rdx, str.optional
mov rcx, rax
call fcn.1400146cc
test rax, rax
jne 0x140008dee
xor esi, esi
jmp 0x140008dfa
lea rcx, [rax + 0x20]
call fcn.140013224
mov rsi, rax
test r15, r15
je 0x140008f87
mov rdx, r15
lea rcx, [rsp + 0x40]
call fcn.140005688
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.1400041b0
nop
lea rcx, [rsp + 0x68]
call fcn.1400055cc
nop
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x68]
call fcn.14000412c
lea r8, [rsp + 0x30]
lea rdx, [rbp + 0x320]
lea rcx, [rbp - 0x40]
call fcn.1400099a4
nop
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.14000412c
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 0x140008e81
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
test r14, r14
je 0x140008ebd
mov rdx, r14
lea rcx, [rsp + 0x40]
call fcn.140005688
xor r14d, r14d
test rax, rax
jne 0x140008ea0
mov ecx, r14d
jmp 0x140008ead
mov rcx, rdi
inc rcx
cmp word [rax + rcx*2], r14w
jne 0x140008ea3
mov r8d, ecx
mov rdx, rax
lea rcx, [rsp + 0x78]
call fcn.1400020f4
mov dword [rbp - 0x80], r14d
test rsi, rsi
je 0x140008ee6
movzx ecx, byte [rsi]
sub ecx, 0x31
jne 0x140008ed8
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 0x140008ee9
mov esi, dword [rbp - 0x7c]
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140008f4f
test al, 0x10
jne 0x140008f4f
lea rcx, [r13 + 0xc0]
lea rdx, [rsp + 0x30]
call fcn.140009894
mov rbx, rax
lea rdx, [rsp + 0x68]
mov rcx, rax
call fcn.14000412c
lea rcx, [rbx + 8]
lea rdx, [rsp + 0x70]
call fcn.14000412c
lea rcx, [rbx + 0x10]
lea rdx, [rsp + 0x78]
call fcn.14000412c
mov dword [rbx + 0x18], r14d
mov dword [rbx + 0x1c], esi
lea rcx, [rbx + 0x20]
lea rdx, [rbp - 0x78]
call fcn.14000412c
nop
lea rcx, [rsp + 0x68]
call fcn.140008000
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 0x140008f80
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
mov rbx, qword [rsp + 0x38]
jmp 0x140008f8a
xor r14d, r14d
test rbx, rbx
je 0x140008fa1
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
jmp 0x140008fa4
mov rax, r14
mov rbx, qword [rax + 0x50]
test rbx, rbx
je 0x140008fdf
lea rsi, str.FileItem
mov rcx, rbx
call fcn.14001391c
cmp rax, rsi
je 0x140008fd6
mov r8d, 0x7fffffff
mov rdx, rsi
mov rcx, rax
call fcn.140021850
test eax, eax
jne 0x140008fe2
mov rbx, qword [rbx + 0x50]
test rbx, rbx
jne 0x140008fb4
mov rbx, r14
mov qword [rsp + 0x38], rbx
jmp 0x140008d22
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 0x14000901b
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
mov rcx, qword [rsp + 0x28]
call fcn.14002163c
nop
lea rcx, [rbp - 0x30]
call fcn.140014e74
nop
lea rcx, [rsp + 0x40]
call fcn.140002a98
nop
mov rdx, qword [r12]
sub rdx, 0x18
mov eax, edi
lock xadd dword [rdx + 0x10], eax
add eax, edi
test eax, eax
jg 0x140009060
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
xor eax, eax
jmp 0x14000882e
mov rcx, qword [rsp + 0x28]
call fcn.14002163c
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 0x14000909b
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x14001400b.0]
nop
lea rcx, [rbp - 0x30]
call fcn.140014e74
nop
lea rcx, [rsp + 0x40]
call fcn.140002a98
nop
mov rdx, qword [r12]
sub rdx, 0x18
jmp 0x14000875a