Function at 0x1400156f0
Capabilities:
Read file on windows

Disassembly:
mov dword [rsp + 0x18], r8d
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rsi
push rdi
sub rsp, 0x48
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x30], rax
cmp qword [rsp + 0x28], 0
je 0x140015732
mov rax, qword [rsp + 0x28]
movsx eax, byte [rax + 0x94]
cmp eax, 0x72
je 0x14001573c
mov eax, 0xfffffffe
jmp 0x140015c27
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], 0xfffffffd
je 0x140015752
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], 0xffffffff
jne 0x14001575c
mov eax, 0xffffffff
jmp 0x140015c27
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], 1
jne 0x14001576e
xor eax, eax
jmp 0x140015c27
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x20], rax
mov rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x68]
mov qword [rcx + 0x10], rax
mov rcx, qword [rsp + 0x28]
mov eax, dword [rsp + 0x70]
mov dword [rcx + 0x18], eax
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x18], 0
je 0x140015857
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0xa4], 0xffffffff
je 0x140015857
mov rcx, qword [rsp + 0x20]
mov rax, qword [rsp + 0x28]
movzx eax, byte [rax + 0xa4]
mov byte [rcx], al
mov rax, qword [rsp + 0x20]
add rax, 1
mov qword [rsp + 0x20], rax
mov rcx, qword [rsp + 0x28]
mov rcx, qword [rcx + 0x10]
add rcx, 1
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x10], rcx
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x18]
sub ecx, 1
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x18], ecx
mov rax, qword [rsp + 0x28]
mov dword [rax + 0xa4], 0xffffffff
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0xa0]
add ecx, 1
mov rax, qword [rsp + 0x28]
mov dword [rax + 0xa0], ecx
mov rax, qword [rsp + 0x30]
add rax, 1
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0xa8], 0
je 0x140015857
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x58], 1
mov eax, 1
jmp 0x140015c27
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x18], 0
je 0x140015bbe
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x90], 0
je 0x1400159be
mov rax, qword [rsp + 0x28]
mov eax, dword [rax + 8]
mov dword [rsp + 0x38], eax
mov rax, qword [rsp + 0x28]
mov eax, dword [rax + 0x18]
cmp dword [rsp + 0x38], eax
jbe 0x14001589e
mov rax, qword [rsp + 0x28]
mov eax, dword [rax + 0x18]
mov dword [rsp + 0x38], eax
cmp dword [rsp + 0x38], 0
jbe 0x14001591b
mov ecx, dword [rsp + 0x38]
mov rdi, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x28]
mov rdi, qword [rdi + 0x10]
mov rsi, qword [rsi]
rep movsb byte [rdi], byte [rsi]
mov edx, dword [rsp + 0x38]
mov rax, qword [rsp + 0x20]
add rax, rdx
mov qword [rsp + 0x20], rax
mov rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x20]
mov qword [rcx + 0x10], rax
mov ecx, dword [rsp + 0x38]
mov rax, qword [rsp + 0x28]
add rcx, qword [rax]
mov rax, qword [rsp + 0x28]
mov qword [rax], rcx
mov rcx, qword [rsp + 0x28]
mov eax, dword [rsp + 0x38]
mov ecx, dword [rcx + 0x18]
sub ecx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x18], ecx
mov rcx, qword [rsp + 0x28]
mov eax, dword [rsp + 0x38]
mov ecx, dword [rcx + 8]
sub ecx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 8], ecx
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x18], 0
jbe 0x14001595c
mov rax, qword [rsp + 0x28]
mov r8d, dword [rax + 0x18]
mov r9, qword [rsp + 0x28]
mov r9, qword [r9 + 0x60]
mov edx, 1
mov rcx, qword [rsp + 0x20]
call fcn.1400288e0
mov rdx, rax
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x18]
sub ecx, edx
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x18], ecx
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x18]
mov eax, dword [rsp + 0x70]
sub eax, ecx
mov dword [rsp + 0x70], eax
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x9c]
add ecx, dword [rsp + 0x70]
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x9c], ecx
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0xa0]
add ecx, dword [rsp + 0x70]
mov rax, qword [rsp + 0x28]
mov dword [rax + 0xa0], ecx
cmp dword [rsp + 0x70], 0
jne 0x1400159b5
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x5c], 1
mov eax, dword [rsp + 0x70]
jmp 0x140015c27
mov rax, qword [rsp + 0x28]
cmp dword [rax + 8], 0
jne 0x140015a5f
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x5c], 0
jne 0x140015a5f
call fcn.1400292f4
mov dword [rax], 0
mov r9, qword [rsp + 0x28]
mov r9, qword [r9 + 0x60]
mov r8d, 0x4000
mov edx, 1
mov rcx, qword [rsp + 0x28]
mov rcx, qword [rcx + 0x68]
call fcn.1400288e0
mov rdx, rax
mov rax, qword [rsp + 0x28]
mov dword [rax + 8], edx
mov rax, qword [rsp + 0x28]
cmp dword [rax + 8], 0
jne 0x140015a4e
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x5c], 1
mov rcx, qword [rsp + 0x28]
mov rcx, qword [rcx + 0x60]
call fcn.1400294bc
test eax, eax
je 0x140015a4e
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x58], 0xffffffff
jmp 0x140015bbe
mov rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x28]
mov rax, qword [rax + 0x68]
mov qword [rcx], rax
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x9c]
mov rax, qword [rsp + 0x28]
add ecx, dword [rax + 8]
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x9c], ecx
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0xa0]
mov rax, qword [rsp + 0x28]
add ecx, dword [rax + 0x18]
mov rax, qword [rsp + 0x28]
mov dword [rax + 0xa0], ecx
xor edx, edx
mov rcx, qword [rsp + 0x28]
call fcn.140019fc0
mov edx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x58], edx
mov rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x28]
mov eax, dword [rax + 8]
mov ecx, dword [rcx + 0x9c]
sub ecx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x9c], ecx
mov rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x28]
mov eax, dword [rax + 0x18]
mov ecx, dword [rcx + 0xa0]
sub ecx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0xa0], ecx
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], 1
jne 0x140015ba1
mov rax, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x30]
mov rax, qword [rax + 0x10]
sub rax, rcx
mov r8d, eax
mov rdx, qword [rsp + 0x30]
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x78]
call fcn.14000efa0
mov edx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x78], edx
mov rax, qword [rsp + 0x28]
mov rax, qword [rax + 0x10]
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x28]
call fcn.140016850
mov edx, eax
mov rax, qword [rsp + 0x28]
cmp edx, dword [rax + 0x78]
je 0x140015b62
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x58], 0xfffffffd
jmp 0x140015ba1
mov rcx, qword [rsp + 0x28]
call fcn.140016850
mov rcx, qword [rsp + 0x28]
call fcn.1400151e0
mov rdx, qword [rsp + 0x28]
cmp dword [rdx + 0x58], 0
jne 0x140015ba1
mov rcx, qword [rsp + 0x28]
call fcn.140019bc0
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.14000efa0
mov edx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x78], edx
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], 0
jne 0x140015bb7
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x5c], 0
je 0x140015bb9
jmp 0x140015bbe
jmp 0x140015857
mov rax, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x30]
mov rax, qword [rax + 0x10]
sub rax, rcx
mov r8d, eax
mov rdx, qword [rsp + 0x30]
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x78]
call fcn.14000efa0
mov edx, eax
mov rax, qword [rsp + 0x28]
mov dword [rax + 0x78], edx
mov rax, qword [rsp + 0x28]
mov eax, dword [rax + 0x18]
cmp dword [rsp + 0x70], eax
jne 0x140015c19
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], 0xfffffffd
je 0x140015c12
mov rax, qword [rsp + 0x28]
cmp dword [rax + 0x58], 0xffffffff
jne 0x140015c19
mov eax, 0xffffffff
jmp 0x140015c27
mov rax, qword [rsp + 0x28]
mov ecx, dword [rax + 0x18]
mov eax, dword [rsp + 0x70]
sub eax, ecx
add rsp, 0x48
pop rdi
pop rsi
ret