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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rsi
mov qword [rsp + 8], rcx
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x13c0]
mov eax, 0x14c0
call fcn.14005d8e0
sub rsp, rax
mov r14, rdx
mov rsi, rcx
xor r15d, r15d
mov dword [rsp + 0x20], r15d
mov ecx, 4
mov rax, qword gs:[0x58]
mov rax, qword [rax]
lea r12, [0x1400c9800]
mov eax, dword [rcx + rax]
cmp dword [0x1400c9830], eax
jle 0x140012fb3
lea rcx, [0x1400c9830]
call fcn.14005d098
cmp dword [0x1400c9830], 0xffffffff
jne 0x140012fb3
movabs rax, 0x2dfdf9ba2a3d6e6b
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x30], rax
movabs rax, 0x4da7ddb7ce4d02c0
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x38], rax
movabs rax, 0x46b5c30363e726c5
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x40], rax
movabs rax, 0xe9a9575e144f19d5
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x48], rax
movabs rax, 0x6af42755e1fec7d8
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x50], rax
movabs rax, 0xf91f8788c7c517c3
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x58], rax
movabs rax, 0x51806877f2b922ee
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x60], rax
movabs rax, 0x545d1a7a99d95899
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x68], rax
movabs rax, 0x6da17ea997c9c1d4
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x70], rax
movabs rax, 0x6f80e16a6f27fcbd
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rsp + 0x78], rax
movabs rax, 0x4e42564d41ea4080
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x80], rax
movabs rax, 0x9b90c0c8b9a3ae37
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x78], rax
movabs rax, 0xd114628bacf34f4a
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x70], rax
movabs rax, 0xdf746bde0ccc9ae1
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x68], rax
movabs rax, 0xb9cdd8195fe6381c
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x60], rax
movabs rax, 0xd9c6e277c5b2e72b
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x58], rax
movabs rax, 0x2dcef9882a0c6e5b
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x50], rax
movabs rax, 0x4d90dd81ce7802f4
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x48], rax
movabs rax, 0x46f7c34263de26fd
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x40], rax
movabs rax, 0xe9ef571b140b1996
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x38], rax
movabs rax, 0x6abe271ce1b6c79f
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x30], rax
movabs rax, 0xf95187c5c7891788
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x28], rax
movabs rax, 0x51d26826f2e922a1
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x20], rax
movabs rax, 0x540b1a2f998d58ca
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x18], rax
movabs rax, 0x6dfb7ef09791c183
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 0x10], rax
movabs rax, 0x6fe4e1096f45fcdc
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp - 8], rax
movabs rax, 0x4e2a562a418c40e5
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp], rax
movabs rax, 0x9bfcc0a3b9c9ae5e
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp + 8], rax
movabs rax, 0xd16462e4ac9d4f27
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp + 0x10], rax
movabs rax, 0xdf006bad0cbe9a90
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp + 0x18], rax
movabs rax, 0xb9b5d86e5f903869
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp + 0x20], rax
movabs rax, 0xd9c6e277c5c8e752
mov qword [rbp + 0x13f8], rax
mov rax, qword [rbp + 0x13f8]
mov qword [rbp + 0x28], rax
movdqa xmm0, xmmword [rsp + 0x30]
xorps xmm0, xmmword [rbp - 0x50]
movdqa xmmword [rsp + 0x30], xmm0
movdqa xmm1, xmmword [rsp + 0x40]
xorps xmm1, xmmword [rbp - 0x40]
movdqa xmmword [rsp + 0x40], xmm1
movdqa xmm0, xmmword [rsp + 0x50]
xorps xmm0, xmmword [rbp - 0x30]
movdqa xmmword [rsp + 0x50], xmm0
movdqa xmm1, xmmword [rsp + 0x60]
xorps xmm1, xmmword [rbp - 0x20]
movdqa xmmword [rsp + 0x60], xmm1
movdqa xmm0, xmmword [rsp + 0x70]
xorps xmm0, xmmword [rbp - 0x10]
movdqa xmmword [rsp + 0x70], xmm0
movdqa xmm1, xmmword [rbp - 0x80]
xorps xmm1, xmmword [rbp]
movdqa xmmword [rbp - 0x80], xmm1
movdqa xmm0, xmmword [rbp - 0x70]
xorps xmm0, xmmword [rbp + 0x10]
movdqa xmmword [rbp - 0x70], xmm0
movdqa xmm1, xmmword [rbp - 0x60]
xorps xmm1, xmmword [rbp + 0x20]
movdqa xmmword [rbp - 0x60], xmm1
xorps xmm0, xmm0
movups xmmword [0x1400c9800], xmm0
mov qword [0x1400c9810], r15
mov qword [0x1400c9818], r15
lea rax, [rsp + 0x30]
mov r8, 0xffffffffffffffff
inc r8
cmp word [rax + r8*2], 0
jne 0x140012f82
lea rdx, [rsp + 0x30]
mov rcx, r12
call fcn.1400380a0
lea rcx, [0x1400881b0]
call fcn.14005d604
nop
lea rcx, [0x1400c9830]
call fcn.14005d02c
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], r15
mov qword [rsi + 0x18], 7
mov word [rsi], r15w
mov dword [rsp + 0x20], 1
test r14, r14
je 0x1400132cd
lea rax, [rbp + 0x30]
mov qword [rbp + 0x13f8], rax
movzx ebx, byte [rbp + 0x13f0]
nop dword [rax]
mov rdi, qword [0x1400c9810]
add rdi, 0xfffffffffffffffe
call fcn.14005c808
mov dword [rbp + 0x13b4], 0xffffffff
mov dword [rbp + 0x34], eax
mov edx, 1
nop dword [rax]
nop word [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0x34], eax
inc rdx
cmp rdx, 0x270
jb 0x140013020
mov dword [rbp + 0x30], 0x270
cmp rdi, 0xffffffffffffffff
jne 0x140013259
lea rax, [rbp + 0x38]
mov r9d, 0x270
nop word [rax + rax]
mov r8d, dword [rax - 4]
xor r8d, dword [rax]
btr r8d, 0x1f
xor r8d, dword [rax - 4]
mov ecx, r8d
and cl, 1
neg cl
sbb edx, edx
and edx, 0x9908b0df
xor edx, dword [rax + 0x630]
shr r8d, 1
xor edx, r8d
mov dword [rax + 0x9bc], edx
lea rax, [rax + 4]
sub r9, 1
jne 0x140013060
mov eax, dword [rbp + 0x30]
mov ecx, dword [rbp + rax*4 + 0x34]
lea edx, [rax + 1]
mov dword [rbp + 0x30], edx
mov eax, ecx
shr eax, 0xb
and eax, dword [rbp + 0x13b4]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and ecx, 0xffffdf8c
shl ecx, 0xf
xor rcx, rax
mov r11, rcx
shr r11, 0x12
xor r11, rcx
shl r11, 0x20
cmp edx, 0x270
jne 0x140013131
lea r8, [rbp + 0x38]
mov r9d, edx
nop dword [rax]
mov edx, dword [r8 - 4]
xor edx, dword [r8]
btr edx, 0x1f
xor edx, dword [r8 - 4]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x630]
shr edx, 1
xor ecx, edx
mov dword [r8 + 0x9bc], ecx
lea r8, [r8 + 4]
sub r9, 1
jne 0x1400130f0
mov edx, dword [rbp + 0x30]
jmp 0x140013217
cmp edx, 0x4e0
jb 0x140013217
lea r9, [rbp + 0x9f4]
mov edi, 0xe3
mov r10d, dword [rbp + 0x9f4]
mov eax, r10d
mov r8, r9
add r9, 4
mov r10d, dword [r9]
mov edx, eax
xor edx, r10d
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
shr edx, 1
xor ecx, edx
xor ecx, dword [r8 + 0x634]
mov dword [r8 - 0x9c0], ecx
sub rdi, 1
jne 0x140013150
lea r9, [rbp + 0xd80]
mov edi, 0x18c
mov r10d, dword [rbp + 0xd80]
mov eax, r10d
mov r8, r9
add r9, 4
mov r10d, dword [r9]
mov edx, eax
xor edx, r10d
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
shr edx, 1
xor ecx, edx
xor ecx, dword [r8 - 0xd4c]
mov dword [r8 - 0x9c0], ecx
sub rdi, 1
jne 0x1400131a1
mov edx, dword [rbp + 0x13b0]
xor edx, dword [rbp + 0x34]
btr edx, 0x1f
xor edx, dword [rbp + 0x13b0]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
shr edx, 1
xor ecx, edx
xor ecx, dword [rbp + 0x664]
mov dword [rbp + 0x9f0], ecx
mov dword [rbp + 0x30], r15d
mov edx, r15d
mov eax, edx
mov ecx, dword [rbp + rax*4 + 0x34]
lea eax, [rdx + 1]
mov dword [rbp + 0x30], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [rbp + 0x13b4]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and ecx, 0xffffdf8c
shl ecx, 0xf
xor rcx, rax
mov rax, rcx
shr rax, 0x12
xor rax, rcx
or r11, rax
jmp 0x14001326c
lea rdx, [rdi + 1]
lea rcx, [rbp + 0x13f8]
call fcn.14004bf60
mov r11, rax
mov rcx, r12
cmp qword [0x1400c9818], 7
cmova rcx, qword [0x1400c9800]
movzx r9d, word [rcx + r11*2]
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x18]
cmp rcx, rdx
jae 0x1400132b2
lea rax, [rcx + 1]
mov qword [rsi + 0x10], rax
mov rax, rsi
cmp rdx, 7
jbe 0x1400132a5
mov rax, qword [rsi]
mov word [rax + rcx*2], r9w
mov word [rax + rcx*2 + 2], r15w
jmp 0x1400132c3
movzx r8d, bl
mov edx, 1
mov rcx, rsi
call fcn.140037b90
sub r14, 1
jne 0x140012ff0
mov rax, rsi
lea r11, [rsp + 0x14c0]
mov rbx, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret