Function at 0x140016ad0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
movdqa xmmword [rsp + 0x70], xmm13
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 rbx, [rcx + 7]
and rbx, 0xfffffffffffffff8
sub rbx, rcx
cmp rbx, rdx
ja 0x140016b5e
cmp rbx, 8
ja 0x140016b5e
mov r8, rdx
sub r8, rbx
cmp r8, 8
jb 0x140016b5e
lea rdx, [rcx + rbx]
mov eax, r8d
and eax, 7
test rbx, rbx
je 0x140016cfc
cmp rbx, 4
jae 0x140016d18
xor edi, edi
jmp 0x140016e70
test rdx, rdx
je 0x140016b73
cmp rdx, 4
jae 0x140016b7a
xor eax, eax
mov rdi, rcx
jmp 0x140016cd1
xor eax, eax
jmp 0x14001732e
mov rdi, rdx
and rdi, 0xfffffffffffffffc
lea rax, [rdi - 4]
mov rbx, rax
shr rbx, 2
add rbx, 1
test rax, rax
je 0x140016d03
mov rax, rbx
and rax, 0xfffffffffffffffe
pxor xmm0, xmm0
xor ebp, ebp
movdqa xmm2, xmmword [0x14001df60]
movdqa xmm3, xmmword [0x14001b3c0]
pxor xmm1, xmm1
nop word [rax + rax]
movzx esi, word [rcx + rbp]
movd xmm4, esi
movzx esi, word [rcx + rbp + 2]
movd xmm5, esi
pcmpgtb xmm4, xmm2
punpcklbw xmm4, xmm4
pshuflw xmm4, xmm4, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm4, xmm0
pcmpgtb xmm5, xmm2
punpcklbw xmm5, xmm5
pshuflw xmm0, xmm5, 0xd4
pshufd xmm5, xmm0, 0xd4
pand xmm5, xmm3
paddq xmm5, xmm1
movzx esi, word [rcx + rbp + 4]
movd xmm0, esi
movzx esi, word [rcx + rbp + 6]
movd xmm1, esi
pcmpgtb xmm0, xmm2
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0xd4
pshufd xmm0, xmm0, 0xd4
pand xmm0, xmm3
paddq xmm0, xmm4
pcmpgtb xmm1, xmm2
punpcklbw xmm1, xmm1
pshuflw xmm1, xmm1, 0xd4
pshufd xmm1, xmm1, 0xd4
pand xmm1, xmm3
paddq xmm1, xmm5
add rbp, 8
add rax, 0xfffffffffffffffe
jne 0x140016bc0
test bl, 1
je 0x140016cb3
movzx eax, word [rcx + rbp]
movd xmm2, eax
movzx eax, word [rcx + rbp + 2]
movd xmm3, eax
movdqa xmm4, xmmword [0x14001df60]
pcmpgtb xmm2, xmm4
punpcklbw xmm2, xmm2
pshuflw xmm2, xmm2, 0xd4
pshufd xmm2, xmm2, 0xd4
movdqa xmm5, xmmword [0x14001b3c0]
pand xmm2, xmm5
paddq xmm0, xmm2
pcmpgtb xmm3, xmm4
punpcklbw xmm3, xmm3
pshuflw xmm2, xmm3, 0xd4
pshufd xmm2, xmm2, 0xd4
pand xmm2, xmm5
paddq xmm1, xmm2
paddq xmm0, xmm1
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm0
movq rax, xmm1
cmp rdi, rdx
je 0x14001732e
add rdi, rcx
add rcx, rdx
nop word cs:[rax + rax]
nop
xor edx, edx
cmp byte [rdi], 0xc0
lea rbx, [rdi + 1]
setge dl
add rax, rdx
mov rdi, rbx
cmp rbx, rcx
jne 0x140016ce0
jmp 0x14001732e
xor edi, edi
jmp 0x140016e88
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
test bl, 1
jne 0x140016c5e
jmp 0x140016cb3
mov r9, rbx
and r9, 0xfffffffffffffffc
lea rsi, [r9 - 4]
mov r10, rsi
shr r10, 2
add r10, 1
test rsi, rsi
je 0x14001736f
mov rbp, r10
and rbp, 0xfffffffffffffffe
pxor xmm0, xmm0
xor edi, edi
movdqa xmm2, xmmword [0x14001df60]
movdqa xmm3, xmmword [0x14001b3c0]
pxor xmm1, xmm1
nop dword [rax + rax]
movzx esi, word [rcx + rdi]
movd xmm4, esi
movzx esi, word [rcx + rdi + 2]
movd xmm5, esi
pcmpgtb xmm4, xmm2
punpcklbw xmm4, xmm4
pshuflw xmm4, xmm4, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm4, xmm0
pcmpgtb xmm5, xmm2
punpcklbw xmm5, xmm5
pshuflw xmm0, xmm5, 0xd4
pshufd xmm5, xmm0, 0xd4
pand xmm5, xmm3
paddq xmm5, xmm1
movzx esi, word [rcx + rdi + 4]
movd xmm0, esi
movzx esi, word [rcx + rdi + 6]
movd xmm1, esi
pcmpgtb xmm0, xmm2
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0xd4
pshufd xmm0, xmm0, 0xd4
pand xmm0, xmm3
paddq xmm0, xmm4
pcmpgtb xmm1, xmm2
punpcklbw xmm1, xmm1
pshuflw xmm1, xmm1, 0xd4
pshufd xmm1, xmm1, 0xd4
pand xmm1, xmm3
paddq xmm1, xmm5
add rdi, 8
add rbp, 0xfffffffffffffffe
jne 0x140016d60
test r10b, 1
je 0x140016e54
movzx ebp, word [rcx + rdi]
movd xmm2, ebp
movzx ebp, word [rcx + rdi + 2]
movd xmm3, ebp
movdqa xmm4, xmmword [0x14001df60]
pcmpgtb xmm2, xmm4
punpcklbw xmm2, xmm2
pshuflw xmm2, xmm2, 0xd4
pshufd xmm2, xmm2, 0xd4
movdqa xmm5, xmmword [0x14001b3c0]
pand xmm2, xmm5
paddq xmm0, xmm2
pcmpgtb xmm3, xmm4
punpcklbw xmm3, xmm3
pshuflw xmm2, xmm3, 0xd4
pshufd xmm2, xmm2, 0xd4
pand xmm2, xmm5
paddq xmm1, xmm2
paddq xmm0, xmm1
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm0
movq rdi, xmm1
cmp rbx, r9
je 0x140016e88
add rcx, r9
nop
xor ebp, ebp
cmp byte [rcx], 0xc0
lea rbx, [rcx + 1]
setge bpl
add rdi, rbp
mov rcx, rbx
cmp rbx, rdx
jne 0x140016e70
test rax, rax
je 0x140016f15
mov rcx, r8
and rcx, 0xfffffffffffffff8
xor esi, esi
cmp byte [rdx + rcx], 0xc0
setge sil
cmp eax, 1
je 0x140016f17
xor ebp, ebp
cmp byte [rdx + rcx + 1], 0xc0
setge bpl
add rsi, rbp
cmp eax, 2
je 0x140016f17
xor ebp, ebp
cmp byte [rdx + rcx + 2], 0xc0
setge bpl
add rsi, rbp
cmp eax, 3
je 0x140016f17
xor ebp, ebp
cmp byte [rdx + rcx + 3], 0xc0
setge bpl
add rsi, rbp
cmp eax, 4
je 0x140016f17
xor ebp, ebp
cmp byte [rdx + rcx + 4], 0xc0
setge bpl
add rsi, rbp
cmp eax, 5
je 0x140016f17
xor ebp, ebp
cmp byte [rdx + rcx + 5], 0xc0
setge bpl
add rsi, rbp
cmp eax, 6
je 0x140016f17
xor eax, eax
cmp byte [rdx + rcx + 6], 0xc0
setge al
add rsi, rax
jmp 0x140016f17
xor esi, esi
add rsi, rdi
shr r8, 3
movabs r10, 0xff00ff00ff00ff
movabs r9, 0x1000100010001
movabs r13, 0x7ffffffffffffff
movabs r14, 0x101010101010101
pcmpeqd xmm9, xmm9
movdqa xmm8, xmmword [0x14001df80]
jmp 0x140016f8d
xor esi, esi
lea rdx, [r15 + r12*8]
sub r8, r12
mov rcx, rsi
and rcx, r10
shr rsi, 8
and rsi, r10
add rsi, rcx
imul rsi, r9
shr rsi, 0x30
add rsi, rax
test r11, r11
jne 0x140017229
mov rax, rsi
test r8, r8
je 0x14001732e
mov r15, rdx
cmp r8, 0xc0
mov r12d, 0xc0
cmovb r12, r8
mov r11d, r12d
and r11d, 3
mov rbx, r12
shr rbx, 2
mov rdx, rbx
shl rdx, 5
je 0x140016f60
add rbx, 0xffffffffffffffff
and rbx, r13
cmp rbx, 3
jae 0x140016fe0
xor esi, esi
mov rdi, r15
jmp 0x1400171a6
mov rcx, r13
add rbx, 1
mov r13, rbx
and r13, 0xfffffffffffffffc
mov rdi, r13
shl rdi, 5
add rdi, r15
lea rsi, [r15 + 0x40]
pxor xmm5, xmm5
mov rbp, r13
pxor xmm4, xmm4
nop word [rax + rax]
movdqu xmm12, xmmword [rsi - 0x40]
movdqu xmm6, xmmword [rsi - 0x20]
movdqa xmm13, xmm12
punpcklqdq xmm13, xmm6
movdqa xmm0, xmm13
pxor xmm0, xmm9
psrlq xmm0, 7
psrlq xmm13, 6
por xmm13, xmm0
pand xmm13, xmm8
paddq xmm13, xmm5
movdqu xmm5, xmmword [rsi - 0x30]
movdqu xmm10, xmmword [rsi - 0x10]
movdqu xmm11, xmmword [rsi + 0x30]
movdqu xmm7, xmmword [rsi + 0x20]
movdqu xmm3, xmmword [rsi]
movdqa xmm1, xmm3
punpcklqdq xmm1, xmm7
movdqa xmm0, xmm1
pxor xmm0, xmm9
psrlq xmm0, 7
psrlq xmm1, 6
por xmm1, xmm0
pand xmm1, xmm8
paddq xmm1, xmm4
movdqu xmm4, xmmword [rsi + 0x10]
punpckhqdq xmm12, xmm6
punpckhqdq xmm3, xmm7
movdqa xmm7, xmm5
punpcklqdq xmm7, xmm10
movdqa xmm6, xmm4
punpcklqdq xmm6, xmm11
punpckhqdq xmm5, xmm10
punpckhqdq xmm4, xmm11
movdqa xmm0, xmm12
pxor xmm0, xmm9
movdqa xmm2, xmm3
pxor xmm2, xmm9
psrlq xmm0, 7
psrlq xmm2, 7
psrlq xmm12, 6
por xmm12, xmm0
psrlq xmm3, 6
por xmm3, xmm2
pand xmm12, xmm8
pand xmm3, xmm8
movdqa xmm0, xmm7
pxor xmm0, xmm9
movdqa xmm2, xmm6
pxor xmm2, xmm9
psrlq xmm0, 7
psrlq xmm2, 7
psrlq xmm7, 6
por xmm7, xmm0
psrlq xmm6, 6
por xmm6, xmm2
pand xmm7, xmm8
paddq xmm7, xmm12
paddq xmm7, xmm13
pand xmm6, xmm8
paddq xmm6, xmm3
paddq xmm6, xmm1
movdqa xmm0, xmm5
pxor xmm0, xmm9
movdqa xmm1, xmm4
pxor xmm1, xmm9
psrlq xmm0, 7
psrlq xmm1, 7
psrlq xmm5, 6
por xmm5, xmm0
psrlq xmm4, 6
por xmm4, xmm1
pand xmm5, xmm8
paddq xmm5, xmm7
pand xmm4, xmm8
paddq xmm4, xmm6
sub rsi, 0xffffffffffffff80
add rbp, 0xfffffffffffffffc
jne 0x140017010
paddq xmm4, xmm5
pshufd xmm0, xmm4, 0xee
paddq xmm0, xmm4
movq rsi, xmm0
cmp rbx, r13
mov r13, rcx
je 0x140016f62
add rdx, r15
nop dword [rax]
mov rbp, qword [rdi]
mov rbx, qword [rdi + 8]
mov rcx, rbp
not rcx
shr rcx, 7
shr rbp, 6
or rbp, rcx
and rbp, r14
add rbp, rsi
mov rcx, rbx
not rcx
shr rcx, 7
shr rbx, 6
or rbx, rcx
and rbx, r14
add rbx, rbp
mov rcx, qword [rdi + 0x10]
mov rsi, rcx
not rsi
shr rsi, 7
shr rcx, 6
or rcx, rsi
and rcx, r14
add rcx, rbx
mov rsi, qword [rdi + 0x18]
mov rbx, rsi
not rbx
shr rbx, 7
shr rsi, 6
or rsi, rbx
and rsi, r14
add rsi, rcx
add rdi, 0x20
cmp rdi, rdx
jne 0x1400171b0
jmp 0x140016f62
and r12d, 0xfc
lea r8, [r15 + r12*8]
lea rax, [r11 - 1]
movabs rdi, 0x1fffffffffffffff
and rdi, rax
cmp rdi, 3
jae 0x140017255
xor eax, eax
mov rdx, r8
jmp 0x1400172e9
add rdi, 1
mov rbx, rdi
and rbx, 0xfffffffffffffffc
lea rdx, [r8 + rbx*8]
lea rax, [r15 + r12*8]
add rax, 0x10
pxor xmm0, xmm0
xor ebp, ebp
pcmpeqd xmm2, xmm2
pxor xmm1, xmm1
nop word [rax + rax]
movdqu xmm3, xmmword [rax + rbp*8 - 0x10]
movdqu xmm4, xmmword [rax + rbp*8]
movdqa xmm5, xmm3
pxor xmm5, xmm2
movdqa xmm6, xmm4
pxor xmm6, xmm2
psrlq xmm5, 7
psrlq xmm6, 7
psrlq xmm3, 6
por xmm3, xmm5
psrlq xmm4, 6
por xmm4, xmm6
pand xmm3, xmm8
paddq xmm0, xmm3
pand xmm4, xmm8
paddq xmm1, xmm4
add rbp, 4
cmp rbx, rbp
jne 0x140017280
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq rax, xmm0
cmp rdi, rbx
je 0x140017313
lea rbp, [r8 + r11*8]
nop dword [rax]
mov rcx, qword [rdx]
add rdx, 8
mov rbx, rcx
not rbx
shr rbx, 7
shr rcx, 6
or rcx, rbx
and rcx, r14
add rax, rcx
cmp rdx, rbp
jne 0x1400172f0
mov rcx, rax
and rcx, r10
shr rax, 8
and rax, r10
add rax, rcx
imul rax, r9
shr rax, 0x30
add rax, rsi
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]
movaps xmm13, xmmword [rsp + 0x70]
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
test r10b, 1
jne 0x140016dff
jmp 0x140016e54