Function at 0x647a70
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 r15, rcx
lea rdx, [rbx + 0x3f]
shl r9, 5
sub rdx, rcx
mov qword [rsp + 0x40], rdx
cmp rdx, 0x7e
jbe 0x647dbd
mov rcx, r12
vmovdqu ymm2, ymmword [0x006ecd40]
vmovdqu ymm3, ymmword [0x006ecd60]
xor edx, edx
vmovdqu ymm4, ymmword [0x006ecd80]
vmovdqu ymm5, ymmword [0x006ecda0]
shl rcx, 7
nop dword [rax]
vmovdqu ymm1, ymmword [r15 + rdx]
vmovdqu ymm0, ymmword [r15 + rdx + 0x20]
vpshufb ymm6, ymm1, ymm2
vpshufb ymm7, ymm0, ymm3
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, ymm2
vpshufb ymm0, ymm0, ymm4
vmovdqu ymmword [rbx + rdx], ymm6
vpshufb ymm6, ymm1, ymm3
vpermq ymm7, ymm7, 0x4e
vpshufb ymm1, ymm1, ymm5
vpermq ymm6, ymm6, 0x4e
vpor ymm0, ymm0, ymm7
vpor ymm1, ymm1, ymm6
vpor ymm0, ymm0, ymm1
vmovdqu ymmword [rbx + rdx + 0x20], ymm0
add rdx, 0x40
cmp rdx, rcx
jne 0x647b00
test esi, esi
je 0x647c96
mov rax, r12
lea r13, [r9*4]
xor r14d, r14d
mov qword [rsp + 0xe8], r12
shl rax, 7
mov qword [rsp + 0xe0], r15
mov r12, r13
mov r15d, r14d
lea rdx, [rbx + rax - 0x40]
lea rbp, [rbx + rax]
mov qword [rsp + 0x48], rax
mov r14, rbx
lea rax, [rbx + 0x20]
mov qword [rsp + 0x28], rdx
lea edx, [r8 - 1]
mov rbx, qword [rsp + 0x110]
mov dword [rsp + 0x34], edx
mov r13, qword [rsp + 0xe8]
mov qword [rsp + 0x38], rax
nop word [rax + rax]
mov rax, qword [rsp + 0x28]
mov ecx, dword [rsp + 0x34]
and ecx, dword [rax]
imul rcx, r13
shl rcx, 7
lea rdx, [rdi + rcx]
lea rcx, [rdi + rcx + 0x20]
cmp r14, rcx
setae r11b
cmp rdx, qword [rsp + 0x38]
setae cl
or r11b, cl
je 0x647d78
xor ecx, ecx
nop
vmovdqu ymm2, ymmword [r14 + rcx]
vpxor ymm0, ymm2, ymmword [rdx + rcx]
vmovdqu ymmword [r14 + rcx], ymm0
add rcx, 0x20
cmp rcx, r12
jne 0x647c20
cmp esi, 2
jne 0x647d50
mov r8, r13
mov rdx, rbx
mov rcx, r14
vzeroupper
call fcn.00647740
inc r15d
cmp esi, r15d
jne 0x647be8
cmp qword [rsp + 0x40], 0x7e
mov r15, qword [rsp + 0xe0]
mov r12, r13
mov rbx, r14
jbe 0x647e44
vmovdqu ymm2, ymmword [0x006ecd40]
vmovdqu ymm3, ymmword [0x006ecd60]
vmovdqu ymm4, ymmword [0x006ecd80]
vmovdqu ymm5, ymmword [0x006ecda0]
mov r10, r12
xor edx, edx
shl r10, 7
nop
vmovdqu ymm1, ymmword [rbx + rdx]
vmovdqu ymm0, ymmword [rbx + rdx + 0x20]
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
vmovdqu ymmword [r15 + rdx], ymm6
vpshufb ymm6, ymm1, ymm2
vpermq ymm7, ymm7, 0x4e
vpshufb ymm1, ymm1, ymm5
vpermq ymm6, ymm6, 0x4e
vpor ymm0, ymm0, ymm7
vpor ymm1, ymm1, ymm6
vpor ymm0, ymm0, ymm1
vmovdqu ymmword [r15 + rdx + 0x20], ymm0
add rdx, 0x40
cmp rdx, r10
jne 0x647ca0
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 ecx, ecx
nop word [rax + rax]
vmovdqu ymm3, ymmword [r14 + rcx]
vmovdqu ymmword [rdx + rcx], ymm3
add rcx, 0x20
cmp rcx, r12
jne 0x647d58
jmp 0x647c43
mov r11, rdx
mov rcx, r14
nop
add rcx, 4
add r11, 4
mov eax, dword [r11 - 4]
xor dword [rcx - 4], eax
cmp rcx, rbp
jne 0x647d80
cmp esi, 2
je 0x647c43
mov r8, qword [rsp + 0x48]
xor ecx, ecx
nop dword [rax]
mov eax, dword [r14 + rcx]
mov dword [rdx + rcx], eax
add rcx, 4
cmp r8, rcx
jne 0x647da8
jmp 0x647c43
mov rbp, r12
mov rdx, rcx
mov rcx, rbx
shl rbp, 7
add rbp, r15
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 0x647dd0
test esi, esi
jne 0x647b83
mov rcx, r12
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 0x647e58
jmp 0x647d1e