Function at 0x525fc0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
movdqa xmmword [rsp + 0x60], xmm12
movdqa xmmword [rsp + 0x50], xmm11
movdqa xmmword [rsp + 0x40], xmm10
movdqa xmmword [rsp + 0x30], xmm9
movdqa xmmword [rsp + 0x20], xmm8
movdqa xmmword [rsp + 0x10], xmm7
movdqa xmmword [rsp], xmm6
lea r10, [rcx + 7]
and r10, 0xfffffffffffffff8
mov r9, r10
sub r9, rcx
cmp r9, rdx
ja 0x52603d
cmp r9, 8
ja 0x52603d
mov r8, rdx
sub r8, r9
cmp r8, 8
jb 0x52603d
lea rbx, [rcx + r9]
mov eax, r8d
and eax, 7
cmp r10, rcx
jne 0x52610d
xor edx, edx
jmp 0x5261d8
test rdx, rdx
je 0x526052
cmp rdx, 4
jae 0x526059
xor eax, eax
mov r8, rcx
jmp 0x5260ed
xor eax, eax
jmp 0x5265d3
mov r9, rdx
and r9, 0xfffffffffffffffc
lea r8, [rcx + r9]
pxor xmm0, xmm0
xor eax, eax
movdqa xmm2, xmmword [0x006576e0]
movdqa xmm3, xmmword [0x006576f0]
pxor xmm1, xmm1
nop
movzx r10d, word [rcx + rax]
movd xmm4, r10d
movzx r10d, word [rcx + rax + 2]
movd xmm5, r10d
pcmpgtb xmm4, xmm2
punpcklbw xmm4, xmm4
pshuflw xmm4, xmm4, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm0, xmm4
pcmpgtb xmm5, xmm2
punpcklbw xmm5, xmm5
pshuflw xmm4, xmm5, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm1, xmm4
add rax, 4
cmp r9, rax
jne 0x526080
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq rax, xmm0
cmp r9, rdx
je 0x5265d3
add rcx, rdx
xor edx, edx
cmp byte [r8], 0xc0
lea r9, [r8 + 1]
setge dl
add rax, rdx
mov r8, r9
cmp r9, rcx
jne 0x5260f0
jmp 0x5265d3
cmp r9, 4
jae 0x52611d
xor edx, edx
mov r10, rcx
jmp 0x5261c0
mov r11, r9
and r11, 0xfffffffffffffffc
lea r10, [rcx + r11]
pxor xmm0, xmm0
xor edx, edx
movdqa xmm2, xmmword [0x006576e0]
movdqa xmm3, xmmword [0x006576f0]
pxor xmm1, xmm1
nop word cs:[rax + rax]
movzx esi, word [rcx + rdx]
movd xmm4, esi
movzx esi, word [rcx + rdx + 2]
movd xmm5, esi
pcmpgtb xmm4, xmm2
punpcklbw xmm4, xmm4
pshuflw xmm4, xmm4, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm0, xmm4
pcmpgtb xmm5, xmm2
punpcklbw xmm5, xmm5
pshuflw xmm4, xmm5, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm1, xmm4
add rdx, 4
cmp r11, rdx
jne 0x526150
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq rdx, xmm0
cmp r9, r11
je 0x5261d8
nop word cs:[rax + rax]
xor ecx, ecx
cmp byte [r10], 0xc0
lea r9, [r10 + 1]
setge cl
add rdx, rcx
mov r10, r9
cmp r9, rbx
jne 0x5261c0
test rax, rax
je 0x52626a
mov rcx, r8
and rcx, 0xfffffffffffffff8
xor edi, edi
cmp byte [rbx + rcx], 0xc0
setge dil
cmp eax, 1
je 0x52626c
xor r9d, r9d
cmp byte [rbx + rcx + 1], 0xc0
setge r9b
add rdi, r9
cmp eax, 2
je 0x52626c
xor r9d, r9d
cmp byte [rbx + rcx + 2], 0xc0
setge r9b
add rdi, r9
cmp eax, 3
je 0x52626c
xor r9d, r9d
cmp byte [rbx + rcx + 3], 0xc0
setge r9b
add rdi, r9
cmp eax, 4
je 0x52626c
xor r9d, r9d
cmp byte [rbx + rcx + 4], 0xc0
setge r9b
add rdi, r9
cmp eax, 5
je 0x52626c
xor r9d, r9d
cmp byte [rbx + rcx + 5], 0xc0
setge r9b
add rdi, r9
cmp eax, 6
je 0x52626c
xor eax, eax
cmp byte [rbx + rcx + 6], 0xc0
setge al
add rdi, rax
jmp 0x52626c
xor edi, edi
add rdi, rdx
shr r8, 3
movabs rsi, 0x7ffffffffffffff
movabs rdx, 0xff00ff00ff00ff
movabs rcx, 0x1000100010001
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x00657700]
jmp 0x5262cd
xor edi, edi
lea rbx, [r9 + r14*8]
sub r8, r14
mov r14, rdi
and r14, rdx
shr rdi, 8
and rdi, rdx
add rdi, r14
imul rdi, rcx
shr rdi, 0x30
add rdi, rax
test r11, r11
jne 0x526552
mov rax, rdi
test r8, r8
je 0x5265d3
mov r9, rbx
cmp r8, 0xc0
mov r14d, 0xc0
cmovb r14, r8
mov r11d, r14d
and r11d, 3
mov r10, r14
and r10, 0xfc
je 0x5262a0
mov rbx, r14
shr rbx, 2
lea r12, [rbx + rsi]
and r12, rsi
cmp r12, 3
jae 0x526320
xor edi, edi
mov r15, r9
jmp 0x5264e8
inc r12
mov r13, r12
and r13, 0xfffffffffffffffc
mov r15, r13
shl r15, 5
add r15, r9
lea rdi, [r9 + 0x40]
pxor xmm5, xmm5
xor ebp, ebp
pxor xmm4, xmm4
nop word cs:[rax + rax]
movdqu xmm2, xmmword [rdi - 0x40]
movdqu xmm6, xmmword [rdi - 0x20]
movdqa xmm3, xmm2
punpcklqdq xmm3, xmm6
movdqa xmm7, xmm3
pxor xmm7, xmm0
psrlq xmm7, 7
psrlq xmm3, 6
por xmm3, xmm7
pand xmm3, xmm1
paddq xmm3, xmm5
movdqu xmm5, xmmword [rdi - 0x30]
movdqu xmm10, xmmword [rdi - 0x10]
movdqu xmm11, xmmword [rdi + 0x30]
movdqu xmm7, xmmword [rdi + 0x20]
movdqu xmm9, xmmword [rdi]
movdqa xmm8, xmm9
punpcklqdq xmm8, xmm7
movdqa xmm12, xmm8
pxor xmm12, xmm0
psrlq xmm12, 7
psrlq xmm8, 6
por xmm8, xmm12
pand xmm8, xmm1
paddq xmm8, xmm4
movdqu xmm4, xmmword [rdi + 0x10]
punpckhqdq xmm2, xmm6
punpckhqdq xmm9, xmm7
movdqa xmm7, xmm5
punpcklqdq xmm7, xmm10
movdqa xmm6, xmm4
punpcklqdq xmm6, xmm11
punpckhqdq xmm5, xmm10
punpckhqdq xmm4, xmm11
movdqa xmm10, xmm2
pxor xmm10, xmm0
movdqa xmm11, xmm9
pxor xmm11, xmm0
psrlq xmm10, 7
psrlq xmm11, 7
psrlq xmm2, 6
por xmm2, xmm10
psrlq xmm9, 6
por xmm9, xmm11
pand xmm2, xmm1
pand xmm9, xmm1
movdqa xmm10, xmm7
pxor xmm10, xmm0
movdqa xmm11, xmm6
pxor xmm11, xmm0
psrlq xmm10, 7
psrlq xmm11, 7
psrlq xmm7, 6
por xmm7, xmm10
psrlq xmm6, 6
por xmm6, xmm11
pand xmm7, xmm1
paddq xmm7, xmm2
paddq xmm7, xmm3
pand xmm6, xmm1
paddq xmm6, xmm9
paddq xmm6, xmm8
movdqa xmm2, xmm5
pxor xmm2, xmm0
movdqa xmm3, xmm4
pxor xmm3, xmm0
psrlq xmm2, 7
psrlq xmm3, 7
psrlq xmm5, 6
por xmm5, xmm2
psrlq xmm4, 6
por xmm4, xmm3
pand xmm5, xmm1
paddq xmm5, xmm7
pand xmm4, xmm1
paddq xmm4, xmm6
add rbp, 4
sub rdi, 0xffffffffffffff80
cmp r13, rbp
jne 0x526350
paddq xmm4, xmm5
pshufd xmm2, xmm4, 0xee
paddq xmm2, xmm4
movq rdi, xmm2
cmp r12, r13
je 0x5262a2
shl rbx, 5
add rbx, r9
nop
movdqu xmm2, xmmword [r15]
movdqu xmm3, xmmword [r15 + 0x10]
movdqa xmm4, xmm2
pxor xmm4, xmm0
movdqa xmm5, xmm3
pxor xmm5, xmm0
psrlq xmm5, 7
psrlq xmm4, 7
psrlq xmm3, 6
por xmm3, xmm5
psrlq xmm2, 6
por xmm2, xmm4
pand xmm3, xmm1
pand xmm2, xmm1
paddq xmm2, xmm3
pshufd xmm3, xmm2, 0xee
paddq xmm3, xmm2
movq r12, xmm3
add rdi, r12
add r15, 0x20
cmp r15, rbx
jne 0x5264f0
jmp 0x5262a2
movabs r8, 0x101010101010101
mov rax, qword [r9 + r10*8]
mov rsi, rax
not rsi
shr rsi, 7
shr rax, 6
or rax, rsi
and rax, r8
cmp r11d, 1
je 0x5265b8
mov rsi, qword [r9 + r10*8 + 8]
mov rbx, rsi
not rbx
shr rbx, 7
shr rsi, 6
or rsi, rbx
and rsi, r8
add rax, rsi
cmp r11d, 2
je 0x5265b8
mov r9, qword [r9 + r10*8 + 0x10]
mov r10, r9
not r10
shr r10, 7
shr r9, 6
or r9, r10
and r9, r8
add rax, r9
mov r8, rax
and r8, rdx
shr rax, 8
and rax, rdx
add rax, r8
imul rax, rcx
shr rax, 0x30
add rax, rdi
movaps xmm6, xmmword [rsp]
movaps xmm7, xmmword [rsp + 0x10]
movaps xmm8, xmmword [rsp + 0x20]
movaps xmm9, xmmword [rsp + 0x30]
movaps xmm10, xmmword [rsp + 0x40]
movaps xmm11, xmmword [rsp + 0x50]
movaps xmm12, xmmword [rsp + 0x60]
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret