Function at 0x1401aa7c0
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
vmovups xmmword [rsp + 0xa0], xmm6
vmovups xmmword [rsp + 0xb0], xmm7
mov rsi, qword [rcx + 0x10]
mov r15, rcx
mov ecx, 0x28
mov rbx, rdx
mov qword [rsp + 0x98], rsi
call sub.msvcrt.dll_malloc
vmovq xmm7, rbx
mov ecx, 0x14
mov qword [rsp + 0x78], rax
vpbroadcastq ymm0, xmm7
mov qword [rax + 0x20], rbx
vmovdqu ymmword [rax], ymm0
vzeroupper
call sub.msvcrt.dll_malloc
vmovdqu xmm7, xmmword [0x1402b40c0]
mov ecx, ebx
mov qword [rsp + 0x70], rax
mov dword [rax + 0x10], 0
vmovdqu xmmword [rax], xmm7
mov eax, 1
shl eax, cl
test eax, eax
jle 0x1401ab77c
cdqe
lea r12, [rax + rsi]
nop dword [rax]
mov edx, 1
mov ecx, 0x20
call sub.msvcrt.dll_calloc
lea rdx, [rsi + rsi]
mov rdi, rax
mov rax, rsi
sar rax, 0x3f
xor rax, rdx
cmp rax, 0x7f
jbe 0x1401ab2f9
xor edx, edx
nop dword [rax]
mov r8d, eax
mov ecx, edx
shr rax, 7
add edx, 1
or r8d, 0xffffff80
mov byte [rdi + rcx], r8b
cmp rax, 0x7f
ja 0x1401aa888
add rdx, rdi
mov byte [rdx], al
mov ecx, 0x40
call sub.msvcrt.dll_malloc
vmovdqu xmm1, xmmword [rdi]
vmovdqu xmm2, xmmword [rdi + 0x10]
mov ecx, 0x20
mov rbp, rax
mov rax, qword [r15 + 0x18]
vmovdqu xmm5, xmmword [rax]
vmovdqu xmmword [rbp], xmm5
vmovdqu xmm0, xmmword [rax + 0x10]
vmovdqu xmmword [rbp + 0x20], xmm1
vmovdqu xmmword [rbp + 0x10], xmm0
vmovdqu xmmword [rbp + 0x30], xmm2
call sub.msvcrt.dll_malloc
mov r9d, 0x20
mov edx, 0x40
mov rcx, rbp
mov r8, rax
mov r13, rax
call fcn.1401acc90
mov rdx, qword [r15 + 0x10]
mov rcx, qword [r15]
xor r8d, r8d
not rdx
and rdx, rsi
add rsi, 1
shl edx, 5
call sub.msvcrt.dll_fseek
mov r9, qword [r15]
mov edx, 1
mov rcx, r13
mov r8d, 0x20
call sub.msvcrt.dll_fwrite
mov rcx, r13
mov qword [rsp + 0x98], rsi
call sub.msvcrt.dll_free
mov rcx, rbp
call sub.msvcrt.dll_free
mov rcx, rdi
call sub.msvcrt.dll_free
cmp rsi, r12
jne 0x1401aa858
mov r9d, 5
cmp rbx, 1
je 0x1401ab78f
mov byte [rsp + 0x57], r9b
mov r14, r12
nop dword [rax]
movsx rax, byte [rsp + 0x57]
mov rdi, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x70]
mov rbp, qword [rdi + rax*8 - 8]
mov r13, rax
movsxd r12, dword [rsi + rax*4 - 4]
lea eax, [rax - 1]
mov byte [rsp + 0x28], al
mov byte [rsp + 0x57], al
test al, al
jg 0x1401aae28
mov ecx, 0x28
call sub.msvcrt.dll_malloc
mov ecx, 0x14
mov rdi, rax
lea rax, [rbp - 1]
vmovq xmm6, rax
mov qword [rsp + 0x38], rax
mov qword [rdi + 0x20], rax
vpbroadcastq ymm0, xmm6
vmovdqu ymmword [rdi], ymm0
vzeroupper
call sub.msvcrt.dll_malloc
mov ecx, ebp
mov r8d, 1
mov dword [rax + 0x10], 0
mov rsi, rax
vmovdqu xmmword [rax], xmm7
mov eax, 1
shl eax, cl
lea ecx, [rbp - 1]
shl r8d, cl
cdqe
movsxd r8, r8d
test r12, r12
je 0x1401aaee0
cmp r12, 1
je 0x1401ab33a
cmp r12, 2
je 0x1401ab5bb
cmp r12, 3
je 0x1401ab14d
lea rdx, [rbp + 1]
lea rcx, [rax + r14]
imul rax, rdx
imul rax, rbp
sub rcx, rax
test r8, r8
jle 0x1401aadfc
lea rax, [r8 + r14]
sub rcx, r14
mov qword [rsp + 0x68], r8
mov r13, r14
mov qword [rsp + 0x28], rax
lea rax, [r14 + r8*2]
vpxor xmm6, xmm6, xmm6
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x80], rdi
mov qword [rsp + 0x88], rsi
mov qword [rsp + 0x30], r14
nop dword [rax + rax]
mov rdi, qword [rsp + 0x68]
mov rdx, qword [r15 + 0x10]
mov rax, r13
xor r8d, r8d
mov rcx, qword [r15]
xor esi, esi
sub rax, rdi
not rdx
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [r15]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov rdi, rax
call sub.msvcrt.dll_fread
mov rbx, qword [rsp + 0x60]
mov rdx, qword [r15 + 0x10]
cmp rax, 0x20
mov rcx, qword [r15]
lea rax, [r13 + rbx]
not rdx
cmovne rdi, rsi
xor r8d, r8d
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [r15]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov r12, rax
call sub.msvcrt.dll_fread
mov rdx, qword [r15 + 0x10]
mov rcx, qword [r15]
cmp rax, 0x20
mov rax, qword [rsp + 0x28]
cmovne r12, rsi
not rdx
xor r8d, r8d
add rax, rbx
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [r15]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov rbp, rax
call sub.msvcrt.dll_fread
mov edx, 1
mov ecx, 0x20
cmp rax, 0x20
cmovne rbp, rsi
call sub.msvcrt.dll_calloc
lea rdx, [r13 + r13]
mov rbx, rax
mov rax, r13
sar rax, 0x3f
xor rax, rdx
cmp rax, 0x7f
jbe 0x1401aaed0
xor edx, edx
nop dword [rax]
mov r8d, eax
mov ecx, edx
shr rax, 7
add edx, 1
or r8d, 0xffffff80
mov byte [rbx + rcx], r8b
cmp rax, 0x7f
ja 0x1401aaba0
add rdx, rbx
mov byte [rdx], al
mov ecx, pe_nt_image_headers64
call sub.msvcrt.dll_malloc
vmovdqu xmm3, xmmword [rbx]
vmovdqu xmm4, xmmword [rbx + 0x10]
mov ecx, 0x20
mov rsi, rax
mov rax, qword [r15 + 0x18]
vmovdqu xmm5, xmmword [rdi]
vmovdqu xmm0, xmmword [rdi + 0x10]
lea r14, [rsi + 0x60]
lea r11, [rsi + 0x20]
vmovdqu xmm1, xmmword [rax]
lea r10, [rsi + 0x40]
mov qword [rsp + 0x48], r11
mov qword [rsp + 0x40], r10
vmovdqu xmmword [rsi], xmm1
vmovdqu xmm2, xmmword [rax + 0x10]
vmovdqu xmm1, xmmword [r12]
vmovdqu xmmword [rsi + 0x20], xmm3
vmovdqu xmmword [rsi + 0x10], xmm2
vmovdqu xmm2, xmmword [r12 + 0x10]
vmovdqu xmmword [rsi + 0x30], xmm4
vmovdqu xmmword [rsi + 0x40], xmm5
vmovdqu xmmword [rsi + 0x50], xmm0
vmovdqu xmmword [rsi + 0x60], xmm1
vmovdqu xmmword [r14 + 0x10], xmm2
call sub.msvcrt.dll_malloc
mov edx, pe_nt_image_headers64
mov rcx, rsi
mov r9d, 0x20
mov r8, rax
mov qword [rsp + 0x38], rax
call fcn.1401acc90
mov rcx, qword [rsp + 0x28]
mov r10, qword [rsp + 0x40]
mov r11, qword [rsp + 0x48]
vmovdqu xmmword [rbx], xmm6
mov rax, rcx
lea rdx, [rcx + rcx]
vmovdqu xmmword [rbx + 0x10], xmm6
sar rax, 0x3f
xor rax, rdx
cmp rax, 0x7f
jbe 0x1401aaec8
xor edx, edx
nop dword [rax]
mov r8d, eax
mov ecx, edx
shr rax, 7
add edx, 1
or r8d, 0xffffff80
mov byte [rbx + rcx], r8b
cmp rax, 0x7f
ja 0x1401aac90
add rdx, rbx
vmovdqu xmm1, xmmword [rdi]
vmovdqu xmm2, xmmword [rdi + 0x10]
mov byte [rdx], al
mov ecx, 0x20
mov rax, qword [r15 + 0x18]
vmovdqu xmm5, xmmword [rbx]
vmovdqu xmm0, xmmword [rbx + 0x10]
vmovdqu xmm3, xmmword [rax]
vmovdqu xmmword [rsi], xmm3
vmovdqu xmm4, xmmword [rax + 0x10]
vmovdqu xmm3, xmmword [rbp]
vmovdqu xmmword [rsi + 0x20], xmm5
vmovdqu xmmword [rsi + 0x10], xmm4
vmovdqu xmm4, xmmword [rbp + 0x10]
vmovdqu xmmword [r11 + 0x10], xmm0
vmovdqu xmmword [rsi + 0x40], xmm1
vmovdqu xmmword [r10 + 0x10], xmm2
vmovdqu xmmword [rsi + 0x60], xmm3
vmovdqu xmmword [r14 + 0x10], xmm4
call sub.msvcrt.dll_malloc
mov r9d, 0x20
mov edx, pe_nt_image_headers64
mov rcx, rsi
mov r8, rax
mov r14, rax
call fcn.1401acc90
mov rdx, qword [r15 + 0x10]
mov rcx, qword [r15]
xor r8d, r8d
not rdx
and rdx, r13
add r13, 1
shl edx, 5
call sub.msvcrt.dll_fseek
mov r9, qword [r15]
mov rcx, qword [rsp + 0x38]
mov r8d, 0x20
mov edx, 1
call sub.msvcrt.dll_fwrite
mov rdx, qword [r15 + 0x10]
mov rcx, qword [r15]
xor r8d, r8d
not rdx
and rdx, qword [rsp + 0x28]
shl edx, 5
call sub.msvcrt.dll_fseek
mov r9, qword [r15]
mov edx, 1
mov rcx, r14
mov r8d, 0x20
call sub.msvcrt.dll_fwrite
add qword [rsp + 0x30], 2
mov rax, qword [rsp + 0x30]
mov rcx, rdi
mov qword [rsp + 0x98], rax
call sub.msvcrt.dll_free
mov rcx, r12
call sub.msvcrt.dll_free
mov rcx, rbp
call sub.msvcrt.dll_free
mov rcx, rbx
call sub.msvcrt.dll_free
mov rcx, rsi
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x38]
call sub.msvcrt.dll_free
mov rcx, r14
call sub.msvcrt.dll_free
add qword [rsp + 0x28], 1
mov rdi, qword [rsp + 0x58]
cmp qword [rsp + 0x30], rdi
jne 0x1401aaa88
mov rdi, qword [rsp + 0x80]
mov rsi, qword [rsp + 0x88]
mov rcx, rdi
call sub.msvcrt.dll_free
mov rcx, rsi
call sub.msvcrt.dll_free
cmp byte [rsp + 0x57], 0
je 0x1401ab301
mov r14, qword [rsp + 0x98]
jmp 0x1401aa978
movzx edx, al
lea rsi, [rdx*8]
mov qword [rsp + 0x30], rdx
mov rcx, rsi
call sub.msvcrt.dll_malloc
lea ecx, [rsi - 1]
mov rdx, rdi
mov rbx, rax
mov rax, qword [rdi + rsi - 8]
mov rdi, rbx
mov qword [rbx + rsi - 8], rax
mov esi, ecx
shr esi, 3
mov ecx, esi
mov rsi, rdx
rep movsq qword [rdi], qword [rsi]
mov rcx, rdx
call sub.msvcrt.dll_free
mov rdx, qword [rsp + 0x30]
lea rsi, [rdx*4]
mov rcx, rsi
call sub.msvcrt.dll_malloc
cmp esi, 8
jae 0x1401ab12a
test sil, 4
jne 0x1401ab766
test esi, esi
je 0x1401aaea1
mov rdi, qword [rsp + 0x70]
movzx edx, byte [rdi]
mov byte [rax], dl
mov rcx, qword [rsp + 0x70]
mov qword [rsp + 0x30], rax
call sub.msvcrt.dll_free
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x70], rax
jmp 0x1401aa9a8
mov rdx, rbx
jmp 0x1401aacad
mov rdx, rbx
jmp 0x1401aabbd
mov rdx, r14
mov r12, r8
lea r13, [r14 + r8]
sub rdx, rax
sub r12, r14
mov rax, rdx
sub rax, r14
mov qword [rsp + 0x28], rax
lea rax, [r12 + rdx]
mov qword [rsp + 0x30], rax
test r8, r8
jle 0x1401ab108
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x48], rsi
nop word [rax + rax]
mov rax, qword [rsp + 0x28]
mov rcx, qword [r15]
xor r8d, r8d
xor edi, edi
lea rdx, [rax + r14]
mov rax, qword [r15 + 0x10]
not rax
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [r15]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov r12, rax
call sub.msvcrt.dll_fread
mov rcx, qword [r15]
cmp rax, 0x20
mov rax, qword [rsp + 0x30]
cmovne r12, rdi
xor r8d, r8d
lea rdx, [rax + r14]
mov rax, qword [r15 + 0x10]
not rax
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [r15]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov rbp, rax
call sub.msvcrt.dll_fread
mov edx, 1
mov ecx, 0x20
cmp rax, 0x20
cmovne rbp, rdi
call sub.msvcrt.dll_calloc
mov rdx, r14
mov rbx, rax
sar rdx, 0x3f
lea rax, [r14 + r14]
xor rax, rdx
cmp rax, 0x7f
jbe 0x1401ab122
xor edx, edx
nop word cs:[rax + rax]
mov r8d, eax
mov ecx, edx
shr rax, 7
add edx, 1
or r8d, 0xffffff80
mov byte [rbx + rcx], r8b
cmp rax, 0x7f
ja 0x1401aaff0
add rdx, rbx
mov byte [rdx], al
mov ecx, pe_nt_image_headers64
call sub.msvcrt.dll_malloc
vmovdqu xmm5, xmmword [rbx]
vmovdqu xmm0, xmmword [rbx + 0x10]
mov ecx, 0x20
mov rsi, rax
mov rax, qword [r15 + 0x18]
vmovdqu xmm1, xmmword [rbp]
vmovdqu xmm2, xmmword [rbp + 0x10]
vmovdqu xmm6, xmmword [rax]
vmovdqu xmmword [rsi], xmm6
vmovdqu xmm6, xmmword [rax + 0x10]
vmovdqu xmmword [rsi + 0x20], xmm5
vmovdqu xmm5, xmmword [r12 + 0x10]
vmovdqu xmmword [rsi + 0x10], xmm6
vmovdqu xmm6, xmmword [r12]
vmovdqu xmmword [rsi + 0x30], xmm0
vmovdqu xmmword [rsi + 0x40], xmm6
vmovdqu xmmword [rsi + 0x50], xmm5
vmovdqu xmmword [rsi + 0x60], xmm1
vmovdqu xmmword [rsi + 0x70], xmm2
call sub.msvcrt.dll_malloc
mov r9d, 0x20
mov edx, pe_nt_image_headers64
mov rcx, rsi
mov r8, rax
mov rdi, rax
call fcn.1401acc90
mov rdx, qword [r15 + 0x10]
mov rcx, qword [r15]
xor r8d, r8d
not rdx
and rdx, r14
add r14, 1
shl edx, 5
call sub.msvcrt.dll_fseek
mov r9, qword [r15]
mov edx, 1
mov rcx, rdi
mov r8d, 0x20
call sub.msvcrt.dll_fwrite
mov rcx, rdi
mov qword [rsp + 0x98], r14
call sub.msvcrt.dll_free
mov rcx, rsi
call sub.msvcrt.dll_free
mov rcx, r12
call sub.msvcrt.dll_free
mov rcx, rbp
call sub.msvcrt.dll_free
mov rcx, rbx
call sub.msvcrt.dll_free
cmp r14, r13
jne 0x1401aaf20
mov rdi, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x38]
lea r8, [rsp + 0x98]
mov rcx, r15
call fcn.1401aa4a0
jmp 0x1401aadfc
mov rdx, rbx
jmp 0x1401ab00d
mov r10, qword [rsp + 0x70]
lea ecx, [rsi - 1]
mov rdi, rax
shr ecx, 3
mov rdx, qword [r10 + rsi - 8]
mov qword [rax + rsi - 8], rdx
mov rsi, r10
rep movsq qword [rdi], qword [rsi]
jmp 0x1401aaea1
test r8, r8
jle 0x1401ab108
mov qword [rsp + 0x28], rdi
lea r13, [r8 + r14]
mov r12, r8
mov qword [rsp + 0x30], rsi
mov rsi, r15
nop word cs:[rax + rax]
mov rdx, qword [rsi + 0x10]
mov rax, r14
mov rcx, qword [rsi]
xor r8d, r8d
sub rax, r12
not rdx
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [rsi]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov rbp, rax
call sub.msvcrt.dll_fread
mov edx, 1
mov ecx, 0x20
cmp rax, 0x20
mov eax, 0
cmovne rbp, rax
call sub.msvcrt.dll_calloc
mov rdx, r14
mov rbx, rax
sar rdx, 0x3f
lea rax, [r14 + r14]
xor rax, rdx
cmp rax, 0x7f
jbe 0x1401ab2f1
xor edx, edx
nop word [rax + rax]
mov r8d, eax
mov ecx, edx
shr rax, 7
add edx, 1
or r8d, 0xffffff80
mov byte [rbx + rcx], r8b
cmp rax, 0x7f
ja 0x1401ab1f0
add rdx, rbx
mov byte [rdx], al
mov ecx, 0x60
call sub.msvcrt.dll_malloc
vmovdqu xmm0, xmmword [rbx]
vmovdqu xmm6, xmmword [rbx + 0x10]
mov ecx, 0x20
mov rdi, rax
mov rax, qword [rsi + 0x18]
vmovdqu xmm3, xmmword [rax]
vmovdqu xmmword [rdi], xmm3
vmovdqu xmm4, xmmword [rax + 0x10]
vmovdqu xmm3, xmmword [rbp]
vmovdqu xmmword [rdi + 0x20], xmm0
vmovdqu xmmword [rdi + 0x10], xmm4
vmovdqu xmm4, xmmword [rbp + 0x10]
vmovdqu xmmword [rdi + 0x30], xmm6
vmovdqu xmmword [rdi + 0x40], xmm3
vmovdqu xmmword [rdi + 0x50], xmm4
call sub.msvcrt.dll_malloc
mov r9d, 0x20
mov edx, 0x60
mov rcx, rdi
mov r8, rax
mov r15, rax
call fcn.1401acc90
mov rdx, qword [rsi + 0x10]
mov rcx, qword [rsi]
xor r8d, r8d
not rdx
and rdx, r14
add r14, 1
shl edx, 5
call sub.msvcrt.dll_fseek
mov r9, qword [rsi]
mov edx, 1
mov rcx, r15
mov r8d, 0x20
call sub.msvcrt.dll_fwrite
mov rcx, r15
mov qword [rsp + 0x98], r14
call sub.msvcrt.dll_free
mov rcx, rdi
call sub.msvcrt.dll_free
mov rcx, rbp
call sub.msvcrt.dll_free
mov rcx, rbx
call sub.msvcrt.dll_free
cmp r14, r13
jne 0x1401ab170
mov r15, rsi
mov rdi, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x30]
jmp 0x1401ab108
mov rdx, rbx
jmp 0x1401ab20d
mov rdx, rdi
jmp 0x1401aa8a5
mov rcx, qword [rsp + 0x78]
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x70]
vmovups xmm6, xmmword [rsp + 0xa0]
vmovups xmm7, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sub.msvcrt.dll_free
lea rax, [r8 + r14]
test r8, r8
jle 0x1401ab4f1
mov qword [rsp + 0x40], rbp
mov byte [rsp + 0x30], r13b
mov r13, r8
mov qword [rsp + 0x48], rdi
mov rdi, r15
mov qword [rsp + 0x58], rsi
mov rsi, rax
nop dword [rax]
mov rdx, qword [rdi + 0x10]
mov rax, r14
mov rcx, qword [rdi]
xor r8d, r8d
sub rax, r13
not rdx
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [rdi]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov r15, rax
call sub.msvcrt.dll_fread
mov edx, 1
mov ecx, 0x20
cmp rax, 0x20
mov eax, 0
cmovne r15, rax
call sub.msvcrt.dll_calloc
mov rdx, r14
mov rbx, rax
sar rdx, 0x3f
lea rax, [r14 + r14]
xor rax, rdx
cmp rax, 0x7f
jbe 0x1401ab5b3
xor edx, edx
nop word [rax + rax]
mov r8d, eax
mov ecx, edx
shr rax, 7
add edx, 1
or r8d, 0xffffff80
mov byte [rbx + rcx], r8b
cmp rax, 0x7f
ja 0x1401ab3e8
add rdx, rbx
mov byte [rdx], al
mov ecx, 0x60
call sub.msvcrt.dll_malloc
vmovdqu xmm3, xmmword [rbx]
vmovdqu xmm4, xmmword [rbx + 0x10]
mov ecx, 0x20
mov rbp, rax
mov rax, qword [rdi + 0x18]
vmovdqu xmm0, xmmword [r15]
vmovdqu xmm1, xmmword [r15 + 0x10]
vmovdqu xmm6, xmmword [rax]
vmovdqu xmmword [rbp], xmm6
vmovdqu xmm5, xmmword [rax + 0x10]
vmovdqu xmmword [rbp + 0x20], xmm3
vmovdqu xmmword [rbp + 0x10], xmm5
vmovdqu xmmword [rbp + 0x30], xmm4
vmovdqu xmmword [rbp + 0x40], xmm0
vmovdqu xmmword [rbp + 0x50], xmm1
call sub.msvcrt.dll_malloc
mov r9d, 0x20
mov edx, 0x60
mov rcx, rbp
mov r8, rax
mov r12, rax
call fcn.1401acc90
mov rdx, qword [rdi + 0x10]
mov rcx, qword [rdi]
xor r8d, r8d
not rdx
and rdx, r14
add r14, 1
shl edx, 5
call sub.msvcrt.dll_fseek
mov r9, qword [rdi]
mov edx, 1
mov rcx, r12
mov r8d, 0x20
call sub.msvcrt.dll_fwrite
mov rcx, r12
mov qword [rsp + 0x98], r14
call sub.msvcrt.dll_free
mov rcx, rbp
call sub.msvcrt.dll_free
mov rcx, r15
call sub.msvcrt.dll_free
mov rcx, rbx
call sub.msvcrt.dll_free
cmp r14, rsi
jne 0x1401ab368
mov r15, rdi
movzx r13d, byte [rsp + 0x30]
mov rbp, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x58]
mov rdi, qword [rsp + 0x48]
cmp rbp, 2
je 0x1401ab108
movsx r12d, byte [rsp + 0x28]
add r12d, 5
movsxd r12, r12d
lea rbx, [r12*8]
shl r12, 2
mov rcx, rbx
sub rbx, 0x28
call sub.msvcrt.dll_malloc
mov r14, qword [rsp + 0x78]
mov r8, rbx
mov rcx, rax
mov rbp, rax
mov rdx, r14
call sub.msvcrt.dll_memcpy
mov rdx, qword [rdi + 0x20]
vmovdqu xmm2, xmmword [rdi]
mov rcx, r14
lea rax, [rbp + rbx]
mov qword [rax + 0x20], rdx
vmovdqu xmmword [rax], xmm2
vmovdqu xmm2, xmmword [rdi + 0x10]
vmovdqu xmmword [rax + 0x10], xmm2
lea eax, [r13 + 4]
mov byte [rsp + 0x57], al
call sub.msvcrt.dll_free
mov rcx, r12
sub r12, 0x14
call sub.msvcrt.dll_malloc
mov rbx, qword [rsp + 0x70]
mov r8, r12
mov rcx, rax
mov r13, rax
mov rdx, rbx
add r12, r13
call sub.msvcrt.dll_memcpy
mov eax, dword [rsi + 0x10]
vmovdqu xmm1, xmmword [rsi]
mov rcx, rbx
mov dword [r12 + 0x10], eax
vmovdqu xmmword [r12], xmm1
call sub.msvcrt.dll_free
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x78], rbp
jmp 0x1401aadfc
mov rdx, rbx
jmp 0x1401ab405
test r8, r8
jle 0x1401ab4f1
mov qword [rsp + 0x40], rbp
lea rax, [r8 + r14]
mov byte [rsp + 0x30], r13b
mov r13, r8
mov qword [rsp + 0x48], rdi
mov rdi, r15
mov qword [rsp + 0x58], rsi
mov rsi, rax
nop dword [rax]
mov rdx, qword [rdi + 0x10]
mov rax, r14
mov rcx, qword [rdi]
xor r8d, r8d
sub rax, r13
not rdx
and rdx, rax
shl edx, 5
call sub.msvcrt.dll_fseek
mov ecx, 0x20
call sub.msvcrt.dll_malloc
mov r9, qword [rdi]
mov r8d, 0x20
mov edx, 1
mov rcx, rax
mov r15, rax
call sub.msvcrt.dll_fread
mov edx, 1
mov ecx, 0x20
cmp rax, 0x20
mov eax, 0
cmovne r15, rax
call sub.msvcrt.dll_calloc
lea rdx, [r14 + r14]
mov rbx, rax
mov rax, r14
sar rax, 0x3f
xor rax, rdx
cmp rax, 0x7f
jbe 0x1401ab75e
xor edx, edx
nop word [rax + rax]
mov r8d, eax
mov ecx, edx
shr rax, 7
add edx, 1
or r8d, 0xffffff80
mov byte [rbx + rcx], r8b
cmp rax, 0x7f
ja 0x1401ab668
add rdx, rbx
mov byte [rdx], al
mov ecx, 0x60
call sub.msvcrt.dll_malloc
vmovdqu xmm5, xmmword [rbx]
vmovdqu xmm3, xmmword [rbx + 0x10]
mov ecx, 0x20
mov rbp, rax
mov rax, qword [rdi + 0x18]
vmovdqu xmm4, xmmword [r15]
vmovdqu xmm0, xmmword [r15 + 0x10]
vmovdqu xmm2, xmmword [rax]
vmovdqu xmmword [rbp], xmm2
vmovdqu xmm6, xmmword [rax + 0x10]
vmovdqu xmmword [rbp + 0x20], xmm5
vmovdqu xmmword [rbp + 0x10], xmm6
vmovdqu xmmword [rbp + 0x30], xmm3
vmovdqu xmmword [rbp + 0x40], xmm4
vmovdqu xmmword [rbp + 0x50], xmm0
call sub.msvcrt.dll_malloc
mov r9d, 0x20
mov edx, 0x60
mov rcx, rbp
mov r8, rax
mov r12, rax
call fcn.1401acc90
mov rdx, qword [rdi + 0x10]
mov rcx, qword [rdi]
xor r8d, r8d
not rdx
and rdx, r14
add r14, 1
shl edx, 5
call sub.msvcrt.dll_fseek
mov r9, qword [rdi]
mov edx, 1
mov rcx, r12
mov r8d, 0x20
call sub.msvcrt.dll_fwrite
mov rcx, r12
mov qword [rsp + 0x98], r14
call sub.msvcrt.dll_free
mov rcx, rbp
call sub.msvcrt.dll_free
mov rcx, r15
call sub.msvcrt.dll_free
mov rcx, rbx
call sub.msvcrt.dll_free
cmp r14, rsi
jne 0x1401ab5e8
jmp 0x1401ab4d9
mov rdx, rbx
jmp 0x1401ab685
mov rdi, qword [rsp + 0x70]
mov edx, dword [rdi]
mov dword [rax], edx
mov edx, dword [rdi + rsi - 4]
mov dword [rax + rsi - 4], edx
jmp 0x1401aaea1
mov r12, rsi
mov r9d, 5
cmp rbx, 1
jne 0x1401aa96c
lea r8, [rsp + 0x98]
mov edx, 1
mov rcx, r15
call fcn.1401aa4a0
nop
vmovups xmm6, xmmword [rsp + 0xa0]
vmovups xmm7, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret