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

Disassembly:
push rbx
sub rsp, 0x60
mov qword [rsp + 0x88], r14
mov byte [0x180333b0e], 0
mov byte [0x180336d41], 0
mov byte [0x180336d40], 0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18033b85c]
xor ebx, ebx
lea r14, [0x180000000]
cmp eax, 0xc8
jbe 0x1800c8d35
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18033b868]
cmp eax, dword [0x1802b7184]
jbe 0x1800c8d35
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x18033b86c]
cmp eax, dword [0x1802b7180]
jbe 0x1800c8d35
mov ecx, dword [0x180336d6c]
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x80], rdi
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8c50
lea ecx, [rbx + 0x6a]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8c50
lea ecx, [rbx + 0x76]
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8c50
mov qword [rsp + 0x70], rbx
movabs rsi, 0xe2587f8cbbd87b1d
mov dword [rsp + 0x70], 0xe3
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
je 0x1800c87ed
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xaf
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
jne 0x1800c8c50
mov ecx, 0x60
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8b88
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xca
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
jne 0x1800c8b88
mov ecx, 0x68
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8af2
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xbc
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
jne 0x1800c8af2
mov ecx, 0x62
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8ad9
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xbb
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
jne 0x1800c8ad9
mov ecx, 0x66
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8a57
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xaf
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
jne 0x1800c8a57
mov ecx, 0x64
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8a4e
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xae
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
jne 0x1800c8a4e
mov ecx, 0x65
call qword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jb 0x1800c8a05
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xc9
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd28], rax
mov dword [0x1802bdc58], ebx
mov qword [0x18033c890], rsi
mov qword [0x1802bdd20], rbx
mov dword [0x1802bdc48], 2
call fcn.1800cdff0
cmp dword [rax], ebx
je 0x1800c8d28
cmp dword [0x180334dfc], ebx
mov byte [0x180333b0e], 1
jle 0x1800c8c3f
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033c890], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd20], rax
lea rax, str.SELECT
jmp 0x1800c8c0e
mov byte [0x180336d40], 1
jmp 0x1800c8a5e
mov byte [0x180336d41], 1
cmp dword [0x180334dfc], ebx
jle 0x1800c8ac8
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033c890], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd20], rax
lea rax, str.NAV_UP_DOWN
mov qword [0x1802bdd28], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [0x1802bdd30], rax
mov dword [0x1802bdc58], ebx
mov qword [0x1802bdd38], rbx
mov dword [0x1802bdc48], 4
call fcn.1800cdff0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033b86c], eax
jmp 0x1800c8d28
mov eax, dword [0x180334dc8]
cmp eax, dword [0x180334c94]
jge 0x1800c8aeb
inc eax
jmp 0x1800c8b07
mov eax, 1
jmp 0x1800c8b07
mov eax, dword [0x180334dc8]
cmp eax, 1
jle 0x1800c8b01
dec eax
jmp 0x1800c8b07
mov eax, dword [0x180334c94]
cmp dword [0x180334dfc], ebx
mov dword [0x180334dc8], eax
jle 0x1800c8b77
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033c890], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd20], rax
lea rax, str.NAV_UP_DOWN
mov qword [0x1802bdd28], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [0x1802bdd30], rax
mov dword [0x1802bdc58], ebx
mov qword [0x1802bdd38], rbx
mov dword [0x1802bdc48], 4
call fcn.1800cdff0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033b868], eax
jmp 0x1800c8d28
mov ecx, dword [0x180334dfc]
cmp ecx, 1
jne 0x1800c8ba1
mov byte [0x180336d67], bl
mov byte [0x180336d66], cl
jmp 0x1800c8bdd
mov byte [0x180336d66], bl
test ecx, ecx
jle 0x1800c8c3f
dec ecx
movsxd rax, ecx
mov dword [0x180334dfc], ecx
mov eax, dword [r14 + rax*4 + 0x334e00]
mov dword [0x180334dac], eax
movsxd rax, ecx
mov eax, dword [r14 + rax*4 + 0x335da0]
mov dword [0x180334dc8], eax
test ecx, ecx
jle 0x1800c8c3f
movabs rax, 0x67c540aa08e4a6f5
mov qword [rsp + 0x70], rbx
mov qword [0x18033c890], rax
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd20], rax
lea rax, str.BACK
mov qword [0x1802bdd28], rax
lea rax, str.HUD_FRONTEND_DEFAULT_SOUNDSET
mov qword [0x1802bdd30], rax
mov dword [0x1802bdc58], ebx
mov qword [0x1802bdd38], rbx
mov dword [0x1802bdc48], 4
call fcn.1800cdff0
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033b85c], eax
jmp 0x1800c8d28
mov eax, dword [0x180334dfc]
test eax, eax
jne 0x1800c8c8d
mov eax, dword [0x180334dac]
xor cl, cl
mov dword [0x180334e00], eax
mov eax, dword [0x180334dc8]
mov dword [0x180335da0], eax
mov eax, 1
mov dword [0x180334dfc], eax
mov dword [0x180334dac], eax
mov dword [0x180334dc8], eax
jmp 0x1800c8c9a
cmp eax, 1
jne 0x1800c8c96
xor cl, cl
jmp 0x1800c8c9a
xor al, al
mov cl, 1
mov byte [0x180336d66], cl
mov byte [0x180336d67], al
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x18033b85c], eax
movabs rax, 0x67c540aa08e4a6f5
mov qword [0x18033c890], rax
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x70], 0xffffffff
mov rax, qword [rsp + 0x70]
mov qword [0x1802bdd20], rax
lea rax, str.ScreenFlash
mov qword [0x1802bdd28], rax
lea rax, str.MissionFailedSounds
mov qword [0x1802bdd30], rax
mov dword [0x1802bdc58], ebx
mov qword [0x1802bdd38], rbx
mov dword [0x1802bdc48], 4
call fcn.1800cdff0
cmp byte [0x1802b7246], bl
je 0x1800c8d28
mov byte [0x1802af2e2], bl
mov byte [0x1802b7246], bl
mov rsi, qword [rsp + 0x78]
mov rdi, qword [rsp + 0x80]
movzx eax, byte [0x180336d67]
xorps xmm4, xmm4
test al, al
je 0x1800c8d99
cmp byte [0x180336d66], bl
jne 0x1800c8da1
movss xmm2, dword [0x18033c784]
movss xmm0, dword [0x18026c0b0]
subss xmm0, xmm2
mulss xmm0, dword [0x18026bbcc]
addss xmm2, xmm0
movaps xmm0, xmm2
movss dword [0x18033c784], xmm2
addss xmm0, dword [0x18026bbcc]
cvttss2si eax, xmm0
cmp eax, 1
jne 0x1800c8e17
mov byte [0x180336d67], bl
mov byte [0x180336d66], bl
jmp 0x1800c8e17
cmp byte [0x180336d66], bl
je 0x1800c8e0f
test al, al
jne 0x1800c8e0f
movss xmm2, dword [0x18033c784]
xorps xmm0, xmm0
movss xmm1, dword [0x18026bbcc]
subss xmm0, xmm2
mulss xmm0, xmm1
addss xmm2, xmm0
comiss xmm1, xmm2
movss dword [0x18033c784], xmm2
jbe 0x1800c8e17
mov ecx, dword [0x180334dfc]
dec ecx
mov byte [0x180336d67], bl
movsxd rax, ecx
mov byte [0x180336d66], bl
mov dword [0x180334dfc], ecx
mov eax, dword [r14 + rax*4 + 0x334e00]
mov dword [0x180334dac], eax
movsxd rax, ecx
mov eax, dword [r14 + rax*4 + 0x335da0]
mov dword [0x180334dc8], eax
jmp 0x1800c8e17
movss xmm2, dword [0x18033c784]
cmp dword [0x180334dfc], ebx
mov r14, qword [rsp + 0x88]
jle 0x1800c8eda
cmp dword [0x180334dc8], 0x10
jle 0x1800c8e3e
movss xmm3, dword [0x18026c5e0]
jmp 0x1800c8e49
movd xmm3, dword [0x180334dc8]
cvtdq2ps xmm3, xmm3
subss xmm3, dword [0x1802b7190]
movss xmm0, dword [0x18026bba8]
lea rdx, str.scroll
mulss xmm2, dword [0x18026d25c]
lea rcx, str.exFilLocat
mulss xmm3, dword [0x18026bd50]
cvttss2si eax, xmm2
addss xmm3, dword [0x1802b7190]
movss xmm2, dword [0x1802b717c]
mov dword [rsp + 0x50], eax
mov dword [rsp + 0x48], 0xff
mov dword [rsp + 0x40], 0xff
movss dword [0x1802b7190], xmm3
mulss xmm3, xmm0
mov dword [rsp + 0x38], 0xff
movss dword [rsp + 0x30], xmm4
movss dword [rsp + 0x28], xmm0
movss xmm0, dword [0x18026bdd8]
addss xmm3, dword [0x18026bcdc]
movss dword [rsp + 0x20], xmm0
call fcn.1800cdec0
mov dword [0x180334c94], ebx
add rsp, 0x60
pop rbx
ret