Function at 0x14015c220
Capabilities:
Get file attributes

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xc8
mov qword [rbp - 1], 0xfffffffffffffffe
mov rsi, rdx
mov rdi, rcx
xor eax, eax
mov dword [rsp + 0x20], eax
mov rax, qword [rcx]
mov r8, qword [r8]
cmp r8, rax
je 0x14015c79f
mov qword [rbp - 0x59], rax
mov qword [rbp - 0x51], r8
lea rdx, [rbp - 0x59]
lea rcx, [rbp - 0x51]
call fcn.14001abc0
test eax, eax
je 0x14015c79f
mov rdi, qword [rdi]
mov qword [rbp - 0x79], rdi
mov qword [rsp + 0x28], rdi
lea rcx, [rdi - 0x10]
lea r15, [0x1402be068]
cmp rcx, r15
je 0x14015c2b5
mov eax, 1
lock xadd dword [rcx], eax
mov rdi, qword [rsp + 0x28]
mov qword [rbp - 0x79], rdi
mov r14, 0xffffffffffffffff
mov ebx, dword [rsp + 0x20]
cmp byte [rdi], 0
je 0x14015c3bf
mov rax, r14
nop dword [rax]
inc rax
cmp byte [rdi + rax], 0
jne 0x14015c2d0
add rax, rdi
xor edx, edx
nop
dec rax
movzx ecx, byte [rax]
and cl, 0xc0
cmp cl, 0x80
jne 0x14015c2f5
inc edx
cmp edx, 4
jl 0x14015c2e0
mov qword [rbp - 0x49], rax
lea rcx, [rbp - 0x49]
call fcn.1400115a0
cmp eax, 0x5c
jne 0x14015c3bf
mov rax, rdi
xor edx, edx
movzx ecx, byte [rax]
inc rax
test cl, cl
jns 0x14015c343
movzx ecx, byte [rax]
and cl, 0xc0
cmp cl, 0x80
jne 0x14015c347
nop word [rax + rax]
inc rax
movzx ecx, byte [rax]
and cl, 0xc0
cmp cl, 0x80
je 0x14015c330
inc rdx
jmp 0x14015c310
test ecx, ecx
je 0x14015c34c
inc rdx
jmp 0x14015c310
lea ecx, [rdx - 1]
mov qword [rbp - 0x41], rdi
xor eax, eax
test ecx, ecx
cmovg eax, ecx
movsxd r8, eax
lea rdx, [rbp - 0x41]
lea rcx, [rbp - 0x39]
call fcn.140151bb0
or ebx, 4
mov dword [rsp + 0x20], ebx
mov rcx, rdi
mov rdi, qword [rax]
mov qword [rbp + 7], rdi
mov qword [rsp + 0x28], rdi
mov qword [rax], rcx
and ebx, 0xfffffffb
mov dword [rsp + 0x20], ebx
mov rcx, qword [rbp - 0x39]
add rcx, 0xfffffffffffffff0
cmp rcx, r15
je 0x14015c2c0
mov eax, r14d
lock xadd dword [rcx], eax
test eax, eax
je 0x14015c3b0
mov rdi, qword [rsp + 0x28]
jmp 0x14015c2bc
call fcn.14010a370
mov rdi, qword [rsp + 0x28]
jmp 0x14015c2bc
mov qword [rbp - 0x79], rdi
mov rbx, qword [rbp + 0x77]
mov rax, qword [rbx]
cmp byte [rax], 0
je 0x14015c404
mov rdx, rbx
lea rcx, [rbp + 0xf]
call fcn.140018b20
mov rcx, qword [rax]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
test al, 0x10
jne 0x14015c404
lea rdx, [rbp - 0x31]
mov rcx, rbx
call fcn.14015e860
mov rbx, rax
mov esi, dword [rsp + 0x20]
or esi, 2
mov dword [rsp + 0x20], esi
jmp 0x14015c408
mov esi, dword [rsp + 0x20]
mov rdx, rbx
lea rcx, [rbp - 0x69]
call fcn.14015ed00
nop
test sil, 2
je 0x14015c448
and esi, 0xfffffffd
mov dword [rsp + 0x20], esi
mov rcx, qword [rbp - 0x31]
add rcx, 0xfffffffffffffff0
cmp rcx, r15
je 0x14015c448
mov eax, r14d
lock xadd dword [rcx], eax
test eax, eax
jne 0x14015c43f
call fcn.14010a370
mov rdi, qword [rsp + 0x28]
mov qword [rbp - 0x79], rdi
xor eax, eax
mov r15, rdi
mov rbx, qword [rbp - 0x69]
xor r11d, r11d
mov dword [rbp + 0x7f], r11d
mov rsi, rdi
mov r14, rbx
mov edi, eax
mov r10, rbx
mov r9d, edi
movzx eax, byte [rsi]
inc rsi
movzx r13d, al
test al, al
jns 0x14015c4c2
mov ecx, 0x7f
mov eax, 0x40
xor edx, edx
test al, r13b
je 0x14015c495
cmp eax, 8
jbe 0x14015c495
shr ecx, 1
inc edx
shr eax, 1
test r13d, eax
jne 0x14015c485
and r13d, ecx
sub edx, 1
js 0x14015c4c2
nop dword [rax]
movzx ecx, byte [rsi]
mov eax, ecx
and al, 0xc0
cmp al, 0x80
jne 0x14015c4c2
inc rsi
and ecx, 0x3f
mov eax, r13d
shl eax, 6
mov r13d, ecx
or r13d, eax
sub edx, 1
jns 0x14015c4a0
movzx eax, byte [r14]
inc r14
movzx edx, al
test al, al
jns 0x14015c521
mov ecx, 0x7f
mov eax, 0x40
xor r8d, r8d
test al, dl
je 0x14015c4f1
cmp eax, 8
jbe 0x14015c4f1
shr ecx, 1
inc r8d
shr eax, 1
test eax, edx
jne 0x14015c4e1
and edx, ecx
mov dword [rbp + 0x77], edx
sub r8d, 1
js 0x14015c524
nop dword [rax]
movzx ecx, byte [r14]
mov eax, ecx
and al, 0xc0
cmp al, 0x80
jne 0x14015c521
inc r14
and ecx, 0x3f
mov eax, edx
shl eax, 6
mov edx, ecx
or edx, eax
sub r8d, 1
jns 0x14015c500
mov dword [rbp + 0x77], edx
cmp r13d, edx
je 0x14015c553
movzx ecx, r13w
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_towlower]
movzx r12d, ax
movzx ecx, word [rbp + 0x77]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_towlower]
movzx eax, ax
cmp r12d, eax
jne 0x14015c57b
mov r9d, edi
mov r10, rbx
mov r11d, dword [rbp + 0x7f]
test r13d, r13d
je 0x14015c57b
lea edi, [r11 + 1]
mov r11d, edi
mov dword [rbp + 0x7f], edi
cmp r13d, 0x5c
jne 0x14015c56b
mov r15, rsi
cmovne edi, r9d
mov rbx, r14
cmovne rbx, r10
jmp 0x14015c460
mov dword [rbp + 0x77], edi
test edi, edi
mov rdi, qword [rbp - 0x79]
je 0x14015c75a
mov eax, dword [rbp + 0x77]
cmp eax, 1
jne 0x14015c5aa
mov r11d, eax
mov edx, eax
lea rcx, [rsp + 0x28]
call fcn.140011750
cmp eax, 0x5c
je 0x14015c760
xor r9d, r9d
nop dword [rax]
movzx eax, byte [rbx]
inc rbx
mov qword [rbp - 0x21], rbx
movzx ecx, al
test al, al
jns 0x14015c614
mov edx, 0x7f
mov eax, 0x40
xor r8d, r8d
test al, cl
je 0x14015c5e2
cmp eax, 8
jbe 0x14015c5e2
shr edx, 1
inc r8d
shr eax, 1
test ecx, eax
jne 0x14015c5d2
and ecx, edx
sub r8d, 1
js 0x14015c614
nop word [rax + rax]
movzx edx, byte [rbx]
mov eax, edx
and al, 0xc0
cmp al, 0x80
jne 0x14015c614
inc rbx
mov qword [rbp - 0x21], rbx
and edx, 0x3f
mov eax, ecx
shl eax, 6
mov ecx, edx
or ecx, eax
sub r8d, 1
jns 0x14015c5f0
test ecx, ecx
je 0x14015c628
lea eax, [r9 + 1]
cmp ecx, 0x5c
cmovne eax, r9d
mov r9d, eax
jmp 0x14015c5b0
test r9d, r9d
jne 0x14015c65f
mov qword [rbp - 0x19], r15
lea rdx, [rbp - 0x19]
mov rbx, qword [rbp + 0x6f]
mov rcx, rbx
call fcn.14001bc80
mov eax, dword [rsp + 0x20]
or eax, 1
mov dword [rsp + 0x20], eax
lea rsi, [0x1402be068]
mov r14, 0xffffffffffffffff
jmp 0x14015c71b
lea rax, [0x1402bca68]
mov qword [rbp - 0x11], rax
mov r8d, r9d
lea rdx, [rbp - 0x11]
lea rcx, [rbp - 0x71]
call fcn.14014ef40
nop
mov r14, 0xffffffffffffffff
mov rax, r14
lea rax, [rax + 1]
cmp byte [r15 + rax], 0
jne 0x14015c685
lea rcx, [rax + r15]
sub ecx, r15d
test ecx, ecx
jle 0x14015c6d4
mov rax, qword [rbp - 0x71]
mov rbx, r14
inc rbx
cmp byte [rax + rbx], 0
jne 0x14015c6a2
movsxd rsi, ecx
lea rdx, [rsi + rbx]
lea rcx, [rbp - 0x71]
call fcn.140151f40
movsxd rbx, ebx
add rbx, qword [rbp - 0x71]
mov r8, rsi
mov rdx, r15
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
mov byte [rsi + rbx], 0
mov rax, qword [rbp - 0x71]
mov rbx, qword [rbp + 0x6f]
mov qword [rbx], rax
lea rsi, [0x1402be068]
lea rax, [rsi + 0x10]
mov qword [rbp - 0x71], rax
mov eax, dword [rsp + 0x20]
or eax, 1
mov dword [rsp + 0x20], eax
mov rcx, qword [rbp - 0x71]
add rcx, 0xfffffffffffffff0
cmp rcx, rsi
je 0x14015c71b
mov eax, r14d
lock xadd dword [rcx], eax
test eax, eax
jne 0x14015c716
call fcn.14010a370
mov rdi, qword [rsp + 0x28]
mov rcx, qword [rbp - 0x69]
add rcx, 0xfffffffffffffff0
cmp rcx, rsi
je 0x14015c73d
mov eax, r14d
lock xadd dword [rcx], eax
test eax, eax
jne 0x14015c738
call fcn.14010a370
mov rdi, qword [rsp + 0x28]
lea rcx, [rdi - 0x10]
cmp rcx, rsi
je 0x14015c755
lock xadd dword [rcx], r14d
test r14d, r14d
jne 0x14015c755
call fcn.14010a370
mov rax, rbx
jmp 0x14015c7c2
mov r11d, 1
mov rax, qword [rbp + 0x67]
mov rax, qword [rax]
mov rbx, qword [rbp + 0x6f]
mov qword [rbx], rax
add rax, 0xfffffffffffffff0
lea rsi, [0x1402be068]
cmp rax, rsi
je 0x14015c788
lock xadd dword [rax], r11d
mov rdi, qword [rsp + 0x28]
mov eax, dword [rsp + 0x20]
or eax, 1
mov dword [rsp + 0x20], eax
mov r14, 0xffffffffffffffff
jmp 0x14015c71b
lea rax, [0x1402bca44]
mov qword [rbp - 9], rax
lea rdx, [rbp - 9]
mov rcx, rsi
call fcn.14001b960
nop
mov dword [rsp + 0x20], 1
mov rax, rsi
add rsp, 0xc8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret