Function at 0x14001b5b0
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 r12
push r13
push r14
push r15
sub rsp, 0x50
mov rdi, rcx
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x48], rcx
mov dword [rsp + 0x20], 0
mov r12d, 0x20
mov rax, qword gs:[0x58]
mov rbx, qword [rax]
mov esi, 0x28
mov eax, dword [rsi + rbx]
mov r14d, 0x30
mov ebp, 0xffffffff
test al, 1
jne 0x14001b66c
or eax, 1
mov dword [rsi + rbx], eax
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov ecx, eax
mov r9d, r14d
add r9, rbx
mov dword [r9 + 0x1384], ebp
mov dword [r9 + 4], eax
lea edx, [r12 - 0x1f]
lea r8, [r9 + 8]
nop dword [rax]
nop word [rax + rax]
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [r8], ecx
inc rdx
lea r8, [r8 + 4]
cmp rdx, 0x270
jb 0x14001b640
mov dword [r9], 0x270
mov eax, dword [rsi + rbx]
mov ebp, 0x13b8
test al, 2
jne 0x14001b68d
or eax, 2
mov dword [rsi + rbx], eax
mov qword [rbp + rbx], 0
mov qword [rbp + rbx + 8], 0x3d
mov qword [rdi], 0
mov qword [rdi + 0x10], 0
mov qword [rdi + 0x18], recv
mov byte [rdi], 0
mov dword [rsp + 0x20], 1
mov rdx, r12
mov rcx, rdi
call fcn.140006a30
mov qword [rdi + 0x10], 0
mov eax, ebp
add rax, rbx
mov qword [rsp + 0x40], rax
mov ebp, r14d
add rbp, rbx
nop dword [rax]
nop word [rax + rax]
dec r12
mov qword [rsp + 0x28], r12
mov r15, qword [rax + 8]
mov rax, qword [rax]
mov qword [rsp + 0x30], rax
mov rbx, 0xffffffffffffffff
mov ecx, 0xffffffff
mov r13d, 0x40
nop word [rax + rax]
dec r13
shr rbx, 1
cmp rbx, rcx
ja 0x14001b710
sub r15, rax
cmp r15, 0xffffffffffffffff
jne 0x14001b75d
xor edi, edi
xor esi, esi
nop dword [rax + rax]
lea rcx, [r13 - 1]
shl rdi, cl
add rdi, rdi
nop word [rax + rax]
mov rcx, rbp
call fcn.14001f790
mov eax, eax
cmp rax, rbx
ja 0x14001b740
or rdi, rax
add rsi, r13
cmp rsi, 0x40
jb 0x14001b730
jmp 0x14001b7d4
lea r12, [r15 + 1]
xor edi, edi
xor esi, esi
test r15, r15
je 0x14001b7a4
nop word [rax + rax]
lea rcx, [r13 - 1]
shl rdi, cl
add rdi, rdi
nop word [rax + rax]
mov rcx, rbp
call fcn.14001f790
mov eax, eax
cmp rax, rbx
ja 0x14001b780
or rdi, rax
lea rcx, [r13 - 1]
shl rsi, cl
add rsi, rsi
or rsi, rbx
cmp rsi, r15
jb 0x14001b770
xor edx, edx
mov rax, rsi
div r12
mov r8, rdx
mov rcx, rax
xor edx, edx
mov rax, rdi
div r12
cmp rax, rcx
jb 0x14001b7c4
cmp r8, r15
jne 0x14001b761
xor edx, edx
mov rax, rdi
div r12
mov rdi, rdx
mov r12, qword [rsp + 0x28]
mov rax, qword [rsp + 0x30]
add rax, rdi
lea rcx, [0x1400738e8]
movzx r9d, byte [rax + rcx]
mov rdi, qword [rsp + 0x38]
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rdi + 0x18]
cmp rcx, rdx
jae 0x14001b819
lea rax, [rcx + 1]
mov qword [rdi + 0x10], rax
mov rax, rdi
cmp rdx, 0x10
jb 0x14001b80e
mov rax, qword [rdi]
mov byte [rax + rcx], r9b
mov byte [rax + rcx + 1], 0
jmp 0x14001b821
mov rcx, rdi
call fcn.1400068d0
test r12, r12
mov rax, qword [rsp + 0x40]
jne 0x14001b6e0
mov rax, rdi
lea r11, [rsp + 0x50]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret