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

Disassembly:
push rbx
sub rsp, 0x20
mov byte [0x1800416ef], 0
mov byte [0x1800416ee], 0
mov byte [0x1800416ed], 0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x1800451b0]
xor ebx, ebx
cmp eax, 0xc8
jbe 0x18000db06
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x1800451b4]
cmp eax, 0x64
jbe 0x18000db06
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x1800451b8]
cmp eax, 0x8c
jbe 0x18000db06
mov qword [rsp + 0x38], rsi
lea ecx, [rbx + 0x6a]
mov qword [rsp + 0x40], rdi
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000d5d6
cmp byte [0x1800430ac], bl
je 0x18000d66c
mov qword [rsp + 0x30], rbx
movabs rdi, 0xe2587f8cbbd87b1d
mov dword [rsp + 0x30], 0xe3
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d6b5
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xaf
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d6b5
cmp byte [0x1800430ac], bl
jne 0x18000d6b5
mov eax, dword [0x180041fa8]
mov byte [0x1800430ac], 1
test eax, eax
jne 0x18000d77b
mov eax, dword [0x180041fac]
mov dword [0x1800431c0], eax
mov eax, dword [0x1800430a8]
mov dword [0x180044160], eax
mov eax, 1
mov dword [0x180041fa8], eax
mov dword [0x180041fac], eax
mov dword [0x1800430a8], eax
jmp 0x18000daf0
mov ecx, 0x6a
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000d6d3
cmp byte [0x1800430ac], bl
jne 0x18000d75f
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xe3
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d7a7
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xaf
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d7a7
cmp byte [0x1800430ac], bl
je 0x18000d7a7
mov eax, dword [0x180041fa8]
test eax, eax
jne 0x18000d775
mov byte [0x1800430ac], 1
jmp 0x18000d681
mov byte [0x1800430ac], bl
cmp eax, 1
jne 0x18000daf0
mov eax, dword [0x1800431c0]
mov dword [0x180041fac], eax
mov eax, dword [0x180044160]
mov dword [0x1800430a8], eax
mov dword [0x180041fa8], ebx
jmp 0x18000daf0
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000d7c1
cmp byte [0x1800430ac], bl
jne 0x18000d809
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xca
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d85a
cmp byte [0x1800430ac], bl
je 0x18000d85a
mov ecx, dword [0x180041fa8]
test ecx, ecx
jle 0x18000daf0
dec ecx
lea rdx, [0x180000000]
movsxd rax, ecx
mov dword [0x180041fa8], ecx
mov eax, dword [rdx + rax*4 + 0x431c0]
mov dword [0x180041fac], eax
movsxd rax, ecx
mov eax, dword [rdx + rax*4 + 0x44160]
mov dword [0x1800430a8], eax
test ecx, ecx
jle 0x18000daf0
lea rdx, str.BACK
jmp 0x18000daeb
mov ecx, 0x68
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000d874
cmp byte [0x1800430ac], bl
jne 0x18000d8bc
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xbc
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d8d6
cmp byte [0x1800430ac], bl
je 0x18000d8d6
mov eax, dword [0x1800430a8]
cmp eax, 1
jle 0x18000d8ce
dec eax
jmp 0x18000d94f
mov eax, dword [0x1800430a4]
jmp 0x18000d94f
mov ecx, 0x62
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000d8f0
cmp byte [0x1800430ac], bl
jne 0x18000d938
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xbb
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d97a
cmp byte [0x1800430ac], bl
je 0x18000d97a
mov eax, dword [0x1800430a8]
cmp eax, dword [0x1800430a4]
jge 0x18000d94a
inc eax
jmp 0x18000d94f
mov eax, 1
cmp dword [0x180041fa8], ebx
mov dword [0x1800430a8], eax
jle 0x18000d969
lea rdx, str.NAV_UP_DOWN
call fcn.18000ddc0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1800451b4], eax
jmp 0x18000dafc
mov ecx, 0x66
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000d994
cmp byte [0x1800430ac], bl
jne 0x18000d9dc
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xaf
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000d9e5
cmp byte [0x1800430ac], bl
je 0x18000d9e5
mov byte [0x1800416ee], 1
jmp 0x18000da4e
mov ecx, 0x64
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000d9ff
cmp byte [0x1800430ac], bl
jne 0x18000da47
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xae
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000da73
cmp byte [0x1800430ac], bl
je 0x18000da73
mov byte [0x1800416ed], 1
cmp dword [0x180041fa8], ebx
jle 0x18000da62
lea rdx, str.NAV_UP_DOWN
call fcn.18000ddc0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1800451b8], eax
jmp 0x18000dafc
mov ecx, 0x65
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x18000da8d
cmp byte [0x1800430ac], bl
jne 0x18000dad5
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x30], 0xc9
mov rax, qword [rsp + 0x30]
mov qword [0x180040b58], rax
mov dword [0x180040a88], ebx
mov qword [0x180045298], rdi
mov qword [0x180040b50], rbx
mov dword [0x180040a78], 2
call fcn.18000de30
cmp dword [rax], ebx
je 0x18000dafc
cmp byte [0x1800430ac], bl
je 0x18000dafc
cmp dword [0x180041fa8], ebx
mov byte [0x1800416ef], 1
jle 0x18000daf0
lea rdx, str.SELECT
call fcn.18000ddc0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x1800451b0], eax
mov rdi, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x38]
mov dword [0x1800430a4], ebx
add rsp, 0x20
pop rbx
ret