Function at 0x1400027d0
Capabilities:
Execute command
Manipulate console buffer

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x308]
sub rsp, 0x3e0
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
mov rax, qword [0x140017028]
xor rax, rsp
mov qword [rbp + 0x2b0], rax
mov ebx, r8d
mov esi, edx
mov qword [rbp - 0x60], rcx
mov qword [rbp + 0xb0], rcx
xor r14d, r14d
lea rcx, [0x140011684]
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_system]
xorps xmm0, xmm0
movups xmmword [rbp + 0x140], xmm0
mov qword [rbp + 0x150], r14
mov qword [rbp + 0x158], 0xf
mov byte [rbp + 0x140], r14b
mov r12d, 4
mov qword [rsp + 0x58], r12
lea r13d, [r14 + 2]
lea r15d, [r14 + 6]
cmp ebx, 1
jne 0x140002878
mov dword [rsp + 0x48], r12d
lea rdx, str.easy
jmp 0x14000289d
cmp ebx, r13d
jne 0x140002891
mov dword [rsp + 0x48], 3
lea rdx, str.medium
mov r8, r15
jmp 0x1400028a0
mov dword [rsp + 0x48], r13d
lea rdx, str.hard
mov r8, r12
lea rcx, [rbp + 0x140]
call fcn.140009890
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0xb8], xmm0
mov qword [rbp + 0xc8], rax
movdqa xmm1, xmmword [0x140012000]
movdqu xmmword [rbp + 0x80], xmm1
mov dword [rbp + 0x90], r14d
movdqu xmmword [rbp + 0x38], xmm0
mov qword [rbp + 0x48], r14
mov edi, 5
mov edx, edi
lea rcx, [rbp + 0x38]
call fcn.14000bb20
mov rbx, qword [rbp + 0x38]
lea r8d, [rdi + 0xf]
lea rdx, [rbp + 0x80]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memmove
lea rax, [rbx + 0x14]
mov qword [rbp + 0x40], rax
movdqa xmm0, xmmword [0x140012030]
movdqu xmmword [rbp + 0x68], xmm0
mov dword [rbp + 0x78], r14d
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x50], xmm1
mov qword [rbp + 0x60], r14
mov edx, edi
lea rcx, [rbp + 0x50]
call fcn.14000bb20
mov rbx, qword [rbp + 0x50]
lea r8d, [rdi + 0xf]
lea rdx, [rbp + 0x68]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memmove
lea rax, [rbx + 0x14]
mov qword [rbp + 0x58], rax
xorps xmm0, xmm0
movdqu xmmword [rbp + 0xb8], xmm0
mov qword [rbp + 0xc8], r14
mov rdx, r13
call fcn.14000bbb0
mov rbx, rax
mov qword [rbp + 0xb8], rax
mov qword [rbp + 0xc0], rax
lea rcx, [rax + 0x30]
mov qword [rbp + 0xc8], rcx
lea rax, [rbp + 0xb8]
mov qword [rbp - 0x50], rax
lea rdi, [rbp + 0x38]
xorps xmm0, xmm0
movups xmmword [rbp + 0xe8], xmm0
mov qword [rbp + 0xe8], rbx
mov qword [rbp + 0xf0], rbx
lea rax, [rbp + 0xb8]
mov qword [rbp + 0xf8], rax
nop dword [rax]
mov rdx, rdi
mov rcx, rbx
call fcn.140008d70
add rbx, 0x18
mov qword [rbp + 0xf0], rbx
add rdi, 0x18
lea rax, [rbp + 0x68]
cmp rdi, rax
jne 0x1400029c0
mov rdx, rbx
mov rcx, rbx
call fcn.14000b0f0
mov qword [rbp + 0xc0], rbx
lea r9, [fcn.140007620]
mov r8, r13
mov edx, 0x18
lea rcx, [rbp + 0x38]
call fcn.14000e23c
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x160], xmm1
mov rdx, r14
mov qword [rbp - 0x58], rdx
mov qword [rbp + 0x170], rdx
mov edx, esi
lea rcx, [rbp - 8]
call fcn.140009e10
nop
lea r8, [rbp - 8]
lea rcx, [rbp + 0x178]
call fcn.14000a5b0
nop
mov rdx, qword [rbp + 0x10]
cmp rdx, 0x10
jb 0x140002a81
inc rdx
mov rcx, qword [rbp - 8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140002a7c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140002a7c
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.14000e55c
movdqa xmm0, xmmword [0x140012020]
movdqu xmmword [rbp + 8], xmm0
mov byte [rbp - 8], 0
xorps xmm1, xmm1
movups xmmword [rbp + 0x100], xmm1
movups xmmword [rbp + 0x110], xmm1
movups xmmword [rbp + 0x130], xmm1
mov qword [rbp + 0x110], r14
mov ecx, 0x30
call fcn.14000e200
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rbp + 0x108], rax
mov qword [rbp + 0x118], r14
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x120], xmm0
mov qword [rbp + 0x130], 7
mov ecx, 8
mov qword [rbp + 0x138], rcx
mov dword [rbp + 0x100], 0x3f800000
mov r8, rax
lea edx, [rcx + 8]
lea rcx, [rbp + 0x118]
call fcn.140009690
nop
lea rdx, [0x140017ad8]
lea rcx, [rbp + 0xd0]
call fcn.140008e90
mov rdx, rax
lea rcx, [rbp - 8]
call fcn.140007180
mov rbx, rax
lea rax, [rbp + 0x100]
cmp rax, rbx
je 0x140002c08
lea rcx, [rbp + 0x100]
call fcn.1400097d0
mov edi, dword [rbx]
mov dword [rbp + 0x100], edi
mov rcx, qword [rbp + 0x108]
mov rax, qword [rbx + 8]
mov qword [rbp - 0x10], rax
mov qword [rbp + 0x108], rax
mov qword [rbx + 8], rcx
mov rcx, qword [rbp + 0x110]
mov rax, qword [rbx + 0x10]
mov qword [rbp + 0x110], rax
mov qword [rbx + 0x10], rcx
mov rax, qword [rbp + 0x118]
mov r14, qword [rbx + 0x18]
mov qword [rbp - 0x18], r14
mov qword [rbp + 0x118], r14
mov qword [rbx + 0x18], rax
mov rax, qword [rbp + 0x120]
mov r14, qword [rbx + 0x20]
mov qword [rbp - 0x20], r14
mov qword [rbp + 0x120], r14
mov qword [rbx + 0x20], rax
mov rcx, qword [rbp + 0x128]
mov rax, qword [rbx + 0x28]
mov qword [rbp + 0x128], rax
mov qword [rbx + 0x28], rcx
mov rax, qword [rbp + 0x130]
mov r14, qword [rbx + 0x30]
mov qword [rbp - 0x30], r14
mov qword [rbp + 0x130], r14
mov qword [rbx + 0x30], rax
mov rax, qword [rbp + 0x138]
mov r14, qword [rbx + 0x38]
mov qword [rbp - 0x28], r14
mov qword [rbp + 0x138], r14
mov qword [rbx + 0x38], rax
xor r14d, r14d
jmp 0x140002c45
mov rax, qword [rbp + 0x138]
mov qword [rbp - 0x28], rax
mov rax, qword [rbp + 0x130]
mov qword [rbp - 0x30], rax
mov rax, qword [rbp + 0x120]
mov qword [rbp - 0x20], rax
mov rax, qword [rbp + 0x118]
mov qword [rbp - 0x18], rax
mov rax, qword [rbp + 0x108]
mov qword [rbp - 0x10], rax
mov edi, dword [rbp + 0x100]
lea rcx, [rbp - 8]
call fcn.140003e10
mov ecx, esi
call fcn.1400044a0
mov dword [rsp + 0x30], 0x32
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.Instructions
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov dword [rsp + 0x30], 0x20032
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.__X__Pacman___G__Ghost_.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov dword [rsp + 0x30], 0x40032
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.__Use_arrow_keys_to_move.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov dword [rsp + 0x30], 0x60032
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.__Stay_away_from_G.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov dword [rsp + 0x30], 0x80032
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.__Finish_all_._to_win.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov dword [rsp + 0x30], 0xa0032
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.__Esc_to_return_to_menu.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov rcx, qword [0x140017a90]
mov rax, qword [rcx]
mov r13d, dword [rax]
mov eax, dword [rax + 4]
mov dword [rsp + 0x38], eax
mov rax, qword [rcx + 0x18]
mov ecx, dword [rax]
mov dword [rsp + 0x40], ecx
mov eax, dword [rax + 4]
mov dword [rsp + 0x3c], eax
nop dword [rax]
call qword [sym.imp.api_ms_win_crt_conio_l1_1_0.dll__getch]
test eax, eax
je 0x140002dcd
cmp eax, 0xe0
je 0x140002dcd
cmp eax, 0x1b
jne 0x140002db0
call fcn.1400014a0
jmp 0x140002db0
call qword [sym.imp.api_ms_win_crt_conio_l1_1_0.dll__getch]
cmp eax, 0x48
je 0x140002df9
cmp eax, 0x50
je 0x140002df1
cmp eax, 0x4b
je 0x140002de9
cmp eax, 0x4d
jne 0x140002db0
jmp 0x140002e04
mov r12d, 3
jmp 0x140002dff
mov r12d, 2
jmp 0x140002dff
mov r12d, 1
mov qword [rsp + 0x58], r12
mov dword [rsp + 0x30], r14d
mov r15d, r14d
mov dword [rsp + 0x34], r14d
mov rcx, qword [0x140017a80]
sub rcx, qword [0x140017a78]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov rcx, rdx
sar rcx, 2
mov rax, rcx
shr rax, 0x3f
add rcx, rax
mov qword [rbp - 0x50], rcx
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x140002e5f
imul r14, rax, 0x64
jmp 0x140002e7a
cqo
idiv rbx
imul r14, rax, 0x3b9aca00
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
add r14, rax
mov dword [rsp + 0x44], 0x150000
mov esi, dword [rsp + 0x44]
movsd xmm7, qword [0x140011fe8]
mov rcx, qword [rbp + 0x160]
mov qword [rbp - 0x68], rcx
nop dword [rax]
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, esi
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.Points:
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov rcx, rax
mov edx, r15d
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___int____ptr64]
mov rcx, rax
lea rdx, [0x14000a3a0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
call qword [sym.imp.MSVCP140.dll__Query_perf_frequency]
mov rbx, rax
call qword [sym.imp.MSVCP140.dll__Query_perf_counter]
cmp rbx, 0x989680
jne 0x140002f03
imul rbx, rax, 0x64
jmp 0x140002f1f
cqo
idiv rbx
imul rcx, rax, 0x3b9aca00
imul rax, rdx, 0x3b9aca00
cqo
idiv rbx
lea rbx, [rax + rcx]
mov edx, 1
lea rcx, [rbp + 0xa0]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setprecision_long_long___int64__]
mov r15, rax
lea rdx, str.Time:
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov rcx, rax
lea rdx, [0x140001440]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov r12, rax
mov rcx, qword [rax]
movsxd rcx, dword [rcx + 4]
add rcx, rax
mov rdx, qword [r15 + 8]
call qword [r15]
sub rbx, r14
movabs rax, 0x431bde82d7b634db
imul rbx
sar rdx, 0x12
mov rcx, rdx
shr rcx, 0x3f
add rdx, rcx
xorps xmm6, xmm6
cvtsi2sd xmm6, rdx
divsd xmm6, xmm7
movaps xmm1, xmm6
mov rcx, r12
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___double____ptr64]
mov rcx, rax
lea rdx, [0x140011b6c]
call fcn.140009ff0
mov rcx, rax
lea rdx, [0x14000a3a0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
inc dword [rsp + 0x30]
lea rax, [rbp + 0xe8]
mov qword [rbp - 0x70], rax
xorps xmm0, xmm0
movdqu xmmword [rbp + 0xe8], xmm0
xor eax, eax
mov qword [rbp + 0xf8], rax
mov rcx, qword [rbp + 0xc0]
sub rcx, qword [rbp + 0xb8]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov r15, rdx
sar r15, 2
mov rax, r15
shr rax, 0x3f
add r15, rax
je 0x1400030c6
movabs rax, 0xaaaaaaaaaaaaaaa
cmp r15, rax
ja 0x140003e00
mov rdx, r15
call fcn.14000bbb0
mov rbx, rax
mov qword [rbp + 0xe8], rax
mov qword [rbp + 0xf0], rax
lea rcx, [r15 + r15*2]
lea rdx, [rax + rcx*8]
mov qword [rbp + 0xf8], rdx
lea rax, [rbp + 0xe8]
mov qword [rsp + 0x50], rax
mov r15, qword [rbp + 0xb8]
mov r12, qword [rbp + 0xc0]
xorps xmm0, xmm0
movups xmmword [rbp + 0xd0], xmm0
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], rbx
lea rax, [rbp + 0xe8]
mov qword [rbp + 0xe0], rax
cmp r15, r12
je 0x1400030b4
mov rdx, r15
mov rcx, rbx
call fcn.140008d70
add rbx, 0x18
mov qword [rbp + 0xd8], rbx
add r15, 0x18
cmp r15, r12
jne 0x140003095
mov rdx, rbx
mov rcx, rbx
call fcn.14000b0f0
mov qword [rbp + 0xf0], rbx
lea rdx, [0x140017aa8]
lea rcx, [rbp - 0x48]
call fcn.140008e90
nop
lea rcx, [rbp + 0xe8]
mov qword [rsp + 0x20], rcx
mov r9, rax
mov rbx, qword [rsp + 0x58]
mov r8d, ebx
mov r15d, dword [rsp + 0x38]
movzx edx, r15w
movzx ecx, r13w
call fcn.140003fd0
test al, al
mov eax, 5
cmovne ebx, eax
mov qword [rsp + 0x58], rbx
mov rcx, qword [rbp + 0xb8]
movsxd r12, ebx
mov rax, qword [rcx + 0x18]
add r13d, dword [rax + r12*4 - 4]
mov dword [rbp - 0x70], r13d
mov rax, qword [rcx]
add r15d, dword [rax + r12*4 - 4]
mov dword [rsp + 0x38], r15d
lea rdx, [0x140017a78]
lea rcx, [rbp - 0x48]
call fcn.140008e90
mov r9, rax
xor eax, eax
mov ebx, eax
mov r8, qword [r9]
mov rcx, qword [r9 + 8]
sub rcx, r8
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
sar rdx, 2
mov rcx, rdx
shr rcx, 0x3f
add rdx, rcx
je 0x140003191
mov rax, qword [r8]
cmp dword [rax], r13d
jne 0x140003183
cmp dword [rax + 4], r15d
je 0x1400036eb
inc ebx
add r8, 0x18
movsxd rax, ebx
cmp rax, rdx
jb 0x140003171
mov rcx, r9
call fcn.140008e00
mov ebx, dword [rsp + 0x34]
mov rcx, qword [rbp + 0xb8]
mov rax, qword [rcx]
movzx edx, r15w
sub dx, word [rax + r12*4 - 4]
mov rcx, qword [rcx + 0x18]
movzx eax, r13w
sub ax, word [rcx + r12*4 - 4]
mov word [rsp + 0x44], ax
mov word [rsp + 0x46], dx
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x44]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, [0x140011adc]
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov word [rsp + 0x60], r13w
mov word [rsp + 0x62], r15w
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x60]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.X.G_n
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
cmp ebx, dword [rbp - 0x50]
jne 0x1400034c4
lea rcx, [0x140011684]
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_system]
xor eax, eax
mov dword [rsp + 0x64], eax
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x64]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.You_win__Your_score_is_recorded_in_the_leaderboard.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov rcx, rax
lea rdx, [0x14000a3a0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
xor edx, edx
mov r8d, 0x108
lea rcx, [rbp + 0x1a0]
call sub.VCRUNTIME140.dll_memset
mov r8d, 8
lea rdx, str.records.txt
lea rcx, [rbp + 0x1a0]
call fcn.140007740
nop
mov edx, 1
lea rcx, [rbp + 0x68]
call qword [sym.imp.MSVCP140.dll_struct_std::_Smanip_long_long___int64_____cdecl_std::setprecision_long_long___int64__]
mov r15, rax
mov r12, qword [rbp - 0x60]
mov rdx, r12
cmp qword [r12 + 0x18], 0x10
jb 0x1400032d5
mov rdx, qword [r12]
mov r8, qword [r12 + 0x10]
lea rcx, [rbp + 0x1a0]
call fcn.14000bdd0
lea rdx, [0x140011adc]
mov rcx, rax
call fcn.140009ff0
lea rdx, [rbp + 0x178]
cmp qword [rbp + 0x190], 0x10
cmovae rdx, qword [rbp + 0x178]
mov r8, qword [rbp + 0x188]
mov rcx, rax
call fcn.14000bdd0
lea rdx, [0x140011adc]
mov rcx, rax
call fcn.140009ff0
lea rdx, [rbp + 0x140]
cmp qword [rbp + 0x158], 0x10
cmovae rdx, qword [rbp + 0x140]
mov r8, qword [rbp + 0x150]
mov rcx, rax
call fcn.14000bdd0
lea rdx, [0x140011adc]
mov rcx, rax
call fcn.140009ff0
mov rcx, rax
lea rdx, [0x140001440]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::ios_base____ptr64____cdecl___class_std::ios_base____ptr64_____ptr64]
mov rbx, rax
mov rcx, qword [rax]
movsxd rcx, dword [rcx + 4]
add rcx, rax
mov rdx, qword [r15 + 8]
call qword [r15]
movaps xmm1, xmm6
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___double____ptr64]
mov rcx, rax
lea rdx, [0x14000a3a0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
lea rcx, [rbp + 0x1a8]
call fcn.140009440
test rax, rax
jne 0x1400033d2
mov rax, qword [rbp + 0x1a0]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0x1a0]
add rcx, rax
xor r8d, r8d
lea edx, [r8 + 2]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
lea rdx, str._nPress_any_key_to_return_to_menu.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov rcx, rax
lea rdx, [0x14000a3a0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
call qword [sym.imp.api_ms_win_crt_conio_l1_1_0.dll__getch]
nop
test eax, eax
mov rax, qword [rbp + 0x1a0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
jne 0x140003b7b
mov qword [rbp + rcx + 0x1a0], rax
mov rax, qword [rbp + 0x1a0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xa8]
mov dword [rbp + rcx + 0x19c], edx
lea rax, vtable.std::basic_filebuf_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x1a8], rax
cmp qword [rbp + 0x228], 0
je 0x140003487
mov rax, qword [rbp + 0x1c0]
lea rcx, [rbp + 0x218]
cmp qword [rax], rcx
jne 0x140003487
mov rdx, qword [rbp + 0x238]
mov rcx, qword [rbp + 0x230]
mov qword [rax], rcx
mov rax, qword [rbp + 0x1e0]
mov qword [rax], rcx
sub edx, ecx
mov rax, qword [rbp + 0x1f8]
mov dword [rax], edx
cmp byte [rbp + 0x224], 0
je 0x14000349c
lea rcx, [rbp + 0x1a8]
call fcn.140009440
lea rcx, [rbp + 0x1a8]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::destructor_void____ptr64]
nop
lea rcx, [rbp + 0x1b0]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::destructor_void____ptr64]
lea rcx, [rbp + 0x248]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::destructor_void____ptr64]
mov eax, dword [rsp + 0x30]
cdq
idiv dword [rsp + 0x48]
test edx, edx
jne 0x140003917
lea rax, [rbp - 8]
mov qword [rsp + 0x50], rax
mov dword [rbp - 8], edi
xor r12d, r12d
mov qword [rbp], r12
mov qword [rbp + 8], r12
lea ecx, [rdx + 0x30]
call fcn.14000e200
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rbp], rax
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x10], xmm0
mov qword [rbp + 0x20], r12
mov rcx, qword [rbp - 0x30]
mov qword [rbp + 0x28], rcx
mov rcx, qword [rbp - 0x28]
mov qword [rbp + 0x30], rcx
mov rdx, qword [rbp - 0x20]
sub rdx, qword [rbp - 0x18]
sar rdx, 3
mov r8, rax
lea rcx, [rbp + 0x10]
call fcn.140009690
mov r15, qword [rbp - 0x10]
mov rbx, qword [r15]
cmp rbx, r15
je 0x14000355f
nop
lea r8, [rbx + 0x10]
lea rdx, [rbp + 0x80]
lea rcx, [rbp - 8]
call fcn.14000d6e0
mov rax, qword [rbx]
mov rbx, rax
cmp rax, r15
jne 0x140003540
lea rdx, [0x140017ad8]
lea rcx, [rbp - 0x48]
call fcn.140008e90
mov r9, rax
mov r15d, r12d
mov r8, qword [rax]
mov rcx, qword [rax + 8]
sub rcx, r8
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
sar rdx, 2
mov rcx, rdx
shr rcx, 0x3f
add rdx, rcx
je 0x1400035c0
mov ecx, dword [rsp + 0x38]
mov rax, qword [r8]
cmp dword [rax], r13d
jne 0x1400035b1
cmp dword [rax + 4], ecx
je 0x1400037bd
inc r15d
add r8, 0x18
movsxd rax, r15d
cmp rax, rdx
jb 0x1400035a0
mov rcx, r9
call fcn.140008e00
mov r15d, 0xffffffff
lea rdx, [0x140017ad8]
lea rcx, [rbp + 0xe8]
call fcn.140008e90
mov r9, rax
mov ebx, r12d
mov r8, qword [rax]
mov rcx, qword [rax + 8]
sub rcx, r8
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
sar rdx, 2
mov rcx, rdx
shr rcx, 0x3f
add rdx, rcx
mov r12d, dword [rsp + 0x40]
je 0x140003636
mov ecx, dword [rsp + 0x3c]
mov rax, qword [r8]
cmp dword [rax], r12d
jne 0x140003628
cmp dword [rax + 4], ecx
je 0x1400037ca
inc ebx
add r8, 0x18
movsxd rax, ebx
cmp rax, rdx
jb 0x140003617
mov rcx, r9
call fcn.140008e00
mov ebx, 0xffffffff
lea r9, [rbp - 8]
mov r8d, r15d
mov edx, ebx
lea rcx, [rbp + 0xd0]
call fcn.140006b70
mov rbx, rax
lea rax, [rbp + 0x160]
cmp rax, rbx
je 0x1400037d7
mov rcx, qword [rbp - 0x68]
test rcx, rcx
je 0x1400036b1
mov rax, qword [rbp - 0x58]
sub rax, rcx
sar rax, 2
lea rdx, [rax*4]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400036ac
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140003c2b
call fcn.14000e55c
mov r13, qword [rbx]
mov qword [rbp - 0x68], r13
mov qword [rbp + 0x160], r13
mov rax, qword [rbx + 8]
mov qword [rbp + 0x168], rax
mov rax, qword [rbx + 0x10]
mov qword [rbp - 0x58], rax
mov qword [rbp + 0x170], rax
xor eax, eax
mov qword [rbx], rax
mov qword [rbx + 8], rax
mov qword [rbx + 0x10], rax
jmp 0x1400037db
mov rcx, r9
call fcn.140008e00
cmp ebx, 0xffffffff
je 0x140003199
movsxd rax, ebx
lea rcx, [rax + rax*2]
mov rax, qword [0x140017a78]
lea r13, [rax + rcx*8]
mov r15, qword [0x140017a80]
lea rbx, [r13 + 0x18]
cmp rbx, r15
je 0x14000373f
nop
mov rdx, rbx
mov rcx, r13
call fcn.140008cd0
add r13, 0x18
add rbx, 0x18
cmp rbx, r15
jne 0x140003720
mov r15, qword [0x140017a80]
mov rcx, qword [r15 - 0x18]
test rcx, rcx
je 0x14000379a
mov rax, qword [r15 - 8]
sub rax, rcx
sar rax, 2
lea rdx, [rax*4]
cmp rdx, 0x1000
jb 0x140003780
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140003b74
mov rcx, r8
call fcn.14000e55c
xor eax, eax
mov qword [r15 - 0x18], rax
mov qword [r15 - 0x10], rax
mov qword [r15 - 8], rax
mov r15, qword [0x140017a80]
sub r15, 0x18
mov qword [0x140017a80], r15
mov ebx, dword [rsp + 0x34]
inc ebx
mov dword [rsp + 0x34], ebx
mov r13d, dword [rbp - 0x70]
mov r15d, dword [rsp + 0x38]
jmp 0x14000319d
mov rcx, r9
call fcn.140008e00
jmp 0x1400035ce
mov rcx, r9
call fcn.140008e00
jmp 0x140003643
mov r13, qword [rbp - 0x68]
mov rcx, qword [rbp + 0xd0]
test rcx, rcx
je 0x140003827
mov rax, qword [rbp + 0xe0]
sub rax, rcx
sar rax, 2
lea rdx, [rax*4]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140003822
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140003c2b
call fcn.14000e55c
mov r15d, r12d
mov r12d, dword [rsp + 0x3c]
movsxd rax, dword [r13 + 4]
lea rcx, [rax + rax*2]
mov rax, qword [0x140017ad8]
mov rdx, qword [rax + rcx*8]
mov eax, dword [rdx]
mov dword [rsp + 0x40], eax
mov eax, dword [rdx + 4]
mov dword [rsp + 0x3c], eax
lea rdx, [0x140017a78]
lea rcx, [rbp - 0x48]
call fcn.140008e90
mov r13, rax
mov qword [rsp + 0x70], rax
mov rdx, rax
lea rcx, [rbp + 0xd0]
call fcn.140008e90
movsx edx, r12w
movsx ecx, r15w
mov r8, rax
call fcn.1400075a0
mov ebx, eax
mov word [rsp + 0x68], r15w
mov word [rsp + 0x6a], r12w
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
cmp ebx, 0xffffffff
lea rdx, [0x140011c18]
jne 0x1400038c6
lea rdx, [0x140011adc]
call fcn.140009ff0
mov eax, dword [rsp + 0x40]
mov word [rsp + 0x6c], ax
mov ebx, dword [rsp + 0x3c]
mov word [rsp + 0x6e], bx
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x6c]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, [0x140011c1c]
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
nop
mov rcx, r13
call fcn.140008e00
mov r13d, dword [rbp - 0x70]
jmp 0x14000391b
mov ebx, dword [rsp + 0x3c]
cmp r13d, dword [rsp + 0x40]
jne 0x1400039ab
cmp dword [rsp + 0x38], ebx
jne 0x1400039ab
lea rcx, [0x140011684]
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_system]
xor eax, eax
mov dword [rsp + 0x4c], eax
mov ecx, 0xfffffff5
call qword [sym.imp.KERNEL32.dll_GetStdHandle]
mov rcx, rax
mov edx, dword [rsp + 0x4c]
call qword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea rdx, str.You_lose_
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov rcx, rax
lea rdx, [0x14000a3a0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
lea rdx, str._nPress_any_key_to_return_to_menu.
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140009ff0
mov rcx, rax
lea rdx, [0x14000a3a0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
call qword [sym.imp.api_ms_win_crt_conio_l1_1_0.dll__getch]
test eax, eax
jne 0x140003c45
mov ecx, 0xc8
call qword [sym.imp.KERNEL32.dll_Sleep]
lea rax, [rsp + 0x78]
mov qword [rsp + 0x70], rax
xorps xmm0, xmm0
movdqu xmmword [rsp + 0x78], xmm0
xor eax, eax
mov qword [rbp - 0x78], rax
mov rcx, qword [rbp + 0xc0]
sub rcx, qword [rbp + 0xb8]
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
mov r15, rdx
sar r15, 2
mov rax, r15
shr rax, 0x3f
add r15, rax
je 0x140003aa3
movabs rax, 0xaaaaaaaaaaaaaaa
cmp r15, rax
ja 0x140003dfa
mov rdx, r15
call fcn.14000bbb0
mov rbx, rax
mov qword [rsp + 0x78], rax
mov qword [rbp - 0x80], rax
lea rcx, [r15 + r15*2]
lea rdx, [rax + rcx*8]
mov qword [rbp - 0x78], rdx
lea rax, [rsp + 0x78]
mov qword [rsp + 0x50], rax
mov r15, qword [rbp + 0xb8]
mov r12, qword [rbp + 0xc0]
xorps xmm0, xmm0
movups xmmword [rbp + 0xd0], xmm0
mov qword [rbp + 0xd0], rbx
mov qword [rbp + 0xd8], rbx
lea rax, [rsp + 0x78]
mov qword [rbp + 0xe0], rax
cmp r15, r12
je 0x140003a94
mov rdx, r15
mov rcx, rbx
call fcn.140008d70
add rbx, 0x18
mov qword [rbp + 0xd8], rbx
add r15, 0x18
cmp r15, r12
jne 0x140003a75
mov rdx, rbx
mov rcx, rbx
call fcn.14000b0f0
mov qword [rbp - 0x80], rbx
lea rax, [rsp + 0x78]
mov qword [rsp + 0x50], rax
lea rdx, [0x140017aa8]
lea rcx, [rbp - 8]
call fcn.140008e90
mov r15, rax
mov qword [rsp + 0x70], rax
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll__kbhit]
test eax, eax
je 0x140003adc
call fcn.140003f50
mov r12d, eax
cmp eax, 0xffffffff
jne 0x140003af9
mov rcx, r15
call fcn.140008e00
nop
lea rcx, [rsp + 0x78]
call fcn.140008e00
mov r15d, dword [rsp + 0x34]
jmp 0x140002ea0
cmp r12d, 0x1b
je 0x140003c32
lea rax, [rbp - 0x48]
mov qword [rbp - 0x70], rax
lea rdx, [rsp + 0x78]
lea rcx, [rbp - 0x48]
call fcn.140008e90
mov rbx, rax
mov rdx, r15
lea rcx, [rbp + 0xd0]
call fcn.140008e90
nop
mov qword [rsp + 0x20], rbx
mov r9, rax
mov r8d, r12d
movzx edx, word [rsp + 0x38]
movzx ecx, r13w
call fcn.140003fd0
test al, al
jne 0x140003adc
mov rcx, r15
call fcn.140008e00
nop
lea rcx, [rsp + 0x78]
call fcn.140008e00
test r12d, r12d
mov r15d, dword [rsp + 0x34]
je 0x140002ea0
mov qword [rsp + 0x58], r12
jmp 0x140002ea0
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov qword [rbp + rcx + 0x1a0], rax
mov rax, qword [rbp + 0x1a0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xa8]
mov dword [rbp + rcx + 0x19c], edx
lea rax, vtable.std::basic_filebuf_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x1a8], rax
cmp qword [rbp + 0x228], 0
je 0x140003bec
mov rax, qword [rbp + 0x1c0]
lea rcx, [rbp + 0x218]
cmp qword [rax], rcx
jne 0x140003bec
mov rdx, qword [rbp + 0x238]
mov rcx, qword [rbp + 0x230]
mov qword [rax], rcx
mov rax, qword [rbp + 0x1e0]
mov qword [rax], rcx
sub edx, ecx
mov rax, qword [rbp + 0x1f8]
mov dword [rax], edx
cmp byte [rbp + 0x224], 0
je 0x140003c01
lea rcx, [rbp + 0x1a8]
call fcn.140009440
lea rcx, [rbp + 0x1a8]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::destructor_void____ptr64]
nop
lea rcx, [rbp + 0x1b0]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::destructor_void____ptr64]
lea rcx, [rbp + 0x248]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::destructor_void____ptr64]
jmp 0x140003c49
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
mov rcx, r15
call fcn.140008e00
nop
lea rcx, [rsp + 0x78]
call fcn.140008e00
mov r12, qword [rbp - 0x60]
call fcn.1400014a0
nop
lea rcx, [rbp + 0x100]
call fcn.140003e10
nop
mov rdx, qword [rbp + 0x190]
cmp rdx, 0x10
jb 0x140003ca0
inc rdx
mov rcx, qword [rbp + 0x178]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140003c9b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140003c9b
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.14000e55c
xor ebx, ebx
mov qword [rbp + 0x188], rbx
mov qword [rbp + 0x190], 0xf
mov byte [rbp + 0x178], bl
mov rcx, qword [rbp - 0x68]
test rcx, rcx
je 0x140003d04
mov rdx, qword [rbp - 0x58]
sub rdx, rcx
sar rdx, 2
lea rdx, [rdx*4]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140003cfe
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140003cfe
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.14000e55c
nop
lea rcx, [rbp + 0xb8]
call fcn.140008e00
nop
mov rdx, qword [rbp + 0x158]
cmp rdx, 0x10
jb 0x140003d55
inc rdx
mov rcx, qword [rbp + 0x140]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140003d50
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140003d50
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.14000e55c
mov qword [rbp + 0x150], rbx
mov qword [rbp + 0x158], 0xf
mov byte [rbp + 0x140], 0
mov rdx, qword [r12 + 0x18]
cmp rdx, 0x10
jb 0x140003da6
inc rdx
mov rcx, qword [r12]
cmp rdx, 0x1000
jb 0x140003da1
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140003df3
mov rcx, r8
call fcn.14000e55c
mov qword [r12 + 0x10], rbx
mov qword [r12 + 0x18], 0xf
mov byte [r12], 0
mov rcx, qword [rbp + 0x2b0]
xor rcx, rsp
call fcn.14000e1e0
lea r11, [rsp + 0x3e0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
nop
call fcn.14000bb00
nop
call fcn.14000bb00
int3