Function at 0x1400013d0
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister
Log keystrokes via polling

Disassembly:
mov eax, 0x1d38
call fcn.1400388a0
sub rsp, rax
mov rax, qword [0x140087028]
xor rax, rsp
mov qword [rsp + 0x1d20], rax
cmp byte [0x140087050], 0
je 0x1400014ab
mov ecx, dword [0x140087054]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1400014ab
lea rcx, [0x1400880f0]
mov qword [rsp + 0x1d30], rbx
call qword [sym.imp.MSVCP140.dll__Mtx_lock]
test eax, eax
jne 0x1400016b5
cmp dword [0x14008813c], 0x7fffffff
jne 0x140001449
mov dword [0x14008813c], 0x7ffffffe
jmp 0x14000163a
lea rcx, [rsp + 0x90]
mov r8d, 0x900
lea rdx, [0x1400877f0]
call sub.VCRUNTIME140.dll_memcpy
lea rcx, [0x1400880f0]
call qword [sym.imp.MSVCP140.dll__Mtx_unlock]
lea rax, [rsp + 0x90]
nop dword [rax + rax]
cmp byte [rax + 8], 0
movups xmm4, xmmword [rax + 0x10]
movups xmm3, xmmword [rax + 0x20]
movups xmm2, xmmword [rax + 0x30]
jne 0x1400014c3
add rax, 0x48
lea rcx, [rsp + 0x990]
cmp rax, rcx
jne 0x140001480
mov rbx, qword [rsp + 0x1d30]
mov rcx, qword [rsp + 0x1d20]
xor rcx, rsp
call fcn.140037a30
add rsp, 0x1d38
ret
movd eax, xmm3
test eax, eax
jle 0x1400014a3
movd ecx, xmm2
test ecx, ecx
je 0x1400014a3
cmp byte [0x140087051], 0
jne 0x1400014e4
movd eax, xmm4
cmp ecx, eax
je 0x1400014a3
psrldq xmm2, 4
movd eax, xmm2
dec eax
cmp eax, 0x77
ja 0x1400014a3
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rsp + 0x1d14], 0xffffffff
mov edx, 1
mov dword [rsp + 0x994], eax
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x994], eax
inc rdx
cmp rdx, 0x270
jb 0x140001511
lea rcx, [rsp + 0x990]
mov dword [rsp + 0x990], 0x270
call fcn.1400016f0
mov edx, eax
mov ebx, 0x80000000
shl rdx, 4
shr rdx, 0x20
add edx, 0x8000000a
cmp edx, ebx
lea eax, [rdx + rbx]
lea ecx, [rdx - 0x80000000]
cmovae ecx, eax
add ecx, dword [0x140087058]
movsxd rax, ecx
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x30], rax
call fcn.140001240
lea rcx, [0x1400877a0]
call qword [sym.imp.MSVCP140.dll__Mtx_lock]
test eax, eax
jne 0x1400016b5
cmp dword [0x1400877ec], 0x7fffffff
je 0x140001630
xor r9d, r9d
mov qword [rsp + 0x20], 0
xor r8d, r8d
lea ecx, [rax + 2]
xor edx, edx
call qword [sym.imp.USER32.dll_mouse_event]
lea rcx, [0x1400877a0]
call qword [sym.imp.MSVCP140.dll__Mtx_unlock]
lea rcx, [rsp + 0x990]
call fcn.1400016f0
mov edx, eax
shl rdx, 4
shr rdx, 0x20
add edx, 0x8000000a
cmp edx, ebx
lea eax, [rdx + rbx]
lea ecx, [rdx - 0x80000000]
cmovae ecx, eax
movsxd rax, ecx
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x30], rax
call fcn.140001240
lea rcx, [0x1400877a0]
call qword [sym.imp.MSVCP140.dll__Mtx_lock]
test eax, eax
jne 0x1400016b5
cmp dword [0x1400877ec], 0x7fffffff
jne 0x140001646
mov dword [0x1400877ec], 0x7ffffffe
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3
xor edx, edx
mov qword [rsp + 0x20], 0
xor r9d, r9d
xor r8d, r8d
lea ecx, [rdx + 4]
call qword [sym.imp.USER32.dll_mouse_event]
lea rcx, [0x1400877a0]
call qword [sym.imp.MSVCP140.dll__Mtx_unlock]
lea rcx, [rsp + 0x990]
call fcn.1400016f0
mov ecx, eax
shl rcx, 4
shr rcx, 0x20
add ecx, 0x8000000a
cmp ecx, ebx
lea eax, [rcx + rbx]
lea edx, [rcx - 0x80000000]
cmovae edx, eax
lea rcx, [rsp + 0x30]
add edx, dword [0x140087060]
movsxd rax, edx
mov qword [rsp + 0x30], rax
call fcn.140001240
jmp 0x1400014a3
mov ecx, 5
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
int3