Function at 0x140046cd0
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 [0x1401b7268], eax
jle 0x140046da3
lea rcx, [0x1401b7268]
call fcn.140059c94
cmp dword [0x1401b7268], 0xffffffff
jne 0x140046da3
xorps xmm0, xmm0
movups xmmword [0x1401b7290], xmm0
mov qword [0x1401b72a0], rbp
mov qword [0x1401b72a8], rbp
lea ecx, [rbp + 0x30]
call fcn.140059d0c
mov qword [0x1401b7290], rax
mov qword [0x1401b72a0], 0x22
mov qword [0x1401b72a8], 0x2f
movups xmm0, xmmword [str.0123456789abcdefghjklmnoprstuvqyzA]
movups xmmword [rax], xmm0
movups xmm1, xmmword [0x1400cb560]
movups xmmword [rax + 0x10], xmm1
movzx edx, word [0x1400cb570]
mov word [rax + 0x20], dx
mov byte [rax + 0x22], bpl
lea rcx, [0x14005bd60]
call fcn.140059f70
nop
lea rcx, [0x1401b7268]
call fcn.140059c28
mov r15d, 0x13a8
mov eax, dword [r15 + rdi]
mov ecx, 0x20
test al, 1
jne 0x140046e08
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 0x140046de0
mov dword [rbx], 0x270
mov eax, dword [r15 + rdi]
mov r12d, 0x18
mov ebx, r12d
test al, 2
jne 0x140046e31
or eax, 2
mov dword [r15 + rdi], eax
mov dword [rdi + r12], ebp
mov eax, dword [0x1401b72a0]
dec eax
mov dword [rdi + r12 + 4], eax
mov edx, 0x20
test rsi, rsi
cmovne rdx, rsi
mov rcx, r14
call fcn.14004fc20
mov rcx, r14
cmp qword [r14 + 0x18], 0xf
jbe 0x140046e5a
mov rcx, qword [r14]
mov rdx, rcx
mov ebx, r12d
jmp 0x140046e5d
mov rdx, r14
mov rbp, rcx
mov r13, qword [r14 + 0x10]
add r13, rdx
cmp rcx, r13
je 0x140046f51
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 0x140046ece
mov rcx, rbx
call fcn.140052310
mov ecx, eax
jmp 0x140046f09
lea edi, [rcx + 1]
mov rcx, rbx
call fcn.140052310
mov esi, edi
mov ecx, eax
imul rcx, rsi
cmp ecx, edi
jae 0x140046f05
mov eax, edi
neg eax
xor edx, edx
div edi
mov edi, edx
cmp ecx, edx
jae 0x140046f05
mov rcx, rbx
call fcn.140052310
mov ecx, eax
imul rcx, rsi
cmp ecx, edi
jb 0x140046ef3
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, [0x1401b7290]
cmp qword [0x1401b72a8], 0xf
cmova rcx, qword [0x1401b7290]
movsxd rax, r8d
movzx ecx, byte [rax + rcx]
mov byte [rbp], cl
inc rbp
cmp rbp, r13
jne 0x140046e90
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