Function at 0x574290
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x308
mov r12, qword [rcx]
mov rsi, qword [rcx + 0x10]
mov rdi, qword [rcx + 0x18]
mov r10, qword [rcx + 0x20]
mov r11, qword [rcx + 0x28]
mov r9, qword [rcx + 0x38]
mov r13, qword [rcx + 8]
mov r14, qword [rcx + 0x40]
mov r15, qword [rcx + 0x48]
mov qword [rsp + 0x360], r8
lea rax, [rsp + 0x80]
mov r8, qword [rcx + 0x30]
mov qword [rsp + 0x80], r12
mov qword [rsp + 0x88], r13
mov qword [rsp + 0x90], rsi
mov qword [rsp + 0x98], rdi
mov qword [rsp + 0xa0], r10
mov qword [rsp + 0xa8], r11
mov qword [rsp + 0xb0], r8
mov qword [rsp + 0xb8], r9
mov qword [rsp + 0xc0], r14
mov qword [rsp + 0xd0], r12
mov qword [rsp + 0xd8], r13
mov qword [rsp + 0xe0], rsi
mov qword [rsp + 0xe8], rdi
mov qword [rsp + 0xf0], r10
mov qword [rsp + 0xf8], r11
mov qword [rsp + 0x100], r8
mov qword [rsp + 0x108], r9
mov qword [rsp + 0x110], r14
mov qword [rsp + 0x120], r12
mov qword [rsp + 0xc8], r15
mov qword [rsp + 0x118], r15
mov qword [rsp + 0x128], r13
mov rbx, qword [rdx + 0x18]
vmovdqu xmm4, xmmword [rcx]
mov qword [rsp + 0x130], rsi
mov rcx, qword [rdx + 0x10]
mov qword [rsp + 0x150], r8
mov qword [rsp + 0x158], r9
mov qword [rsp + 0x180], r12
mov r12, qword [rdx + 0x20]
mov qword [rsp + 0x188], r13
mov r13, qword [rdx + 0x28]
mov qword [rsp + 0x190], rsi
mov rsi, qword [rdx + 0x30]
mov qword [rsp + 0x1b0], r8
mov r8, qword [rdx]
mov qword [rsp + 0x1b8], r9
mov r9, qword [rdx + 8]
mov qword [rsp + 0x138], rdi
mov qword [rsp + 0x140], r10
mov qword [rsp + 0x148], r11
mov qword [rsp + 0x160], r14
lea r14, [rsp + 0x2e0]
mov qword [rsp + 0x198], rdi
mov rdi, qword [rdx + 0x38]
mov qword [rsp + 0x1a0], r10
mov qword [rsp + 0x1a8], r11
mov qword [rsp + 0x1e0], r12
mov qword [rsp + 0x1e8], r13
mov qword [rsp + 0x168], r15
mov qword [rsp + 0x1c0], r8
mov qword [rsp + 0x1c8], r9
mov qword [rsp + 0x1d0], rcx
mov qword [rsp + 0x1d8], rbx
vmovups xmmword [rsp + 0x170], xmm4
mov qword [rsp + 0x1f0], rsi
mov r10, qword [rdx + 0x40]
mov r11, qword [rdx + 0x48]
vmovdqu xmm5, xmmword [rdx]
mov qword [rsp + 0x1f8], rdi
mov qword [rsp + 0x230], r12
mov qword [rsp + 0x238], r13
mov qword [rsp + 0x248], rdi
mov qword [rsp + 0x280], r12
lea r12, [rsp + 0x1c0]
mov qword [rsp + 0x288], r13
mov r13d, 0x20
mov qword [rsp + 0x298], rdi
xor edi, edi
mov qword [rsp + 0x200], r10
mov qword [rsp + 0x208], r11
mov qword [rsp + 0x210], r8
mov qword [rsp + 0x218], r9
mov qword [rsp + 0x220], rcx
mov qword [rsp + 0x228], rbx
mov qword [rsp + 0x240], rsi
mov qword [rsp + 0x250], r10
mov qword [rsp + 0x258], r11
mov qword [rsp + 0x260], r8
mov qword [rsp + 0x268], r9
mov qword [rsp + 0x270], rcx
mov qword [rsp + 0x278], rbx
mov qword [rsp + 0x290], rsi
mov qword [rsp + 0x2a0], r10
mov qword [rsp + 0x2a8], r11
mov qword [rsp + 0x2c0], r8
mov qword [rsp + 0x2c8], r9
mov qword [rsp + 0x2d0], rcx
mov qword [rsp + 0x2d8], rbx
mov qword [rsp + 0x20], rax
vmovups xmmword [rsp + 0x2b0], xmm5
jmp 0x57458d
sub r13d, 1
je 0x574731
vzeroupper
mov rax, qword [rsp + 0x20]
lea rdx, [r12 + rdi]
mov r8, r14
lea rcx, [rax + rdi]
call fcn.00573370
mov eax, dword [rsp + 0x2e0]
vmovdqu xmm3, xmmword [rsp + 0x2e0]
vinserti128 ymm1, ymm3, xmmword [rsp + 0x2f0], 1
vpmovzxbw ymm2, xmm3
vextracti128 xmm0, ymm2, 1
vextracti128 xmm1, ymm1, 1
vpmovzxwd ymm2, xmm2
vpmovzxbw ymm1, xmm1
vpmovzxwd ymm0, xmm0
vpaddd ymm0, ymm0, ymm2
vextracti128 xmm2, ymm1, 1
vpmovzxwd ymm1, xmm1
vpmovzxwd ymm2, xmm2
vpaddd ymm1, ymm2, ymm1
vpaddd ymm0, ymm0, ymm1
vextracti128 xmm1, ymm0, 1
vpaddd xmm0, xmm1, xmm0
vpsrldq xmm1, xmm0, 8
vpaddd xmm0, xmm0, xmm1
vpsrldq xmm1, xmm0, 4
vpaddd xmm0, xmm0, xmm1
vmovd esi, xmm0
movzx edi, sil
lea rbx, [r12 + rdi]
mov rbp, rdi
xor dword [rbx], eax
mov eax, dword [rsp + 0x2e4]
xor dword [rbx + 4], eax
mov eax, dword [rsp + 0x2e8]
xor dword [rbx + 8], eax
mov eax, dword [rsp + 0x2ec]
xor dword [rbx + 0xc], eax
mov eax, dword [rsp + 0x2f0]
xor dword [rbx + 0x10], eax
mov eax, dword [rsp + 0x2f4]
xor dword [rbx + 0x14], eax
mov eax, dword [rsp + 0x2f8]
xor dword [rbx + 0x18], eax
mov eax, dword [rsp + 0x2fc]
xor dword [rbx + 0x1c], eax
test sil, 0xe0
jne 0x574696
lea eax, [rdi + 0x100]
add rax, r12
cmp edi, 0x20
jbe 0x574a57
vmovdqu xmm4, xmmword [rbx]
vmovups xmmword [rax], xmm4
vmovdqu xmm5, xmmword [rbx + 0x10]
vmovups xmmword [rax + 0x10], xmm5
mov r9d, 0x100
sub r9d, ebp
cmp r9d, 0x1f
ja 0x574580
lea r15d, [rbp - 0xe0]
mov eax, r15d
shr eax, 2
je 0x5746e0
sub eax, 1
lea rdx, [rsp + 0x2c0]
mov rcx, r12
mov dword [rsp + 0x28], r9d
lea r8, [rax*4 + 4]
vzeroupper
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x28]
mov edx, r15d
and edx, 3
je 0x574580
mov eax, r15d
sub eax, edx
cmp r15d, eax
jbe 0x574580
sub edx, r15d
lea rcx, [r12 + rax]
mov dword [rsp + 0x28], r9d
lea r8d, [rbp + rdx - 0xe1]
lea rdx, [rsp + rax + 0x2c0]
add r8, 1
vzeroupper
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x28]
sub r13d, 1
jne 0x57458a
mov r15d, r9d
cmp r9d, 0x100
jne 0x574b50
vmovdqu xmm4, xmmword [rsp + 0x1c0]
vmovdqu xmm5, xmmword [rsp + 0x80]
vinserti128 ymm1, ymm4, xmmword [rsp + 0x1d0], 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x90], 1
vmovdqu xmm4, xmmword [rsp + 0x1e0]
vmovdqu xmm5, xmmword [rsp + 0xa0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x1f0], 1
vmovdqu xmm4, xmmword [rsp + 0x200]
vmovups xmmword [rsp + 0x1c0], xmm0
vextracti128 xmmword [rsp + 0x1d0], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0xb0], 1
vmovdqu xmm5, xmmword [rsp + 0xc0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x210], 1
vmovdqu xmm4, xmmword [rsp + 0x220]
vmovups xmmword [rsp + 0x1e0], xmm0
vextracti128 xmmword [rsp + 0x1f0], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0xd0], 1
vmovdqu xmm5, xmmword [rsp + 0xe0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x230], 1
vmovdqu xmm4, xmmword [rsp + 0x240]
vmovups xmmword [rsp + 0x200], xmm0
vextracti128 xmmword [rsp + 0x210], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0xf0], 1
vmovdqu xmm5, xmmword [rsp + 0x100]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x250], 1
vmovdqu xmm4, xmmword [rsp + 0x260]
vmovups xmmword [rsp + 0x220], xmm0
vextracti128 xmmword [rsp + 0x230], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x110], 1
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x270], 1
vmovups xmmword [rsp + 0x240], xmm0
vextracti128 xmmword [rsp + 0x250], ymm0, 1
vmovdqu xmm5, xmmword [rsp + 0x120]
vinserti128 ymm0, ymm5, xmmword [rsp + 0x130], 1
vmovdqu xmm4, xmmword [rsp + 0x280]
mov rax, qword [rsp + 0x360]
vmovdqu xmm5, xmmword [rsp + 0x140]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x290], 1
vmovups xmmword [rsp + 0x260], xmm0
vextracti128 xmmword [rsp + 0x270], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x150], 1
vmovdqu xmm4, xmmword [rsp + 0x2a0]
vmovdqu xmm5, xmmword [rsp + 0x160]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x2b0], 1
vmovdqu xmm4, xmmword [rsp + 0x1c0]
vmovups xmmword [rsp + 0x280], xmm0
vextracti128 xmmword [rsp + 0x290], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x170], 1
vmovdqu xmm5, xmmword [rsp + 0x1d0]
vmovups xmmword [rax], xmm4
vmovdqu xmm4, xmmword [rsp + 0x1e0]
vmovups xmmword [rax + 0x10], xmm5
vpxor ymm0, ymm0, ymm1
vmovdqu xmm5, xmmword [rsp + 0x1f0]
vextracti128 xmmword [rsp + 0x2b0], ymm0, 1
vmovups xmmword [rax + 0x20], xmm4
vmovdqu xmm4, xmmword [rsp + 0x200]
vmovups xmmword [rax + 0x30], xmm5
vmovdqu xmm5, xmmword [rsp + 0x210]
vmovups xmmword [rax + 0x40], xmm4
vmovdqu xmm4, xmmword [rsp + 0x220]
vmovups xmmword [rax + 0x50], xmm5
vmovdqu xmm5, xmmword [rsp + 0x230]
vmovups xmmword [rax + 0x60], xmm4
vmovups xmmword [rsp + 0x2a0], xmm0
vmovups xmmword [rax + 0x70], xmm5
vmovdqu xmm4, xmmword [rsp + 0x240]
vmovdqu xmm5, xmmword [rsp + 0x250]
vmovups xmmword [rax + 0x80], xmm4
vmovdqu xmm4, xmmword [rsp + 0x260]
vmovups xmmword [rax + 0x90], xmm5
vmovdqu xmm5, xmmword [rsp + 0x270]
vmovups xmmword [rax + 0xa0], xmm4
vmovdqu xmm4, xmmword [rsp + 0x280]
vmovups xmmword [rax + 0xb0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x290]
vmovups xmmword [rax + 0xc0], xmm4
vmovdqu xmm4, xmmword [rsp + 0x2a0]
vmovups xmmword [rax + 0xd0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x2b0]
vmovups xmmword [rax + 0xe0], xmm4
vmovups xmmword [rax + 0xf0], xmm5
vzeroupper
add rsp, 0x308
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 0x20
sub ecx, edi
mov r9d, ecx
mov edx, ecx
and r9d, 3
shr edx, 2
je 0x5754f3
sub edx, 1
lea r8, [rdx*4 + 4]
mov edx, r8d
cmp r8d, 8
jae 0x574ace
and r8d, 4
jne 0x5755d9
test edx, edx
jne 0x574b29
test r9d, r9d
je 0x574696
mov edx, ecx
sub edx, r9d
cmp ecx, edx
jbe 0x574696
lea rcx, [rax + rdx]
mov eax, 0x1f
add rdx, rbx
lea eax, [r9 + rax - 0x20]
lea r8, [rax + 1]
vzeroupper
call sub.msvcrt.dll_memcpy
jmp 0x574696
mov rdx, qword [rbx]
lea r11, [rax + 8]
mov r15, rbx
and r11, 0xfffffffffffffff8
mov qword [rax], rdx
mov edx, r8d
mov r10, qword [rbx + rdx - 8]
mov qword [rax + rdx - 8], r10
mov rdx, rax
sub rdx, r11
sub r15, rdx
add edx, r8d
and edx, 0xfffffff8
cmp edx, 8
jb 0x574a96
mov qword [rsp + 0x28], rax
and edx, 0xfffffff8
xor r8d, r8d
mov r10d, r8d
add r8d, 8
mov rax, qword [r15 + r10]
mov qword [r11 + r10], rax
cmp r8d, edx
jb 0x574b0b
mov rax, qword [rsp + 0x28]
jmp 0x574a96
movzx r8d, byte [rbx]
mov byte [rax], r8b
test dl, 2
je 0x574a96
movzx r8d, word [rbx + rdx - 2]
mov word [rax + rdx - 2], r8w
jmp 0x574a96
mov r8d, r9d
shr r8d, 2
je 0x574dd2
lea rax, [rbx + 0x20]
cmp qword [rsp + 0x20], rax
lea ecx, [r8 - 1]
lea rax, [rsp + 0xa0]
setae dl
cmp rbx, rax
setae al
or dl, al
je 0x5755ee
cmp ecx, 6
jbe 0x5755ee
vmovdqu xmm5, xmmword [rsp + 0x80]
vmovdqu xmm4, xmmword [rbx]
mov eax, r9d
vinserti128 ymm0, ymm5, xmmword [rsp + 0x90], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x10], 1
shr eax, 5
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx], xmm0
vextracti128 xmmword [rbx + 0x10], ymm0, 1
cmp eax, 1
je 0x574d32
vmovdqu xmm5, xmmword [rsp + 0xa0]
vmovdqu xmm4, xmmword [rbx + 0x20]
vinserti128 ymm0, ymm5, xmmword [rsp + 0xb0], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x30], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x20], xmm0
vextracti128 xmmword [rbx + 0x30], ymm0, 1
cmp eax, 2
je 0x574d32
vmovdqu xmm5, xmmword [rsp + 0xc0]
vmovdqu xmm4, xmmword [rbx + 0x40]
vinserti128 ymm0, ymm5, xmmword [rsp + 0xd0], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x50], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x40], xmm0
vextracti128 xmmword [rbx + 0x50], ymm0, 1
cmp eax, 3
je 0x574d32
vmovdqu xmm5, xmmword [rsp + 0xe0]
vmovdqu xmm4, xmmword [rbx + 0x60]
vinserti128 ymm0, ymm5, xmmword [rsp + 0xf0], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x70], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x60], xmm0
vextracti128 xmmword [rbx + 0x70], ymm0, 1
cmp eax, 4
je 0x574d32
vmovdqu xmm5, xmmword [rsp + 0x100]
vmovdqu xmm4, xmmword [rbx + 0x80]
vinserti128 ymm0, ymm5, xmmword [rsp + 0x110], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x90], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x80], xmm0
vextracti128 xmmword [rbx + 0x90], ymm0, 1
cmp eax, 5
je 0x574d32
vmovdqu xmm4, xmmword [rsp + 0x120]
vmovdqu xmm3, xmmword [rbx + 0xa0]
vinserti128 ymm0, ymm4, xmmword [rsp + 0x130], 1
vinserti128 ymm1, ymm3, xmmword [rbx + 0xb0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0xa0], xmm0
vextracti128 xmmword [rbx + 0xb0], ymm0, 1
cmp eax, 7
jne 0x574d32
vmovdqu xmm5, xmmword [rsp + 0x140]
vmovdqu xmm3, xmmword [rbx + 0xc0]
vinserti128 ymm1, ymm5, xmmword [rsp + 0x150], 1
vinserti128 ymm0, ymm3, xmmword [rbx + 0xd0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0xc0], xmm0
vextracti128 xmmword [rbx + 0xd0], ymm0, 1
shl eax, 3
cmp r8d, eax
je 0x574dd2
mov edx, eax
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 1]
cmp r8d, edx
jbe 0x574dd2
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 2]
cmp r8d, edx
jbe 0x574dd2
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 3]
cmp r8d, edx
jbe 0x574dd2
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 4]
cmp r8d, edx
jbe 0x574dd2
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 5]
cmp r8d, edx
jbe 0x574dd2
shl rdx, 2
add eax, 6
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
cmp r8d, eax
jbe 0x574dd2
shl rax, 2
mov edx, dword [rsp + rax + 0x80]
xor dword [rbx + rax], edx
lea rax, [rsp + 0x40]
mov edi, r15d
and edi, 3
mov dword [rsp + 0x28], edi
je 0x574fa7
mov r9d, r15d
mov r14d, edi
sub r9d, edi
cmp r9d, r15d
jae 0x574fa7
mov ecx, r9d
lea rdi, [rbx + rcx + 0x20]
lea r10, [rax + rcx + 0x40]
mov r11, rcx
cmp r10, rdi
lea rdx, [rbx + rcx]
lea rdi, [rax + rcx + 0x60]
setae r13b
cmp rdx, rdi
setae dil
or r13b, dil
je 0x57560f
lea edi, [r14 - 1]
cmp edi, 0x1e
jbe 0x57560f
vmovdqu xmm5, xmmword [r10]
vmovdqu xmm4, xmmword [rdx]
vinserti128 ymm1, ymm5, xmmword [r10 + 0x10], 1
vinserti128 ymm0, ymm4, xmmword [rdx + 0x10], 1
vmovdqu xmm3, xmmword [rdx + 0x20]
vmovdqu xmm5, xmmword [rdx + 0x40]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx], xmm0
vextracti128 xmmword [rdx + 0x10], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [rdx + 0x30], 1
vmovdqu xmm4, xmmword [r10 + 0x20]
vinserti128 ymm1, ymm4, xmmword [r10 + 0x30], 1
vmovdqu xmm4, xmmword [rdx + 0x60]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x20], xmm0
vextracti128 xmmword [rdx + 0x30], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rdx + 0x50], 1
vmovdqu xmm3, xmmword [r10 + 0x40]
vinserti128 ymm1, ymm3, xmmword [r10 + 0x50], 1
vmovdqu xmm3, xmmword [rdx + 0x80]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x40], xmm0
vextracti128 xmmword [rdx + 0x50], ymm0, 1
vinserti128 ymm0, ymm4, xmmword [rdx + 0x70], 1
vmovdqu xmm5, xmmword [r10 + 0x60]
vinserti128 ymm1, ymm5, xmmword [r10 + 0x70], 1
vmovdqu xmm5, xmmword [rdx + 0xa0]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x60], xmm0
vextracti128 xmmword [rdx + 0x70], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [rdx + 0x90], 1
vmovdqu xmm4, xmmword [r10 + 0x80]
vinserti128 ymm1, ymm4, xmmword [r10 + 0x90], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x80], xmm0
vextracti128 xmmword [rdx + 0x90], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rdx + 0xb0], 1
vmovdqu xmm3, xmmword [r10 + 0xa0]
vinserti128 ymm1, ymm3, xmmword [r10 + 0xb0], 1
vmovdqu xmm5, xmmword [rdx + 0xc0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm5, xmmword [rdx + 0xd0], 1
vmovups xmmword [rdx + 0xa0], xmm0
vextracti128 xmmword [rdx + 0xb0], ymm0, 1
vmovdqu xmm4, xmmword [r10 + 0xc0]
vinserti128 ymm0, ymm4, xmmword [r10 + 0xd0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0xc0], xmm0
vextracti128 xmmword [rdx + 0xd0], ymm0, 1
test r14d, r14d
jne 0x574f93
jmp 0x574fa7
mov ecx, r9d
add r9d, 1
movzx edx, byte [rsp + rcx + 0x80]
xor byte [rbx + rcx], dl
cmp r9d, r15d
jb 0x574f90
mov r10, qword [rsp + 0x20]
mov r13d, r15d
mov r14d, ebp
add r10, r13
shr r14d, 2
je 0x57523b
lea r9, [rax + r13 + 0x60]
lea rdx, [rax + r13 + 0x40]
cmp r12, r9
lea r9, [rsp + 0x1e0]
lea ecx, [r14 - 1]
setae r11b
cmp rdx, r9
setae r9b
or r11b, r9b
je 0x5755b3
cmp ecx, 6
jbe 0x5755b3
vmovdqu xmm3, xmmword [rsp + 0x1c0]
vmovdqu xmm4, xmmword [rdx]
mov ecx, ebp
vinserti128 ymm0, ymm4, xmmword [rdx + 0x10], 1
shr ecx, 5
vinserti128 ymm1, ymm3, xmmword [rsp + 0x1d0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1c0], xmm0
vextracti128 xmmword [rsp + 0x1d0], ymm0, 1
cmp ecx, 1
je 0x5751c5
vmovdqu xmm5, xmmword [rsp + 0x1e0]
vmovdqu xmm3, xmmword [rdx + 0x20]
vinserti128 ymm1, ymm5, xmmword [rsp + 0x1f0], 1
vinserti128 ymm0, ymm3, xmmword [rdx + 0x30], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1e0], xmm0
vextracti128 xmmword [rsp + 0x1f0], ymm0, 1
cmp ecx, 2
je 0x5751c5
vmovdqu xmm4, xmmword [rsp + 0x200]
vmovdqu xmm5, xmmword [rdx + 0x40]
vinserti128 ymm1, ymm4, xmmword [rsp + 0x210], 1
vinserti128 ymm0, ymm5, xmmword [rdx + 0x50], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x200], xmm0
vextracti128 xmmword [rsp + 0x210], ymm0, 1
cmp ecx, 3
je 0x5751c5
vmovdqu xmm3, xmmword [rsp + 0x220]
vmovdqu xmm4, xmmword [rdx + 0x60]
vinserti128 ymm1, ymm3, xmmword [rsp + 0x230], 1
vinserti128 ymm0, ymm4, xmmword [rdx + 0x70], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x220], xmm0
vextracti128 xmmword [rsp + 0x230], ymm0, 1
cmp ecx, 4
je 0x5751c5
vmovdqu xmm3, xmmword [rdx + 0x80]
vmovdqu xmm5, xmmword [rsp + 0x240]
vinserti128 ymm0, ymm3, xmmword [rdx + 0x90], 1
vinserti128 ymm1, ymm5, xmmword [rsp + 0x250], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x240], xmm0
vextracti128 xmmword [rsp + 0x250], ymm0, 1
cmp ecx, 5
je 0x5751c5
vmovdqu xmm5, xmmword [rdx + 0xa0]
vmovdqu xmm4, xmmword [rsp + 0x260]
vinserti128 ymm0, ymm5, xmmword [rdx + 0xb0], 1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x270], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x260], xmm0
vextracti128 xmmword [rsp + 0x270], ymm0, 1
cmp ecx, 7
jne 0x5751c5
vmovdqu xmm3, xmmword [rdx + 0xc0]
vmovdqu xmm4, xmmword [rsp + 0x280]
vinserti128 ymm1, ymm3, xmmword [rdx + 0xd0], 1
vinserti128 ymm0, ymm4, xmmword [rsp + 0x290], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x280], xmm0
vextracti128 xmmword [rsp + 0x290], ymm0, 1
lea edx, [rcx*8]
cmp r14d, edx
je 0x57523b
mov ecx, edx
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 1]
cmp r14d, ecx
jbe 0x57523b
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 2]
cmp r14d, ecx
jbe 0x57523b
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 3]
cmp r14d, ecx
jbe 0x57523b
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 4]
cmp r14d, ecx
jbe 0x57523b
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 5]
cmp r14d, ecx
jbe 0x57523b
add edx, 6
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
cmp r14d, edx
jbe 0x57523b
mov ecx, dword [r10 + rdx*4]
xor dword [r12 + rdx*4], ecx
and esi, 3
mov r9d, esi
je 0x575422
mov ecx, ebp
sub ecx, esi
cmp ebp, ecx
jbe 0x575422
mov edx, ecx
lea rdi, [rdx + 0x180]
lea rsi, [r13 + rdx + 0x60]
mov qword [rsp + 0x20], rdx
mov r11, rdi
lea rdi, [r13 + rdx + 0x40]
cmp r11, rsi
lea rsi, [rdx + 0x1a0]
mov qword [rsp + 0x30], r11
setge byte [rsp + 0x3f]
cmp rdi, rsi
movzx r11d, byte [rsp + 0x3f]
setge sil
or r11b, sil
je 0x57562b
lea esi, [r9 - 1]
cmp esi, 0x1e
jbe 0x57562b
mov r11, qword [rsp + 0x30]
add r11, rax
add rax, rdi
vmovdqu xmm3, xmmword [rax]
vmovdqu xmm5, xmmword [r11]
vinserti128 ymm1, ymm3, xmmword [rax + 0x10], 1
vinserti128 ymm0, ymm5, xmmword [r11 + 0x10], 1
vmovdqu xmm4, xmmword [r11 + 0x20]
vmovdqu xmm3, xmmword [r11 + 0x40]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11], xmm0
vextracti128 xmmword [r11 + 0x10], ymm0, 1
vinserti128 ymm0, ymm4, xmmword [r11 + 0x30], 1
vmovdqu xmm5, xmmword [rax + 0x20]
vinserti128 ymm1, ymm5, xmmword [rax + 0x30], 1
vmovdqu xmm5, xmmword [r11 + 0x60]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x20], xmm0
vextracti128 xmmword [r11 + 0x30], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [r11 + 0x50], 1
vmovdqu xmm4, xmmword [rax + 0x40]
vinserti128 ymm1, ymm4, xmmword [rax + 0x50], 1
vmovdqu xmm4, xmmword [r11 + 0x80]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x40], xmm0
vextracti128 xmmword [r11 + 0x50], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [r11 + 0x70], 1
vmovdqu xmm3, xmmword [rax + 0x60]
vinserti128 ymm1, ymm3, xmmword [rax + 0x70], 1
vmovdqu xmm3, xmmword [r11 + 0xa0]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x60], xmm0
vextracti128 xmmword [r11 + 0x70], ymm0, 1
vinserti128 ymm0, ymm4, xmmword [r11 + 0x90], 1
vmovdqu xmm5, xmmword [rax + 0x80]
vinserti128 ymm1, ymm5, xmmword [rax + 0x90], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x80], xmm0
vextracti128 xmmword [r11 + 0x90], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [r11 + 0xb0], 1
vmovdqu xmm4, xmmword [rax + 0xa0]
vinserti128 ymm1, ymm4, xmmword [rax + 0xb0], 1
vmovdqu xmm5, xmmword [r11 + 0xc0]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0xa0], xmm0
vextracti128 xmmword [r11 + 0xb0], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [r11 + 0xd0], 1
vmovdqu xmm3, xmmword [rax + 0xc0]
vinserti128 ymm1, ymm3, xmmword [rax + 0xd0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0xc0], xmm0
vextracti128 xmmword [r11 + 0xd0], ymm0, 1
test r9d, r9d
jne 0x575412
jmp 0x575422
mov edx, ecx
add ecx, 1
movzx eax, byte [r10 + rdx]
xor byte [r12 + rdx], al
cmp ebp, ecx
ja 0x575410
test r8d, r8d
je 0x57544c
lea eax, [r8 - 1]
lea rax, [rax*4 + 4]
cmp eax, 8
jae 0x57550f
test al, 4
jne 0x575649
test eax, eax
jne 0x5755a1
mov eax, dword [rsp + 0x28]
test eax, eax
je 0x57550a
mov eax, dword [rsp + 0x28]
mov edx, r15d
sub edx, eax
cmp edx, r15d
jae 0x57550a
mov rcx, qword [rsp + 0x360]
sub eax, 1
mov dword [rsp + 0x20], r9d
lea r8, [rax + 1]
add rcx, rdx
add rdx, rbx
vzeroupper
call sub.msvcrt.dll_memcpy
mov r9d, dword [rsp + 0x20]
add r13, qword [rsp + 0x360]
test r14d, r14d
je 0x5754c3
lea eax, [r14 - 1]
lea rax, [rax*4 + 4]
cmp eax, 8
jae 0x57555a
test al, 4
jne 0x57566c
test eax, eax
jne 0x575593
test r9d, r9d
je 0x574a43
mov edx, ebp
sub edx, r9d
cmp ebp, edx
jbe 0x574a43
lea eax, [r9 - 1]
lea rcx, [r13 + rdx]
add rdx, r12
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x574a43
test r9d, r9d
jne 0x574a9f
mov r9d, 0x100
sub r9d, ebp
jmp 0x574580
vzeroupper
jmp 0x575491
mov rdx, qword [rbx]
mov rdi, qword [rsp + 0x360]
mov qword [rdi], rdx
mov edx, eax
mov rdi, qword [rsp + 0x360]
mov rcx, qword [rbx + rdx - 8]
mov qword [rdi + rdx - 8], rcx
mov rsi, qword [rsp + 0x360]
lea rdi, [rsi + 8]
mov rcx, rsi
mov rsi, rbx
and rdi, 0xfffffffffffffff8
sub rcx, rdi
sub rsi, rcx
add ecx, eax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x57544c
mov rdx, qword [rsp + 0x1c0]
lea rdi, [r13 + 8]
mov rsi, r12
and rdi, 0xfffffffffffffff8
mov qword [r13], rdx
mov edx, eax
mov rcx, qword [r12 + rdx - 8]
mov qword [r13 + rdx - 8], rcx
mov rcx, r13
sub rcx, rdi
sub rsi, rcx
add ecx, eax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x5754c3
movzx eax, byte [r12]
mov byte [r13], al
jmp 0x5754c3
movzx eax, byte [rbx]
mov rdi, qword [rsp + 0x360]
mov byte [rdi], al
jmp 0x57544c
mov rdx, r12
mov r9, r10
lea rcx, [rsp + rcx*4 + 0x1c4]
mov r11d, dword [r9]
xor dword [rdx], r11d
add rdx, 4
add r9, 4
cmp rcx, rdx
jne 0x5755c1
jmp 0x57523b
mov r8d, dword [rbx]
mov dword [rax], r8d
mov r8d, dword [rbx + rdx - 4]
mov dword [rax + rdx - 4], r8d
jmp 0x574a96
xor edx, edx
lea rax, [rsp + 0x40]
mov r9d, dword [rax + rdx*4 + 0x40]
xor dword [rbx + rdx*4], r9d
mov r9, rdx
add rdx, 1
cmp rcx, r9
jne 0x5755f5
jmp 0x574dd7
mov rcx, qword [rsp + 0x20]
movzx edx, byte [rcx + r11]
xor byte [rbx + r11], dl
add r11, 1
cmp r15d, r11d
ja 0x575614
jmp 0x574fa7
mov r11, rdx
lea rdx, [r12 + r11]
movzx eax, byte [rdx]
xor al, byte [r10 + r11]
add r11, 1
mov byte [rdx], al
cmp ebp, r11d
ja 0x57562e
jmp 0x575422
mov edx, dword [rbx]
mov rdi, qword [rsp + 0x360]
mov eax, eax
mov dword [rdi], edx
mov edx, dword [rbx + rax - 4]
mov rdi, qword [rsp + 0x360]
mov dword [rdi + rax - 4], edx
jmp 0x57544c
mov edx, dword [r12]
mov eax, eax
mov dword [r13], edx
mov edx, dword [r12 + rax - 4]
mov dword [r13 + rax - 4], edx
jmp 0x5754c3