Function at 0x18006ea00
Capabilities:
Encode data using xor
Hash data using sha512

Disassembly:
mov r11, rsp
mov qword [r11 + 0x20], r9
mov qword [r11 + 0x18], r8
mov qword [r11 + 0x10], rdx
mov qword [r11 + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x48
mov rbx, qword [r11 + 0x48]
mov r12d, 1
mov r15, qword [r11 + 0x40]
xor esi, esi
mov edi, 2
mov qword [rsp + 0xb8], r12
mov ebp, esi
mov qword [rsp + 0x98], r12
lea rax, [rbx + rbx*2]
mov r13d, r12d
shl rax, 2
mov r14, rax
mov qword [rsp + 0x30], rax
imul r14, r15
shl r14, 3
mov rcx, r14
call fcn.18008827c
mov qword [rsp + 0xa8], rax
test rax, rax
jne 0x18006ea82
or eax, 0xffffffff
jmp 0x18006ede1
mov r8, r14
xor edx, edx
mov rcx, rax
call fcn.180082af0
lea rcx, [r15*8]
call fcn.18008827c
mov r14, rax
test rax, rax
je 0x18006ea7a
mov r9, qword [rsp + 0xa8]
mov rax, rsi
mov rcx, r9
test r15, r15
je 0x18006eadf
mov rdx, qword [rsp + 0x30]
lea rdx, [rdx*8]
nop dword [rax]
nop dword [rax + rax]
mov qword [r14 + rax*8], rcx
add rcx, rdx
inc rax
cmp rax, r15
jb 0x18006ead0
xor edx, edx
mov r8d, 0x80
mov rcx, r9
call fcn.180082af0
mov rdx, qword [rsp + 0xa8]
mov ecx, 0x80
mov rax, qword [rsp + 0xa0]
movups xmm0, xmmword [rax]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rax + 0x10]
mov rax, qword [rsp + 0xb0]
movups xmmword [rdx + 0x10], xmm1
movups xmm0, xmmword [rax]
movups xmmword [rdx + 0x20], xmm0
movups xmm1, xmmword [rax + 0x10]
mov rax, qword [rsp + 0xc0]
movups xmmword [rdx + 0x30], xmm1
mov qword [rdx + 0x40], 0x20
mov qword [rdx + 0x48], 0x20
mov qword [rdx + 0x50], 0x20
mov qword [rdx + 0x58], rax
mov qword [rdx + 0x60], r15
mov qword [rdx + 0x68], rbx
mov byte [rdx + 0x70], 0x80
xor byte [rdx + 0x7f], r12b
call fcn.18008827c
mov rbx, rax
test rax, rax
je 0x18006ea7a
mov r15, qword [rsp + 0xa8]
xor eax, eax
mov qword [rbx], rax
add r15, 0x10
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
mov qword [rbx + 0x18], rax
mov qword [rbx + 0x20], rax
mov qword [rbx + 0x28], rax
mov qword [rbx + 0x30], rax
mov qword [rbx + 0x38], rax
movabs rax, 0x6a09e667f3bcc908
mov qword [rbx + 0x40], rax
movabs rax, 0xbb67ae8584caa73b
mov qword [rbx + 0x48], rax
movabs rax, 0x3c6ef372fe94f82b
mov qword [rbx + 0x50], rax
movabs rax, 0xa54ff53a5f1d36f1
mov qword [rbx + 0x58], rax
movabs rax, 0x510e527fade682d1
mov qword [rbx + 0x60], rax
movabs rax, 0x9b05688c2b3e6c1f
mov qword [rbx + 0x68], rax
movabs rax, 0x1f83d9abfb41bd6b
mov qword [rbx + 0x70], rax
movabs rax, 0x5be0cd19137e2179
mov qword [rbx + 0x78], rax
nop dword [rax + rax]
mov rax, qword [r15 - 0x10]
mov rcx, rbx
xor qword [rbx], rax
mov rax, qword [r15 - 8]
xor qword [rbx + 8], rax
mov rax, qword [r15]
xor qword [rbx + 0x10], rax
mov rax, qword [r15 + 8]
xor qword [rbx + 0x18], rax
mov rax, qword [r15 + 0x10]
xor qword [rbx + 0x20], rax
mov rax, qword [r15 + 0x18]
xor qword [rbx + 0x28], rax
mov rax, qword [r15 + 0x20]
xor qword [rbx + 0x30], rax
mov rax, qword [r15 + 0x28]
xor qword [rbx + 0x38], rax
call fcn.18006f510
lea r15, [r15 + 0x40]
sub rdi, r12
jne 0x18006ec10
mov r8, qword [rsp + 0xd0]
mov rcx, rbx
mov rdx, qword [r14]
call fcn.180070bd0
mov r9, qword [rsp + 0xd0]
mov rcx, rbx
mov r8, qword [r14 + 8]
mov rdx, qword [r14]
call fcn.180070e30
mov r15, qword [rsp + 0xc8]
lea edx, [rdi + 8]
mov esi, 2
mov r12d, esi
nop dword [rax]
mov rax, qword [rsp + 0xd0]
lea rdi, [rsi*8]
mov r9, qword [rdi + r14]
mov rcx, rbx
mov r8, qword [r14 + rbp*8]
mov rdx, qword [rdx + r14]
mov qword [rsp + 0x20], rax
call fcn.180071000
add rbp, qword [rsp + 0x98]
lea rax, [r12 - 1]
mov rcx, rsi
lea rdx, [rdi]
inc rsi
and rbp, rax
jne 0x18006ecf6
lea rax, [r12 + r13]
add r12, r12
neg r13
mov qword [rsp + 0x98], rax
cmp rsi, r15
jb 0x18006eca0
mov r13, qword [rsp + 0xc0]
mov r12d, 1
lea esi, [r12 - 1]
cmp r12, r13
ja 0x18006ed90
test r12b, 1
jne 0x18006ed1f
or rdi, 0xffffffffffffffff
jmp 0x18006ed2e
mov rax, r15
cqo
sub rax, rdx
sar rax, 1
lea rdi, [rax - 1]
mov r12, qword [rsp + 0xd0]
nop word [rax + rax]
mov rax, qword [rbx]
xor edx, edx
mov r9, qword [r14 + rsi*8]
div r15
mov qword [rsp + 0x20], r12
mov rbp, rdx
mov r8, qword [r14 + rdx*8]
mov rdx, qword [r14 + rcx*8]
mov rcx, rbx
call fcn.1800712f0
lea rax, [rdi + rsi]
xor edx, edx
div r15
mov rcx, rsi
mov rsi, rdx
test rdx, rdx
jne 0x18006ed40
mov r12, qword [rsp + 0xb8]
inc r12
mov qword [rsp + 0xb8], r12
cmp r12, r13
jbe 0x18006ed13
mov rdx, qword [r14 + rbp*8]
mov rcx, rbx
call fcn.180070b30
mov rdx, qword [rsp + 0x90]
mov r8d, 0x20
mov rcx, rbx
call fcn.180070a70
mov rcx, r14
call fcn.18008800c
mov rcx, qword [rsp + 0xa8]
call fcn.18008800c
xor edx, edx
mov r8d, 0x80
mov rcx, rbx
call fcn.180082af0
mov rcx, rbx
call fcn.18008800c
xor eax, eax
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret