Function at 0x645f10
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x138
vmovups xmmword [rsp + 0x90], xmm6
vmovups xmmword [rsp + 0xa0], xmm7
vmovups xmmword [rsp + 0xb0], xmm8
vmovups xmmword [rsp + 0xc0], xmm9
vmovups xmmword [rsp + 0xd0], xmm10
vmovups xmmword [rsp + 0xe0], xmm11
vmovups xmmword [rsp + 0xf0], xmm12
vmovups xmmword [rsp + 0x100], xmm13
vmovups xmmword [rsp + 0x110], xmm14
vmovups xmmword [rsp + 0x120], xmm15
mov rbx, qword [rsp + 0x1a8]
mov rax, rdx
mov r14, rdx
mov r15, rcx
mov dword [rsp + 0x190], r8d
shl rax, 5
mov esi, r9d
mov qword [rsp + 0x80], rax
lea rax, [rdx + rdx]
lea rdx, [rbx + 0xff]
sub rdx, rcx
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x88], rdx
cmp rdx, 0x1fe
jbe 0x646eca
lea r8, [r14 + r14]
mov rdi, qword [rsp + 0x1a0]
mov rdx, rcx
mov rcx, rbx
shr r8, 2
shl r8, 8
add r8, r15
nop word [rax + rax]
vmovups xmm7, xmmword [rdx]
vmovups xmm3, xmmword [rdx + 0x20]
add rdx, 0x100
add rcx, 0x100
vmovups xmm6, xmmword [rdx - 0xc0]
vmovups xmm0, xmmword [rdx - 0xa0]
vmovups xmm4, xmmword [rdx - 0x40]
vshufps xmm14, xmm3, xmmword [rdx - 0xd0], 0x88
vshufps xmm12, xmm0, xmmword [rdx - 0x90], 0x88
vshufps xmm15, xmm7, xmmword [rdx - 0xf0], 0x88
vshufps xmm13, xmm6, xmmword [rdx - 0xb0], 0x88
vshufps xmm9, xmm4, xmmword [rdx - 0x30], 0x88
vshufps xmm4, xmm4, xmmword [rdx - 0x30], 0xdd
vmovups xmm5, xmmword [rdx - 0x80]
vmovups xmm2, xmmword [rdx - 0x60]
vmovups xmm1, xmmword [rdx - 0x20]
vshufps xmm11, xmm5, xmmword [rdx - 0x70], 0x88
vshufps xmm8, xmm1, xmmword [rdx - 0x10], 0x88
vshufps xmm10, xmm2, xmmword [rdx - 0x50], 0x88
vshufps xmm7, xmm7, xmmword [rdx - 0xf0], 0xdd
vshufps xmm0, xmm0, xmmword [rdx - 0x90], 0xdd
vshufps xmm5, xmm5, xmmword [rdx - 0x70], 0xdd
vshufps xmm3, xmm3, xmmword [rdx - 0xd0], 0xdd
vshufps xmm6, xmm6, xmmword [rdx - 0xb0], 0xdd
vshufps xmm2, xmm2, xmmword [rdx - 0x50], 0xdd
vshufps xmm1, xmm1, xmmword [rdx - 0x10], 0xdd
vmovups xmmword [rsp + 0x20], xmm4
vshufps xmm4, xmm15, xmm14, 0x88
vshufps xmm15, xmm15, xmm14, 0xdd
vshufps xmm14, xmm13, xmm12, 0x88
vshufps xmm13, xmm13, xmm12, 0xdd
vmovups xmmword [rsp + 0x30], xmm13
vmovups xmm13, xmmword [rsp + 0x20]
vshufps xmm12, xmm11, xmm10, 0x88
vshufps xmm10, xmm11, xmm10, 0xdd
vshufps xmm11, xmm9, xmm8, 0x88
vshufps xmm9, xmm9, xmm8, 0xdd
vshufps xmm8, xmm7, xmm3, 0x88
vshufps xmm3, xmm7, xmm3, 0xdd
vshufps xmm7, xmm6, xmm0, 0x88
vshufps xmm6, xmm6, xmm0, 0xdd
vshufps xmm0, xmm5, xmm2, 0x88
vshufps xmm2, xmm5, xmm2, 0xdd
vshufps xmm5, xmm13, xmm1, 0x88
vshufps xmm1, xmm13, xmm1, 0xdd
vshufps xmm13, xmm4, xmm14, 0x88
vshufps xmm14, xmm4, xmm14, 0xdd
vshufps xmm4, xmm12, xmm11, 0x88
vshufps xmm11, xmm12, xmm11, 0xdd
vmovups xmmword [rsp + 0x20], xmm4
vmovups xmm4, xmmword [rsp + 0x30]
vshufps xmm12, xmm0, xmm5, 0x88
vmovups xmmword [rsp + 0x40], xmm11
vshufps xmm5, xmm0, xmm5, 0xdd
vshufps xmm11, xmm8, xmm7, 0x88
vmovups xmmword [rsp + 0x50], xmm12
vshufps xmm8, xmm8, xmm7, 0xdd
vmovups xmm7, xmm15
vshufps xmm0, xmm10, xmm9, 0xdd
vmovups xmmword [rsp + 0x60], xmm5
vshufps xmm5, xmm10, xmm9, 0x88
vshufps xmm12, xmm7, xmm4, 0xdd
vshufps xmm7, xmm3, xmm6, 0x88
vshufps xmm3, xmm3, xmm6, 0xdd
vmovups xmm6, xmmword [rsp + 0x20]
vshufps xmm15, xmm15, xmm4, 0x88
vshufps xmm4, xmm2, xmm1, 0x88
vshufps xmm1, xmm2, xmm1, 0xdd
vshufps xmm10, xmm13, xmm6, 0xdd
vshufps xmm9, xmm13, xmm6, 0x88
vmovups xmm6, xmmword [rsp + 0x50]
vshufps xmm2, xmm11, xmm6, 0x88
vshufps xmm11, xmm11, xmm6, 0xdd
vshufps xmm6, xmm15, xmm5, 0x88
vshufps xmm15, xmm15, xmm5, 0xdd
vmovups xmmword [rsp + 0x20], xmm2
vshufps xmm5, xmm7, xmm4, 0x88
vshufps xmm4, xmm7, xmm4, 0xdd
vmovups xmm7, xmmword [rsp + 0x40]
vmovups xmmword [rsp + 0x30], xmm6
vmovups xmmword [rsp + 0x50], xmm4
vshufps xmm4, xmm3, xmm1, 0x88
vshufps xmm3, xmm3, xmm1, 0xdd
vpunpckldq xmm1, xmm9, xmm10
vpunpckhdq xmm9, xmm9, xmm10
vmovups xmm10, xmmword [rsp + 0x30]
vshufps xmm13, xmm14, xmm7, 0xdd
vshufps xmm6, xmm14, xmm7, 0x88
vmovups xmm7, xmmword [rsp + 0x60]
vshufps xmm14, xmm12, xmm0, 0x88
vshufps xmm0, xmm12, xmm0, 0xdd
vshufps xmm2, xmm8, xmm7, 0x88
vshufps xmm8, xmm8, xmm7, 0xdd
vpunpckldq xmm7, xmm15, xmm10
vpunpckhdq xmm15, xmm15, xmm10
vpunpckldq xmm12, xmm2, xmm8
vpunpckldq xmm10, xmm3, xmm4
vpunpckhdq xmm8, xmm2, xmm8
vpunpckhdq xmm2, xmm3, xmm4
vmovups xmm3, xmmword [rsp + 0x20]
vmovups xmmword [rsp + 0x30], xmm10
vpunpckldq xmm4, xmm6, xmm13
vpunpckhdq xmm6, xmm6, xmm13
vpunpckhdq xmm10, xmm11, xmm3
vpunpckldq xmm13, xmm11, xmm3
vmovups xmm11, xmmword [rsp + 0x50]
vpunpckldq xmm3, xmm0, xmm14
vmovups xmmword [rsp + 0x20], xmm3
vpunpckhdq xmm0, xmm0, xmm14
vpunpckldq xmm14, xmm12, xmm13
vpunpckhdq xmm12, xmm12, xmm13
vpunpckhdq xmm13, xmm8, xmm10
vpunpckldq xmm3, xmm5, xmm11
vpunpckhdq xmm5, xmm5, xmm11
vpunpckldq xmm11, xmm1, xmm4
vpunpckhdq xmm1, xmm1, xmm4
vmovups xmmword [rsp + 0x40], xmm11
vpunpckldq xmm4, xmm9, xmm6
vpunpckhdq xmm11, xmm9, xmm6
vmovups xmm9, xmmword [rsp + 0x20]
vpunpckldq xmm6, xmm8, xmm10
vpunpckldq xmm8, xmm15, xmm0
vpunpckhdq xmm0, xmm15, xmm0
vmovups xmm15, xmmword [rsp + 0x30]
vpunpckldq xmm10, xmm7, xmm9
vpunpckhdq xmm9, xmm7, xmm9
vpunpckldq xmm7, xmm15, xmm3
vpunpckhdq xmm3, xmm15, xmm3
vmovups xmm15, xmm5
vpunpckldq xmm5, xmm2, xmm5
vmovups xmmword [rsp + 0x20], xmm5
vmovups xmm5, xmmword [rsp + 0x40]
vpunpckhdq xmm2, xmm2, xmm15
vpunpckldq xmm15, xmm5, xmm10
vpunpckhdq xmm5, xmm5, xmm10
vpunpckldq xmm10, xmm1, xmm9
vpunpckhdq xmm1, xmm1, xmm9
vpunpckldq xmm9, xmm4, xmm8
vpunpckhdq xmm4, xmm4, xmm8
vpunpckldq xmm8, xmm11, xmm0
vpunpckhdq xmm0, xmm11, xmm0
vpunpckldq xmm11, xmm14, xmm7
vpunpckhdq xmm7, xmm14, xmm7
vmovups xmm14, xmmword [rsp + 0x20]
vmovups xmmword [rsp + 0x30], xmm11
vpunpckldq xmm11, xmm12, xmm3
vpunpckhdq xmm3, xmm12, xmm3
vmovups xmmword [rsp + 0x40], xmm11
vpunpckldq xmm11, xmm13, xmm2
vpunpckhdq xmm2, xmm13, xmm2
vpunpckldq xmm12, xmm6, xmm14
vpunpckhdq xmm6, xmm6, xmm14
vmovups xmm14, xmmword [rsp + 0x30]
vpunpckldq xmm13, xmm15, xmm14
vpunpckhdq xmm14, xmm15, xmm14
vmovups xmmword [rcx - 0xf0], xmm14
vpunpckldq xmm14, xmm5, xmm7
vpunpckhdq xmm5, xmm5, xmm7
vmovups xmm7, xmmword [rsp + 0x40]
vmovups xmmword [rcx - 0xd0], xmm5
vmovups xmmword [rcx - 0x100], xmm13
vmovups xmmword [rcx - 0xe0], xmm14
vpunpckldq xmm5, xmm10, xmm7
vpunpckhdq xmm10, xmm10, xmm7
vmovups xmmword [rcx - 0xc0], xmm5
vpunpckldq xmm5, xmm1, xmm3
vpunpckhdq xmm1, xmm1, xmm3
vmovups xmmword [rcx - 0xb0], xmm10
vmovups xmmword [rcx - 0x90], xmm1
vpunpckldq xmm1, xmm9, xmm12
vpunpckhdq xmm9, xmm9, xmm12
vmovups xmmword [rcx - 0xa0], xmm5
vmovups xmmword [rcx - 0x80], xmm1
vpunpckldq xmm1, xmm4, xmm6
vmovups xmmword [rcx - 0x70], xmm9
vpunpckhdq xmm4, xmm4, xmm6
vmovups xmmword [rcx - 0x60], xmm1
vpunpckldq xmm1, xmm8, xmm11
vpunpckhdq xmm8, xmm8, xmm11
vmovups xmmword [rcx - 0x50], xmm4
vmovups xmmword [rcx - 0x40], xmm1
vpunpckldq xmm1, xmm0, xmm2
vpunpckhdq xmm0, xmm0, xmm2
vmovups xmmword [rcx - 0x30], xmm8
vmovups xmmword [rcx - 0x20], xmm1
vmovups xmmword [rcx - 0x10], xmm0
cmp rdx, r8
jne 0x645ff0
mov qword [rsp + 0x1a0], rdi
mov rdx, qword [rsp + 0x78]
mov rax, rdx
and rax, 0xfffffffffffffffc
mov rdi, rax
mov rax, rdx
and edx, 3
je 0x646675
mov r10, rdi
mov qword [rsp + 0x20], rdi
shl r10, 6
mov ecx, dword [r15 + r10]
mov dword [rbx + r10], ecx
mov r10, rdi
shl r10, 4
lea rdx, [r10*4 + 0x14]
mov ecx, dword [r15 + rdx]
lea r11, [rdx - 0x10]
lea r12, [rdx + 0x18]
mov dword [rbx + rdx - 0x10], ecx
mov ecx, dword [r15 + rdx + 0x14]
mov dword [rbx + rdx - 0xc], ecx
mov r8d, dword [r15 + rdx + 0x28]
lea rcx, [rdx + 0x28]
mov dword [rbx + rdx - 8], r8d
mov ebp, dword [r15 + rdx - 4]
mov dword [rbx + rdx - 4], ebp
mov r8d, dword [r15 + rdx + 0x10]
lea rbp, [rdx + 4]
mov rdi, rbp
mov qword [rsp + 0x30], rdi
mov dword [rbx + rdx], r8d
mov ebp, dword [r15 + rdx + 0x24]
lea r8, [rdx + 0x24]
mov dword [rbx + rdi], ebp
mov r9d, dword [r15 + rdx - 8]
mov dword [rbx + rdx + 8], r9d
mov edi, dword [r15 + rdx + 0xc]
lea r9, [rdx + 0x20]
mov dword [rbx + rdx + 0xc], edi
mov edi, dword [r15 + rdx + 0x20]
mov dword [rbx + rdx + 0x10], edi
mov r13d, dword [r15 + rdx - 0xc]
mov rdi, qword [rsp + 0x30]
mov dword [rbx + rdx + 0x14], r13d
mov ebp, dword [r15 + rdx + 8]
mov dword [rbx + rdx + 0x18], ebp
mov ebp, dword [r15 + rdx + 0x1c]
mov dword [rbx + rdx + 0x1c], ebp
mov edx, dword [r15 + r11]
mov dword [rbx + r9], edx
mov edx, dword [r15 + rdi]
mov dword [rbx + r8], edx
mov edx, dword [r15 + r12]
mov dword [rbx + rcx], edx
mov rdx, qword [rsp + 0x20]
inc rdx
cmp rax, rdx
jbe 0x646675
mov rdi, rdx
shl rdx, 4
shl rdi, 6
lea rdx, [rdx*4 + 0x14]
mov r8d, dword [r15 + rdi]
lea r10, [rdx + 4]
lea r12, [rdx + 0x18]
mov dword [rbx + rdi], r8d
mov ecx, dword [r15 + rdx]
lea rdi, [rdx - 0x10]
mov dword [rbx + rdx - 0x10], ecx
mov ecx, dword [r15 + rdx + 0x14]
mov dword [rbx + rdx - 0xc], ecx
mov r8d, dword [r15 + rdx + 0x28]
lea rcx, [rdx + 0x28]
mov dword [rbx + rdx - 8], r8d
mov r9d, dword [r15 + rdx - 4]
mov dword [rbx + rdx - 4], r9d
mov r8d, dword [r15 + rdx + 0x10]
mov dword [rbx + rdx], r8d
mov ebp, dword [r15 + rdx + 0x24]
lea r8, [rdx + 0x24]
mov dword [rbx + rdx + 4], ebp
mov r11d, dword [r15 + rdx - 8]
mov dword [rbx + rdx + 8], r11d
mov eax, dword [r15 + rdx + 0xc]
lea r11, [rdx + 0x20]
mov dword [rbx + rdx + 0xc], eax
mov eax, dword [r15 + rdx + 0x20]
mov dword [rbx + rdx + 0x10], eax
mov r13d, dword [r15 + rdx - 0xc]
mov dword [rbx + rdx + 0x14], r13d
mov ebp, dword [r15 + rdx + 8]
mov dword [rbx + rdx + 0x18], ebp
mov ebp, dword [r15 + rdx + 0x1c]
mov dword [rbx + rdx + 0x1c], ebp
mov edx, dword [r15 + rdi]
mov dword [rbx + r11], edx
mov edx, dword [r15 + r10]
mov dword [rbx + r8], edx
mov edx, dword [r15 + r12]
mov dword [rbx + rcx], edx
mov rdx, qword [rsp + 0x20]
add rdx, 2
cmp qword [rsp + 0x78], rdx
jbe 0x646675
mov rcx, rdx
shl rdx, 4
shl rcx, 6
lea rdx, [rdx*4 + 0x14]
mov r8d, dword [r15 + rcx]
lea r10, [rdx - 0x10]
lea rax, [rdx + 4]
lea r12, [rdx + 0x18]
mov dword [rbx + rcx], r8d
mov ecx, dword [r15 + rdx]
mov dword [rbx + rdx - 0x10], ecx
mov ecx, dword [r15 + rdx + 0x14]
mov dword [rbx + rdx - 0xc], ecx
mov r8d, dword [r15 + rdx + 0x28]
lea rcx, [rdx + 0x28]
mov dword [rbx + rdx - 8], r8d
mov r9d, dword [r15 + rdx - 4]
mov dword [rbx + rdx - 4], r9d
mov r8d, dword [r15 + rdx + 0x10]
mov dword [rbx + rdx], r8d
mov ebp, dword [r15 + rdx + 0x24]
lea r8, [rdx + 0x24]
mov dword [rbx + rdx + 4], ebp
mov r11d, dword [r15 + rdx - 8]
mov dword [rbx + rdx + 8], r11d
mov edi, dword [r15 + rdx + 0xc]
lea r11, [rdx + 0x20]
mov dword [rbx + rdx + 0xc], edi
mov edi, dword [r15 + rdx + 0x20]
mov dword [rbx + rdx + 0x10], edi
mov r13d, dword [r15 + rdx - 0xc]
mov dword [rbx + rdx + 0x14], r13d
mov ebp, dword [r15 + rdx + 8]
mov dword [rbx + rdx + 0x18], ebp
mov ebp, dword [r15 + rdx + 0x1c]
mov dword [rbx + rdx + 0x1c], ebp
mov edx, dword [r15 + r10]
mov dword [rbx + r11], edx
mov edx, dword [r15 + rax]
mov dword [rbx + r8], edx
mov edx, dword [r15 + r12]
mov dword [rbx + rcx], edx
test esi, esi
je 0x64676b
mov rax, r14
mov r13, qword [rsp + 0x80]
xor r12d, r12d
mov qword [rsp + 0x180], r15
shl rax, 7
mov r15d, r12d
mov r12, r14
lea rdi, [rbx + rax - 0x40]
lea rbp, [rbx + rax]
mov qword [rsp + 0x50], rax
lea rax, [rbx + 0x10]
mov qword [rsp + 0x20], rdi
mov edi, dword [rsp + 0x190]
mov qword [rsp + 0x40], rax
shl r13, 2
mov r14, r13
mov r13, rbx
mov rbx, qword [rsp + 0x1b0]
dec edi
mov dword [rsp + 0x30], edi
mov rdi, qword [rsp + 0x1a0]
mov rax, qword [rsp + 0x20]
mov ecx, dword [rsp + 0x30]
and ecx, dword [rax]
imul rcx, r12
shl rcx, 7
lea rdx, [rdi + rcx]
lea rcx, [rdi + rcx + 0x10]
cmp r13, rcx
jae 0x64670c
cmp rdx, qword [rsp + 0x40]
jb 0x646e40
xor ecx, ecx
nop
vmovups xmm2, xmmword [rdx + rcx]
vxorps xmm0, xmm2, xmmword [r13 + rcx]
vmovups xmmword [r13 + rcx], xmm0
add rcx, 0x10
cmp rcx, r14
jne 0x646710
cmp esi, 2
jne 0x646ea0
mov r8, r12
mov rdx, rbx
mov rcx, r13
inc r15d
call fcn.00645bc0
cmp esi, r15d
jne 0x6466e0
cmp qword [rsp + 0x88], 0x1fe
mov r15, qword [rsp + 0x180]
mov r14, r12
mov rbx, r13
jbe 0x646f6c
mov r8, qword [rsp + 0x78]
mov rdx, rbx
mov rcx, r15
shr r8, 2
shl r8, 8
add r8, rbx
nop word cs:[rax + rax]
nop dword [rax]
vmovups xmm7, xmmword [rdx]
vmovups xmm3, xmmword [rdx + 0x20]
add rdx, 0x100
add rcx, 0x100
vmovups xmm6, xmmword [rdx - 0xc0]
vmovups xmm0, xmmword [rdx - 0xa0]
vmovups xmm4, xmmword [rdx - 0x40]
vshufps xmm14, xmm3, xmmword [rdx - 0xd0], 0x88
vshufps xmm12, xmm0, xmmword [rdx - 0x90], 0x88
vshufps xmm15, xmm7, xmmword [rdx - 0xf0], 0x88
vshufps xmm13, xmm6, xmmword [rdx - 0xb0], 0x88
vshufps xmm9, xmm4, xmmword [rdx - 0x30], 0x88
vshufps xmm4, xmm4, xmmword [rdx - 0x30], 0xdd
vmovups xmm5, xmmword [rdx - 0x80]
vmovups xmm2, xmmword [rdx - 0x60]
vmovups xmm1, xmmword [rdx - 0x20]
vshufps xmm11, xmm5, xmmword [rdx - 0x70], 0x88
vshufps xmm8, xmm1, xmmword [rdx - 0x10], 0x88
vshufps xmm7, xmm7, xmmword [rdx - 0xf0], 0xdd
vshufps xmm0, xmm0, xmmword [rdx - 0x90], 0xdd
vshufps xmm5, xmm5, xmmword [rdx - 0x70], 0xdd
vshufps xmm10, xmm2, xmmword [rdx - 0x50], 0x88
vshufps xmm3, xmm3, xmmword [rdx - 0xd0], 0xdd
vshufps xmm6, xmm6, xmmword [rdx - 0xb0], 0xdd
vshufps xmm2, xmm2, xmmword [rdx - 0x50], 0xdd
vshufps xmm1, xmm1, xmmword [rdx - 0x10], 0xdd
vmovups xmmword [rsp + 0x20], xmm4
vshufps xmm4, xmm15, xmm14, 0x88
vshufps xmm15, xmm15, xmm14, 0xdd
vshufps xmm14, xmm13, xmm12, 0x88
vshufps xmm13, xmm13, xmm12, 0xdd
vmovups xmmword [rsp + 0x30], xmm13
vmovups xmm13, xmmword [rsp + 0x20]
vshufps xmm12, xmm11, xmm10, 0x88
vshufps xmm10, xmm11, xmm10, 0xdd
vshufps xmm11, xmm9, xmm8, 0x88
vshufps xmm9, xmm9, xmm8, 0xdd
vshufps xmm8, xmm7, xmm3, 0x88
vshufps xmm3, xmm7, xmm3, 0xdd
vshufps xmm7, xmm6, xmm0, 0x88
vshufps xmm6, xmm6, xmm0, 0xdd
vshufps xmm0, xmm5, xmm2, 0x88
vshufps xmm2, xmm5, xmm2, 0xdd
vshufps xmm5, xmm13, xmm1, 0x88
vshufps xmm1, xmm13, xmm1, 0xdd
vshufps xmm13, xmm4, xmm14, 0x88
vshufps xmm14, xmm4, xmm14, 0xdd
vshufps xmm4, xmm12, xmm11, 0x88
vshufps xmm12, xmm12, xmm11, 0xdd
vshufps xmm11, xmm8, xmm7, 0x88
vshufps xmm8, xmm8, xmm7, 0xdd
vmovups xmmword [rsp + 0x20], xmm4
vmovups xmmword [rsp + 0x40], xmm12
vshufps xmm7, xmm0, xmm5, 0x88
vshufps xmm5, xmm0, xmm5, 0xdd
vmovups xmm0, xmmword [rsp + 0x30]
vshufps xmm4, xmm2, xmm1, 0x88
vmovups xmmword [rsp + 0x50], xmm7
vshufps xmm1, xmm2, xmm1, 0xdd
vshufps xmm7, xmm3, xmm6, 0x88
vshufps xmm3, xmm3, xmm6, 0xdd
vmovups xmmword [rsp + 0x60], xmm5
vmovups xmm2, xmmword [rsp + 0x20]
vmovups xmm6, xmmword [rsp + 0x50]
vmovups xmm5, xmm15
vshufps xmm12, xmm5, xmm0, 0xdd
vshufps xmm15, xmm15, xmm0, 0x88
vshufps xmm5, xmm10, xmm9, 0x88
vshufps xmm0, xmm10, xmm9, 0xdd
vshufps xmm10, xmm11, xmm6, 0x88
vshufps xmm11, xmm11, xmm6, 0xdd
vshufps xmm6, xmm15, xmm5, 0x88
vshufps xmm15, xmm15, xmm5, 0xdd
vshufps xmm5, xmm7, xmm4, 0x88
vshufps xmm9, xmm13, xmm2, 0x88
vmovups xmmword [rsp + 0x20], xmm6
vmovups xmmword [rsp + 0x30], xmm5
vshufps xmm5, xmm7, xmm4, 0xdd
vmovups xmm7, xmmword [rsp + 0x60]
vshufps xmm13, xmm13, xmm2, 0xdd
vmovups xmm2, xmmword [rsp + 0x40]
vshufps xmm4, xmm8, xmm7, 0x88
vshufps xmm8, xmm8, xmm7, 0xdd
vshufps xmm6, xmm14, xmm2, 0x88
vshufps xmm2, xmm14, xmm2, 0xdd
vshufps xmm14, xmm12, xmm0, 0x88
vshufps xmm0, xmm12, xmm0, 0xdd
vpunpckldq xmm12, xmm8, xmm4
vpunpckhdq xmm8, xmm8, xmm4
vmovups xmm4, xmmword [rsp + 0x20]
vmovups xmmword [rsp + 0x40], xmm2
vshufps xmm2, xmm3, xmm1, 0x88
vshufps xmm3, xmm3, xmm1, 0xdd
vpunpckldq xmm1, xmm9, xmm13
vpunpckhdq xmm9, xmm9, xmm13
vpunpckldq xmm13, xmm10, xmm11
vpunpckhdq xmm10, xmm10, xmm11
vmovups xmm11, xmmword [rsp + 0x30]
vpunpckldq xmm7, xmm15, xmm4
vpunpckhdq xmm15, xmm15, xmm4
vpunpckldq xmm4, xmm2, xmm3
vpunpckhdq xmm2, xmm2, xmm3
vmovups xmm3, xmmword [rsp + 0x40]
vmovups xmmword [rsp + 0x20], xmm4
vpunpckldq xmm4, xmm6, xmm3
vpunpckhdq xmm6, xmm6, xmm3
vpunpckldq xmm3, xmm0, xmm14
vpunpckhdq xmm0, xmm0, xmm14
vmovups xmmword [rsp + 0x40], xmm3
vpunpckldq xmm3, xmm5, xmm11
vpunpckhdq xmm5, xmm5, xmm11
vpunpckldq xmm11, xmm1, xmm4
vmovups xmmword [rsp + 0x30], xmm11
vpunpckldq xmm14, xmm12, xmm13
vpunpckhdq xmm11, xmm9, xmm6
vpunpckhdq xmm12, xmm12, xmm13
vpunpckhdq xmm1, xmm1, xmm4
vpunpckhdq xmm13, xmm8, xmm10
vpunpckldq xmm4, xmm9, xmm6
vpunpckldq xmm6, xmm8, xmm10
vmovups xmm8, xmmword [rsp + 0x40]
vpunpckldq xmm10, xmm7, xmm8
vpunpckhdq xmm9, xmm7, xmm8
vpunpckldq xmm8, xmm15, xmm0
vpunpckhdq xmm0, xmm15, xmm0
vmovups xmm15, xmmword [rsp + 0x20]
vpunpckldq xmm7, xmm15, xmm3
vpunpckhdq xmm3, xmm15, xmm3
vmovups xmm15, xmm5
vpunpckldq xmm5, xmm2, xmm5
vmovups xmmword [rsp + 0x20], xmm5
vmovups xmm5, xmmword [rsp + 0x30]
vpunpckhdq xmm2, xmm2, xmm15
vpunpckldq xmm15, xmm5, xmm10
vpunpckhdq xmm5, xmm5, xmm10
vpunpckldq xmm10, xmm1, xmm9
vpunpckhdq xmm1, xmm1, xmm9
vpunpckldq xmm9, xmm4, xmm8
vpunpckhdq xmm4, xmm4, xmm8
vpunpckldq xmm8, xmm11, xmm0
vpunpckhdq xmm0, xmm11, xmm0
vpunpckldq xmm11, xmm14, xmm7
vpunpckhdq xmm7, xmm14, xmm7
vmovups xmm14, xmmword [rsp + 0x20]
vmovups xmmword [rsp + 0x30], xmm11
vpunpckldq xmm11, xmm12, xmm3
vpunpckhdq xmm3, xmm12, xmm3
vmovups xmmword [rsp + 0x40], xmm11
vpunpckldq xmm11, xmm13, xmm2
vpunpckhdq xmm2, xmm13, xmm2
vpunpckldq xmm12, xmm6, xmm14
vpunpckhdq xmm6, xmm6, xmm14
vmovups xmm14, xmmword [rsp + 0x30]
vpunpckldq xmm13, xmm15, xmm14
vpunpckhdq xmm14, xmm15, xmm14
vmovups xmmword [rcx - 0xf0], xmm14
vpunpckldq xmm14, xmm5, xmm7
vpunpckhdq xmm5, xmm5, xmm7
vmovups xmm7, xmmword [rsp + 0x40]
vmovups xmmword [rcx - 0xd0], xmm5
vmovups xmmword [rcx - 0x100], xmm13
vmovups xmmword [rcx - 0xe0], xmm14
vpunpckldq xmm5, xmm10, xmm7
vpunpckhdq xmm10, xmm10, xmm7
vmovups xmmword [rcx - 0xc0], xmm5
vpunpckldq xmm5, xmm1, xmm3
vpunpckhdq xmm1, xmm1, xmm3
vmovups xmmword [rcx - 0xb0], xmm10
vmovups xmmword [rcx - 0x90], xmm1
vpunpckldq xmm1, xmm9, xmm12
vpunpckhdq xmm9, xmm9, xmm12
vmovups xmmword [rcx - 0xa0], xmm5
vmovups xmmword [rcx - 0x80], xmm1
vpunpckldq xmm1, xmm4, xmm6
vmovups xmmword [rcx - 0x70], xmm9
vpunpckhdq xmm4, xmm4, xmm6
vmovups xmmword [rcx - 0x60], xmm1
vpunpckldq xmm1, xmm8, xmm11
vpunpckhdq xmm8, xmm8, xmm11
vmovups xmmword [rcx - 0x50], xmm4
vmovups xmmword [rcx - 0x40], xmm1
vpunpckldq xmm1, xmm0, xmm2
vpunpckhdq xmm0, xmm0, xmm2
vmovups xmmword [rcx - 0x30], xmm8
vmovups xmmword [rcx - 0x20], xmm1
vmovups xmmword [rcx - 0x10], xmm0
cmp rdx, r8
jne 0x646790
mov rax, qword [rsp + 0x78]
mov rcx, rax
and rcx, 0xfffffffffffffffc
test al, 3
je 0x646dce
mov rdx, rcx
shl rdx, 6
mov r8d, dword [rbx + rdx]
mov dword [r15 + rdx], r8d
mov rdx, rcx
shl rdx, 4
lea rdx, [rdx*4 + 4]
mov r8d, dword [rbx + rdx]
mov dword [r15 + rdx + 0x10], r8d
mov r9d, dword [rbx + rdx + 4]
lea r8, [rdx + 0x28]
mov dword [r15 + rdx + 0x24], r9d
mov r11d, dword [rbx + rdx + 8]
lea r9, [rdx + 0x38]
mov dword [r15 + rdx + 0x38], r11d
mov edi, dword [rbx + rdx + 0xc]
mov dword [r15 + rdx + 0xc], edi
mov r10d, dword [rbx + rdx + 0x10]
mov dword [r15 + rdx + 0x20], r10d
mov edi, dword [rbx + rdx + 0x14]
lea r10, [rdx + 0x14]
mov dword [r15 + rdx + 0x34], edi
mov r13d, dword [rbx + rdx + 0x18]
mov dword [r15 + rdx + 8], r13d
mov r13d, dword [rbx + rdx + 0x1c]
mov dword [r15 + rdx + 0x1c], r13d
mov r12d, dword [rbx + rdx + 0x20]
mov dword [r15 + rdx + 0x30], r12d
mov ebp, dword [rbx + rdx + 0x24]
mov dword [r15 + rdx + 4], ebp
mov ebp, dword [rbx + rdx + 0x28]
mov dword [r15 + rdx + 0x18], ebp
mov ebp, dword [rbx + rdx + 0x2c]
mov dword [r15 + rdx + 0x2c], ebp
mov esi, dword [rbx + rdx + 0x30]
mov dword [r15 + rdx], esi
mov edx, dword [rbx + rdx + 0x34]
mov dword [r15 + r10], edx
mov edx, dword [rbx + r9]
mov dword [r15 + r8], edx
lea rdx, [rcx + 1]
cmp rax, rdx
jbe 0x646dce
mov r8, rdx
shl rdx, 4
add rcx, 2
shl r8, 6
lea rdx, [rdx*4 + 4]
mov r9d, dword [rbx + r8]
mov dword [r15 + r8], r9d
mov r8d, dword [rbx + rdx]
mov dword [r15 + rdx + 0x10], r8d
mov r9d, dword [rbx + rdx + 4]
lea r8, [rdx + 0x28]
mov dword [r15 + rdx + 0x24], r9d
mov r11d, dword [rbx + rdx + 8]
lea r9, [rdx + 0x38]
mov dword [r15 + rdx + 0x38], r11d
mov edi, dword [rbx + rdx + 0xc]
mov dword [r15 + rdx + 0xc], edi
mov r10d, dword [rbx + rdx + 0x10]
mov dword [r15 + rdx + 0x20], r10d
mov edi, dword [rbx + rdx + 0x14]
lea r10, [rdx + 0x14]
mov dword [r15 + rdx + 0x34], edi
mov r13d, dword [rbx + rdx + 0x18]
mov dword [r15 + rdx + 8], r13d
mov r13d, dword [rbx + rdx + 0x1c]
mov dword [r15 + rdx + 0x1c], r13d
mov r12d, dword [rbx + rdx + 0x20]
mov dword [r15 + rdx + 0x30], r12d
mov ebp, dword [rbx + rdx + 0x24]
mov dword [r15 + rdx + 4], ebp
mov ebp, dword [rbx + rdx + 0x28]
mov dword [r15 + rdx + 0x18], ebp
mov ebp, dword [rbx + rdx + 0x2c]
mov dword [r15 + rdx + 0x2c], ebp
mov esi, dword [rbx + rdx + 0x30]
mov dword [r15 + rdx], esi
mov edx, dword [rbx + rdx + 0x34]
mov dword [r15 + r10], edx
mov edx, dword [rbx + r9]
mov dword [r15 + r8], edx
cmp rax, rcx
jbe 0x646dce
mov rdx, rcx
shl rcx, 4
shl rdx, 6
mov r8d, dword [rbx + rdx]
mov dword [r15 + rdx], r8d
lea rdx, [rcx*4 + 4]
mov ecx, dword [rbx + rdx]
mov dword [r15 + rdx + 0x10], ecx
mov r8d, dword [rbx + rdx + 4]
lea rcx, [rdx + 0x28]
mov dword [r15 + rdx + 0x24], r8d
mov r10d, dword [rbx + rdx + 8]
lea r8, [rdx + 0x38]
mov dword [r15 + rdx + 0x38], r10d
mov esi, dword [rbx + rdx + 0xc]
mov dword [r15 + rdx + 0xc], esi
mov r9d, dword [rbx + rdx + 0x10]
mov dword [r15 + rdx + 0x20], r9d
mov esi, dword [rbx + rdx + 0x14]
lea r9, [rdx + 0x14]
mov dword [r15 + rdx + 0x34], esi
mov r12d, dword [rbx + rdx + 0x18]
mov dword [r15 + rdx + 8], r12d
mov r12d, dword [rbx + rdx + 0x1c]
mov dword [r15 + rdx + 0x1c], r12d
mov ebp, dword [rbx + rdx + 0x20]
mov dword [r15 + rdx + 0x30], ebp
mov edi, dword [rbx + rdx + 0x24]
mov dword [r15 + rdx + 4], edi
mov edi, dword [rbx + rdx + 0x28]
mov dword [r15 + rdx + 0x18], edi
mov edi, dword [rbx + rdx + 0x2c]
mov dword [r15 + rdx + 0x2c], edi
mov r11d, dword [rbx + rdx + 0x30]
mov dword [r15 + rdx], r11d
mov edx, dword [rbx + rdx + 0x34]
mov dword [r15 + r9], edx
mov edx, dword [rbx + r8]
mov dword [r15 + rcx], edx
vmovups xmm6, xmmword [rsp + 0x90]
vmovups xmm7, xmmword [rsp + 0xa0]
vmovups xmm8, xmmword [rsp + 0xb0]
vmovups xmm9, xmmword [rsp + 0xc0]
vmovups xmm10, xmmword [rsp + 0xd0]
vmovups xmm11, xmmword [rsp + 0xe0]
vmovups xmm12, xmmword [rsp + 0xf0]
vmovups xmm13, xmmword [rsp + 0x100]
vmovups xmm14, xmmword [rsp + 0x110]
vmovups xmm15, xmmword [rsp + 0x120]
add rsp, 0x138
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r11, rdx
mov rcx, r13
nop word cs:[rax + rax]
add rcx, 4
add r11, 4
mov eax, dword [r11 - 4]
xor dword [rcx - 4], eax
cmp rcx, rbp
jne 0x646e50
cmp esi, 2
je 0x646735
mov r8, qword [rsp + 0x50]
xor ecx, ecx
nop word cs:[rax + rax]
nop
mov eax, dword [r13 + rcx]
mov dword [rdx + rcx], eax
add rcx, 4
cmp r8, rcx
jne 0x646e80
jmp 0x646735
xor ecx, ecx
nop word cs:[rax + rax]
nop dword [rax]
vmovups xmm6, xmmword [r13 + rcx]
vmovups xmmword [rdx + rcx], xmm6
add rcx, 0x10
cmp rcx, r14
jne 0x646eb0
jmp 0x646735
mov rdi, qword [rsp + 0x1a0]
mov r9, r14
mov rdx, rcx
mov rcx, rbx
shl r9, 7
add r9, r15
nop word cs:[rax + rax]
nop dword [rax]
mov eax, dword [rdx]
add rdx, 0x40
add rcx, 0x40
mov dword [rcx - 0x40], eax
mov eax, dword [rdx - 0x2c]
mov dword [rcx - 0x3c], eax
mov eax, dword [rdx - 0x18]
mov dword [rcx - 0x38], eax
mov eax, dword [rdx - 4]
mov dword [rcx - 0x34], eax
mov eax, dword [rdx - 0x30]
mov dword [rcx - 0x30], eax
mov eax, dword [rdx - 0x1c]
mov dword [rcx - 0x2c], eax
mov eax, dword [rdx - 8]
mov dword [rcx - 0x28], eax
mov eax, dword [rdx - 0x34]
mov dword [rcx - 0x24], eax
mov eax, dword [rdx - 0x20]
mov dword [rcx - 0x20], eax
mov eax, dword [rdx - 0xc]
mov dword [rcx - 0x1c], eax
mov eax, dword [rdx - 0x38]
mov dword [rcx - 0x18], eax
mov eax, dword [rdx - 0x24]
mov dword [rcx - 0x14], eax
mov eax, dword [rdx - 0x10]
mov dword [rcx - 0x10], eax
mov eax, dword [rdx - 0x3c]
mov dword [rcx - 0xc], eax
mov eax, dword [rdx - 0x28]
mov dword [rcx - 8], eax
mov eax, dword [rdx - 0x14]
mov dword [rcx - 4], eax
cmp rdx, r9
jne 0x646ef0
mov qword [rsp + 0x1a0], rdi
test esi, esi
jne 0x64667d
mov rcx, r14
mov rax, r15
shl rcx, 7
add rcx, rbx
nop dword [rax]
mov edx, dword [rbx]
add rbx, 0x40
add rax, 0x40
mov dword [rax - 0x40], edx
mov edx, dword [rbx - 0x3c]
mov dword [rax - 0x2c], edx
mov edx, dword [rbx - 0x38]
mov dword [rax - 0x18], edx
mov edx, dword [rbx - 0x34]
mov dword [rax - 4], edx
mov edx, dword [rbx - 0x30]
mov dword [rax - 0x30], edx
mov edx, dword [rbx - 0x2c]
mov dword [rax - 0x1c], edx
mov edx, dword [rbx - 0x28]
mov dword [rax - 8], edx
mov edx, dword [rbx - 0x24]
mov dword [rax - 0x34], edx
mov edx, dword [rbx - 0x20]
mov dword [rax - 0x20], edx
mov edx, dword [rbx - 0x1c]
mov dword [rax - 0xc], edx
mov edx, dword [rbx - 0x18]
mov dword [rax - 0x38], edx
mov edx, dword [rbx - 0x14]
mov dword [rax - 0x24], edx
mov edx, dword [rbx - 0x10]
mov dword [rax - 0x10], edx
mov edx, dword [rbx - 0xc]
mov dword [rax - 0x3c], edx
mov edx, dword [rbx - 8]
mov dword [rax - 0x28], edx
mov edx, dword [rbx - 4]
mov dword [rax - 0x14], edx
cmp rbx, rcx
jne 0x646f80
jmp 0x646dce