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

Disassembly:
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r15
lea rbp, [rsp - 0x1410]
mov eax, 0x1510
call fcn.140024f60
sub rsp, rax
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov qword [rsp + 0x1550], rbx
movaps xmmword [rsp + 0x1500], xmm6
movaps xmmword [rsp + 0x14f0], xmm7
mov rsi, rcx
and dword [rbp + 0x1448], 0
mov qword [rsp + 0x38], reloc.WS2_32.dll_ntohs
and qword [rsp + 0x30], 0
mov byte [rsp + 0x20], 0
xor r8d, r8d
lea rdx, [0x14004a521]
lea rcx, [rsp + 0x20]
call fcn.14000e468
nop
call fcn.14003b4f4
nop
cmp qword [rsp + 0x38], 0x10
jb 0x140009fdd
mov rcx, qword [rsp + 0x20]
call fcn.140021180
mov qword [rsp + 0x38], reloc.WS2_32.dll_ntohs
and qword [rsp + 0x30], 0
mov byte [rsp + 0x20], 0
call fcn.14003b4f4
or dword [rbp + 0x13d4], 0xffffffff
mov dword [rbp + 0x54], eax
mov r12d, 1
mov r8d, r12d
mov edx, r12d
mov r15d, 0x270
mov ecx, eax
shr ecx, 0x1e
xor eax, ecx
imul eax, eax, 0x6c078965
add eax, r8d
mov dword [rbp + rdx*4 + 0x54], eax
add r8d, r12d
add rdx, r12
cmp rdx, r15
jl 0x14000a012
mov ebx, r15d
mov dword [rbp + 0x50], ebx
lea rcx, [0x140000000]
lea rax, [rcx + 0x4b9f0]
mov qword [rsp + 0x50], rax
lea rax, [rcx + 0x4b9f8]
mov qword [rsp + 0x60], rax
mov dword [rbp + 0x1448], 2
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp - 0x18], rax
and qword [rsp + 0x58], 0
xor r8d, r8d
lea rdx, [rsp + 0x68]
lea rcx, [rbp - 0x18]
call fcn.14000e588
nop
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x60], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_iostream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x50], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rsp + rcx + 0x50], rax
lea rcx, [rsp + 0x68]
call fcn.14000e738
nop
lea rax, vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rsp + 0x68], rax
and qword [rbp - 0x28], 0
and dword [rbp - 0x20], 0
xor edi, edi
movsd xmm6, qword [0x14004ba48]
subsd xmm6, qword [0x14004ba58]
addsd xmm6, qword [0x14004ba50]
movsd xmm7, qword [0x14004c6a8]
subsd xmm7, qword [0x14004ba58]
addsd xmm7, qword [0x14004ba50]
mov r11d, 0x7fffffff
cmp ebx, r15d
jne 0x14000a166
lea r8, [rbp + 0x58]
mov r9, r15
mov edx, dword [r8 - 4]
xor edx, dword [r8]
and edx, r11d
xor edx, dword [r8 - 4]
mov eax, edx
and al, r12b
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x630]
shr edx, 1
xor ecx, edx
mov dword [r8 + 0x9bc], ecx
add r8, 4
sub r9, r12
jne 0x14000a126
mov ebx, dword [rbp + 0x50]
jmp 0x14000a229
cmp ebx, 0x4e0
jb 0x14000a229
lea r9, [rbp + 0xa14]
mov ebx, 0x9908b0df
mov r10d, 0xe3
mov edx, dword [r9 + 4]
xor edx, dword [r9]
and edx, r11d
xor edx, dword [r9]
mov eax, edx
and al, r12b
neg al
sbb ecx, ecx
and ecx, ebx
xor ecx, dword [r9 + 0x634]
shr edx, 1
xor ecx, edx
mov dword [r9 - 0x9c0], ecx
add r9, 4
sub r10, r12
jne 0x14000a184
lea r9, [rbp + 0xda0]
mov r10d, 0x18c
mov edx, dword [r9 + 4]
xor edx, dword [r9]
and edx, r11d
xor edx, dword [r9]
mov eax, edx
and al, r12b
neg al
sbb ecx, ecx
and ecx, ebx
xor ecx, dword [r9 - 0xd4c]
shr edx, 1
xor ecx, edx
mov dword [r9 - 0x9c0], ecx
add r9, 4
sub r10, r12
jne 0x14000a1c4
mov edx, dword [rbp + 0x13d0]
xor edx, dword [rbp + 0x54]
and edx, r11d
xor edx, dword [rbp + 0x13d0]
mov eax, edx
and al, r12b
neg al
sbb ecx, ecx
and ecx, ebx
shr edx, 1
xor ecx, edx
xor ecx, dword [rbp + 0x684]
mov dword [rbp + 0xa10], ecx
xor ebx, ebx
mov dword [rbp + 0x50], ebx
mov eax, ebx
mov ecx, dword [rbp + rax*4 + 0x54]
add ebx, r12d
mov dword [rbp + 0x50], ebx
mov eax, ecx
shr eax, 0xb
and eax, dword [rbp + 0x13d4]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor eax, ecx
pxor xmm0, xmm0
cvtsi2sd xmm0, rax
divsd xmm0, xmm6
mulsd xmm0, xmm7
addsd xmm0, qword [0x14004ba58]
comisd xmm0, xmmword [0x14004c6a8]
mov r8d, reloc.WS2_32.dll_ntohs
jae 0x14000a28f
cvttsd2si r8d, xmm0
lea ecx, [r8 + 0x30]
lea eax, [r8 + 0x57]
movzx edx, al
movzx eax, cl
cmp r8d, 0xa
cmovl edx, eax
lea rcx, [rsp + 0x60]
call fcn.14000f514
cmp edi, 7
je 0x14000a2c2
cmp edi, 0xb
je 0x14000a2c2
cmp edi, 0xf
je 0x14000a2c2
cmp edi, 0x13
jne 0x14000a2ce
mov dl, 0x2d
lea rcx, [rsp + 0x60]
call fcn.14000f514
add edi, r12d
cmp edi, 0x20
mov r11d, 0x7fffffff
jl 0x14000a11a
call fcn.1400086e0
mov rdx, rsi
lea rcx, [rsp + 0x50]
call fcn.14000c328
mov dword [rbp + 0x1448], 3
lea rcx, [rbp - 0x18]
call fcn.14000c2ac
lea r11, vtable.std::ios_base.0
mov qword [rbp - 0x18], r11
lea rcx, [rbp - 0x18]
call fcn.14003b4a8
mov rax, rsi
lea r11, [rsp + 0x1510]
mov rbx, qword [r11 + 0x40]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r12
pop rdi
pop rsi
pop rbp
ret