Function at 0x140005b10
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, 0x30
mov rsi, rcx
mov qword [rsp + 0x28], rcx
xor r13d, r13d
mov dword [rsp + 0x20], r13d
mov ebx, reloc.WS2_32.dll_recv
mov rax, qword gs:[0x58]
add rbx, qword [rax]
mov eax, dword [rbx]
cmp dword [0x1400ad658], eax
jle 0x140005b78
lea rcx, [0x1400ad658]
call fcn.140087cb8
cmp dword [0x1400ad658], 0xffffffff
jne 0x140005b78
lea rcx, [0x1400ad658]
call fcn.140087c4c
lea r15, [0x1400ad660]
mov eax, dword [rbx]
cmp dword [0x1400ad3b8], eax
jle 0x140005bfa
lea rcx, [0x1400ad3b8]
call fcn.140087cb8
cmp dword [0x1400ad3b8], 0xffffffff
jne 0x140005bfa
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov r8d, eax
mov dword [0x1400ae9e4], 0xffffffff
mov dword [0x1400ad664], eax
mov edx, 1
nop dword [rax]
mov eax, r8d
shr eax, 0x1e
xor eax, r8d
imul r8d, eax, 0x6c078965
add r8d, edx
mov dword [r15 + rdx*4 + 4], r8d
inc rdx
cmp rdx, 0x270
jb 0x140005bc0
mov dword [0x1400ad660], 0x270
lea rcx, [0x1400ad3b8]
call fcn.140087c4c
mov eax, dword [rbx]
cmp dword [0x1400ad3bc], eax
jle 0x140005c36
lea rcx, [0x1400ad3bc]
call fcn.140087cb8
cmp dword [0x1400ad3bc], 0xffffffff
jne 0x140005c36
mov dword [0x1400ae9e8], r13d
mov dword [0x1400ae9ec], 0x3e
lea rcx, [0x1400ad3bc]
call fcn.140087c4c
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], r13
mov qword [rsi + 0x18], reloc.WS2_32.dll_ntohs
mov byte [rsi], 0
mov dword [rsp + 0x20], 1
mov ebp, 0xa
mov r12d, 0x80000000
nop
mov ecx, dword [0x1400ae9e8]
lea eax, [rcx - 0x80000000]
lea r14d, [rcx + r12]
cmp ecx, r12d
cmovae r14d, eax
mov ecx, dword [0x1400ae9ec]
lea eax, [rcx - 0x80000000]
lea edx, [rcx + r12]
cmp ecx, r12d
cmovae edx, eax
sub edx, r14d
cmp edx, 0xffffffff
jne 0x140005e0d
mov ecx, dword [0x1400ad660]
cmp ecx, 0x270
jne 0x140005cf5
lea r8, [0x1400ad668]
mov r9d, ecx
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 0x140005cb1
mov ecx, dword [0x1400ad660]
jmp 0x140005dd0
cmp ecx, 0x4e0
jb 0x140005dd0
mov r8, r13
mov eax, dword [r8 + r15 + 0x9c4]
mov edx, eax
xor edx, dword [r8 + r15 + 0x9c8]
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r8 + r15 + 0xff8]
shr edx, 1
xor ecx, edx
mov dword [r8 + r15 + 4], ecx
add r8, 4
cmp r8, 0x38c
jb 0x140005d04
mov r8d, 0x38c
nop
mov eax, dword [r8 + r15 + 0x9c4]
mov edx, eax
xor edx, dword [r8 + r15 + 0x9c8]
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r8 + r15 - 0x388]
shr edx, 1
xor ecx, edx
mov dword [r8 + r15 + 4], ecx
add r8, 4
cmp r8, 0x9bc
jb 0x140005d50
mov edx, dword [0x1400ae9e0]
and edx, r12d
mov eax, dword [0x1400ad664]
btr eax, 0x1f
or 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 [0x1400adc94]
mov dword [0x1400ae020], ecx
mov ecx, r13d
mov dword [0x1400ad660], ecx
mov eax, ecx
mov edx, dword [r15 + rax*4 + 4]
inc ecx
mov dword [0x1400ad660], ecx
mov eax, edx
shr eax, 0xb
and eax, dword [0x1400ae9e4]
xor edx, eax
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov eax, edx
and eax, 0xffffdf8c
shl eax, 0xf
xor edx, eax
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
jmp 0x140005e48
lea ebx, [rdx + 1]
mov rcx, r15
call fcn.1400267f0
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x140005e44
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x140005e44
mov rcx, r15
call fcn.1400267f0
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x140005e32
shr rcx, 0x20
lea edx, [r14 + rcx]
lea eax, [rdx + r12]
lea ecx, [rdx - 0x80000000]
cmp edx, r12d
cmovae ecx, eax
movsxd rax, ecx
lea rcx, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
movzx r9d, byte [rax + rcx]
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x18]
cmp rcx, rdx
jae 0x140005e97
lea rax, [rcx + 1]
mov qword [rsi + 0x10], rax
mov rax, rsi
cmp rdx, 0x10
jb 0x140005e8c
mov rax, qword [rsi]
mov byte [rax + rcx], r9b
mov byte [rax + rcx + 1], 0
jmp 0x140005ea6
xor r8d, r8d
lea edx, [r8 + 1]
mov rcx, rsi
call fcn.140025120
sub rbp, 1
jne 0x140005c60
mov rax, rsi
mov rbx, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret