Function at 0x140004ca8
Capabilities:
Read file on windows

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rax, qword [0x140038068]
xor rax, rsp
mov qword [rsp + 0x48], rax
mov r15d, ecx
mov qword [rsp + 0x20], rdx
mov ecx, 0x30032
mov r12, r8
call fcn.14000ecc4
xor r14d, r14d
mov rsi, rax
test rax, rax
jne 0x140004cf3
or eax, 0xffffffff
jmp 0x140004fc6
mov rdx, rsi
mov ecx, r15d
call fcn.1400047c4
mov r13, rax
cmp rax, 0xffffffffffffffff
je 0x140004fb7
mov r8d, 0x400
mov rdx, rsi
mov ecx, r15d
call fcn.140019750
mov ebp, eax
test eax, eax
js 0x140004fb7
movzx ecx, byte [rsi + 2]
mov rdi, rsi
movzx r8d, byte [rsi + 3]
movzx eax, byte [rsi]
shl r8d, 8
or r8d, ecx
movzx ecx, byte [rsi + 1]
shl r8d, 8
or r8d, ecx
shl r8d, 8
or r8d, eax
cmp r8d, 0x2014b50
jne 0x140004fb7
cmp ebp, 0x2e
jge 0x140004d90
movsxd rbx, ebp
mov rdx, rdi
mov r8, rbx
mov rcx, rsi
call fcn.14000b450
lea rdx, [rbx + rsi]
mov r8d, 0x400
mov ecx, r15d
mov rdi, rax
call fcn.140019750
test eax, eax
jle 0x140004fb7
add ebp, eax
movzx eax, byte [rdi + 0x20]
movzx edx, byte [rdi + 0x21]
movzx ecx, byte [rdi + 0x1f]
movzx ebx, byte [rdi + 0x1d]
shl ebx, 8
shl edx, 8
or edx, eax
shl ecx, 8
movzx eax, byte [rdi + 0x1e]
or ecx, eax
movzx eax, byte [rdi + 0x1c]
or ebx, eax
add edx, ecx
add ebx, 0x2e
add ebx, edx
lea eax, [rbx + 4]
cmp ebp, eax
jge 0x140004e09
cmp rdi, rsi
je 0x140004ddb
movsxd r8, ebp
mov rdx, rdi
mov rcx, rsi
call fcn.14000b450
mov rdi, rax
mov eax, 0x400
movsxd rdx, ebp
mov r8d, ebx
mov ecx, r15d
sub r8d, ebp
add r8d, 4
cmp r8d, eax
cmovl r8d, eax
add rdx, rsi
call fcn.140019750
test eax, eax
jle 0x140004fb7
add ebp, eax
mov rcx, r12
call fcn.14000eb70
movzx edx, byte [rdi + 0x1d]
movzx ecx, byte [rdi + 0x1c]
shl rdx, 8
or rdx, rcx
cmp rdx, rax
jne 0x140004e40
mov rcx, r12
call fcn.14000eb70
mov r8, rax
lea rcx, [rdi + 0x2e]
mov rdx, r12
call fcn.14000ba50
test eax, eax
je 0x140004e70
mov eax, ebx
sub ebp, ebx
add rdi, rax
movzx eax, byte [rdi + 2]
movzx ecx, byte [rdi + 3]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdi]
shl ecx, 8
or ecx, eax
cmp ecx, 0x2014b50
jmp 0x140004d55
movzx eax, byte [rdi + 0x2c]
xor r8d, r8d
movzx edx, byte [rdi + 0x2d]
mov ecx, r15d
shl rdx, 8
or rdx, rax
movzx eax, byte [rdi + 0x2b]
shl rdx, 8
or rdx, rax
movzx eax, byte [rdi + 0x2a]
shl rdx, 8
or rdx, rax
add rdx, r13
call fcn.140015afc
test rax, rax
js 0x140004fb7
mov r8d, 0x1e
lea rdx, [rsp + 0x28]
mov ecx, r15d
call fcn.140019750
test eax, eax
js 0x140004fb7
movzx eax, byte [rsp + 0x2a]
movzx ecx, byte [rsp + 0x2b]
shl ecx, 8
or ecx, eax
movzx eax, byte [rsp + 0x29]
shl ecx, 8
or ecx, eax
movzx eax, byte [rsp + 0x28]
shl ecx, 8
or ecx, eax
cmp ecx, 0x4034b50
jne 0x140004fb7
movzx eax, byte [rdi + 0x1a]
movzx ecx, byte [rdi + 0x1b]
mov r9, qword [rsp + 0x20]
movzx edx, byte [rsp + 0x43]
shl rcx, 8
or rcx, rax
shl edx, 8
movzx eax, byte [rdi + 0x19]
shl rcx, 8
or rcx, rax
movzx eax, byte [rdi + 0x18]
shl rcx, 8
or rcx, rax
mov qword [r9], rcx
movzx eax, byte [rdi + 0x16]
movzx ecx, byte [rdi + 0x17]
shl rcx, 8
or rcx, rax
movzx eax, byte [rdi + 0x15]
shl rcx, 8
or rcx, rax
movzx eax, byte [rdi + 0x14]
shl rcx, 8
or rcx, rax
mov qword [r9 + 8], rcx
movzx eax, byte [rdi + 0x2c]
movzx r8d, byte [rdi + 0x2d]
movzx ecx, byte [rsp + 0x45]
shl r8, 8
or r8, rax
shl ecx, 8
movzx eax, byte [rdi + 0x2b]
shl r8, 8
or r8, rax
movzx eax, byte [rdi + 0x2a]
shl r8, 8
or r8, rax
movzx eax, byte [rsp + 0x42]
or rdx, rax
movzx eax, byte [rsp + 0x44]
or rcx, rax
add rdx, r13
add rcx, 0x1e
lea rax, [r8 + rdx]
add rax, rcx
mov qword [r9 + 0x10], rax
movzx ecx, byte [rdi + 0xb]
movzx eax, byte [rdi + 0xa]
shl ecx, 8
or ecx, eax
mov dword [r9 + 0x18], ecx
jmp 0x140004fbb
or r14d, 0xffffffff
mov rcx, rsi
call fcn.14000ecb0
mov eax, r14d
mov rcx, qword [rsp + 0x48]
xor rcx, rsp
call fcn.14000ac30
mov rbx, qword [rsp + 0xa8]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret