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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r14
push r15
sub rsp, 0x40
mov rdi, rcx
mov qword [rsp + 0x20], rcx
xor r15d, r15d
mov qword [rcx], r15
add rcx, 8
lea rdx, [0x1400b8a10]
call fcn.140003670
nop
xorps xmm0, xmm0
movups xmmword [rdi + 0x28], xmm0
mov qword [rdi + 0x38], r15
mov qword [rdi + 0x40], select
mov byte [rdi + 0x28], r15b
movups xmmword [rdi + 0x48], xmm0
mov qword [rdi + 0x58], r15
mov qword [rdi + 0x60], select
mov byte [rdi + 0x48], r15b
movups xmmword [rdi + 0x68], xmm0
mov qword [rdi + 0x78], r15
mov qword [rdi + 0x80], select
mov byte [rdi + 0x68], r15b
movups xmmword [rdi + 0x88], xmm0
mov qword [rdi + 0x98], r15
mov qword [rdi + 0xa0], select
mov byte [rdi + 0x88], r15b
movups xmmword [rdi + 0xa8], xmm0
mov qword [rdi + 0xb8], r15
mov qword [rdi + 0xc0], select
mov byte [rdi + 0xa8], r15b
movups xmmword [rdi + 0xc8], xmm0
mov qword [rdi + 0xd8], r15
mov qword [rdi + 0xe0], select
mov byte [rdi + 0xc8], r15b
mov qword [rdi + 0xe8], r15
mov qword [rdi + 0xf0], r15
mov qword [rdi + 0xf8], r15
mov qword [rdi + 0x100], r15
mov qword [rdi + 0x108], r15
mov qword [rdi + 0x110], r15
mov dword [rdi + 0x118], r15d
mov dword [rdi + 0x11c], 5
xor eax, eax
mov qword [rdi + 0x120], rax
movups xmmword [rdi + 0x140], xmm0
movups xmmword [rdi + 0x150], xmm0
movups xmmword [rdi + 0x160], xmm0
mov qword [rdi + 0x130], r15
mov qword [rdi + 0x138], r15
mov rsi, 0xffffffffffffffff
mov dword [rdi + 0x170], esi
mov ebp, 2
mov dword [rdi + 0x128], ebp
mov dword [rdi + 0x174], r15d
movups xmmword [rdi + 0x190], xmm0
movups xmmword [rdi + 0x1a0], xmm0
movups xmmword [rdi + 0x1b0], xmm0
mov qword [rdi + 0x180], r15
mov qword [rdi + 0x188], r15
mov dword [rdi + 0x1c0], esi
mov dword [rdi + 0x178], ebp
mov dword [rdi + 0x1c4], r15d
mov qword [rdi + 0x1c8], r15
mov qword [rdi + 0x1d0], r15
mov qword [rdi + 0x1d8], r15
movups xmmword [rdi + 0x1e8], xmm0
mov qword [rdi + 0x1f8], r15
mov qword [rdi + 0x200], select
mov byte [rdi + 0x1e8], al
mov qword [rdi + 0x208], r15
mov qword [rdi + 0x210], r15
mov qword [rdi + 0x218], r15
mov qword [rdi + 0x220], r15
mov qword [rdi + 0x228], r15
mov qword [rdi + 0x230], r15
mov qword [rdi + 0x250], r15
mov qword [rdi + 0x258], r15
mov qword [rdi + 0x260], r15
mov qword [rdi + 0x268], r15
mov qword [rdi + 0x270], r15
mov qword [rdi + 0x278], r15
mov qword [rdi + 0x280], r15
mov qword [rdi + 0x288], r15
mov qword [rdi + 0x290], r15
mov qword [rdi + 0x2a0], r15
mov qword [rdi + 0x2a8], r15
mov qword [rdi + 0x2b0], r15
mov byte [rdi + 0x2b8], al
mov qword [rdi + 0x2c0], r15
mov byte [rdi + 0x2c8], al
lea rbx, [rdi + 0x2d0]
mov rcx, rbx
call fcn.1400188a0
nop
mov rdx, rbx
mov rcx, qword [rbx]
call fcn.140014380
mov qword [rdi + 0x2e8], rax
mov qword [rdi + 0x300], r15
mov qword [rdi + 0x308], r15
mov dword [rdi + 0x328], ebp
mov byte [rdi + 0x32c], r15b
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rdi + 0x330], xmm0
mov qword [rdi + 0x340], rax
mov dword [rdi + 0x348], eax
mov qword [rdi + 0x330], rbp
lea rax, [rdi + 0x350]
lea rcx, [0x1400851a0]
mov qword [rax + 0x28], rcx
lea rcx, fcn.140011b00
mov qword [rax + 0x18], rcx
mov qword [rax + 8], rbx
mov qword [rax + 0x20], rax
lea rcx, [0x140085090]
mov qword [rax + 0x30], rcx
mov rbp, qword [rdi + 0x2e8]
lea r14, [rdi + 0x2f0]
mov qword [r14], rsi
mov byte [r14 + 8], r15b
mov qword [r14 + 0x10], r15
mov rbx, qword [r14 + 0x18]
mov qword [r14 + 0x18], r15
test rbx, rbx
je 0x140016f54
mov eax, esi
lock xadd dword [rbx + 8], eax
cmp eax, 1
jne 0x140016f54
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax]
lock xadd dword [rbx + 0xc], esi
cmp esi, 1
jne 0x140016f54
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.WS2_32.dll_htonl]
lea rcx, [rbp + 0x50]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rax, qword [rbp + 0x78]
mov qword [r14 + 0x28], rax
mov qword [r14 + 0x30], r15
mov rax, qword [rbp + 0x78]
test rax, rax
je 0x140016f77
mov qword [rax + 0x30], r14
mov qword [rbp + 0x78], r14
lea rcx, [rbp + 0x50]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
call sub.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_
mov dword [rdi + 0x1710], 0xffffffff
mov dword [rdi + 0x390], eax
mov edx, 1
lea r8, [rdi + 0x394]
nop word [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [r8], eax
inc rdx
lea r8, [r8 + 4]
cmp rdx, 0x270
jb 0x140016fb0
mov dword [rdi + 0x38c], 0x270
mov rax, rdi
mov rbx, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x78]
add rsp, 0x40
pop r15
pop r14
pop rdi
ret