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

Disassembly:
push rdi
sub rsp, 0x20
mov byte [0x180344aa3], 0
mov byte [0x180344a75], 0
mov byte [0x180344a74], 0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18034e91c]
xor edi, edi
cmp eax, 0xc8
jbe 0x1800c9d31
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18034e920]
cmp eax, dword [0x1802ca274]
jbe 0x1800c9d31
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18034e924]
cmp eax, dword [0x1802ca270]
jbe 0x1800c9d31
mov ecx, dword [0x180344aa4]
mov qword [rsp + 0x38], rbx
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebx, 0x8000
test bx, ax
jne 0x1800c9c2f
lea ecx, [rdi + 0x6a]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9c2f
lea ecx, [rdi + 0x76]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9c2f
mov edx, 0xe3
call fcn.1800ad3b0
test eax, eax
je 0x1800c9a67
mov edx, 0xaf
call fcn.1800ad3b0
test eax, eax
jne 0x1800c9c2f
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9be0
mov edx, 0xca
call fcn.1800ad3b0
test eax, eax
jne 0x1800c9be0
lea ecx, [rax + 0x68]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9ba0
mov edx, 0xbc
call fcn.1800ad3b0
test eax, eax
jne 0x1800c9ba0
lea ecx, [rax + 0x62]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9b81
mov edx, 0xbb
call fcn.1800ad3b0
test eax, eax
jne 0x1800c9b81
lea ecx, [rax + 0x66]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9b55
mov edx, 0xaf
call fcn.1800ad3b0
test eax, eax
jne 0x1800c9b55
lea ecx, [rax + 0x64]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9b4c
mov edx, 0xae
call fcn.1800ad3b0
test eax, eax
jne 0x1800c9b4c
lea ecx, [rax + 0x65]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
test bx, ax
jne 0x1800c9b2d
mov edx, 0xc9
call fcn.1800ad3b0
test eax, eax
je 0x1800c9d2c
cmp dword [0x180344a70], edi
mov byte [0x180344aa3], 1
jle 0x1800c9c1e
lea rcx, str.SELECT
jmp 0x1800c9c19
mov byte [0x180344a74], 1
jmp 0x1800c9b5c
mov byte [0x180344a75], 1
cmp dword [0x180344a70], edi
jle 0x1800c9b70
lea rcx, str.NAV_UP_DOWN
call fcn.1800c7c90
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e924], eax
jmp 0x1800c9d2c
mov eax, dword [0x180344ad8]
mov edx, 1
cmp eax, dword [0x180344aa8]
lea ecx, [rax + 1]
cmovl edx, ecx
mov dword [0x180344ad8], edx
jmp 0x1800c9bbb
mov ecx, dword [0x180344ad8]
cmp ecx, 1
mov eax, dword [0x180344aa8]
lea edx, [rcx - 1]
cmovg eax, edx
mov dword [0x180344ad8], eax
cmp dword [0x180344a70], edi
jle 0x1800c9bcf
lea rcx, str.NAV_UP_DOWN
call fcn.1800c7c90
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e920], eax
jmp 0x1800c9d2c
mov eax, dword [0x180344a70]
cmp eax, 1
jne 0x1800c9bfa
mov byte [0x180344a9b], al
mov byte [0x180344a9a], dil
jmp 0x1800c9c12
mov byte [0x180344a9b], dil
test eax, eax
jle 0x1800c9c1e
call fcn.1800c7d40
cmp dword [0x180344a70], edi
jle 0x1800c9c1e
lea rcx, str.BACK
call fcn.1800c7c90
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e91c], eax
jmp 0x1800c9d2c
mov eax, dword [0x180344a70]
test eax, eax
jne 0x1800c9c77
mov eax, dword [0x180344ac0]
mov edx, 1
mov dword [0x180343ad0], eax
mov eax, dword [0x180344ad8]
mov dword [0x180342b30], eax
mov dword [0x180344ad8], edx
mov dword [0x180344a70], edx
mov dword [0x180344ac0], edx
mov byte [0x180344a9b], dil
mov byte [0x180344a9a], dl
jmp 0x1800c9c99
cmp eax, 1
jne 0x1800c9c8b
mov byte [0x180344a9b], dil
mov byte [0x180344a9a], al
jmp 0x1800c9c99
mov byte [0x180344a9b], 1
mov byte [0x180344a9a], dil
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18034e91c], eax
movabs rax, 0x67c540aa08e4a6f5
mov qword [0x18034fb80], 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.1800cf2b0
cmp byte [0x1802ca267], dil
je 0x1800c9d2c
mov byte [0x1802c23e2], dil
mov byte [0x1802ca267], dil
mov rbx, qword [rsp + 0x38]
call fcn.1800be270
call fcn.1800c1030
mov dword [0x180344aa8], edi
add rsp, 0x20
pop rdi
ret