Function at 0x140009dbc
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.140025300
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, [0x14004b6f6]
lea rcx, [rsp + 0x20]
call fcn.14000e6c4
nop
call fcn.14003b5e0
nop
cmp qword [rsp + 0x38], 0x10
jb 0x140009e49
mov rcx, qword [rsp + 0x20]
call fcn.140021190
mov qword [rsp + 0x38], reloc.WS2_32.dll_ntohs
and qword [rsp + 0x30], 0
mov byte [rsp + 0x20], 0
call fcn.14003b5e0
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 0x140009e7e
mov ebx, r15d
mov dword [rbp + 0x50], ebx
lea rcx, [0x140000000]
lea rax, [rcx + 0x4ba10]
mov qword [rsp + 0x50], rax
lea rax, [rcx + 0x4ba18]
mov qword [rsp + 0x60], rax
lea rax, vtable.std::basic_ios_char__struct_std::char_traits_char__.0
mov qword [rbp - 0x18], rax
mov dword [rbp + 0x1448], 2
lea rdx, [rsp + 0x68]
lea rcx, [rsp + 0x50]
call fcn.14000df7c
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.14000ea5c
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 [0x14004bd08]
subsd xmm6, qword [0x14004bd18]
addsd xmm6, qword [0x14004bd10]
movsd xmm7, qword [0x14004c878]
subsd xmm7, qword [0x14004bd18]
addsd xmm7, qword [0x14004bd10]
mov r11d, 0x7fffffff
cmp ebx, r15d
jne 0x140009fca
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 0x140009f8a
mov ebx, dword [rbp + 0x50]
jmp 0x14000a08d
cmp ebx, 0x4e0
jb 0x14000a08d
lea r9, [rbp + 0xa14]
mov ebx, 0x9908b0df
mov r10d, 0xe3
mov edx, dword [r9]
xor edx, dword [r9 + 4]
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 0x140009fe8
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 0x14000a028
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 [0x14004bd18]
comisd xmm0, xmmword [0x14004c878]
mov r8d, reloc.WS2_32.dll_ntohs
jae 0x14000a0f3
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.14000f31c
cmp edi, 7
je 0x14000a126
cmp edi, 0xb
je 0x14000a126
cmp edi, 0xf
je 0x14000a126
cmp edi, 0x13
jne 0x14000a132
mov dl, 0x2d
lea rcx, [rsp + 0x60]
call fcn.14000f31c
add edi, r12d
cmp edi, 0x20
mov r11d, 0x7fffffff
jl 0x140009f7e
mov rdx, rsi
lea rcx, [rsp + 0x50]
call fcn.14000c5d8
mov dword [rbp + 0x1448], 3
lea rcx, [rbp - 0x18]
call fcn.14000c55c
lea r11, vtable.std::ios_base.0
mov qword [rbp - 0x18], r11
lea rcx, [rbp - 0x18]
call fcn.14003b594
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