Function at 0x401f21
Capabilities:
Execute command

Disassembly:
push rbp
push rdi
push rsi
sub rsp, 0x6b0
lea rbp, [rsp + 0x80]
call dbg.__main
mov byte [rbp + 0x62f], 0x4d
mov ecx, 0xfffffff5
mov rax, qword [sym.imp.KERNEL32.dll_GetStdHandle]
call rax
mov qword [rbp + 0x620], rax
mov rax, qword [rbp + 0x620]
mov rcx, rax
call sym.cover_void_
lea rax, [rbp + 0x2d0]
mov qword [rbp + 0x618], rax
lea rax, [rbp + 0x600]
mov qword [rbp + 0x610], rax
mov rdx, qword [rbp + 0x618]
lea rax, [rbp - 0x60]
mov ecx, 0x65
mov rdi, rax
mov rsi, rdx
rep movsq qword [rdi], qword [rsi]
mov rdx, rsi
mov rax, rdi
mov ecx, dword [rdx]
mov dword [rax], ecx
lea rax, [rax + 4]
lea rdx, [rdx + 4]
lea rax, [rbp - 0x60]
mov rcx, rax
call sym.makeframe_Snake_
mov rax, qword [rbp + 0x618]
mov rcx, rax
call sym.initsnake_Snake_
mov rcx, qword [rbp + 0x610]
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov r8, rcx
mov rcx, rax
call sym.printfood_void__Snake__Food_
mov ecx, 0x1f4
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov rcx, rax
call sym.infor_void__Snake_
mov rax, qword [rbp + 0x618]
mov eax, dword [rax]
mov dword [0x00408038], eax
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x190]
mov dword [0x0040803c], eax
mov dword [0x00408034], 0
call sym.kbhit
test eax, eax
setne al
test al, al
je 0x402074
call sym.getch
mov byte [rbp + 0x62f], al
call sym.kbhit
test eax, eax
setne al
test al, al
je 0x402074
mov ecx, 0x14
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
mov dword [0x00408034], 1
movzx eax, byte [rbp + 0x62f]
sub eax, 0x41
cmp eax, 0x36
ja case.0x4020a8.66
mov eax, eax
lea rdx, [rax*4]
lea rax, [0x004051b0]
mov eax, dword [rdx + rax]
movsxd rdx, eax
lea rax, [0x004051b0]
add rax, rdx
jmp rax
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov rcx, rax
call sym.movesnake_void__Snake_
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea r8d, [rax - 1]
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea edx, [rax - 1]
mov rax, qword [rbp + 0x618]
movsxd rdx, edx
add rdx, 0x64
mov eax, dword [rax + rdx*4]
lea ecx, [rax - 1]
mov rax, qword [rbp + 0x618]
movsxd rdx, r8d
add rdx, 0x64
mov dword [rax + rdx*4], ecx
jmp case.0x4020a8.66
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov rcx, rax
call sym.movesnake_void__Snake_
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea r8d, [rax - 1]
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea edx, [rax - 1]
mov rax, qword [rbp + 0x618]
movsxd rdx, edx
add rdx, 0x64
mov eax, dword [rax + rdx*4]
lea ecx, [rax + 1]
mov rax, qword [rbp + 0x618]
movsxd rdx, r8d
add rdx, 0x64
mov dword [rax + rdx*4], ecx
jmp case.0x4020a8.66
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov rcx, rax
call sym.movesnake_void__Snake_
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea r8d, [rax - 1]
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea edx, [rax - 1]
mov rax, qword [rbp + 0x618]
movsxd rdx, edx
mov eax, dword [rax + rdx*4]
lea ecx, [rax - 2]
mov rax, qword [rbp + 0x618]
movsxd rdx, r8d
mov dword [rax + rdx*4], ecx
jmp case.0x4020a8.66
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov rcx, rax
call sym.movesnake_void__Snake_
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea r8d, [rax - 1]
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x324]
lea edx, [rax - 1]
mov rax, qword [rbp + 0x618]
movsxd rdx, edx
mov eax, dword [rax + rdx*4]
lea ecx, [rax + 2]
mov rax, qword [rbp + 0x618]
movsxd rdx, r8d
mov dword [rax + rdx*4], ecx
nop
mov rcx, qword [rbp + 0x610]
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov r8, rcx
mov rcx, rax
call sym.eatfood_void__Snake__Food_
mov rdx, qword [rbp + 0x618]
mov rax, qword [rbp + 0x620]
mov rcx, rax
call sym.printsnake_void__Snake_
mov rax, qword [rbp + 0x618]
mov rcx, rax
call sym.ifdead_Snake_
test eax, eax
je 0x40227a
cmp byte [rbp + 0x62f], 0x1b
je 0x40227a
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x320]
test eax, eax
jne 0x402281
mov eax, 1
jmp 0x402286
mov eax, 0
test al, al
je 0x4022d1
mov rax, qword [rbp + 0x620]
mov r8d, 3
mov edx, 0xf
mov rcx, rax
call sym.gotoxy_void__int__int_
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x320]
test eax, eax
jne 0x4022c3
lea rcx, [0x0040512e]
call sym.printf
jmp 0x402308
lea rcx, [0x00405140]
call sym.printf
jmp 0x402308
mov eax, dword [0x00408034]
test eax, eax
jne 0x4022f5
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x320]
mov ecx, eax
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
jmp 0x402303
mov ecx, 0x14
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
jmp 0x401ff3
mov ecx, 0xbb8
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
lea rcx, [0x0040509a]
call sym.system
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x320]
test eax, eax
jne 0x402341
lea rcx, [0x00405150]
call sym.puts
jmp 0x40235c
mov rax, qword [rbp + 0x618]
mov eax, dword [rax + 0x328]
mov edx, eax
lea rcx, str._n_n_n_n_n_t_t_t
call sym.printf
mov ecx, 0xbb8
mov rax, qword [sym.imp.KERNEL32.dll_Sleep]
call rax
mov eax, 0
add rsp, 0x6b0
pop rsi
pop rdi
pop rbp
ret