Function at 0x438500
Capabilities:
Read file on windows

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x20
mov rax, qword [rcx + 0x28]
mov rbx, rcx
test rax, rax
je 0x438d00
cmp rax, qword [rcx + 0x38]
jb 0x4385c8
mov dword [rbx + 0x80], 1
xor eax, eax
mov byte [rbx + 0x6cb], al
mov rcx, rbx
call fcn.00438350
mov rcx, rbx
mov ebp, eax
call fcn.00438350
mov rcx, rbx
mov r12d, eax
call fcn.00438350
mov rcx, rbx
call fcn.00438350
mov rcx, rbx
mov dword [rbx + 0x5c4], eax
call fcn.00438350
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x438cb0
cmp rax, qword [rbx + 0x38]
jb 0x4385e0
mov dword [rbx + 0x80], 1
mov rsi, rax
xor edx, edx
xor eax, eax
mov dword [rbx + 0x5c8], eax
lea r10, [rbx + 0x5cc]
lea r8, [rsi + rdx]
cmp r8, qword [rbx + 0x38]
jbe 0x4385f0
movabs rax, 0xa00000001
mov qword [rbx + 0x80], rax
xor eax, eax
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
lea rdx, [rax + 1]
mov qword [rcx + 0x28], rdx
movzx eax, byte [rax]
jmp 0x438530
lea rsi, [rax + 1]
mov qword [rbx + 0x28], rsi
movzx eax, byte [rax]
mov rdx, rax
jmp 0x43858d
mov ecx, edx
cmp edx, 8
jae 0x438c78
and edx, 4
jne 0x438d3b
test ecx, ecx
je 0x438617
movzx eax, byte [rsi]
mov byte [r10], al
test cl, 2
jne 0x438d50
mov qword [rbx + 0x28], r8
mov dword [rbx + 0x6e8], 0xfffffffe
and r12d, ebp
cmp r12d, 0xffffffff
je 0x43865e
mov eax, dword [rbx + 0x5c8]
sub eax, 1
js 0x43865e
cdqe
jmp 0x438648
sub rax, 1
test eax, eax
js 0x43865e
cmp byte [rbx + rax + 0x5cc], 0xff
je 0x438640
mov dword [rbx + 0x6e8], eax
mov dword [rbx + 0x6ec], ebp
cmp byte [rbx + 0x6cd], 0
je 0x438c5b
mov r8d, dword [rbx + 0x5c8]
test r8d, r8d
jle 0x438d2b
lea eax, [r8 - 1]
cmp eax, 0xe
jbe 0x438d32
movdqu xmm4, xmmword [rbx + 0x5cc]
pxor xmm3, xmm3
pxor xmm2, xmm2
mov eax, r8d
shr eax, 4
movdqu xmm1, xmm4
punpckhbw xmm4, xmm3
punpcklbw xmm1, xmm3
movdqu xmm5, xmm1
movdqu xmm0, xmm1
movdqu xmm1, xmm4
punpcklwd xmm5, xmm2
punpckhwd xmm0, xmm2
punpcklwd xmm1, xmm2
paddd xmm0, xmm5
punpckhwd xmm4, xmm2
paddd xmm0, xmm1
paddd xmm0, xmm4
cmp eax, 1
je 0x438ac0
movdqu xmm1, xmmword [rbx + 0x5dc]
movdqu xmm5, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm5, xmm3
movdqu xmm4, xmm5
punpckhwd xmm5, xmm2
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
movdqu xmm4, xmm1
punpckhwd xmm1, xmm2
paddd xmm0, xmm5
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
paddd xmm0, xmm1
cmp eax, 2
je 0x438ac0
movdqu xmm1, xmmword [rbx + 0x5ec]
movdqu xmm5, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm5, xmm3
movdqu xmm4, xmm5
punpckhwd xmm5, xmm2
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
movdqu xmm4, xmm1
punpckhwd xmm1, xmm2
paddd xmm0, xmm5
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
paddd xmm0, xmm1
cmp eax, 3
je 0x438ac0
movdqu xmm1, xmmword [rbx + 0x5fc]
movdqu xmm5, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm5, xmm3
movdqu xmm4, xmm5
punpckhwd xmm5, xmm2
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
movdqu xmm4, xmm1
punpckhwd xmm1, xmm2
paddd xmm0, xmm5
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
paddd xmm0, xmm1
cmp eax, 4
je 0x438ac0
movdqu xmm1, xmmword [rbx + 0x60c]
movdqu xmm5, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm5, xmm3
movdqu xmm4, xmm5
punpckhwd xmm5, xmm2
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
movdqu xmm4, xmm1
punpckhwd xmm1, xmm2
paddd xmm0, xmm5
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
paddd xmm0, xmm1
cmp eax, 5
je 0x438ac0
movdqu xmm1, xmmword [rbx + 0x61c]
movdqu xmm5, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm5, xmm3
movdqu xmm4, xmm5
punpckhwd xmm5, xmm2
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
movdqu xmm4, xmm1
punpckhwd xmm1, xmm2
paddd xmm0, xmm5
punpcklwd xmm4, xmm2
paddd xmm0, xmm4
paddd xmm0, xmm1
cmp eax, 6
je 0x438ac0
movdqu xmm1, xmmword [rbx + 0x62c]
movdqu xmm4, xmm1
punpckhbw xmm1, xmm3
punpcklbw xmm4, xmm3
movdqu xmm3, xmm4
punpckhwd xmm4, xmm2
punpcklwd xmm3, xmm2
paddd xmm0, xmm3
movdqu xmm3, xmm1
punpckhwd xmm1, xmm2
paddd xmm0, xmm4
punpcklwd xmm3, xmm2
paddd xmm0, xmm3
paddd xmm0, xmm1
cmp eax, 7
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x63c]
pxor xmm2, xmm2
pxor xmm1, xmm1
movdqu xmm5, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm5, xmm2
movdqu xmm4, xmm5
punpckhwd xmm5, xmm1
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm3
punpckhwd xmm3, xmm1
paddd xmm0, xmm5
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
paddd xmm0, xmm3
cmp eax, 8
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x64c]
movdqu xmm5, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm5, xmm2
movdqu xmm4, xmm5
punpckhwd xmm5, xmm1
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm3
punpckhwd xmm3, xmm1
paddd xmm0, xmm5
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
paddd xmm0, xmm3
cmp eax, 9
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x65c]
movdqu xmm5, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm5, xmm2
movdqu xmm4, xmm5
punpckhwd xmm5, xmm1
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm3
punpckhwd xmm3, xmm1
paddd xmm0, xmm5
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
paddd xmm0, xmm3
cmp eax, 0xa
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x66c]
movdqu xmm5, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm5, xmm2
movdqu xmm4, xmm5
punpckhwd xmm5, xmm1
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm3
punpckhwd xmm3, xmm1
paddd xmm0, xmm5
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
paddd xmm0, xmm3
cmp eax, 0xb
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x67c]
movdqu xmm5, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm5, xmm2
movdqu xmm4, xmm5
punpckhwd xmm5, xmm1
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm3
punpckhwd xmm3, xmm1
paddd xmm0, xmm5
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
paddd xmm0, xmm3
cmp eax, 0xc
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x68c]
movdqu xmm5, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm5, xmm2
movdqu xmm4, xmm5
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm5
punpckhwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm3
punpcklwd xmm4, xmm1
paddd xmm4, xmm0
movdqu xmm0, xmm3
punpckhwd xmm0, xmm1
paddd xmm0, xmm4
cmp eax, 0xd
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x69c]
movdqu xmm5, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm5, xmm2
movdqu xmm4, xmm5
punpcklwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm5
punpckhwd xmm4, xmm1
paddd xmm0, xmm4
movdqu xmm4, xmm3
punpcklwd xmm4, xmm1
paddd xmm4, xmm0
movdqu xmm0, xmm3
punpckhwd xmm0, xmm1
paddd xmm0, xmm4
cmp eax, 0xe
je 0x438ac0
movdqu xmm3, xmmword [rbx + 0x6ac]
movdqu xmm4, xmm3
punpckhbw xmm3, xmm2
punpcklbw xmm4, xmm2
movdqu xmm2, xmm3
movdqu xmm3, xmm4
punpcklwd xmm3, xmm1
paddd xmm0, xmm3
movdqu xmm3, xmm4
punpckhwd xmm3, xmm1
paddd xmm0, xmm3
movdqu xmm3, xmm2
punpcklwd xmm3, xmm1
paddd xmm3, xmm0
movdqu xmm0, xmm2
punpckhwd xmm0, xmm1
paddd xmm0, xmm3
nop dword [rax + rax]
movdqu xmm1, xmm0
mov edx, r8d
psrldq xmm1, 8
and edx, 0xfffffff0
paddd xmm0, xmm1
movdqu xmm1, xmm0
psrldq xmm1, 4
paddd xmm0, xmm1
movd eax, xmm0
test r8b, 0xf
je 0x438c48
movsxd rcx, edx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 1]
cmp ecx, r8d
jge 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 2]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 3]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 4]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 5]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 6]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 7]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 8]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 9]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 0xa]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 0xb]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 0xc]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
lea ecx, [rdx + 0xd]
cmp r8d, ecx
jle 0x438c48
movsxd rcx, ecx
add edx, 0xe
movzx ecx, byte [rbx + rcx + 0x5cc]
add eax, ecx
cmp r8d, edx
jle 0x438c48
movsxd rdx, edx
movzx edx, byte [rbx + rdx + 0x5cc]
add eax, edx
nop dword [rax]
mov edx, dword [rbx + 0x48]
lea eax, [rax + r8 + 0x1b]
mov dword [rbx + 0x54], ebp
add eax, edx
mov dword [rbx + 0x4c], edx
mov dword [rbx + 0x50], eax
mov dword [rbx + 0x6d0], 0
mov eax, 1
add rsp, 0x20
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rax, qword [rsi]
lea rdi, [r10 + 8]
mov rcx, r10
and rdi, 0xfffffffffffffff8
mov qword [r10], rax
sub rcx, rdi
mov rax, qword [rsi + rdx - 8]
sub rsi, rcx
add ecx, edx
mov qword [r10 + rdx - 8], rax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x438617
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x438d17
mov rsi, qword [rbx + 0x28]
movzx ecx, al
movzx edx, al
mov dword [rbx + 0x5c8], ecx
lea r10, [rbx + 0x5cc]
test rsi, rsi
jne 0x43859a
mov r9, qword [rbx + 0x18]
mov r8d, 1
mov rcx, r10
call sub.msvcrt.dll_fread
cmp rax, 1
jne 0x4385a4
jmp 0x43861b
mov rcx, qword [rcx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
jne 0x438530
jmp 0x438524
mov dword [rbx + 0x80], 1
mov rsi, qword [rbx + 0x28]
xor edx, edx
xor ecx, ecx
jmp 0x438cc8
xor eax, eax
jmp 0x438c48
xor eax, eax
xor edx, edx
jmp 0x438aee
mov eax, dword [rsi]
mov dword [r10], eax
mov eax, ecx
mov edx, dword [rsi + rax - 4]
mov dword [r10 + rax - 4], edx
jmp 0x438617
mov eax, ecx
movzx edx, word [rsi + rax - 2]
mov word [r10 + rax - 2], dx
jmp 0x438617