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

Disassembly:
push rdi
sub rsp, 0x20
mov byte [0x180344aa2], 0
mov byte [0x180344a84], 0
mov byte [0x180342a07], 0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18034e914]
xor edi, edi
cmp eax, 0xc8
jbe 0x1800c9e11
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18034e918]
cmp eax, dword [0x1802ca274]
jbe 0x1800c9e11
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18034e91c]
cmp eax, dword [0x1802ca270]
jbe 0x1800c9e11
mov ecx, dword [0x180344aa4]
mov qword [rsp + 0x38], rbx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebx, 0x8000
test bx, ax
jne 0x1800c9d0f
lea ecx, [rdi + 0x6a]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9d0f
lea ecx, [rdi + 0x76]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9d0f
mov edx, 0xe3
call fcn.1800ad490
test eax, eax
je 0x1800c9b47
mov edx, 0xaf
call fcn.1800ad490
test eax, eax
jne 0x1800c9d0f
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9cc0
mov edx, 0xca
call fcn.1800ad490
test eax, eax
jne 0x1800c9cc0
lea ecx, [rax + 0x68]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9c80
mov edx, 0xbc
call fcn.1800ad490
test eax, eax
jne 0x1800c9c80
lea ecx, [rax + 0x62]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9c61
mov edx, 0xbb
call fcn.1800ad490
test eax, eax
jne 0x1800c9c61
lea ecx, [rax + 0x66]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9c35
mov edx, 0xaf
call fcn.1800ad490
test eax, eax
jne 0x1800c9c35
lea ecx, [rax + 0x64]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9c2c
mov edx, 0xae
call fcn.1800ad490
test eax, eax
jne 0x1800c9c2c
lea ecx, [rax + 0x65]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9c0d
mov edx, 0xc9
call fcn.1800ad490
test eax, eax
je 0x1800c9e0c
cmp dword [0x180343ad0], edi
mov byte [0x180344aa2], 1
jle 0x1800c9cfe
lea rcx, str.SELECT
jmp 0x1800c9cf9
mov byte [0x180342a07], 1
jmp 0x1800c9c3c
mov byte [0x180344a84], 1
cmp dword [0x180343ad0], edi
jle 0x1800c9c50
lea rcx, str.NAV_UP_DOWN
call fcn.1800c7d70
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e91c], eax
jmp 0x1800c9e0c
mov eax, dword [0x180344ad8]
mov edx, 1
cmp eax, dword [0x180344aa8]
lea ecx, [rax + 1]
cmovl edx, ecx
mov dword [0x180344ad8], edx
jmp 0x1800c9c9b
mov ecx, dword [0x180344ad8]
cmp ecx, 1
mov eax, dword [0x180344aa8]
lea edx, [rcx - 1]
cmovg eax, edx
mov dword [0x180344ad8], eax
cmp dword [0x180343ad0], edi
jle 0x1800c9caf
lea rcx, str.NAV_UP_DOWN
call fcn.1800c7d70
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e918], eax
jmp 0x1800c9e0c
mov eax, dword [0x180343ad0]
cmp eax, 1
jne 0x1800c9cda
mov byte [0x180344a99], al
mov byte [0x180344a9a], dil
jmp 0x1800c9cf2
mov byte [0x180344a99], dil
test eax, eax
jle 0x1800c9cfe
call fcn.1800c7e20
cmp dword [0x180343ad0], edi
jle 0x1800c9cfe
lea rcx, str.BACK
call fcn.1800c7d70
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e914], eax
jmp 0x1800c9e0c
mov eax, dword [0x180343ad0]
test eax, eax
jne 0x1800c9d57
mov eax, dword [0x180344abc]
mov edx, 1
mov dword [0x180342b30], eax
mov eax, dword [0x180344ad8]
mov dword [0x180343ae0], eax
mov dword [0x180344ad8], edx
mov dword [0x180343ad0], edx
mov dword [0x180344abc], edx
mov byte [0x180344a99], dil
mov byte [0x180344a9a], dl
jmp 0x1800c9d79
cmp eax, 1
jne 0x1800c9d6b
mov byte [0x180344a99], dil
mov byte [0x180344a9a], al
jmp 0x1800c9d79
mov byte [0x180344a99], 1
mov byte [0x180344a9a], dil
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e914], eax
movabs rax, 0x67c540aa08e4a6f5
mov qword [0x18034fb78], rax
mov qword [rsp + 0x30], rdi
mov dword [rsp + 0x30], 0xffffffff
mov rax, qword [rsp + 0x30]
mov qword [0x1802da5c8], rax
lea rax, str.ScreenFlash
mov qword [0x1802da5d0], rax
lea rax, str.MissionFailedSounds
mov qword [rsp + 0x30], rdi
mov qword [0x1802da5d8], rax
mov dword [rsp + 0x30], edi
mov rax, qword [rsp + 0x30]
mov qword [0x1802da5e0], rax
mov dword [0x1802da500], edi
mov dword [0x1802da4f0], 4
call fcn.1800cf390
cmp byte [0x1802ca267], dil
je 0x1800c9e0c
mov byte [0x1802c23e2], dil
mov byte [0x1802ca267], dil
mov rbx, qword [rsp + 0x38]
call fcn.1800be350
call fcn.1800c1110
mov dword [0x180344aa8], edi
add rsp, 0x20
pop rdi
ret