Function at 0x14001a6ac
Capabilities:
Read file on windows

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
movsxd rbp, ecx
lea r11, main
mov r14, rbp
mov r15, rbp
sar r15, 6
and r14d, 0x3f
mov r12, r9
mov rdi, rdx
mov rax, qword [r11 + r15*8 + 0x38690]
lea rsi, [r14 + r14*8]
mov r10, qword [rax + rsi*8 + 0x28]
test r8, r8
je 0x14001a700
cmp byte [rdx], 0xa
jne 0x14001a700
or byte [rax + rsi*8 + 0x38], 4
jmp 0x14001a705
and byte [rax + rsi*8 + 0x38], 0xfb
lea r9, [rdx + r8]
mov rax, rdi
mov rbx, rdi
mov r13d, 1
cmp rdi, r9
jae 0x14001a818
mov cl, byte [rax]
cmp cl, 0x1a
je 0x14001a7f5
lea rdx, [rax + 1]
cmp cl, 0xd
jne 0x14001a745
cmp rdx, r9
jae 0x14001a757
cmp byte [rdx], 0xa
jne 0x14001a745
add rax, 2
mov byte [rbx], 0xa
jmp 0x14001a74a
mov byte [rbx], cl
mov rax, rdx
inc rbx
cmp rax, r9
jb 0x14001a71e
jmp 0x14001a818
xor eax, eax
lea r9, [rsp + 0x78]
mov r8d, r13d
mov byte [rsp + 0x70], al
lea rdx, [rsp + 0x70]
mov dword [rsp + 0x78], eax
mov rcx, r10
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x14001a7e9
cmp dword [rsp + 0x78], 0
je 0x14001a7e9
lea r11, main
mov rax, qword [r11 + r15*8 + 0x38690]
test byte [rax + rsi*8 + 0x38], 0x48
je 0x14001a7bc
mov cl, byte [rsp + 0x70]
cmp cl, 0xa
jne 0x14001a7ab
mov byte [rbx], 0xa
jmp 0x14001a815
mov byte [rbx], 0xd
mov rax, qword [r11 + r15*8 + 0x38690]
mov byte [rax + rsi*8 + 0x3a], cl
jmp 0x14001a815
cmp byte [rsp + 0x70], 0xa
jne 0x14001a7c8
cmp rbx, rdi
je 0x14001a7a6
mov r8d, r13d
or rdx, 0xffffffffffffffff
mov ecx, ebp
call fcn.14001b1d0
cmp byte [rsp + 0x70], 0xa
lea r11, main
je 0x14001a818
mov byte [rbx], 0xd
jmp 0x14001a815
mov byte [rbx], 0xd
lea r11, main
jmp 0x14001a815
mov r8, qword [r11 + r15*8 + 0x38690]
lea rdx, [r14 + r14*8]
mov al, byte [r8 + rdx*8 + 0x38]
test al, 0x40
jne 0x14001a813
or al, 2
mov byte [r8 + rdx*8 + 0x38], al
jmp 0x14001a818
mov byte [rbx], cl
add rbx, r13
sub ebx, edi
jne 0x14001a823
xor eax, eax
jmp 0x14001a9c3
mov rcx, qword [r11 + r15*8 + 0x38690]
lea rdx, [r14 + r14*8]
cmp byte [rcx + rdx*8 + 0x39], 0
jne 0x14001a83d
mov eax, ebx
jmp 0x14001a9c3
movsxd rcx, ebx
add rcx, rdi
lea rbx, [rcx - 1]
cmp byte [rbx], 0
jl 0x14001a854
mov rbx, rcx
jmp 0x14001a948
mov r8d, r13d
jmp 0x14001a86a
cmp r8d, 4
ja 0x14001a878
cmp rbx, rdi
jb 0x14001a878
sub rbx, r13
add r8d, r13d
movzx eax, byte [rbx]
cmp byte [rax + r11 + 0x364a0], 0
je 0x14001a859
movzx edx, byte [rbx]
movsx eax, byte [rdx + r11 + 0x364a0]
test eax, eax
jne 0x14001a89b
call fcn.14001247c
mov dword [rax], 0x2a
or eax, 0xffffffff
jmp 0x14001a9c3
inc eax
cmp eax, r8d
jne 0x14001a8ad
mov eax, r8d
add rbx, rax
jmp 0x14001a948
mov rcx, rbp
mov rax, rbp
sar rax, 6
and ecx, 0x3f
mov r9, qword [r11 + rax*8 + 0x38690]
lea rax, [rcx + rcx*8]
test byte [r9 + rax*8 + 0x38], 0x48
je 0x14001a938
mov rax, rbp
add rbx, r13
and eax, 0x3f
lea rax, [rax + rax*8]
mov byte [r9 + rax*8 + 0x3a], dl
cmp r8d, 2
jb 0x14001a908
mov dl, byte [rbx]
mov rcx, rbp
mov rax, rbp
add rbx, r13
sar rax, 6
and ecx, 0x3f
mov rax, qword [r11 + rax*8 + 0x38690]
lea rcx, [rcx + rcx*8]
mov byte [rax + rcx*8 + 0x3b], dl
cmp r8d, 3
jne 0x14001a930
mov dl, byte [rbx]
mov rcx, rbp
mov rax, rbp
add rbx, r13
sar rax, 6
and ecx, 0x3f
mov rax, qword [r11 + rax*8 + 0x38690]
lea rcx, [rcx + rcx*8]
mov byte [rax + rcx*8 + 0x3c], dl
mov eax, r8d
sub rbx, rax
jmp 0x14001a948
neg r8d
mov ecx, ebp
movsxd rdx, r8d
mov r8d, r13d
call fcn.14001b1d0
mov eax, dword [rsp + 0x90]
sub ebx, edi
mov dword [rsp + 0x28], eax
mov r9d, ebx
mov r8, rdi
mov qword [rsp + 0x20], r12
xor edx, edx
mov ecx, 0xfde9
call fcn.14001c8b0
mov r9d, eax
test eax, eax
jne 0x14001a985
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
call fcn.14001240c
jmp 0x14001a893
mov rcx, rbp
lea rdx, main
and ecx, 0x3f
mov rax, rbp
sar rax, 6
lea r8, [rcx + rcx*8]
mov rdx, qword [rdx + rax*8 + 0x38690]
mov eax, r9d
sub eax, ebx
neg eax
mov al, byte [rdx + r8*8 + 0x3d]
sbb cl, cl
and al, 0xfd
and cl, 2
or cl, al
lea eax, [r9 + r9]
mov byte [rdx + r8*8 + 0x3d], cl
mov rbx, qword [rsp + 0x80]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret