Function at 0x1400038d4
Capabilities:
Read file on windows
Write file on windows

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x70
mov rcx, qword [0x14002fa0b]
mov r13, r8
mov r15, rdx
call fcn.140004268
xor edi, edi
lea rcx, [0x14002fa28]
mov r14d, edi
mov rsi, rax
call fcn.140004474
mov r12, rax
test rax, rax
je 0x140003966
mov ebx, edi
mov rdx, rbx
lea rcx, [0x14002fa28]
call fcn.140003008
mov rcx, qword [rax + 8]
shl rcx, 2
cmp r15, rcx
jb 0x140003966
mov rdx, rbx
lea rcx, [0x14002fa28]
call fcn.140003008
inc r14d
movsxd rbx, r14d
mov rcx, qword [rax + 8]
shl rcx, 2
sub r15, rcx
cmp rbx, r12
jb 0x140003925
lea rcx, [0x14002fa28]
movsxd rbx, r14d
call fcn.140004474
cmp rbx, rax
jne 0x140003986
lea rcx, str._MFTParseDirectory___wrong_nMFTEntry
jmp 0x140003a42
mov rdx, rbx
lea rcx, [0x14002fa28]
call fcn.140003008
movzx ecx, word [0x14002f9e8]
xor r9d, r9d
movzx edx, byte [0x14002f9ea]
xor r8d, r8d
imul r15, qword [0x14002fa0b]
imul rdx, rcx
mov rcx, qword [rbp + 0x40]
imul rdx, qword [rax]
add rdx, r15
call qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov r8d, dword [0x14002fa0b]
xor r9d, r9d
mov rcx, qword [rbp + 0x40]
mov rdx, rsi
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x1400039fc
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str._MFTParseFile___Read_MFT_entry_error:__d
mov edx, eax
call fcn.1400040fc
jmp 0x140003a47
mov rdx, qword [0x14002fa0b]
mov rcx, rsi
call fcn.1400030b0
cmp dword [rsi], 0x454c4946
je 0x140003a1c
lea rcx, str._MFTParseFile___RootDirectory_Error
jmp 0x140003a42
movzx ebx, word [rsi + 0x14]
add rbx, rsi
or ecx, 0xffffffff
jmp 0x140003a35
cmp eax, 0x80
je 0x140003a61
mov eax, dword [rbx + 4]
add rbx, rax
mov eax, dword [rbx]
cmp eax, ecx
jne 0x140003a28
lea rcx, str._MFTParseFile___Something_Went_Wrong_1
call fcn.1400040fc
xor al, al
mov rbx, qword [rsp + 0xb8]
add rsp, 0x70
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
cmp byte [rbx + 8], dil
jne 0x140003a9d
movzx edx, word [rbx + 0x14]
xor r9d, r9d
mov r8d, dword [rbx + 0x10]
add rdx, rbx
mov rcx, r13
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x140003a99
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str._MFTParseFile___WriteFile_Error_:__d
jmp 0x1400039f3
mov al, 1
jmp 0x140003a49
lea rcx, [rbp - 0x20]
call fcn.140002ed8
movzx esi, word [rbx + 0x20]
mov r13, rdi
mov rax, qword [rbx + 0x18]
add rsi, rbx
mov r14, qword [rbx + 0x30]
mov r15, rdi
add rax, 1
je 0x140003b88
mov eax, dword [rbx + 4]
add rax, rbx
cmp rsi, rax
jae 0x140003b88
movzx edx, byte [rsi]
mov r12, qword [rsi + 1]
mov r9d, edx
shr r9d, 4
and edx, 0xf
cmp edx, 8
jae 0x140003b01
or rax, 0xffffffffffffffff
lea ecx, [rdx*8]
shr rax, cl
shl rax, cl
not rax
and r12, rax
or r8, 0xffffffffffffffff
lea r10d, [r9*8]
mov ecx, r10d
shr r8, cl
shl r8, cl
not r8
and r8, qword [rdx + rsi + 1]
inc edx
add edx, r9d
add rsi, rdx
test r8, r8
je 0x140003b78
cmp r9d, 8
jae 0x140003b75
lea ecx, [r10 - 1]
mov rax, r8
sar rax, cl
cmp rax, 1
jne 0x140003b5d
mov ecx, r10d
mov qword [rbp - 0x38], r12
lea rdx, [rbp - 0x40]
shl eax, cl
movsxd rcx, eax
sub r8, rcx
add r15, r8
mov qword [rbp - 0x40], r15
jmp 0x140003b6c
add r15, r8
mov qword [rbp - 0x28], r12
mov qword [rbp - 0x30], r15
lea rdx, [rbp - 0x30]
lea rcx, [rbp - 0x20]
call fcn.140004450
add r13, r12
mov rax, qword [rbx + 0x18]
inc rax
cmp r13, rax
jb 0x140003ac5
lea rcx, [rbp - 0x20]
mov r15d, edi
call fcn.140004474
test rax, rax
je 0x140003c7e
mov rsi, rdi
mov rdx, rsi
lea rcx, [rbp - 0x20]
mov r12d, edi
call fcn.140003008
cmp qword [rax + 8], rdi
jbe 0x140003c66
mov rbx, rdi
mov rdx, rsi
lea rcx, [rbp - 0x20]
call fcn.140003008
mov rcx, qword [0x14002fa13]
add rbx, qword [rax]
call fcn.140004268
imul rbx, qword [0x14002fa13]
mov rcx, qword [rbp + 0x40]
xor r9d, r9d
mov rdx, rbx
xor r8d, r8d
mov r13, rax
call qword [sym.imp.KERNEL32.dll_SetFilePointerEx]
mov r8d, dword [0x14002fa13]
xor r9d, r9d
mov rcx, qword [rbp + 0x40]
mov rdx, r13
mov qword [rsp + 0x20], rdi
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x140003c9a
mov rax, qword [0x14002fa13]
lea r9, [rbp + 0x58]
mov rcx, qword [rbp + 0x50]
cmp r14, rax
mov r8d, r14d
mov qword [rsp + 0x20], rdi
cmova r8d, eax
mov rdx, r13
call qword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x140003c91
mov eax, dword [rbp + 0x58]
lea rcx, [rbp - 0x20]
inc r12d
mov rdx, rsi
sub r14, rax
movsxd rbx, r12d
call fcn.140003008
cmp rbx, qword [rax + 8]
jb 0x140003bbc
inc r15d
lea rcx, [rbp - 0x20]
movsxd rsi, r15d
call fcn.140004474
cmp rsi, rax
jb 0x140003ba0
test r14, r14
je 0x140003cb3
lea rcx, str._MFTParseFile___File_Size_Mismatch
call fcn.1400040fc
jmp 0x140003cb6
lea rbx, str._MFTParseFile___WriteFile_Error_:__d
jmp 0x140003ca1
lea rbx, str._MFTParseFile___Read_MFT_entry_error:__d
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov rcx, rbx
call fcn.1400040fc
jmp 0x140003cb6
mov dil, 1
lea rcx, [rbp - 0x20]
call fcn.140002fd8
mov al, dil
jmp 0x140003a49