Function at 0x1800b8710
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push rbx
sub rsp, 0x20
mov byte [0x1801c6f40], 0
mov byte [0x1801c6f41], 0
mov byte [0x1801c6f42], 0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x1801ff940]
xor ebx, ebx
cmp eax, 0xc8
jbe 0x1800b8d8b
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x1801ce5dc]
cmp eax, dword [0x1801b76cc]
jbe 0x1800b8d8b
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x1801ff944]
cmp eax, dword [0x1801b76b4]
jbe 0x1800b8d8b
mov qword [rsp + 0x38], rsi
lea ecx, [rbx + 0x6a]
mov qword [rsp + 0x40], rdi
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edi, 0x8000
test di, ax
jne 0x1800b8d17
lea ecx, [rbx + 0x73]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
jne 0x1800b8d17
mov qword [rsp + 0x30], rbx
movabs rsi, 0xe2587f8cbbd87b1d
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xe3
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
je 0x1800b8851
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xaf
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
jne 0x1800b8d17
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
jne 0x1800b8c95
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xca
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
jne 0x1800b8c95
mov ecx, 0x68
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
jne 0x1800b8bf1
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xbc
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
jne 0x1800b8bf1
mov ecx, 0x62
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
jne 0x1800b8bd2
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xbb
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
jne 0x1800b8bd2
mov ecx, 0x66
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
jne 0x1800b8b42
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xaf
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
jne 0x1800b8b42
mov ecx, 0x64
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
jne 0x1800b8b39
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xae
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
jne 0x1800b8b39
mov ecx, 0x65
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test di, ax
jne 0x1800b8ab1
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a88], rax
mov dword [rsp + 0x30], 0xc9
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a90], rax
mov dword [0x1801b79c0], ebx
mov qword [0x1802008b8], rsi
mov dword [0x1801b79b0], 2
call fcn.1800ba210
cmp dword [rax], ebx
je 0x1800b8d81
cmp dword [0x1801c7ef8], ebx
mov byte [0x1801c6f40], 1
jle 0x1800b8d75
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x30], rbx
mov qword [0x1802008b8], rax
mov dword [rsp + 0x30], 0xffffffff
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a88], rax
lea rax, str.SELECT
mov qword [0x1801b7a90], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a98], rax
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7aa0], rax
mov dword [0x1801b79c0], ebx
mov dword [0x1801b79b0], 4
call fcn.1800ba210
jmp 0x1800b8d75
mov byte [0x1801c6f42], 1
jmp 0x1800b8b49
mov byte [0x1801c6f41], 1
cmp dword [0x1801c7ef8], ebx
jle 0x1800b8bc1
mov qword [rsp + 0x30], rbx
movabs rax, 0x67c540aa08e4a6f5
mov qword [0x1802008b8], rax
mov dword [rsp + 0x30], 0xffffffff
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a88], rax
lea rax, str.NAV_UP_DOWN
mov qword [0x1801b7a90], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a98], rax
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7aa0], rax
mov dword [0x1801b79c0], ebx
mov dword [0x1801b79b0], 4
call fcn.1800ba210
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1801ff944], eax
jmp 0x1800b8d81
mov eax, dword [0x1801c6f4c]
mov edx, 1
cmp eax, dword [0x1801c7ef0]
lea ecx, [rax + 1]
cmovl edx, ecx
mov dword [0x1801c6f4c], edx
jmp 0x1800b8c0c
mov ecx, dword [0x1801c6f4c]
cmp ecx, 1
mov eax, dword [0x1801c7ef0]
lea edx, [rcx - 1]
cmovg eax, edx
mov dword [0x1801c6f4c], eax
cmp dword [0x1801c7ef8], ebx
jle 0x1800b8c84
mov qword [rsp + 0x30], rbx
movabs rax, 0x67c540aa08e4a6f5
mov qword [0x1802008b8], rax
mov dword [rsp + 0x30], 0xffffffff
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a88], rax
lea rax, str.NAV_UP_DOWN
mov qword [0x1801b7a90], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [rsp + 0x30], rbx
mov qword [0x1801b7a98], rax
mov dword [rsp + 0x30], ebx
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7aa0], rax
mov dword [0x1801b79c0], ebx
mov dword [0x1801b79b0], 4
call fcn.1800ba210
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1801ce5dc], eax
jmp 0x1800b8d81
mov edx, dword [0x1801c7ef8]
test edx, edx
jle 0x1800b8d75
dec edx
lea r8, sym.MZ__K9_:OS_3_FHucU7_dwE_SB_ef3KdE_V_ZI
movsxd rax, edx
mov dword [0x1801c7ef8], edx
lea rcx, [rax*4]
mov eax, dword [rcx + r8 + 0x1c7f10]
mov dword [0x1801c8eb0], eax
mov eax, dword [rcx + r8 + 0x1c6f50]
mov dword [0x1801c6f4c], eax
test edx, edx
jle 0x1800b8d75
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x30], rbx
mov qword [0x1802008b8], rax
mov dword [rsp + 0x30], 0xffffffff
mov rax, qword [rsp + 0x30]
mov qword [0x1801b7a88], rax
lea rax, str.BACK
jmp 0x1800b8af5
mov eax, dword [0x1801c7ef8]
test eax, eax
jne 0x1800b8d52
mov eax, dword [0x1801c8eb0]
mov edx, 1
mov dword [0x1801c7f10], eax
mov eax, dword [0x1801c6f4c]
mov dword [0x1801c6f50], eax
mov dword [0x1801c6f4c], edx
mov dword [0x1801c7ef8], edx
mov dword [0x1801c8eb0], edx
jmp 0x1800b8d75
cmp eax, 1
jne 0x1800b8d75
mov eax, dword [0x1801c7f10]
mov dword [0x1801c8eb0], eax
mov eax, dword [0x1801c6f50]
mov dword [0x1801c6f4c], eax
mov dword [0x1801c7ef8], ebx
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1801ff940], eax
mov rsi, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
mov dword [0x1801c7ef0], ebx
add rsp, 0x20
pop rbx
ret