Function at 0x180099c10
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x10
lea rbp, [rsp + 0x10]
movdqa xmmword [rbp - 0x10], xmm6
lea r10, [rcx + 7]
and r10, 0xfffffffffffffff8
mov r9, r10
sub r9, rcx
mov r8, rdx
sub r8, r9
jb 0x180099c44
cmp r8, 8
jae 0x180099c60
test rdx, rdx
je 0x180099c59
cmp rdx, 4
jae 0x180099c76
xor eax, eax
xor r8d, r8d
jmp 0x180099d10
xor eax, eax
jmp 0x18009a107
mov eax, r8d
and eax, 7
cmp r10, rcx
jne 0x180099d2c
xor edx, edx
jmp 0x180099ddd
mov r8, rdx
and r8, 0xfffffffffffffffc
pxor xmm0, xmm0
xor eax, eax
movdqa xmm2, xmmword [0x18013c650]
movdqa xmm3, xmmword [0x18013c660]
pxor xmm1, xmm1
nop word [rax + rax]
movzx r9d, word [rcx + rax]
movd xmm4, r9d
movzx r9d, word [rcx + rax + 2]
movd xmm5, r9d
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 r8, rax
jne 0x180099ca0
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq rax, xmm0
cmp r8, rdx
je 0x18009a107
nop dword [rax]
xor r9d, r9d
cmp byte [rcx + r8], 0xc0
setge r9b
add rax, r9
inc r8
cmp rdx, r8
jne 0x180099d10
jmp 0x18009a107
cmp r9, 4
jae 0x180099d3c
xor edx, edx
xor r10d, r10d
jmp 0x180099dc6
mov r10d, r9d
and r10d, 4
pxor xmm0, xmm0
xor edx, edx
movdqa xmm2, xmmword [0x18013c650]
movdqa xmm3, xmmword [0x18013c660]
pxor xmm1, xmm1
nop dword [rax]
movzx r11d, word [rcx + rdx]
movd xmm4, r11d
movzx r11d, word [rcx + rdx + 2]
movd xmm5, r11d
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 r10, rdx
jne 0x180099d60
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq rdx, xmm0
jmp 0x180099dd8
xor r11d, r11d
cmp byte [rcx + r10], 0xc0
setge r11b
add rdx, r11
inc r10
cmp r9, r10
jne 0x180099dc6
add rcx, r9
test rax, rax
je 0x180099e7a
mov r9, r8
and r9, 0xfffffffffffffff8
xor r10d, r10d
cmp byte [rcx + r9], 0xc0
setge r10b
cmp eax, 1
je 0x180099e7d
xor r11d, r11d
cmp byte [rcx + r9 + 1], 0xc0
setge r11b
add r10, r11
cmp eax, 2
je 0x180099e7d
xor r11d, r11d
cmp byte [rcx + r9 + 2], 0xc0
setge r11b
add r10, r11
cmp eax, 3
je 0x180099e7d
xor r11d, r11d
cmp byte [rcx + r9 + 3], 0xc0
setge r11b
add r10, r11
cmp eax, 4
je 0x180099e7d
xor r11d, r11d
cmp byte [rcx + r9 + 4], 0xc0
setge r11b
add r10, r11
cmp eax, 5
je 0x180099e7d
xor r11d, r11d
cmp byte [rcx + r9 + 5], 0xc0
setge r11b
add r10, r11
cmp eax, 6
je 0x180099e7d
xor eax, eax
cmp byte [rcx + r9 + 6], 0xc0
setge al
add r10, rax
jmp 0x180099e7d
xor r10d, r10d
add r10, rdx
shr r8, 3
movabs rdi, 0x7ffffffffffffff
movabs r9, 0xff00ff00ff00ff
movabs rdx, 0x1000100010001
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x18013c670]
jmp 0x180099ee5
xor r10d, r10d
mov ecx, esi
lea rcx, [r11 + rcx*8]
sub r8, rsi
mov ebx, esi
and ebx, 3
mov r14, r10
and r14, r9
shr r10, 8
and r10, r9
add r10, r14
imul r10, rdx
shr r10, 0x30
add r10, rax
test rbx, rbx
jne 0x18009a080
mov rax, r10
test r8, r8
je 0x18009a107
mov r11, rcx
cmp r8, 0xc0
mov esi, 0xc0
cmovb rsi, r8
cmp r8, 4
jb 0x180099eb0
mov ecx, esi
shr ecx, 2
lea r14, [rcx + rdi]
and r14, rdi
je 0x18009a012
inc r14
mov r15, r14
and r15, 0xfffffffffffffffe
mov rbx, r15
shl rbx, 5
add rbx, r11
pxor xmm4, xmm4
mov r10, r15
mov r12, r11
nop word [rax + rax]
movdqu xmm2, xmmword [r12]
movdqu xmm5, xmmword [r12 + 0x20]
movdqa xmm3, xmm2
punpcklqdq xmm3, xmm5
movdqa xmm6, xmm3
pxor xmm6, xmm0
psrlq xmm6, 7
psrlq xmm3, 6
por xmm3, xmm6
pand xmm3, xmm1
paddq xmm3, xmm4
movdqu xmm4, xmmword [r12 + 0x10]
movdqu xmm6, xmmword [r12 + 0x30]
punpckhqdq xmm2, xmm5
movdqa xmm5, xmm4
punpcklqdq xmm5, xmm6
punpckhqdq xmm4, xmm6
movdqa xmm6, xmm2
pxor xmm6, xmm0
psrlq xmm6, 7
psrlq xmm2, 6
por xmm2, xmm6
pand xmm2, xmm1
movdqa xmm6, xmm5
pxor xmm6, xmm0
psrlq xmm6, 7
psrlq xmm5, 6
por xmm5, xmm6
pand xmm5, xmm1
paddq xmm5, xmm2
paddq xmm5, xmm3
movdqa xmm2, xmm4
pxor xmm2, xmm0
psrlq xmm2, 7
psrlq xmm4, 6
por xmm4, xmm2
pand xmm4, xmm1
paddq xmm4, xmm5
add r12, 0x40
add r10, 0xfffffffffffffffe
jne 0x180099f40
pshufd xmm2, xmm4, 0xee
paddq xmm2, xmm4
movq r10, xmm2
cmp r14, r15
je 0x180099eb3
jmp 0x18009a018
xor r10d, r10d
mov rbx, r11
shl ecx, 5
add rcx, r11
nop
movdqu xmm2, xmmword [rbx]
movdqu xmm3, xmmword [rbx + 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 r14, xmm3
add r10, r14
add rbx, 0x20
cmp rbx, rcx
jne 0x18009a020
jmp 0x180099eb3
movabs rcx, 0x101010101010101
and esi, 0xfc
mov eax, esi
mov rax, qword [r11 + rax*8]
mov r8, rax
not r8
shr r8, 7
shr rax, 6
or rax, r8
and rax, rcx
cmp ebx, 1
je 0x18009a0ec
mov r8, qword [r11 + rsi*8 + 8]
mov rdi, r8
not rdi
shr rdi, 7
shr r8, 6
or r8, rdi
and r8, rcx
add rax, r8
cmp ebx, 2
je 0x18009a0ec
mov r8, qword [r11 + rsi*8 + 0x10]
mov r11, r8
not r11
shr r11, 7
shr r8, 6
or r8, r11
and r8, rcx
add rax, r8
mov rcx, rax
and rcx, r9
shr rax, 8
and rax, r9
add rax, rcx
imul rax, rdx
shr rax, 0x30
add rax, r10
movaps xmm6, xmmword [rbp - 0x10]
add rsp, 0x10
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
pop rbp
ret