Function at 0x140001d90
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
push rbx
push rbp
push r12
push r13
push r15
sub rsp, 0x30
mov rbp, rcx
mov rcx, qword [rcx + 0x98]
call fcn.140001400
mov r13, qword [rbp + 0x98]
xor edx, edx
sub r13, qword [rbp + 0xa0]
mov r15, qword [rbp + 0x28]
mov rax, r15
mov qword [rsp + 0x70], rsi
imul rax, r13
mov qword [rsp + 0x28], rdi
div qword [rbp + 0x30]
mov qword [rsp + 0x20], r14
mov r12, rax
nop dword [rax]
cmp byte [0x140032d30], 0
jne 0x140001e05
lea rcx, [0x140032d28]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x14000205e
mov byte [0x140032d30], 1
lea rcx, [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x14000204c
imul rax, qword [rsp + 0x60], 0xf4240
cqo
idiv qword [0x140032d28]
xor esi, esi
mov r14, rax
nop
call fcn.1400100f4
test eax, eax
je 0x140001e6d
call fcn.14000cfc8
cmp eax, 0x1b
jne 0x140001e72
call fcn.14000cfc8
cmp eax, 0x4f
jne 0x140001eaf
call fcn.14000cfc8
mov edx, eax
sub edx, 0x41
je 0x140001ec8
sub edx, 1
je 0x140001ec1
sub edx, 1
je 0x140001eba
cmp edx, 1
jne 0x140001eaf
lea esi, [rdx + 3]
jmp 0x140001ed1
mov eax, 0xffffffff
mov rbx, qword [rbp + 0x10]
test rbx, rbx
je 0x140001eaf
cmp eax, 0xff
ja 0x140001eaf
movsxd rcx, eax
mov rbx, qword [rbx + rcx*8 + 8]
test rbx, rbx
je 0x140001eaf
nop
mov eax, dword [rbx]
test eax, eax
jne 0x140001ecf
call fcn.14000cfc8
cmp eax, 0xff
ja 0x140001eaf
movsxd rcx, eax
mov rbx, qword [rbx + rcx*8 + 8]
test rbx, rbx
jne 0x140001e90
cmp eax, 0xffffffff
jne 0x140001e30
jmp 0x140001ed1
mov esi, 3
jmp 0x140001ed1
mov esi, 2
jmp 0x140001ed1
mov esi, 1
jmp 0x140001ed1
mov esi, eax
mov rcx, qword [0x140032d20]
mov rcx, qword [rcx + 0xa8]
call qword [sym.imp.KERNEL32.dll_FlushConsoleInputBuffer]
mov edi, dword [rbp + 0x90]
test esi, esi
mov edx, edi
mov rcx, rbp
cmovne edx, esi
call fcn.1400021a0
test al, al
jne 0x140001fa5
cmp qword [rbp + 0x38], 0
je 0x140001fa5
mov rcx, qword [rbp + 0x28]
cmp rcx, r15
je 0x140001f29
mov rax, rcx
xor edx, edx
imul rax, r13
mov r15, rcx
div qword [rbp + 0x30]
mov r12, rax
mov rax, qword [rbp + 0x98]
sub rax, r12
mov rbx, rax
shr rbx, 1
cmp esi, edi
cmovne rbx, rax
cmp byte [0x140032d30], 0
jne 0x140001f64
lea rcx, [0x140032d28]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x140002070
mov byte [0x140032d30], 1
lea rcx, [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
test eax, eax
je 0x140002082
imul rax, qword [rsp + 0x68], 0xf4240
cqo
idiv qword [0x140032d28]
sub rax, r14
cmp rax, rbx
jae 0x140001de0
sub rbx, rax
mov rcx, rbx
call fcn.140001400
jmp 0x140001de0
mov r9, qword [rbp + 0x28]
lea rcx, str.e__zu__dHe_37mSize:_e_97m_zu
mov rdx, qword [rbp + 0x40]
mov r8d, 2
call fcn.140001100
cmp qword [rbp + 0x38], 0
lea rax, str.e_91m__GAME_OVER_
lea rcx, str.e_93m__CONGRATULATIONS_
cmovne rcx, rax
call fcn.140001100
lea rcx, str.e_96m__Press_any_key_to_exit..._a
call fcn.140001100
mov ecx, 1
call fcn.1400074b4
mov rcx, rax
call fcn.14000792c
mov ecx, 0xb71b0
call fcn.140001400
mov rcx, qword [0x140032d20]
mov rcx, qword [rcx + 0xa8]
call qword [sym.imp.KERNEL32.dll_FlushConsoleInputBuffer]
call fcn.14000cfc8
mov rcx, qword [0x140032d20]
mov rcx, qword [rcx + 0xa8]
mov r14, qword [rsp + 0x20]
mov rdi, qword [rsp + 0x28]
mov rsi, qword [rsp + 0x70]
add rsp, 0x30
pop r15
pop r13
pop r12
pop rbp
pop rbx
jmp qword [sym.imp.KERNEL32.dll_FlushConsoleInputBuffer]
mov edx, 0x119
lea rcx, str.D:_a_terminal_snake_terminal_snake_srchelper_functions.c
call fcn.1400012f0
int3
mov edx, 0x113
lea rcx, str.D:_a_terminal_snake_terminal_snake_srchelper_functions.c
call fcn.1400012f0
int3
mov edx, 0x113
lea rcx, str.D:_a_terminal_snake_terminal_snake_srchelper_functions.c
call fcn.1400012f0
int3
mov edx, 0x119
lea rcx, str.D:_a_terminal_snake_terminal_snake_srchelper_functions.c
call fcn.1400012f0
int3