Function at 0x18008ee00
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
mov qword [rsp + 0x50], rdx
mov r15, qword [rcx + 0x18]
cmp r15, 0xffffffffffffffff
je 0x18008ef5f
mov rbx, rcx
mov rsi, qword [rcx + 8]
lea r14, [rsi + 1]
mov rax, r14
shr rax, 3
mov rdi, r14
and rdi, 0xfffffffffffffff8
sub rdi, rax
cmp rsi, 8
cmovb rdi, rsi
mov rax, rdi
shr rax, 1
cmp r15, rax
jae 0x18008ee92
mov qword [rsp + 0x28], r15
mov r15, qword [rbx]
mov rcx, r14
shr rcx, 4
mov edx, r14d
not edx
or rdx, 0xfffffffffffffff0
xor eax, eax
cmp rdx, 0xffffffffffffffff
setne al
add rax, rcx
je 0x18008eff5
mov ecx, eax
and ecx, 1
cmp rax, 1
jne 0x18008ef6b
xor edx, edx
jmp 0x18008efd8
cmp r15, rdi
cmova rdi, r15
cmp rdi, 7
jae 0x18008eec2
xor eax, eax
cmp rdi, 3
setae al
lea r13, [rax*4 + 4]
mov ecx, 0x30
mov rax, r13
mul rcx
jno 0x18008ef1d
jmp 0x18008ef5f
movabs rax, 0x1ffffffffffffffe
cmp rdi, rax
ja 0x18008ef5f
lea rcx, [rdi*8 + 8]
movabs rdx, 0x2492492492492493
mov rax, rcx
mul rdx
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 2
dec rcx
bsr rcx, rcx
not ecx
mov r13, 0xffffffffffffffff
shr r13, cl
inc r13
mov ecx, 0x30
mov rax, r13
mul rcx
jo 0x18008ef5f
mov rbp, rax
mov eax, r13d
and eax, 0x10
mov rdi, r13
or rdi, 0x10
add rdi, rax
mov rax, rbp
add rax, rdi
jb 0x18008ef5f
movabs rdx, 0x8000000000000001
mov rax, rbp
and rax, rdi
mov rcx, rbp
xor rcx, rdi
lea rcx, [rcx + rax*2]
lea rax, [rdx - 0x11]
cmp rcx, rax
jbe 0x18008f372
mov cl, 1
call fcn.180070a30
jmp 0x18008f361
movabs rdx, 0x1ffffffffffffffe
and rax, rdx
xor edx, edx
movdqa xmm0, xmmword [0x1800957d0]
xor r8d, r8d
nop word cs:[rax + rax]
mov r9, rdx
or r9, 0x10
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [r15 + rdx]
por xmm1, xmm0
movdqa xmmword [r15 + rdx], xmm1
mov r10d, edx
and r10d, 0x20
xor rdx, 0x20
lea rdx, [rdx + r10*2]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [r15 + r9]
por xmm1, xmm0
movdqa xmmword [r15 + r9], xmm1
add r8, 2
add rax, 0xfffffffffffffffe
jne 0x18008ef90
test rcx, rcx
je 0x18008eff5
pxor xmm0, xmm0
pcmpgtb xmm0, xmmword [r15 + rdx]
por xmm0, xmmword [0x1800957d0]
movdqa xmmword [r15 + rdx], xmm0
cmp r14, 0x10
jae 0x18008f017
lea rcx, [r15 + 0x10]
mov rdx, r15
mov r8, r14
call fcn.18008d9a0
cmp rsi, 0xffffffffffffffff
jne 0x18008f022
xor ecx, ecx
jmp 0x18008f34e
movdqu xmm0, xmmword [r15]
movdqu xmmword [r15 + r14], xmm0
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x38], rbx
movabs r13, 0x3b61ccaee239b080
lea rax, [r15 - 0x30]
mov qword [rsp + 0x40], rax
lea rdi, [r15 - 0x2e]
lea rax, [r15 + 2]
mov qword [rsp + 0x48], rax
xor ebx, ebx
jmp 0x18008f081
shr rax, 0x39
lea rcx, [rbx - 0x10]
mov rdx, rsi
xor rdx, rcx
not rdx
and rdx, rcx
mov byte [r15 + rbx], al
mov byte [rdx + r15 + 0x10], al
lea rax, [rbx + 1]
add rdi, 0xffffffffffffffd0
cmp rbx, rsi
mov rbx, rax
je 0x18008f344
cmp byte [r15 + rbx], 0x80
jne 0x18008f06d
mov rax, rbx
shl rax, 4
lea rax, [rax + rax*2]
mov rcx, r15
sub rcx, rax
mov qword [rsp + 0x20], rcx
neg rax
lea rbp, [r15 + rax]
add rbp, 0xffffffffffffffd0
mov rax, rbx
not rax
lea r12, [rax + rax*2]
shl r12, 4
add r12, r15
mov rax, rbx
neg rax
lea r14, [rax + rax*2]
shl r14, 4
add r14, qword [rsp + 0x40]
jmp 0x18008f112
movups xmm0, xmmword [r12]
movups xmm1, xmmword [r8]
movups xmmword [r12], xmm1
movups xmmword [r8], xmm0
movups xmm0, xmmword [r12 + 0x10]
movups xmm1, xmmword [r8 + 0x10]
movups xmmword [r12 + 0x10], xmm1
movups xmmword [r8 + 0x10], xmm0
movdqu xmm0, xmmword [r12 + 0x20]
movdqu xmm1, xmmword [r8 + 0x20]
movdqu xmmword [r12 + 0x20], xmm1
movdqu xmmword [r8 + 0x20], xmm0
mov rcx, qword [rsp + 0x50]
mov rdx, r14
call fcn.180032140
mov rdx, rax
and rdx, rsi
movdqu xmm0, xmmword [r15 + rdx]
pmovmskb r9d, xmm0
mov rcx, rdx
test r9d, r9d
jne 0x18008f16e
mov r8d, 0x10
mov rcx, rdx
xor r10d, r10d
nop word cs:[rax + rax]
add r10, 0x10
add rcx, r8
and rcx, rsi
movdqu xmm0, xmmword [r15 + rcx]
pmovmskb r9d, xmm0
add r8, 0x10
test r9d, r9d
je 0x18008f150
tzcnt r8d, r9d
add r8, rcx
not r8
mov rcx, rsi
not rcx
or rcx, r8
not rcx
cmp byte [r15 + rcx], 0
js 0x18008f199
movdqa xmm0, xmmword [r15]
pmovmskb ecx, xmm0
tzcnt ecx, ecx
mov r8, rbx
movabs r9, 0x281c951d9348ffab
sub r8, r9
sub r8, rdx
add r8, r9
mov r9, rcx
sub r9, rdx
mov rdx, r13
not rdx
xor rdx, r13
and r9, rdx
and rdx, r8
xor rdx, r13
xor rdx, r13
xor rdx, r9
mov r8, rdx
xor r8, rsi
not r8
or rdx, rsi
and rdx, r8
cmp rdx, 0x10
jb 0x18008f050
movabs rdx, 0xba5649a4110bf85b
mov r8, rdx
not r8
xor r8, rdx
mov rdx, r8
and rdx, rcx
xor rdx, r8
mov r8d, edx
not r8d
mov r9, rdx
and r9, 0xffffffffffffffcf
and r8d, 0x30
imul r8, r9
mov r9d, edx
and r9d, 0x30
or rdx, 0x30
imul rdx, r9
add rdx, r8
lea r8, [r15 + rdx]
movzx r9d, byte [r15 + rcx]
shr rax, 0x39
mov r10, rcx
and r10, 0xfffffffffffffff0
mov r11, rcx
or r11, 0xfffffffffffffff0
add r11, r10
mov r10, rsi
xor r10, r11
not r10
and r10, r11
mov byte [r15 + rcx], al
mov byte [r10 + r15 + 0x10], al
cmp r9b, 0xff
je 0x18008f300
mov eax, ecx
and eax, 0x2f
mov r9, rcx
not r9
and r9, 0xffffffffffffffd0
imul r9, rax
mov rax, rcx
and rax, 0xffffffffffffffd0
or rcx, 0xffffffffffffffd0
imul rcx, rax
add rcx, r15
add rcx, r9
cmp rbp, rcx
jae 0x18008f0d0
cmp r8, qword [rsp + 0x20]
jae 0x18008f0d0
add rdx, qword [rsp + 0x48]
xor eax, eax
nop dword [rax]
movzx ecx, byte [rdi + rax - 2]
movzx r8d, byte [rdx + rax - 2]
mov byte [rdi + rax - 2], r8b
mov byte [rdx + rax - 2], cl
movzx ecx, byte [rdi + rax - 1]
movzx r8d, byte [rdx + rax - 1]
mov byte [rdi + rax - 1], r8b
mov byte [rdx + rax - 1], cl
movzx ecx, byte [rdi + rax]
movzx r8d, byte [rdx + rax]
mov byte [rdi + rax], r8b
mov byte [rdx + rax], cl
add rax, 3
cmp rax, 0x30
jne 0x18008f2b0
jmp 0x18008f112
lea rax, [rbx - 0x10]
not rax
or rax, rsi
add rax, rbx
add rax, 0xfffffffffffffff0
mov byte [r15 + rbx], 0xff
mov byte [r15 + rax + 0x11], 0xff
movdqu xmm0, xmmword [r12]
movdqu xmm1, xmmword [r12 + 0x10]
movups xmm2, xmmword [r12 + 0x20]
movups xmmword [r8 + 0x20], xmm2
movdqu xmmword [r8 + 0x10], xmm1
movdqu xmmword [r8], xmm0
jmp 0x18008f06d
mov rbx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
movabs rax, 0x8000000000000001
sub rcx, qword [rsp + 0x28]
mov qword [rbx + 0x10], rcx
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, byte [0x1800b4b10]
mov edx, 0x10
mov qword [rsp + 0x20], rcx
call fcn.180034a30
test rax, rax
je 0x18008f5ec
mov r12, rax
mov qword [rsp + 0x40], r14
movabs rax, 0xbe71e00bc1fcc5d6
mov r14, rbx
mov rbx, rax
not rbx
add rbx, rax
add rbx, r13
mov rax, r13
shr rax, 3
mov rcx, r13
and rcx, 0xfffffffffffffff8
sub rcx, rax
cmp r13, 9
cmovb rcx, rbx
mov qword [rsp + 0x30], rcx
add r12, rbp
mov rcx, r12
mov dl, 0xff
mov r8, rdi
call fcn.18008e120
mov qword [rsp + 0x38], r14
mov rax, qword [r14]
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], r15
test r15, r15
je 0x18008f58a
mov r13, qword [rsp + 0x20]
movdqa xmm0, xmmword [r13]
pmovmskb edi, xmm0
not edi
lea rax, [r13 - 0x30]
mov qword [rsp + 0x48], rax
xor ebp, ebp
mov r15, qword [rsp + 0x28]
jmp 0x18008f4c9
mov edx, edi
neg edx
not edi
or edi, edx
not edi
dec r15
shr rax, 0x39
lea rdx, [rcx - 0x10]
and rdx, rbx
mov r8d, edx
and r8d, 0x10
xor rdx, 0x10
lea rdx, [rdx + r8*2]
mov byte [r12 + rcx], al
mov byte [r12 + rdx], al
lea rax, [r14 + r14]
not rax
add rax, r14
mov edx, eax
not edx
mov r8, rax
and r8, 0xffffffffffffffcf
and edx, 0x30
imul rdx, r8
mov r8d, eax
and r8d, 0x30
or rax, 0x30
imul rax, r8
add rax, rdx
not rcx
lea rcx, [rcx + rcx*2]
shl rcx, 4
mov rdx, qword [rsp + 0x20]
movdqu xmm0, xmmword [rdx + rax]
movdqu xmm1, xmmword [rdx + rax + 0x10]
movups xmm2, xmmword [rdx + rax + 0x20]
movups xmmword [r12 + rcx + 0x20], xmm2
movdqu xmmword [r12 + rcx + 0x10], xmm1
movdqu xmmword [r12 + rcx], xmm0
test r15, r15
je 0x18008f58a
test di, di
jne 0x18008f4ec
nop
movdqa xmm0, xmmword [r13 + 0x10]
add r13, 0x10
pmovmskb edi, xmm0
add rbp, 0x10
cmp edi, 0xffff
je 0x18008f4d0
not edi
tzcnt r14d, edi
add r14, rbp
mov rax, r14
neg rax
lea rdx, [rax + rax*2]
shl rdx, 4
add rdx, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x50]
call fcn.180032140
mov r8, rax
not r8
mov rdx, rbx
not rdx
or r8, rdx
not r8
movdqu xmm0, xmmword [r12 + r8]
pmovmskb ecx, xmm0
test ecx, ecx
jne 0x18008f55c
mov r9d, 0x10
xor r10d, r10d
nop word [rax + rax]
add r10, 0x10
add r8, r9
and r8, rbx
movdqu xmm0, xmmword [r12 + r8]
pmovmskb ecx, xmm0
add r9, 0x10
test ecx, ecx
je 0x18008f540
tzcnt ecx, ecx
add rcx, r8
not rcx
or rcx, rdx
not rcx
cmp byte [r12 + rcx], 0
js 0x18008f430
movdqa xmm0, xmmword [r12]
pmovmskb ecx, xmm0
tzcnt ecx, ecx
jmp 0x18008f430
mov rcx, qword [rsp + 0x30]
sub rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x38]
mov qword [rax], r12
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rcx
test rsi, rsi
mov rax, qword [rsp + 0x40]
je 0x18008f602
mov ecx, 0x30
mul rcx
mov ecx, esi
and ecx, 0x11
or rsi, 0x11
add rsi, rcx
add rsi, rax
je 0x18008f602
mov rcx, qword [rsp + 0x20]
sub rcx, rax
mov r8d, 0x10
mov rdx, rsi
call fcn.180034a40
movabs rax, 0x8000000000000001
jmp 0x18008f361
mov edx, 0x10
mov cl, 1
mov r8, qword [rsp + 0x20]
call fcn.180070a40
jmp 0x18008f361
movabs rax, 0x8000000000000001
jmp 0x18008f361