Function at 0x18000a31c
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r14
push r15
sub rsp, 0x20
movsxd rax, dword [0x18001278c]
lea r15, [0x180011470]
mov esi, dword [0x180012784]
lea rcx, [rax + rax*4]
mov ecx, dword [r15 + rcx*8 + 0x1350]
add esi, ecx
mov ecx, 0x26
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
xor ebp, ebp
lea r14d, [rbp + 1]
test r14b, al
je 0x18000a3b7
cmp dword [0x180012784], ebp
jle 0x18000a3b7
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x18000a392
mov dword [0x180012784], ebp
mov dword [0x180012794], ebp
jmp 0x18000a3b7
mov ecx, dword [0x180012794]
mov edx, dword [0x180012784]
lea eax, [rcx + 1]
cmp edx, eax
jge 0x18000a3ae
lea eax, [rcx - 1]
mov dword [0x180012794], eax
lea eax, [rdx - 1]
mov dword [0x180012784], eax
mov ecx, 0x28
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test r14b, al
je 0x18000a548
movsxd r9, dword [0x18001278c]
mov edx, ebp
mov r11d, dword [0x180012780]
lea rcx, [r9 + r9*4]
mov r8d, dword [r15 + rcx*8 + 0x1350]
lea r10d, [r9 + 1]
cmp dword [0x180012788], r10d
jle 0x18000a405
lea rcx, [r9 + r9*4]
mov eax, dword [r15 + rcx*8 + 0x1378]
sub eax, r14d
jmp 0x18000a409
lea eax, [r11 - 1]
cmp r8d, eax
jg 0x18000a416
add edx, r14d
add r8d, r14d
jmp 0x18000a3eb
lea eax, [rdx - 1]
cmp dword [0x180012784], eax
jge 0x18000a548
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x18000a518
movsxd r10, dword [0x18001278c]
mov r8d, ebp
mov r11d, dword [0x180012788]
mov edi, dword [0x180012780]
lea rcx, [r10 + r10*4]
mov edx, dword [r15 + rcx*8 + 0x1350]
lea r9d, [r10 + 1]
cmp r11d, r9d
jle 0x18000a476
lea rcx, [r10 + r10*4]
mov eax, dword [r15 + rcx*8 + 0x1378]
sub eax, r14d
jmp 0x18000a479
lea eax, [rdi - 1]
cmp edx, eax
jg 0x18000a485
add r8d, r14d
add edx, r14d
jmp 0x18000a460
lea eax, [r8 - 1]
mov edx, ebp
lea rcx, [r10 + r10*4]
mov dword [0x180012784], eax
mov r8d, dword [r15 + rcx*8 + 0x1350]
lea r9d, [r10 + 1]
cmp r11d, r9d
jle 0x18000a4b7
lea rcx, [r10 + r10*4]
mov eax, dword [r15 + rcx*8 + 0x1378]
sub eax, r14d
jmp 0x18000a4ba
lea eax, [rdi - 1]
cmp r8d, eax
jg 0x18000a4c7
add edx, r14d
add r8d, r14d
jmp 0x18000a4a1
mov r9d, dword [0x180012790]
sub edx, r9d
test edx, edx
jle 0x18000a548
lea rcx, [r10 + r10*4]
mov edx, ebp
mov r8d, dword [r15 + rcx*8 + 0x1350]
lea ebx, [r10 + 1]
cmp r11d, ebx
jle 0x18000a4fd
lea rcx, [r10 + r10*4]
mov eax, dword [r15 + rcx*8 + 0x1378]
sub eax, r14d
jmp 0x18000a500
lea eax, [rdi - 1]
cmp r8d, eax
jg 0x18000a50d
add edx, r14d
add r8d, r14d
jmp 0x18000a4e7
sub edx, r9d
mov dword [0x180012794], edx
jmp 0x18000a548
mov ecx, dword [0x180012790]
mov edx, dword [0x180012794]
add ecx, 0xfffffffe
mov r8d, dword [0x180012784]
add ecx, edx
cmp r8d, ecx
jle 0x18000a53e
lea eax, [rdx + 1]
mov dword [0x180012794], eax
lea eax, [r8 + 1]
mov dword [0x180012784], eax
mov ecx, 0x25
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebx, 0x11
test r14b, al
je 0x18000a5d0
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x18000a58d
mov eax, dword [0x18001278c]
test eax, eax
jle 0x18000a5d0
dec eax
mov dword [0x180012784], ebp
mov dword [0x18001278c], eax
mov dword [0x180012794], ebp
jmp 0x18000a5d0
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x18000a5ae
mov eax, dword [0x18001279c]
test eax, eax
jle 0x18000a5d0
dec eax
mov dword [0x18001279c], eax
jmp 0x18000a5d0
movsxd rax, esi
lea rdx, [rax + rax*2]
add rdx, rdx
mov eax, dword [r15 + rdx*8 + 0x28]
test eax, eax
jle 0x18000a5d0
cmp dword [0x180012784], ebp
jl 0x18000a5d0
dec eax
mov dword [r15 + rdx*8 + 0x28], eax
mov ecx, 0x27
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test r14b, al
je 0x18000a66c
mov ecx, 0xa0
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x18000a61d
mov eax, dword [0x180012788]
mov ecx, dword [0x18001278c]
dec eax
cmp ecx, eax
jge 0x18000a66c
lea eax, [rcx + 1]
mov dword [0x180012784], ebp
mov dword [0x18001278c], eax
mov dword [0x180012794], ebp
jmp 0x18000a66c
mov ecx, ebx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x18000a647
mov eax, dword [0x180012798]
mov ecx, dword [0x18001279c]
dec eax
cmp ecx, eax
jge 0x18000a66c
lea eax, [rcx + 1]
mov dword [0x18001279c], eax
jmp 0x18000a66c
movsxd rax, esi
lea rcx, [rax + rax*2]
add rcx, rcx
mov eax, dword [r15 + rcx*8 + 0x28]
cmp eax, dword [r15 + rcx*8 + 0x2c]
jge 0x18000a66c
cmp dword [0x180012784], ebp
jl 0x18000a66c
inc eax
mov dword [r15 + rcx*8 + 0x28], eax
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
add rsp, 0x20
pop r15
pop r14
pop rdi
ret