Function at 0x649a80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
vmovups xmmword [rsp + 0x50], xmm6
vmovups xmmword [rsp + 0x60], xmm7
vmovups xmmword [rsp + 0x70], xmm8
vmovups xmmword [rsp + 0x80], xmm9
mov rbx, qword [rsp + 0x108]
mov rdi, qword [rsp + 0x100]
mov r12, rdx
mov esi, r9d
mov r9, rdx
mov r14, rcx
lea rdx, [rbx + 0x3f]
shl r9, 5
sub rdx, rcx
mov qword [rsp + 0x40], rdx
cmp rdx, 0x7e
jbe 0x649e4c
mov rcx, r12
vmovdqu ymm2, ymmword [0x006eee20]
vmovdqu ymm3, ymmword [0x006eee40]
xor edx, edx
vmovdqu ymm4, ymmword [0x006eee60]
vmovdqu ymm5, ymmword [0x006eee80]
shl rcx, 7
nop dword [rax]
vmovdqu xmm7, xmmword [r14 + rdx]
vinserti128 ymm1, ymm7, xmmword [r14 + rdx + 0x10], 1
vmovdqu xmm7, xmmword [r14 + rdx + 0x20]
vinserti128 ymm0, ymm7, xmmword [r14 + rdx + 0x30], 1
vpshufb ymm6, ymm1, ymm2
vpshufb ymm7, ymm0, ymm3
vpermq ymm9, ymm6, 0x4e
vpshufb ymm6, ymm1, ymm4
vpermq ymm8, ymm7, 0x4e
vpshufb ymm7, ymm0, ymm5
vpor ymm6, ymm6, ymm9
vpor ymm7, ymm7, ymm8
vpor ymm6, ymm6, ymm7
vpshufb ymm7, ymm0, ymm2
vpshufb ymm0, ymm0, ymm4
vmovups xmmword [rbx + rdx], xmm6
vextracti128 xmmword [rbx + rdx + 0x10], ymm6, 1
vpermq ymm7, ymm7, 0x4e
vpshufb ymm6, ymm1, ymm3
vpermq ymm6, ymm6, 0x4e
vpshufb ymm1, ymm1, ymm5
vpor ymm0, ymm0, ymm7
vpor ymm1, ymm1, ymm6
vpor ymm0, ymm0, ymm1
vmovups xmmword [rbx + rdx + 0x20], xmm0
vextracti128 xmmword [rbx + rdx + 0x30], ymm0, 1
add rdx, 0x40
cmp rdx, rcx
jne 0x649b10
test esi, esi
je 0x649cea
mov rax, r12
lea r13, [r9*4]
xor r15d, r15d
mov qword [rsp + 0x100], rdi
shl rax, 7
mov qword [rsp + 0xe0], r14
mov rdi, r12
mov r14d, r15d
lea rcx, [rbx + rax - 0x40]
mov qword [rsp + 0x48], rax
lea rbp, [rbx + rax]
mov r12, r13
mov qword [rsp + 0x28], rcx
lea rax, [rbx + 0x20]
lea ecx, [r8 - 1]
mov r15, qword [rsp + 0x110]
mov dword [rsp + 0x34], ecx
mov r13, qword [rsp + 0x100]
mov qword [rsp + 0x38], rax
nop word cs:[rax + rax]
mov rax, qword [rsp + 0x28]
mov edx, dword [rsp + 0x34]
and edx, dword [rax]
imul rdx, rdi
shl rdx, 7
lea rax, [r13 + rdx]
lea rdx, [r13 + rdx + 0x20]
cmp rbx, rdx
setae cl
cmp rax, qword [rsp + 0x38]
setae dl
or cl, dl
je 0x649e00
xor edx, edx
nop dword [rax]
vmovdqu xmm3, xmmword [rax + rdx]
vmovdqu xmm2, xmmword [rbx + rdx]
vinserti128 ymm0, ymm3, xmmword [rax + rdx + 0x10], 1
vinserti128 ymm1, ymm2, xmmword [rbx + rdx + 0x10], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + rdx], xmm0
vextracti128 xmmword [rbx + rdx + 0x10], ymm0, 1
add rdx, 0x20
cmp rdx, r12
jne 0x649c58
cmp esi, 2
jne 0x649dd0
mov r8, rdi
mov rdx, r15
mov rcx, rbx
vzeroupper
call fcn.00649730
add r14d, 1
cmp esi, r14d
jne 0x649c20
cmp qword [rsp + 0x40], 0x7e
mov r14, qword [rsp + 0xe0]
mov r12, rdi
jbe 0x649ed4
vmovdqu ymm2, ymmword [0x006eee20]
vmovdqu ymm3, ymmword [0x006eee40]
vmovdqu ymm4, ymmword [0x006eee60]
vmovdqu ymm5, ymmword [0x006eee80]
mov r10, r12
xor ecx, ecx
shl r10, 7
nop dword [rax + rax]
vmovdqu xmm7, xmmword [rbx + rcx]
vmovdqu xmm6, xmmword [rbx + rcx + 0x20]
vinserti128 ymm1, ymm7, xmmword [rbx + rcx + 0x10], 1
vinserti128 ymm0, ymm6, xmmword [rbx + rcx + 0x30], 1
vpshufb ymm6, ymm1, ymm3
vpshufb ymm7, ymm0, ymm2
vpermq ymm9, ymm6, 0x4e
vpermq ymm8, ymm7, 0x4e
vpshufb ymm6, ymm1, ymm4
vpshufb ymm7, ymm0, ymm5
vpor ymm6, ymm6, ymm9
vpor ymm7, ymm7, ymm8
vpor ymm6, ymm6, ymm7
vpshufb ymm7, ymm0, ymm3
vpshufb ymm0, ymm0, ymm4
vmovups xmmword [r14 + rcx], xmm6
vextracti128 xmmword [r14 + rcx + 0x10], ymm6, 1
vpermq ymm7, ymm7, 0x4e
vpshufb ymm6, ymm1, ymm2
vpermq ymm6, ymm6, 0x4e
vpshufb ymm1, ymm1, ymm5
vpor ymm0, ymm0, ymm7
vpor ymm1, ymm1, ymm6
vpor ymm0, ymm0, ymm1
vmovups xmmword [r14 + rcx + 0x20], xmm0
vextracti128 xmmword [r14 + rcx + 0x30], ymm0, 1
add rcx, 0x40
cmp rcx, r10
jne 0x649cf8
vzeroupper
vmovups xmm6, xmmword [rsp + 0x50]
vmovups xmm7, xmmword [rsp + 0x60]
vmovups xmm9, xmmword [rsp + 0x80]
vmovups xmm8, xmmword [rsp + 0x70]
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor edx, edx
nop word [rax + rax]
vmovdqu xmm4, xmmword [rbx + rdx]
vinserti128 ymm0, ymm4, xmmword [rbx + rdx + 0x10], 1
vmovups xmmword [rax + rdx], xmm0
vextracti128 xmmword [rax + rdx + 0x10], ymm0, 1
add rdx, 0x20
cmp rdx, r12
jne 0x649dd8
jmp 0x649c95
mov rcx, rax
mov rdx, rbx
nop word cs:[rax + rax]
add rdx, 4
add rcx, 4
mov r8d, dword [rcx - 4]
xor dword [rdx - 4], r8d
cmp rdx, rbp
jne 0x649e10
cmp esi, 2
je 0x649c95
mov r8, qword [rsp + 0x48]
xor edx, edx
nop dword [rax]
mov ecx, dword [rbx + rdx]
mov dword [rax + rdx], ecx
add rdx, 4
cmp r8, rdx
jne 0x649e38
jmp 0x649c95
mov rbp, r12
mov rdx, rcx
mov rcx, rbx
shl rbp, 7
add rbp, r14
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 rbp, rdx
jne 0x649e60
test esi, esi
jne 0x649bb7
mov rcx, r12
mov rax, r14
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 0x649ee8
jmp 0x649d9a