Function at 0x140024cd0
Capabilities:
Read file on windows

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov ebp, edx
mov r14, r9
imul ebp, r8d
mov r12d, r8d
mov r13d, edx
mov rsi, rcx
mov r15, r9
test ebp, ebp
jle 0x140024fc0
mov eax, dword [rcx + 8]
test al, 0x40
je 0x140024ea7
bt eax, 0x12
jae 0x140024d38
movzx eax, byte [rcx + 0x70]
lea r15, [r9 + 1]
mov byte [r9], al
and dword [rcx + 8], 0xfffbffff
inc dword [rcx + 0x44]
sub ebp, 1
je 0x140024fc0
movsxd rax, dword [rcx + 0x44]
mov edi, dword [rcx + 0x48]
mov rdx, rax
add rdx, qword [rcx + 0x50]
sub edi, eax
mov rcx, r15
cmp ebp, edi
jg 0x140024d5f
movsxd r8, ebp
call sub.VCRUNTIME140.dll_memcpy
add dword [rsi + 0x44], ebp
jmp 0x140024ee7
movsxd rbx, edi
mov r8, rbx
call sub.VCRUNTIME140.dll_memcpy
add r15, rbx
sub ebp, edi
mov rcx, qword [rsi + 0x30]
mov edi, 0x2000
test rcx, rcx
je 0x140024d90
mov rdx, qword [rsi + 0x50]
mov r8d, edi
call fcn.1400f72d0
jmp 0x140024e5b
mov rcx, qword [rsi + 0x38]
cmp dword [rcx + 8], 0
jbe 0x140024dc9
mov rax, qword [rsi + 0x50]
xor edx, edx
mov qword [rcx + 0x10], rax
mov rax, qword [rsi + 0x38]
mov dword [rax + 0x18], edi
mov rcx, qword [rsi + 0x38]
call fcn.1400f47d0
test eax, eax
jne 0x140024e32
mov rcx, qword [rsi + 0x38]
mov ebx, edi
sub ebx, dword [rcx + 0x18]
test ebx, ebx
jg 0x140024e5d
mov ebx, dword [rsi + 0x4c]
test ebx, ebx
jg 0x140024dd4
mov ebx, edi
jmp 0x140024de2
sub ebx, dword [rcx + 0xc]
je 0x140024e5d
cmp ebx, edi
cmovg ebx, edi
mov rcx, qword [rsi + 0x28]
mov rax, qword [rsi + 0x58]
test rcx, rcx
je 0x140024dff
mov r8d, ebx
mov rdx, rax
call qword [0x1401bcf08]
mov ebx, eax
jmp 0x140024e17
mov r9, qword [rsi + 0x20]
mov edx, 1
movsxd r8, ebx
mov rcx, rax
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
mov rbx, rax
test eax, eax
jle 0x140024e5d
mov rax, qword [rsi + 0x58]
mov rcx, qword [rsi + 0x38]
mov qword [rcx], rax
mov rax, qword [rsi + 0x38]
mov dword [rax + 8], ebx
jmp 0x140024d90
cmp eax, 1
jne 0x140024e42
mov rax, qword [rsi + 0x38]
mov ebx, edi
sub ebx, dword [rax + 0x18]
jmp 0x140024e5d
mov r9d, eax
lea r8, [0x1401800d0]
mov edx, 1
mov ecx, 0x7dd
call fcn.140001480
mov ebx, eax
mov eax, dword [rsi + 0x48]
test ebx, ebx
jle 0x140024e9a
add dword [rsi + 0x40], eax
mov rcx, r15
mov rdx, qword [rsi + 0x50]
cmp ebx, ebp
jge 0x140024e8a
movsxd rdi, ebx
mov r8, rdi
call sub.VCRUNTIME140.dll_memcpy
add r15, rdi
mov dword [rsi + 0x48], ebx
sub ebp, ebx
jmp 0x140024d6f
movsxd r8, ebp
call sub.VCRUNTIME140.dll_memcpy
mov dword [rsi + 0x48], ebx
mov dword [rsi + 0x44], ebp
jmp 0x140024ee7
mov dword [rsi + 0x44], eax
mov eax, 0xffffffff
jmp 0x140024fc2
mov rcx, qword [rcx + 0x28]
test rcx, rcx
je 0x140024eca
mov r8d, ebp
mov rdx, r14
call qword [0x1401bcf08]
cmp eax, ebp
jge 0x140024ee7
mov eax, 0xffffffff
jmp 0x140024fc2
mov r9, qword [rsi + 0x20]
mov edx, 1
movsxd rbx, ebp
mov rcx, r14
mov r8, rbx
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
cmp rax, rbx
jb 0x140024e9d
cmp r12d, 1
jle 0x140024fc0
test dword [rsi + 8], 0x20000
je 0x140024fc0
lea r8d, [r13 - 1]
cmp r12d, 2
jne 0x140024f3f
test r8d, r8d
js 0x140024fc0
nop dword [rax]
nop word [rax + rax]
sub r8d, 1
movzx ecx, byte [r14]
movzx eax, byte [r14 + 1]
mov byte [r14], al
mov byte [r14 + 1], cl
lea r14, [r14 + 2]
jns 0x140024f20
jmp 0x140024fc0
cmp r12d, 4
jne 0x140024f76
test r8d, r8d
js 0x140024fc0
lea rdx, [r14 + 1]
nop
sub r8d, 1
movzx ecx, byte [rdx - 1]
movzx eax, byte [rdx + 2]
mov byte [rdx - 1], al
movzx eax, byte [rdx + 1]
mov byte [rdx + 2], cl
movzx ecx, byte [rdx]
mov byte [rdx], al
mov byte [rdx + 1], cl
lea rdx, [rdx + 4]
jns 0x140024f50
jmp 0x140024fc0
test r8d, r8d
js 0x140024fc0
lea rdx, [r14 + 1]
nop
sub r8d, 1
movzx ecx, byte [rdx - 1]
movzx eax, byte [rdx + 6]
mov byte [rdx - 1], al
movzx eax, byte [rdx + 5]
mov byte [rdx + 6], cl
movzx ecx, byte [rdx]
mov byte [rdx], al
movzx eax, byte [rdx + 4]
mov byte [rdx + 5], cl
movzx ecx, byte [rdx + 1]
mov byte [rdx + 1], al
movzx eax, byte [rdx + 3]
mov byte [rdx + 4], cl
movzx ecx, byte [rdx + 2]
mov byte [rdx + 2], al
mov byte [rdx + 3], cl
lea rdx, [rdx + 8]
jns 0x140024f80
xor eax, eax
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
ret