Function at 0x1400055d0
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 [0x1400a7638], eax
jle 0x140005638
lea rcx, [0x1400a7638]
call fcn.1400819c8
cmp dword [0x1400a7638], 0xffffffff
jne 0x140005638
lea rcx, [0x1400a7638]
call fcn.14008195c
lea r15, [0x1400a7640]
mov eax, dword [rbx]
cmp dword [0x1400a7398], eax
jle 0x1400056ba
lea rcx, [0x1400a7398]
call fcn.1400819c8
cmp dword [0x1400a7398], 0xffffffff
jne 0x1400056ba
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov r8d, eax
mov dword [0x1400a89c4], 0xffffffff
mov dword [0x1400a7644], 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 0x140005680
mov dword [0x1400a7640], 0x270
lea rcx, [0x1400a7398]
call fcn.14008195c
mov eax, dword [rbx]
cmp dword [0x1400a739c], eax
jle 0x1400056f6
lea rcx, [0x1400a739c]
call fcn.1400819c8
cmp dword [0x1400a739c], 0xffffffff
jne 0x1400056f6
mov dword [0x1400a89c8], r13d
mov dword [0x1400a89cc], 0x3e
lea rcx, [0x1400a739c]
call fcn.14008195c
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 [0x1400a89c8]
lea eax, [rcx - 0x80000000]
lea r14d, [rcx + r12]
cmp ecx, r12d
cmovae r14d, eax
mov ecx, dword [0x1400a89cc]
lea eax, [rcx - 0x80000000]
lea edx, [rcx + r12]
cmp ecx, r12d
cmovae edx, eax
sub edx, r14d
cmp edx, 0xffffffff
jne 0x1400058cd
mov ecx, dword [0x1400a7640]
cmp ecx, 0x270
jne 0x1400057b5
lea r8, [0x1400a7648]
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 0x140005771
mov ecx, dword [0x1400a7640]
jmp 0x140005890
cmp ecx, 0x4e0
jb 0x140005890
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 0x1400057c4
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 0x140005810
mov edx, dword [0x1400a89c0]
and edx, r12d
mov eax, dword [0x1400a7644]
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 [0x1400a7c74]
mov dword [0x1400a8000], ecx
mov ecx, r13d
mov dword [0x1400a7640], ecx
mov eax, ecx
mov edx, dword [r15 + rax*4 + 4]
inc ecx
mov dword [0x1400a7640], ecx
mov eax, edx
shr eax, 0xb
and eax, dword [0x1400a89c4]
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 0x140005908
lea ebx, [rdx + 1]
mov rcx, r15
call fcn.1400204a0
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x140005904
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x140005904
mov rcx, r15
call fcn.1400204a0
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x1400058f2
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 0x140005957
lea rax, [rcx + 1]
mov qword [rsi + 0x10], rax
mov rax, rsi
cmp rdx, 0x10
jb 0x14000594c
mov rax, qword [rsi]
mov byte [rax + rcx], r9b
mov byte [rax + rcx + 1], 0
jmp 0x140005966
xor r8d, r8d
lea edx, [r8 + 1]
mov rcx, rsi
call fcn.14001edd0
sub rbp, 1
jne 0x140005720
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