Function at 0x1400c55b0
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
push rbx
push rbp
push r14
push r15
mov eax, 0x13d8
call fcn.14015ca80
sub rsp, rax
mov rax, qword [0x1401e56c8]
xor rax, rsp
mov qword [rsp + 0x13c0], rax
mov rbx, qword [r8]
xor r10d, r10d
mov r11, qword [r8 + 8]
movzx r15d, r9b
mov r14, rdx
mov r8d, r10d
sub r11, rbx
je 0x1400c560c
nop
movzx edx, byte [rbx + r8]
movzx ecx, r8b
and cl, 3
inc r8
shl cl, 3
shl edx, cl
xor r10d, edx
cmp r8, r11
jb 0x1400c55f0
mov dword [rsp + 0x13b4], 0xffffffff
mov ecx, 1
mov dword [rsp + 0x34], r10d
nop dword [rax]
nop word [rax + rax]
mov eax, r10d
shr eax, 0x1e
xor eax, r10d
imul r10d, eax, 0x6c078965
add r10d, ecx
mov dword [rsp + rcx*4 + 0x34], r10d
inc rcx
cmp rcx, 0x270
jb 0x1400c5630
mov r11, qword [r14 + 8]
mov r10, qword [r14]
mov dword [rsp + 0x30], 0x270
cmp r10, r11
je 0x1400c56b4
nop dword [rax + rax]
mov r9, qword [r10 + 8]
mov rdx, qword [r10]
cmp rdx, r9
je 0x1400c56ab
nop dword [rax]
mov r8, qword [rdx + 8]
mov rcx, qword [rdx]
cmp rcx, r8
je 0x1400c56a2
nop dword [rax]
mov eax, dword [rcx]
not eax
and eax, 0xf
mov dword [rcx], eax
add rcx, 4
cmp rcx, r8
jne 0x1400c5690
add rdx, 0x18
cmp rdx, r9
jne 0x1400c5680
add r10, 0x18
cmp r10, r11
jne 0x1400c5670
mov rbp, qword [r14 + 8]
mov r14, qword [r14]
cmp r14, rbp
je 0x1400c5887
mov qword [rsp + 0x1400], rsi
mov qword [rsp + 0x1410], rdi
mov qword [rsp + 0x13d0], r12
movabs r12, 0x2aaaaaaaaaaaaaab
nop word [rax + rax]
mov rcx, qword [r14 + 8]
mov rax, r12
sub rcx, qword [r14]
imul rcx
mov rdi, rdx
sar rdi, 2
mov rax, rdi
shr rax, 0x3f
add rdi, rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
jne 0x1400c5764
lea rcx, [rsp + 0x30]
call fcn.1400c8590
mov esi, eax
lea rcx, [rsp + 0x30]
shl rsi, 0x20
call fcn.1400c8590
mov eax, eax
lea rcx, [rsp + 0x30]
or rsi, rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.1400c8590
mov ebx, eax
lea rcx, [rsp + 0x30]
shl rbx, 0x20
call fcn.1400c8590
mov eax, eax
or rbx, rax
jmp 0x1400c578e
mov rdx, rdi
lea rcx, [rsp + 0x20]
call fcn.1400c83e0
mov rsi, rax
lea rcx, [rsp + 0x20]
lea rax, [rsp + 0x30]
mov rdx, rdi
mov qword [rsp + 0x20], rax
call fcn.1400c83e0
mov rbx, rax
cmp rbx, rsi
jne 0x1400c57e5
nop dword [rax]
nop word [rax + rax]
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
test rdi, rdi
jne 0x1400c57d0
lea rcx, [rsp + 0x30]
call fcn.1400c8590
mov ebx, eax
lea rcx, [rsp + 0x30]
shl rbx, 0x20
call fcn.1400c8590
mov eax, eax
or rbx, rax
jmp 0x1400c57e0
mov rdx, rdi
lea rcx, [rsp + 0x20]
call fcn.1400c83e0
mov rbx, rax
cmp rbx, rsi
je 0x1400c57a0
mov rcx, qword [r14]
test r15b, r15b
mov rdx, rsi
cmovne rdx, rbx
xor r9d, r9d
test r15b, r15b
cmovne rbx, rsi
lea rax, [rbx + rbx*2]
lea r10, [rax*8]
mov rax, qword [r10 + rcx + 8]
sub rax, qword [r10 + rcx]
sar rax, 2
test rax, rax
je 0x1400c5862
lea rax, [rdx + rdx*2]
lea r11, [rax*8]
nop word [rax + rax]
mov rax, qword [r11 + rcx]
lea r8, [rax + r9*4]
mov rax, qword [r10 + rcx]
mov ecx, dword [r8]
lea rdx, [rax + r9*4]
inc r9
mov eax, dword [rdx]
mov dword [rdx], ecx
mov dword [r8], eax
mov rcx, qword [r14]
mov rax, qword [r10 + rcx + 8]
sub rax, qword [r10 + rcx]
sar rax, 2
cmp r9, rax
jb 0x1400c5830
add r14, 0x18
cmp r14, rbp
jne 0x1400c56f0
mov r12, qword [rsp + 0x13d0]
mov rdi, qword [rsp + 0x1410]
mov rsi, qword [rsp + 0x1400]
mov rcx, qword [rsp + 0x13c0]
xor rcx, rsp
call fcn.14015bde0
add rsp, 0x13d8
pop r15
pop r14
pop rbp
pop rbx
ret