Function at 0x14009a290
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister
Hash data using fnv

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
mov eax, 0x13f0
call fcn.14015be40
sub rsp, rax
mov rax, qword [0x140217900]
xor rax, rsp
mov qword [rsp + 0x13e0], rax
mov ebx, r9d
mov qword [rsp + 0x40], rdx
mov rsi, r8
mov rdi, rcx
call fcn.14015e4b8
mov r10d, eax
mov dword [rsp + 0x54], eax
mov edx, 1
mov dword [rsp + 0x13d4], 0xffffffff
nop dword [rax]
nop word [rax + rax]
mov eax, r10d
shr eax, 0x1e
xor eax, r10d
imul r10d, eax, 0x6c078965
add r10d, edx
mov dword [rsp + rdx*4 + 0x54], r10d
inc rdx
cmp rdx, 0x270
jb 0x14009a300
mov rdx, qword [rsi]
mov r15d, 0
mov r8d, dword [rsp + 0x1448]
mov r13d, 0
mov rcx, qword [rsi + 8]
mov qword [rsp + 0x20], rdx
mov rbp, qword [rdx + 8]
sub rbp, qword [rdx]
lea eax, [rbx + r8]
mov r12, qword [rsp + 0x20]
sar rbp, 2
dec ebp
mov dword [rsp + 0x50], 0x270
sub ebx, r8d
cmovns r15d, ebx
cmp ebp, eax
cmovge ebp, eax
sub rcx, rdx
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov eax, dword [rsp + 0x1440]
sar rdx, 2
mov r14, rdx
shr r14, 0x3f
add r14, rdx
lea ecx, [rax + r8]
dec r14d
sub eax, r8d
cmovns r13d, eax
mov rax, qword [rdi + 0x30]
cmp r14d, ecx
mov qword [rsp + 0x28], rax
mov rax, qword [rdi + 8]
cmovge r14d, ecx
mov qword [rsp + 0x38], rax
mov rcx, qword [rdi + 0x18]
btc r15d, 0x1f
btc ebp, 0x1f
mov qword [rsp + 0x30], rcx
sub ebp, r15d
btc r13d, 0x1f
btc r14d, 0x1f
sub r14d, r13d
nop dword [rax]
lea rcx, [rsp + 0x50]
cmp ebp, 0xffffffff
jne 0x14009a3f3
call fcn.140084a00
mov ecx, eax
jmp 0x14009a42d
lea ebx, [rbp + 1]
call fcn.140084a00
mov ecx, eax
mov edi, ebx
imul rcx, rdi
cmp ecx, ebx
jae 0x14009a429
mov eax, ebx
xor edx, edx
neg eax
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x14009a429
lea rcx, [rsp + 0x50]
call fcn.140084a00
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x14009a415
shr rcx, 0x20
lea esi, [rcx + r15]
btc esi, 0x1f
lea rcx, [rsp + 0x50]
cmp r14d, 0xffffffff
jne 0x14009a449
call fcn.140084a00
mov ecx, eax
jmp 0x14009a488
lea ebx, [r14 + 1]
call fcn.140084a00
mov ecx, eax
mov edi, ebx
imul rcx, rdi
cmp ecx, ebx
jae 0x14009a484
mov eax, ebx
xor edx, edx
neg eax
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x14009a484
nop dword [rax]
lea rcx, [rsp + 0x50]
call fcn.140084a00
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x14009a470
shr rcx, 0x20
mov rdx, qword [rsp + 0x30]
lea r9d, [rcx + r13]
movabs r10, 0x100000001b3
movsxd rcx, esi
btc r9d, 0x1f
movsxd rax, r9d
lea rax, [rax + rax*2]
mov rax, qword [r12 + rax*8]
lea r8, [rax + rcx*4]
movabs rax, 0xcbf29ce484222325
movzx ecx, byte [r8]
xor rcx, rax
movzx eax, byte [r8 + 1]
imul rcx, r10
xor rcx, rax
movzx eax, byte [r8 + 2]
imul rcx, r10
xor rcx, rax
movzx eax, byte [r8 + 3]
imul rcx, r10
xor rcx, rax
imul rcx, r10
and rcx, qword [rsp + 0x28]
add rcx, rcx
mov rax, qword [rdx + rcx*8 + 8]
cmp rax, qword [rsp + 0x38]
je 0x14009a520
mov rdx, qword [rdx + rcx*8]
mov ecx, dword [r8]
cmp ecx, dword [rax + 0x10]
je 0x14009a522
nop dword [rax + rax]
cmp rax, rdx
je 0x14009a520
mov rax, qword [rax + 8]
cmp ecx, dword [rax + 0x10]
jne 0x14009a510
jmp 0x14009a522
xor eax, eax
test rax, rax
je 0x14009a3e0
mov r12, qword [rsp + 0x40]
mov rax, r12
mov dword [r12], esi
mov dword [r12 + 4], r9d
mov rcx, qword [rsp + 0x13e0]
xor rcx, rsp
call fcn.14015b7e0
lea r11, [rsp + 0x13f0]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret