Function at 0x14004a160
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.140128580
sub rsp, rax
mov rax, qword [0x1401ae6f8]
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 0x14004a1bc
nop
movzx edx, byte [r8 + rbx]
movzx ecx, r8b
and cl, 3
inc r8
shl cl, 3
shl edx, cl
xor r10d, edx
cmp r8, r11
jb 0x14004a1a0
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 0x14004a1e0
mov r9, qword [r14]
mov r11, qword [r14 + 8]
mov dword [rsp + 0x30], 0x270
test r15b, r15b
je 0x14004a266
cmp r9, r11
je 0x14004a2b4
mov r10, qword [r9 + 8]
mov rdx, qword [r9]
cmp rdx, r10
je 0x14004a25b
nop dword [rax]
mov r8, qword [rdx + 8]
mov rcx, qword [rdx]
cmp rcx, r8
je 0x14004a252
nop dword [rax]
mov eax, dword [rcx]
not eax
and eax, 0xf
mov dword [rcx], eax
add rcx, 4
cmp rcx, r8
jne 0x14004a240
add rdx, 0x18
cmp rdx, r10
jne 0x14004a230
add r9, 0x18
cmp r9, r11
jne 0x14004a221
jmp 0x14004a2b4
cmp r9, r11
je 0x14004a2b4
nop dword [rax + rax]
mov r10, qword [r9 + 8]
mov rdx, qword [r9]
cmp rdx, r10
je 0x14004a2ab
nop dword [rax]
mov r8, qword [rdx + 8]
mov rcx, qword [rdx]
cmp rcx, r8
je 0x14004a2a2
nop dword [rax]
mov eax, dword [rcx]
not eax
and eax, 0xf
mov dword [rcx], eax
add rcx, 4
cmp rcx, r8
jne 0x14004a290
add rdx, 0x18
cmp rdx, r10
jne 0x14004a280
add r9, 0x18
cmp r9, r11
jne 0x14004a270
mov rbp, qword [r14 + 8]
mov r14, qword [r14]
cmp r14, rbp
je 0x14004a487
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 0x14004a364
lea rcx, [rsp + 0x30]
call fcn.140085970
mov esi, eax
lea rcx, [rsp + 0x30]
shl rsi, 0x20
call fcn.140085970
mov eax, eax
lea rcx, [rsp + 0x30]
or rsi, rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.140085970
mov ebx, eax
lea rcx, [rsp + 0x30]
shl rbx, 0x20
call fcn.140085970
mov eax, eax
or rbx, rax
jmp 0x14004a38e
mov rdx, rdi
lea rcx, [rsp + 0x20]
call fcn.1400840f0
mov rsi, rax
lea rcx, [rsp + 0x20]
lea rax, [rsp + 0x30]
mov rdx, rdi
mov qword [rsp + 0x20], rax
call fcn.1400840f0
mov rbx, rax
cmp rbx, rsi
jne 0x14004a3e5
nop dword [rax]
nop word [rax + rax]
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
test rdi, rdi
jne 0x14004a3d0
lea rcx, [rsp + 0x30]
call fcn.140085970
mov ebx, eax
lea rcx, [rsp + 0x30]
shl rbx, 0x20
call fcn.140085970
mov eax, eax
or rbx, rax
jmp 0x14004a3e0
mov rdx, rdi
lea rcx, [rsp + 0x20]
call fcn.1400840f0
mov rbx, rax
cmp rbx, rsi
je 0x14004a3a0
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 0x14004a462
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 0x14004a430
add r14, 0x18
cmp r14, rbp
jne 0x14004a2f0
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.140127920
add rsp, 0x13d8
pop r15
pop r14
pop rbp
pop rbx
ret