Function at 0x18004d840
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
mov qword [rsp + 0x20], rdi
push r14
mov eax, 0x13d0
call fcn.1800cbf60
sub rsp, rax
mov rax, qword [0x180101040]
xor rax, rsp
mov qword [rsp + 0x13c0], rax
mov r14, rcx
xor ebx, ebx
cmp byte [rcx + 0x48], bl
je 0x18004c927
cmp byte [0x1801c55d0], bl
jne 0x18004c927
call fcn.18004b7d0
mov rcx, rax
call fcn.18004bfa0
test al, al
je 0x18004c927
mov rdi, qword [0x1801c55e0]
mov rax, qword [0x1801c5628]
mov rdx, qword [rax]
mov rax, qword [rdi]
mov r9, qword [rax + 0x2f8]
mov r8, qword [0x1801c5778]
mov rcx, rdi
call r9
mov rdx, qword [rdi]
mov r9, qword [rdx + 0xc0]
xor r8d, r8d
mov rdx, rax
mov rcx, rdi
call r9
test al, al
je 0x18004c927
mov rcx, qword [0x1801c55e0]
mov rax, qword [0x1801c5628]
mov rdx, qword [rax]
mov rax, qword [rcx]
mov r9, qword [rax + 0x2f8]
mov r8, qword [0x1801c58f0]
call r9
mov rdi, rax
test rax, rax
je 0x18004c76e
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov r8, qword [rdx + 0xa8]
mov rdx, rax
call r8
mov rbx, rax
mov qword [rsp + 0x28], rax
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov rax, qword [rdx + 0xb8]
mov rdx, rdi
call rax
jmp 0x18004c773
mov qword [rsp + 0x28], rbx
mov rax, rbx
test rbx, rbx
je 0x18004c905
lea rcx, [rsp + 0x28]
call fcn.1800a7b90
test al, al
je 0x18004c905
call qword [sym.imp.MSVCP140.dll__Xtime_get_ticks]
mov rcx, rax
movabs rax, 0x346dc5d63886594b
imul rcx
mov rsi, rdx
sar rsi, 0xb
mov rax, rsi
shr rax, 0x3f
add rsi, rax
mov eax, dword [0x1801c514c]
test eax, eax
jne 0x18004c7ca
mov eax, esi
mov dword [0x1801c514c], eax
mov ecx, esi
sub ecx, eax
mov eax, 0x3e8
cdq
idiv dword [str._n_n_n_n]
cmp ecx, eax
jge 0x18004c7e3
jmp 0x18004c905
lea rcx, [rsp + 0x20]
call qword [sym.imp.USER32.dll_GetCursorPos]
movzx r9d, word [rsp + 0x24]
shl r9d, 0x10
movzx eax, word [rsp + 0x20]
or r9, rax
mov edi, 1
mov r8d, edi
mov edx, 0x201
mov rcx, qword [0x1801c5670]
call qword [sym.imp.USER32.dll_PostMessageA]
movzx r9d, word [rsp + 0x24]
shl r9d, 0x10
movzx eax, word [rsp + 0x20]
or r9, rax
mov r8d, edi
mov edx, 0x202
mov rcx, qword [0x1801c5670]
call qword [sym.imp.USER32.dll_PostMessageA]
mov dword [0x1801c514c], esi
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rsp + 0x13b4], 0xffffffff
mov dword [rsp + 0x34], eax
nop dword [rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edi
mov dword [rsp + rdi*4 + 0x34], eax
inc rdi
cmp rdi, 0x270
jb 0x18004c860
mov dword [rsp + 0x30], 0x270
mov rax, qword [r14 + 0x78]
cvttss2si ebp, dword [rax + 8]
btc ebp, 0x1f
mov rax, qword [r14 + 0x70]
cvttss2si ecx, dword [rax + 8]
btc ecx, 0x1f
sub ecx, ebp
cmp ecx, 0xffffffff
jne 0x18004c8b6
lea rcx, [rsp + 0x30]
call fcn.18004deb0
mov ecx, eax
jmp 0x18004c8f8
lea edi, [rcx + 1]
lea rcx, [rsp + 0x30]
call fcn.18004deb0
mov esi, edi
mov ecx, eax
imul rcx, rsi
cmp ecx, edi
jae 0x18004c8f4
mov eax, edi
neg eax
xor edx, edx
div edi
mov edi, edx
cmp ecx, edx
jae 0x18004c8f4
nop dword [rax]
lea rcx, [rsp + 0x30]
call fcn.18004deb0
mov ecx, eax
imul rcx, rsi
cmp ecx, edi
jb 0x18004c8e0
shr rcx, 0x20
lea eax, [rcx + rbp]
btc eax, 0x1f
mov dword [str._n_n_n_n], eax
mov rcx, qword [0x1801c55e0]
test rcx, rcx
je 0x18004c927
test rbx, rbx
je 0x18004c927
mov rax, qword [rcx]
mov rdx, rbx
mov r8, qword [rax + 0xb0]
call r8
nop
mov rcx, qword [rsp + 0x13c0]
xor rcx, rsp
call fcn.1800c6fb0
lea r11, [rsp + 0x13d0]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
mov rsp, r11
pop r14
ret
mov rcx, qword [rcx + 8]
jmp 0x18004c660