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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
push rbp
push r14
push r15
lea rbp, [rsp - 0x1300]
mov eax, 0x1400
call fcn.1800cbf60
sub rsp, rax
mov rax, qword [0x180101040]
xor rax, rsp
mov qword [rbp + 0x12f0], rax
mov r15, rcx
xor ebx, ebx
mov dword [rsp + 0x58], ebx
cmp byte [rcx + 0x48], bl
je 0x18009ad95
cmp byte [0x1801c55d0], bl
jne 0x18009ad95
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 0x18009ad95
mov qword [rsp + 0x58], rbx
cmp dword [0x1801bd154], 7
jne 0x18009a947
mov r14, qword [0x1801c5ae8]
test r14, r14
jne 0x18009a984
mov r8d, 0x22
lea rdx, str.net.minecraft.world.item.BlockItem
jmp 0x18009a954
mov r8d, 0x1c
lea rdx, str.net.minecraft.item.ItemBlock
xorps xmm0, xmm0
movups xmmword [rsp + 0x38], xmm0
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x50], rbx
lea rcx, [rsp + 0x38]
call fcn.1800432a0
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x38]
call fcn.1800b1fa0
mov r14, qword [rsp + 0x58]
mov rax, qword [0x1801c5628]
lea rdx, [rsp + 0x20]
mov rcx, qword [rax + 8]
call fcn.1800a8470
nop
mov r8, qword [0x1801c5860]
mov rdx, qword [rax]
mov rcx, qword [0x1801c55e0]
call fcn.18004e0e0
mov rsi, rax
test rax, rax
je 0x18009a9eb
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov r8, qword [rdx + 0xa8]
mov rdx, rax
call r8
mov rdi, rax
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov r8, qword [rdx + 0xb8]
mov rdx, rsi
call r8
jmp 0x18009a9ee
mov rdi, rbx
mov esi, 8
mov rcx, qword [0x1801c55e0]
test rcx, rcx
je 0x18009aa1b
test rdi, rdi
je 0x18009aa1b
mov rax, qword [rcx]
mov r8, qword [rax + 0xb0]
mov rdx, rdi
call r8
mov rcx, qword [0x1801c55e0]
test rcx, rcx
je 0x18009aa3e
mov rdx, qword [rsp + 0x20]
test rdx, rdx
je 0x18009aa3e
mov rax, qword [rcx]
mov r8, qword [rax + 0xb0]
call r8
mov rcx, qword [0x1801c55e0]
test rdi, rdi
je 0x18009ad95
mov rax, qword [r15 + 0x80]
cmp qword [rax + 8], 0
je 0x18009ab6c
mov rax, qword [0x1801c5628]
lea rdx, [rsp + 0x28]
mov rcx, qword [rax + 8]
call fcn.1800a8470
nop
mov dword [rsp + 0x58], 9
mov r8, qword [0x1801c5860]
mov rdx, qword [rax]
mov rcx, qword [0x1801c55e0]
call fcn.18004e0e0
mov rsi, rax
test rax, rax
je 0x18009aacf
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov r8, qword [rdx + 0xa8]
mov rdx, rax
call r8
mov rdi, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov rax, qword [rdx + 0xb8]
mov rdx, rsi
call rax
mov rdx, rdi
jmp 0x18009aada
mov rdi, rbx
mov qword [rsp + 0x30], rbx
mov rdx, rbx
mov dword [rsp + 0x58], 0x1b
mov r8, qword [0x1801c5870]
mov rcx, qword [0x1801c55e0]
call fcn.18004e0e0
mov rsi, rax
test rax, rax
je 0x18009ab34
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov r8, qword [rdx + 0xa8]
mov rdx, rax
call r8
mov rbx, rax
mov qword [rsp + 0x20], rax
mov rcx, qword [0x1801c55e0]
mov rdx, qword [rcx]
mov rax, qword [rdx + 0xb8]
mov rdx, rsi
call rax
jmp 0x18009ab39
mov qword [rsp + 0x20], rbx
mov rdx, rbx
mov esi, 0x3f
mov dword [rsp + 0x58], esi
mov rcx, qword [0x1801c55e0]
mov rax, qword [rcx]
mov r9, qword [rax + 0x100]
mov r8, r14
call r9
mov rcx, qword [0x1801c55e0]
test al, al
jne 0x18009ab76
mov r14b, 1
jmp 0x18009ab79
mov rdi, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x20]
xor r14b, r14b
test sil, 4
je 0x18009aba7
and esi, 0xfffffffb
mov dword [rsp + 0x58], esi
test rcx, rcx
je 0x18009aba7
test rbx, rbx
je 0x18009aba7
mov rax, qword [rcx]
mov r8, qword [rax + 0xb0]
mov rdx, rbx
call r8
mov rcx, qword [0x1801c55e0]
test sil, 2
je 0x18009abd5
and esi, 0xfffffffd
mov dword [rsp + 0x58], esi
test rcx, rcx
je 0x18009abd5
test rdi, rdi
je 0x18009abd5
mov rax, qword [rcx]
mov r8, qword [rax + 0xb0]
mov rdx, rdi
call r8
mov rcx, qword [0x1801c55e0]
test sil, 1
je 0x18009abf8
test rcx, rcx
je 0x18009abf8
mov rdx, qword [rsp + 0x28]
test rdx, rdx
je 0x18009abf8
mov rax, qword [rcx]
mov r8, qword [rax + 0xb0]
call r8
nop
test r14b, r14b
jne 0x18009ad95
call qword [sym.imp.MSVCP140.dll__Xtime_get_ticks]
mov rcx, rax
movabs rax, 0x346dc5d63886594b
imul rcx
mov rbx, rdx
sar rbx, 0xb
mov rax, rbx
shr rax, 0x3f
add rbx, rax
mov eax, dword [0x1801c533c]
test eax, eax
jne 0x18009ac3a
mov eax, ebx
mov dword [0x1801c533c], ebx
mov ecx, ebx
sub ecx, eax
mov eax, 0x3e8
cdq
idiv dword [0x1801010b4]
cmp ecx, eax
jl 0x18009ad95
mov ecx, 2
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x18009ad95
lea rcx, [rsp + 0x58]
call qword [sym.imp.USER32.dll_GetCursorPos]
movzx r9d, word [rsp + 0x5c]
shl r9d, 0x10
movzx eax, word [rsp + 0x58]
or r9, rax
mov edx, 0x204
mov r8d, 2
mov rcx, qword [0x1801c5670]
call qword [sym.imp.USER32.dll_PostMessageA]
movzx r9d, word [rsp + 0x5c]
shl r9d, 0x10
movzx eax, word [rsp + 0x58]
or r9, rax
mov edx, 0x205
mov r8d, 2
mov rcx, qword [0x1801c5670]
call qword [sym.imp.USER32.dll_PostMessageA]
mov dword [0x1801c533c], ebx
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rbp + 0x12e4], 0xffffffff
mov dword [rsp + 0x64], eax
mov edx, 1
nop dword [rax]
nop dword [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x64], eax
inc rdx
cmp rdx, 0x270
jb 0x18009acf0
mov dword [rsp + 0x60], 0x270
mov rax, qword [r15 + 0x78]
cvttss2si esi, dword [rax + 8]
btc esi, 0x1f
mov rax, qword [r15 + 0x70]
cvttss2si ecx, dword [rax + 8]
btc ecx, 0x1f
sub ecx, esi
cmp ecx, 0xffffffff
jne 0x18009ad46
lea rcx, [rsp + 0x60]
call fcn.18004deb0
mov ecx, eax
jmp 0x18009ad88
lea ebx, [rcx + 1]
lea rcx, [rsp + 0x60]
call fcn.18004deb0
mov edi, ebx
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jae 0x18009ad84
mov eax, ebx
neg eax
xor edx, edx
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x18009ad84
nop dword [rax]
lea rcx, [rsp + 0x60]
call fcn.18004deb0
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x18009ad70
shr rcx, 0x20
lea eax, [rcx + rsi]
btc eax, 0x1f
mov dword [0x1801010b4], eax
mov rcx, qword [rbp + 0x12f0]
xor rcx, rsp
call fcn.1800c6fb0
lea r11, [rsp + 0x1400]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rdi, qword [r11 + 0x30]
mov rsp, r11
pop r15
pop r14
pop rbp
ret
mov rcx, qword [rcx + 8]
jmp 0x18009a880