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

Disassembly:
push rbx
sub rsp, 0x60
mov qword [rsp + 0x88], r14
mov byte [0x180334bb3], 0
mov byte [0x180335eae], 0
mov byte [0x180335ead], 0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18033c920]
xor ebx, ebx
lea r14, [0x180000000]
cmp eax, 0xc8
jbe 0x1800c8fc5
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18033c924]
cmp eax, dword [0x1802b8194]
jbe 0x1800c8fc5
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18033c928]
cmp eax, dword [0x1802b8190]
jbe 0x1800c8fc5
mov ecx, dword [0x180337e2c]
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x80], rdi
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8ee0
lea ecx, [rbx + 0x6a]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8ee0
lea ecx, [rbx + 0x76]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8ee0
mov qword [rsp + 0x70], rbx
movabs rsi, 0xe2587f8cbbd87b1d
mov dword [rsp + 0x70], 0xe3
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
je 0x1800c8a7d
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xaf
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
jne 0x1800c8ee0
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8e18
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xca
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
jne 0x1800c8e18
mov ecx, 0x68
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8d82
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xbc
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
jne 0x1800c8d82
mov ecx, 0x62
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8d69
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xbb
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
jne 0x1800c8d69
mov ecx, 0x66
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8ce7
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xaf
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
jne 0x1800c8ce7
mov ecx, 0x64
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8cde
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xae
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
jne 0x1800c8cde
mov ecx, 0x65
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8c95
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xc9
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed38], rax
mov dword [0x1802bec68], ebx
mov qword [0x18033d960], rsi
mov qword [0x1802bed30], rbx
mov dword [0x1802bec58], 2
call fcn.1800ce2a0
cmp dword [rax], ebx
je 0x1800c8fb8
cmp dword [0x180337e00], ebx
mov byte [0x180334bb3], 1
jle 0x1800c8ecf
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033d960], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed30], rax
lea rax, str.SELECT
jmp 0x1800c8e9e
mov byte [0x180335ead], 1
jmp 0x1800c8cee
mov byte [0x180335eae], 1
cmp dword [0x180337e00], ebx
jle 0x1800c8d58
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033d960], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed30], rax
lea rax, str.NAV_UP_DOWN
mov qword [0x1802bed38], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [0x1802bed40], rax
mov dword [0x1802bec68], ebx
mov qword [0x1802bed48], rbx
mov dword [0x1802bec58], 4
call fcn.1800ce2a0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033c928], eax
jmp 0x1800c8fb8
mov eax, dword [0x180335e88]
cmp eax, dword [0x180335d54]
jge 0x1800c8d7b
inc eax
jmp 0x1800c8d97
mov eax, 1
jmp 0x1800c8d97
mov eax, dword [0x180335e88]
cmp eax, 1
jle 0x1800c8d91
dec eax
jmp 0x1800c8d97
mov eax, dword [0x180335d54]
cmp dword [0x180337e00], ebx
mov dword [0x180335e88], eax
jle 0x1800c8e07
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033d960], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed30], rax
lea rax, str.NAV_UP_DOWN
mov qword [0x1802bed38], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [0x1802bed40], rax
mov dword [0x1802bec68], ebx
mov qword [0x1802bed48], rbx
mov dword [0x1802bec58], 4
call fcn.1800ce2a0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033c924], eax
jmp 0x1800c8fb8
mov ecx, dword [0x180337e00]
cmp ecx, 1
jne 0x1800c8e31
mov byte [0x180337e28], bl
mov byte [0x180337e27], cl
jmp 0x1800c8e6d
mov byte [0x180337e27], bl
test ecx, ecx
jle 0x1800c8ecf
dec ecx
movsxd rax, ecx
mov dword [0x180337e00], ecx
mov eax, dword [r14 + rax*4 + 0x335ec0]
mov dword [0x180335e70], eax
movsxd rax, ecx
mov eax, dword [r14 + rax*4 + 0x336e60]
mov dword [0x180335e88], eax
test ecx, ecx
jle 0x1800c8ecf
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033d960], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed30], rax
lea rax, str.BACK
mov qword [0x1802bed38], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [0x1802bed40], rax
mov dword [0x1802bec68], ebx
mov qword [0x1802bed48], rbx
mov dword [0x1802bec58], 4
call fcn.1800ce2a0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033c920], eax
jmp 0x1800c8fb8
mov eax, dword [0x180337e00]
test eax, eax
jne 0x1800c8f1d
mov eax, dword [0x180335e70]
xor cl, cl
mov dword [0x180335ec0], eax
mov eax, dword [0x180335e88]
mov dword [0x180336e60], eax
mov eax, 1
mov dword [0x180337e00], eax
mov dword [0x180335e70], eax
mov dword [0x180335e88], eax
jmp 0x1800c8f2a
cmp eax, 1
jne 0x1800c8f26
xor cl, cl
jmp 0x1800c8f2a
xor al, al
mov cl, 1
mov byte [0x180337e27], cl
mov byte [0x180337e28], al
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033c920], eax
movabs rax, 0x67c540aa08e4a6f5
mov qword [0x18033d960], rax
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bed30], rax
lea rax, str.ScreenFlash
mov qword [0x1802bed38], rax
lea rax, str.MissionFailedSounds
mov qword [0x1802bed40], rax
mov dword [0x1802bec68], ebx
mov qword [0x1802bed48], rbx
mov dword [0x1802bec58], 4
call fcn.1800ce2a0
cmp byte [0x1802b8256], bl
je 0x1800c8fb8
mov byte [0x1802b02f2], bl
mov byte [0x1802b8256], bl
mov rsi, qword [rsp + 0x78]
mov rdi, qword [rsp + 0x80]
movzx eax, byte [0x180337e28]
xorps xmm4, xmm4
test al, al
je 0x1800c9029
cmp byte [0x180337e27], bl
jne 0x1800c9031
movss xmm2, dword [0x18033d854]
movss xmm0, dword [0x18026c420]
subss xmm0, xmm2
mulss xmm0, dword [0x18026bf3c]
addss xmm2, xmm0
movaps xmm0, xmm2
movss dword [0x18033d854], xmm2
addss xmm0, dword [0x18026bf3c]
cvttss2si eax, xmm0
cmp eax, 1
jne 0x1800c90a7
mov byte [0x180337e28], bl
mov byte [0x180337e27], bl
jmp 0x1800c90a7
cmp byte [0x180337e27], bl
je 0x1800c909f
test al, al
jne 0x1800c909f
movss xmm2, dword [0x18033d854]
xorps xmm0, xmm0
movss xmm1, dword [0x18026bf3c]
subss xmm0, xmm2
mulss xmm0, xmm1
addss xmm2, xmm0
comiss xmm1, xmm2
movss dword [0x18033d854], xmm2
jbe 0x1800c90a7
mov ecx, dword [0x180337e00]
dec ecx
mov byte [0x180337e28], bl
movsxd rax, ecx
mov byte [0x180337e27], bl
mov dword [0x180337e00], ecx
mov eax, dword [r14 + rax*4 + 0x335ec0]
mov dword [0x180335e70], eax
movsxd rax, ecx
mov eax, dword [r14 + rax*4 + 0x336e60]
mov dword [0x180335e88], eax
jmp 0x1800c90a7
movss xmm2, dword [0x18033d854]
cmp dword [0x180337e00], ebx
mov r14, qword [rsp + 0x88]
jle 0x1800c916a
cmp dword [0x180335e88], 0x10
jle 0x1800c90ce
movss xmm3, dword [0x18026c950]
jmp 0x1800c90d9
movd xmm3, dword [0x180335e88]
cvtdq2ps xmm3, xmm3
subss xmm3, dword [0x1802b81a0]
movss xmm0, dword [0x18026bf18]
lea rdx, str.scroll
mulss xmm2, dword [0x18026d5cc]
lea rcx, str.exFilLocat
mulss xmm3, dword [0x18026c0c0]
cvttss2si eax, xmm2
addss xmm3, dword [0x1802b81a0]
movss xmm2, dword [0x1802b818c]
mov dword [rsp + 0x50], eax
mov dword [rsp + 0x48], 0xff
mov dword [rsp + 0x40], 0xff
movss dword [0x1802b81a0], xmm3
mulss xmm3, xmm0
mov dword [rsp + 0x38], 0xff
movss dword [rsp + 0x30], xmm4
movss dword [rsp + 0x28], xmm0
movss xmm0, dword [0x18026c148]
addss xmm3, dword [0x18026c04c]
movss dword [rsp + 0x20], xmm0
call fcn.1800ce150
mov dword [0x180335d54], ebx
add rsp, 0x60
pop rbx
ret