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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov rsi, rdx
mov r14, rcx
xor ebp, ebp
mov rax, qword gs:[0x58]
mov rdi, qword [rax]
mov eax, 0x10
mov eax, dword [rax + rdi]
cmp dword [0x1401c8a5c], eax
jle 0x14004f373
lea rcx, [0x1401c8a5c]
call fcn.1400673dc
cmp dword [0x1401c8a5c], 0xffffffff
jne 0x14004f373
xorps xmm0, xmm0
movups xmmword [0x1401c8a78], xmm0
mov qword [0x1401c8a88], rbp
mov qword [0x1401c8a90], rbp
lea ecx, [rbp + 0x30]
call fcn.14006745c
mov qword [0x1401c8a78], rax
mov qword [0x1401c8a88], 0x22
mov qword [0x1401c8a90], 0x2f
movups xmm0, xmmword [str.0123456789abcdefghjklmnoprstuvqyzA]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x1400d9a40]
movups xmmword [rax + 0x10], xmm1
movzx edx, word [0x1400d9a50]
mov word [rax + 0x20], dx
mov byte [rax + 0x22], bpl
lea rcx, [0x14006a4d0]
call fcn.1400676c0
nop
lea rcx, [0x1401c8a5c]
call fcn.140067370
mov r15d, 0x13a8
mov eax, dword [r15 + rdi]
mov ecx, 0x20
test al, 1
jne 0x14004f3d8
or eax, 1
mov dword [r15 + rdi], eax
mov ebx, ecx
add rbx, rdi
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rbx + 0x1384], 0xffffffff
mov dword [rbx + 4], eax
mov edx, 1
lea r8, [rbx + 8]
nop
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 0x14004f3b0
mov dword [rbx], 0x270
mov eax, dword [r15 + rdi]
mov r12d, 0x18
mov ebx, r12d
test al, 2
jne 0x14004f401
or eax, 2
mov dword [r15 + rdi], eax
mov dword [rdi + r12], ebp
mov eax, dword [0x1401c8a88]
dec eax
mov dword [rdi + r12 + 4], eax
mov edx, 0x20
test rsi, rsi
cmovne rdx, rsi
mov rcx, r14
call fcn.14005b8b0
mov rcx, r14
cmp qword [r14 + 0x18], 0xf
jbe 0x14004f42a
mov rcx, qword [r14]
mov rdx, rcx
mov ebx, r12d
jmp 0x14004f42d
mov rdx, r14
mov rbp, rcx
mov r13, qword [r14 + 0x10]
add r13, rdx
cmp rcx, r13
je 0x14004f521
lea r12, [rdi + rbx]
mov ebx, 0x20
add rbx, rdi
mov r9d, 0x80000000
nop dword [rax]
nop word [rax + rax]
mov edx, dword [r12 + 4]
mov ecx, dword [r12]
lea eax, [rcx - 0x80000000]
lea r15d, [rcx + r9]
cmp ecx, r9d
cmovae r15d, eax
lea eax, [rdx - 0x80000000]
lea ecx, [rdx + r9]
cmp edx, r9d
cmovae ecx, eax
sub ecx, r15d
cmp ecx, 0xffffffff
jne 0x14004f49e
mov rcx, rbx
call fcn.14005fa20
mov ecx, eax
jmp 0x14004f4d9
lea edi, [rcx + 1]
mov rcx, rbx
call fcn.14005fa20
mov esi, edi
mov ecx, eax
imul rcx, rsi
cmp ecx, edi
jae 0x14004f4d5
mov eax, edi
neg eax
xor edx, edx
div edi
mov edi, edx
cmp ecx, edx
jae 0x14004f4d5
mov rcx, rbx
call fcn.14005fa20
mov ecx, eax
imul rcx, rsi
cmp ecx, edi
jb 0x14004f4c3
shr rcx, 0x20
lea edx, [r15 + rcx]
lea eax, [rdx - 0x80000000]
mov r9d, 0x80000000
lea r8d, [rdx + r9]
cmp edx, r9d
cmovae r8d, eax
lea rcx, [0x1401c8a78]
cmp qword [0x1401c8a90], 0xf
cmova rcx, qword [0x1401c8a78]
movsxd rax, r8d
movzx ecx, byte [rax + rcx]
mov byte [rbp], cl
inc rbp
cmp rbp, r13
jne 0x14004f460
mov rax, r14
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret