Function at 0x14001c620
Capabilities:
Read file on windows

Disassembly:
push rbp
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x78
lea rbp, [rsp + 0x70]
mov qword [rbp], 0xfffffffffffffffe
mov rsi, r8
mov rdi, rdx
mov qword [rcx + 8], 0
mov rax, qword [rcx]
movsxd rax, dword [rax + 4]
mov qword [rbp - 0x10], rcx
mov rcx, qword [rcx + rax + 0x48]
test rcx, rcx
je 0x14001c684
mov rax, qword [rcx]
mov rax, qword [rax + 8]
lea rdx, [method.std::basic_filebuf_char__struct_std::char_traits_char__.virtual_8]
cmp rax, rdx
jne 0x14001c83f
mov rcx, qword [rcx + 0x80]
test rcx, rcx
je 0x14001c684
call fcn.1400398f8
mov rdx, qword [rbp - 0x10]
mov rax, qword [rdx]
movsxd rax, dword [rax + 4]
lea rcx, [rdx + rax]
mov edx, dword [rdx + rax + 0x10]
test edx, edx
jne 0x14001c858
mov rcx, qword [rcx + 0x50]
test rcx, rcx
jne 0x14001c8d8
mov rcx, qword [rbp - 0x10]
mov rbx, qword [rcx + rax + 0x48]
mov rax, qword [rbx]
mov rax, qword [rax + 0x40]
lea rcx, [method.std::basic_filebuf_char__struct_std::char_traits_char__.virtual_64]
cmp rax, rcx
jne 0x14001c8ff
cmp qword [rbx + 0x68], 0
jne 0x14001c922
mov rax, qword [rbx + 0x38]
mov rdx, qword [rax]
test rdx, rdx
je 0x14001c846
mov rax, qword [rbx + 0x50]
movsxd r15, dword [rax]
test r15, r15
je 0x14001c846
cmp r15, rsi
cmovae r15, rsi
cmp r15, 2
jne 0x14001c7fd
movzx eax, word [rdx]
mov word [rdi], ax
add rdi, r15
mov r14, rsi
sub r14, r15
mov rax, qword [rbx + 0x50]
sub dword [rax], r15d
mov rax, qword [rbx + 0x38]
add qword [rax], r15
cmp qword [rbx + 0x80], 0
je 0x14001c759
mov rax, qword [rbx + 0x18]
lea rcx, [rbx + 0x70]
cmp qword [rax], rcx
je 0x14001c966
cmp r14, 0x1000
jae 0x14001c935
test r14, r14
jne 0x14001c820
xor r14d, r14d
mov rax, rsi
sub rax, r14
mov rcx, qword [rbp - 0x10]
mov qword [rcx + 8], rax
mov dword [rbp - 4], 0
cmp rax, rsi
jne 0x14001c90f
mov rdx, qword [rbp - 0x10]
mov rax, qword [rdx]
movsxd rcx, dword [rax + 4]
mov eax, dword [rdx + rcx + 0x10]
cmp qword [rdx + rcx + 0x48], 0
je 0x14001c84e
xor edx, edx
mov r8d, dword [rbp - 4]
or r8d, edx
and eax, 0x17
or eax, r8d
mov rdx, qword [rbp - 0x10]
mov dword [rdx + rcx + 0x10], eax
and eax, dword [rdx + rcx + 0x14]
jne 0x14001c87e
mov rax, qword [rdx]
movsxd rax, dword [rax + 4]
mov rcx, qword [rdx + rax + 0x48]
test rcx, rcx
je 0x14001c7ec
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
lea rdx, [method.std::basic_filebuf_char__struct_std::char_traits_char__.virtual_16]
cmp rax, rdx
jne 0x14001c91b
mov rcx, qword [rcx + 0x80]
test rcx, rcx
je 0x14001c7ec
call fcn.140039380
mov rax, qword [rbp - 0x10]
add rsp, 0x78
pop rbx
pop rdi
pop rsi
pop r14
pop r15
pop rbp
ret
cmp r15, 4
jne 0x14001c80c
mov eax, dword [rdx]
mov dword [rdi], eax
jmp 0x14001c70e
cmp r15, 1
jne 0x14001c98a
movzx eax, byte [rdx]
mov byte [rdi], al
jmp 0x14001c70e
mov r9, qword [rbx + 0x80]
mov edx, 1
mov rcx, rdi
mov r8, r14
call fcn.14003a620
sub r14, rax
jmp 0x14001c759
call rax
jmp 0x14001c684
mov r14, rsi
jmp 0x14001c725
mov edx, 4
jmp 0x14001c794
xor eax, eax
cmp qword [rcx + 0x48], 0
sete al
shl eax, 2
or edx, eax
or edx, 2
mov dword [rbp - 4], 0
xor r8d, r8d
call fcn.1400265b0
jmp 0x14001c777
test al, 2
lea rcx, str.ios_base::eofbit_set
lea rdx, str.ios_base::failbit_set
cmove rdx, rcx
test al, 4
lea rsi, str.ios_base::badbit_set
cmove rsi, rdx
call fcn.140081150
lea rdx, [rbp - 0x20]
mov dword [rdx], 1
mov qword [rdx + 8], rax
lea rcx, [rbp - 0x48]
mov r8, rsi
call fcn.140081320
lea rax, vtable.std::ios_base::failure.0
lea rcx, [rbp - 0x48]
mov qword [rcx], rax
lea rdx, [0x140104f38]
call fcn.14003d7d8
call fcn.140074270
mov rcx, qword [rbp - 0x10]
mov rax, qword [rcx]
movsxd rax, dword [rax + 4]
mov dword [rbp - 4], 0
cmp dword [rcx + rax + 0x10], 0
je 0x14001c6ac
jmp 0x14001c777
mov rcx, rbx
mov rdx, rdi
mov r8, rsi
call rax
jmp 0x14001c75f
mov dword [rbp - 4], 3
jmp 0x14001c777
call rax
jmp 0x14001c7ec
mov rcx, rbx
mov rdx, rdi
mov r8, rsi
call fcn.140080b80
jmp 0x14001c75f
mov r9, qword [rbx + 0x80]
mov edx, 1
mov r8d, 0xfff
mov rcx, rdi
call fcn.14003a620
add rdi, rax
sub r14, rax
cmp rax, 0xfff
je 0x14001c740
jmp 0x14001c759
mov ecx, dword [rbx + 0x90]
mov rdx, qword [rbx + 0x88]
mov qword [rax], rdx
mov rax, qword [rbx + 0x38]
mov qword [rax], rdx
sub ecx, edx
mov rax, qword [rbx + 0x50]
mov dword [rax], ecx
jmp 0x14001c740
mov rcx, rdi
mov r8, r15
call fcn.14006dc20
jmp 0x14001c70e