Function at 0x18008e600
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 + 0x40], rdx
mov r14, qword [rcx + 0x18]
cmp r14, 0xffffffffffffffff
je 0x18008e766
mov rbx, rcx
mov rsi, qword [rcx + 8]
lea r12, [rsi + 1]
mov rax, r12
shr rax, 3
mov rdi, r12
and rdi, 0xfffffffffffffff8
sub rdi, rax
cmp rsi, 8
cmovb rdi, rsi
mov rax, rdi
shr rax, 1
cmp r14, rax
jae 0x18008e68c
mov r13, qword [rbx]
mov rcx, r12
shr rcx, 4
mov rdx, r12
xor rdx, 0xfffffffffffffff0
mov r8, r12
or r8, 0xf
xor eax, eax
test r8, rdx
setne al
add rax, rcx
je 0x18008e7fb
cmp rax, 1
jne 0x18008e772
xor edx, edx
jmp 0x18008e7dd
cmp r14, rdi
cmova rdi, r14
cmp rdi, 7
jae 0x18008e6bc
xor eax, eax
cmp rdi, 3
setae al
lea r13, [rax*4 + 4]
mov ecx, 0x38
mov rax, r13
mul rcx
jno 0x18008e71f
jmp 0x18008e766
movabs rax, 0x1ffffffffffffffe
cmp rdi, rax
ja 0x18008e766
shl rdi, 3
mov eax, edi
and eax, 8
or rdi, 8
add rdi, rax
movabs rcx, 0x2492492492492493
mov rax, rdi
mul rcx
sub rdi, rdx
shr rdi, 1
add rdi, rdx
shr rdi, 2
dec rdi
bsr rcx, rdi
not ecx
mov r13, 0xffffffffffffffff
shr r13, cl
inc r13
mov ecx, 0x38
mov rax, r13
mul rcx
jo 0x18008e766
mov rbp, rax
cmp rax, 0xfffffffffffffff0
ja 0x18008e766
add rbp, 0xf
and rbp, 0xfffffffffffffff0
movabs rax, 0x63f52c06907c1d8d
mov rcx, r13
sub rcx, rax
add rcx, rax
add rcx, 0x10
mov rdi, rbp
add rdi, rcx
jb 0x18008e766
movabs rax, 0x8000000000000001
add rax, 0xffffffffffffffef
cmp rdi, rax
jbe 0x18008eb2b
mov cl, 1
call fcn.180070a30
jmp 0x18008eb1a
mov rcx, rax
not rcx
movabs rdx, 0x1ffffffffffffffe
or rdx, rcx
lea rcx, [rax + rdx]
inc rcx
xor r9d, r9d
movdqa xmm0, xmmword [0x1800957d0]
xor r8d, r8d
nop word [rax + rax]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [r13 + r9]
por xmm1, xmm0
movdqa xmmword [r13 + r9], xmm1
lea rdx, [r9 + 0x20]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [r13 + r9 + 0x10]
por xmm1, xmm0
movdqa xmmword [r13 + r9 + 0x10], xmm1
add r8, 2
mov r9, rdx
add rcx, 0xfffffffffffffffe
jne 0x18008e7a0
test al, 1
je 0x18008e7fb
pxor xmm0, xmm0
pcmpgtb xmm0, xmmword [r13 + rdx]
por xmm0, xmmword [0x1800957d0]
movdqa xmmword [r13 + rdx], xmm0
mov qword [rsp + 0x28], r14
cmp r12, 0x10
jae 0x18008e822
lea rcx, [r13 + 0x10]
mov rdx, r13
mov r8, r12
call fcn.18008d9a0
cmp rsi, 0xffffffffffffffff
jne 0x18008e82f
xor ecx, ecx
jmp 0x18008eb07
movdqu xmm0, xmmword [r13]
movdqu xmmword [r13 + r12], xmm0
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x38], rbx
lea rax, [r13 - 0x38]
mov qword [rsp + 0x20], rax
xor ebp, ebp
mov r12, r13
jmp 0x18008e885
shr rax, 0x39
lea rcx, [rbp - 0x10]
not rcx
mov rdx, rsi
not rdx
or rdx, rcx
not rdx
mov byte [r13 + rbp], al
mov byte [rdx + r13 + 0x10], al
lea rax, [rbp + 1]
add r12, 0xffffffffffffffc8
cmp rbp, rsi
mov rbp, rax
je 0x18008eafd
cmp byte [r13 + rbp], 0x80
jne 0x18008e871
mov eax, ebp
and eax, 0x37
mov rcx, rbp
not rcx
imul rdx, rcx, 0x38
and rcx, 0xffffffffffffffc8
imul rcx, rax
mov rax, rbp
and rax, 0xffffffffffffffc8
mov r8, rbp
or r8, 0xffffffffffffffc8
imul r8, rax
add r8, rcx
mov rax, r8
movabs rcx, 0x7fffffffffffffc8
and rax, rcx
lea rbx, [r8 + r13]
xor r8, 0xffffffffffffffc8
lea rdi, [r8 + rax*2]
add rdi, r13
lea r15, [rdx + r13]
mov rax, qword [rsp + 0x20]
lea r14, [rdx + rax]
add r14, 0x38
jmp 0x18008e95c
mov rax, qword [r15]
mov rdx, qword [rcx]
mov qword [r15], rdx
mov qword [rcx], rax
mov rax, qword [r15 + 8]
mov rdx, qword [rcx + 8]
mov qword [r15 + 8], rdx
mov qword [rcx + 8], rax
mov rax, qword [r15 + 0x10]
mov rdx, qword [rcx + 0x10]
mov qword [r15 + 0x10], rdx
mov qword [rcx + 0x10], rax
mov rax, qword [r15 + 0x18]
mov rdx, qword [rcx + 0x18]
mov qword [r15 + 0x18], rdx
mov qword [rcx + 0x18], rax
mov rax, qword [r15 + 0x20]
mov rdx, qword [rcx + 0x20]
mov qword [r15 + 0x20], rdx
mov qword [rcx + 0x20], rax
mov rax, qword [r15 + 0x28]
mov rdx, qword [rcx + 0x28]
mov qword [r15 + 0x28], rdx
mov qword [rcx + 0x28], rax
mov rax, qword [r15 + 0x30]
mov rdx, qword [rcx + 0x30]
mov qword [r15 + 0x30], rdx
mov qword [rcx + 0x30], rax
mov rcx, qword [rsp + 0x40]
mov rdx, r14
call fcn.180032140
mov rcx, rax
and rcx, rsi
movdqu xmm0, xmmword [r13 + rcx]
pmovmskb r9d, xmm0
mov r8, rcx
test r9d, r9d
jne 0x18008e9b6
mov r8, rcx
xor edx, edx
nop dword [rax + rax]
mov r9d, edx
and r9d, 0x10
xor rdx, 0x10
lea rdx, [rdx + r9*2]
add r8, rdx
and r8, rsi
movdqu xmm0, xmmword [r13 + r8]
pmovmskb r9d, xmm0
test r9d, r9d
je 0x18008e990
tzcnt edx, r9d
add rdx, r8
and rdx, rsi
cmp byte [r13 + rdx], 0
js 0x18008e9d7
movdqa xmm0, xmmword [r13]
pmovmskb edx, xmm0
tzcnt edx, edx
movabs r9, 0x42e681f38cbd56cc
lea r8, [r9 + rbp]
sub r8, rcx
sub r8, r9
mov r9, rdx
sub r9, rcx
xor r9, r8
and r9, rsi
cmp r9, 0x10
jb 0x18008e850
mov r8, rdx
not r8
imul rcx, r8, 0x38
add rcx, r13
movzx r9d, byte [r13 + rdx]
shr rax, 0x39
lea r10, [rdx - 0x10]
and r10, rsi
mov byte [r13 + rdx], al
mov byte [r10 + r13 + 0x10], al
cmp r9b, 0xff
je 0x18008eac0
and r8, 0xffffffffffffffc8
mov eax, edx
and eax, 0x37
imul rax, r8
mov r8, rdx
and r8, 0xffffffffffffffc8
mov r9, rdx
or r9, 0xffffffffffffffc8
imul r9, r8
add r9, r13
add r9, rax
cmp rdi, r9
jae 0x18008e8f0
cmp rcx, rbx
jae 0x18008e8f0
imul rax, rdx, 0xffffffffffffffc8
add rax, r13
mov rcx, 0xffffffffffffffc8
nop dword [rax + rax]
movzx edx, byte [r12 + rcx]
movzx r8d, byte [rax + rcx]
mov byte [r12 + rcx], r8b
mov byte [rax + rcx], dl
movzx edx, byte [r12 + rcx + 1]
movzx r8d, byte [rax + rcx + 1]
mov byte [r12 + rcx + 1], r8b
mov byte [rax + rcx + 1], dl
add rcx, 2
jne 0x18008ea80
jmp 0x18008e95c
lea rax, [rbp - 0x10]
and rax, rsi
mov byte [r13 + rbp], 0xff
mov byte [rax + r13 + 0x10], 0xff
mov rax, qword [r15 + 0x30]
mov qword [rcx + 0x30], rax
movdqu xmm0, xmmword [r15]
movdqu xmm1, xmmword [r15 + 0x10]
movups xmm2, xmmword [r15 + 0x20]
movups xmmword [rcx + 0x20], xmm2
movdqu xmmword [rcx + 0x10], xmm1
movdqu xmmword [rcx], xmm0
jmp 0x18008e871
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
mov qword [rsp + 0x20], rcx
movzx eax, byte [0x1800b4b10]
mov edx, 0x10
mov rcx, rdi
call fcn.180034a30
test rax, rax
je 0x18008eddc
mov r15, rax
mov qword [rsp + 0x48], r12
movabs rax, 0x34d141f6ea20b338
mov rdi, rax
not rdi
add rdi, rax
add rdi, r13
mov rdx, r13
shr rdx, 3
mov eax, edx
not eax
mov rcx, rdx
and rcx, 0xfffffffffffffff8
and eax, 7
imul rax, rcx
mov ecx, edx
and ecx, 7
or rdx, 7
imul rdx, rcx
add rdx, rax
cmp r13, 9
cmovb rdx, rdi
mov qword [rsp + 0x50], rdx
add r15, rbp
mov rcx, r15
mov dl, 0xff
mov r8, qword [rsp + 0x20]
call fcn.18008e120
mov qword [rsp + 0x38], rbx
mov rax, qword [rbx]
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], r14
test r14, r14
je 0x18008ed61
mov r12, qword [rsp + 0x20]
movdqa xmm0, xmmword [r12]
pmovmskb eax, xmm0
lea ebp, [rax + rax]
not ebp
add ebp, eax
lea rax, [r12 - 0x38]
mov qword [rsp + 0x30], rax
xor r13d, r13d
mov r14, qword [rsp + 0x28]
jmp 0x18008ec98
mov edx, ebp
neg edx
not ebp
or ebp, edx
not ebp
dec r14
shr rax, 0x39
lea rdx, [rcx - 0x10]
and rdx, rdi
mov r8d, edx
and r8d, 0x10
xor rdx, 0x10
lea rdx, [rdx + r8*2]
mov byte [r15 + rcx], al
mov byte [r15 + rdx], al
not rbx
imul rax, rbx, 0x38
mov rdx, rcx
not rdx
and ecx, 0x38
mov r8, rdx
and r8, 0xffffffffffffffc7
imul r8, rcx
mov ecx, edx
and ecx, 0x38
or rdx, 0x38
imul rdx, rcx
add rdx, r8
mov r8, qword [rsp + 0x20]
mov rcx, qword [r8 + rax + 0x30]
mov qword [r15 + rdx + 0x30], rcx
movdqu xmm0, xmmword [r8 + rax]
movdqu xmm1, xmmword [r8 + rax + 0x10]
movups xmm2, xmmword [r8 + rax + 0x20]
movups xmmword [r15 + rdx + 0x20], xmm2
movdqu xmmword [r15 + rdx + 0x10], xmm1
movdqu xmmword [r15 + rdx], xmm0
test r14, r14
je 0x18008ed61
test bp, bp
jne 0x18008ecbd
nop dword [rax]
movdqa xmm0, xmmword [r12 + 0x10]
add r12, 0x10
pmovmskb ebp, xmm0
add r13, 0x10
cmp ebp, 0xffff
je 0x18008eca0
not ebp
tzcnt ebx, ebp
add rbx, r13
mov rax, rbx
neg rax
imul rdx, rax, 0x38
add rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x40]
call fcn.180032140
mov rdx, rax
and rdx, rdi
movdqu xmm0, xmmword [r15 + rdx]
pmovmskb r9d, xmm0
test r9d, r9d
jne 0x18008ed39
mov ecx, 0x10
xor r8d, r8d
nop dword [rax + rax]
add r8, 0x10
mov r9, rcx
and r9, rdx
xor rdx, rcx
lea rdx, [rdx + r9*2]
mov r9, rdx
not r9
or r9, rdi
lea r10, [rdx + r9]
add rdx, r9
inc rdx
movdqu xmm0, xmmword [r15 + r10 + 1]
pmovmskb r9d, xmm0
add rcx, 0x10
test r9d, r9d
je 0x18008ed00
tzcnt ecx, r9d
add rcx, rdx
and rcx, rdi
cmp byte [r15 + rcx], 0
js 0x18008ec00
movdqa xmm0, xmmword [r15]
pmovmskb ecx, xmm0
tzcnt ecx, ecx
jmp 0x18008ec00
movabs rax, 0x2ca55b4e44026a42
mov rcx, qword [rsp + 0x50]
add rcx, rax
sub rcx, qword [rsp + 0x28]
sub rcx, rax
mov rax, qword [rsp + 0x38]
mov qword [rax], r15
mov qword [rax + 8], rdi
mov qword [rax + 0x10], rcx
test rsi, rsi
je 0x18008edf0
mov ecx, 0x38
mov rax, qword [rsp + 0x48]
mul rcx
add rax, 0xf
and rax, 0xfffffffffffffff0
add rsi, 0x11
mov rcx, rax
and rcx, rsi
or rsi, rax
add rsi, rcx
je 0x18008edf0
mov rcx, qword [rsp + 0x20]
sub rcx, rax
mov r8d, 0x10
mov rdx, rsi
call fcn.180034a40
movabs rax, 0x8000000000000001
jmp 0x18008eb1a
mov edx, 0x10
mov cl, 1
mov r8, rdi
call fcn.180070a40
jmp 0x18008eb1a
movabs rax, 0x8000000000000001
jmp 0x18008eb1a