// File: /workspace/github_cpp_makefile_star2_O3/Leeingnyo[P]newPuyoC/game.cpp
// Function: Game::DrawFrame(int, int)
void Game::DrawFrame(int offset_x, int offset_y) {
    std::cout << Console::green;
    std::cout << Console::GotoXY(X(0 + offset_x), Y(0 + offset_y));
    std::cout << "┌──  ───┐┌───┐";
    for (int i = 1; i < 13; i++) {
        std::cout << Console::GotoXY(X( 0 + offset_x), Y(i + offset_y)) << "│";
        std::cout << Console::GotoXY(X( 7 + offset_x), Y(i + offset_y)) << "││";
        std::cout << Console::GotoXY(X(12 + offset_x), Y(i + offset_y)) << "│";
    }
    std::cout << Console::GotoXY(X(0 + offset_x), Y(13 + offset_y));
    std::cout << "└──────┘└───┘";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y( 1 + offset_y)) << " NEXT ";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y( 2 + offset_y)) << "  " << Console::GotoXY(X(11 + offset_x), Y( 2 + offset_y)) << "  ";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y( 3 + offset_y)) << "  " << Console::GotoXY(X(11 + offset_x), Y( 3 + offset_y)) << "  ";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y( 4 + offset_y)) << " Chain";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y( 6 + offset_y)) << "MaxChn";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y( 8 + offset_y)) << " Score";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y(10 + offset_y)) << " BGM  ";
    std::cout << Console::GotoXY(X( 9 + offset_x), Y(11 + offset_y)) << "ObsNum";
    
    /*
        0                   1
        0 1 2 3 4 5 6 7 8 9 0 1 2 
    00  ┌──  ───┐┌───┐ 
     1  │            ││ NEXT │ 
     2  │            ││      │ 
     3  │            ││      │ 
     4  │            ││ Chain│ 
     5  │            ││      │ 
     6  │            ││MaxChn│ 
     7  │            ││      │ 
     8  │            ││ Score│ 
     9  │            ││      │ 
    10  │            ││BGM   │ 
     1  │            ││ObsNum│ 
     2  │            ││      │ 
     3  └──────┘└───┘ 
    */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %esi, %ebx
movl %edi, %r12d
movq 0xd0cf(%rip), %r14      # 0x10fd0
leaq 0xd3a8(%rip), %rsi      # 0x112b0
movq %r14, %rdi
callq 0x3e2f
leal (%r12,%r12), %eax
leaq -0x30(%rbp), %r15
movq %rax, -0x40(%rbp)
movl %eax, (%r15)
movq %rbx, -0x48(%rbp)
movl %ebx, 0x4(%r15)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3e76
leaq 0x8217(%rip), %rsi      # 0xc150
movl $0x26, %edx
movq %r14, %rdi
callq 0x3310
leal 0xe(,%r12,2), %eax
movl %eax, -0x34(%rbp)
leal 0x18(,%r12,2), %eax
movl %eax, -0x38(%rbp)
movl $0x1, %ebx
leaq 0x8212(%rip), %r12      # 0xc17a
movq -0x48(%rbp), %rax
leal (%rax,%rbx), %r13d
movq -0x40(%rbp), %rax
movl %eax, -0x30(%rbp)
movl %r13d, -0x2c(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3e76
movl $0x3, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3310
movl -0x34(%rbp), %eax
movl %eax, -0x30(%rbp)
movl %r13d, -0x2c(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3e76
movl $0x6, %edx
movq %rax, %rdi
leaq 0x81bd(%rip), %rsi      # 0xc177
callq 0x3310
movl -0x38(%rbp), %eax
movl %eax, -0x30(%rbp)
movl %r13d, -0x2c(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3e76
movl $0x3, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3310
incl %ebx
cmpl $0xd, %ebx
jne 0x3f68
movq -0x48(%rbp), %r12
leal 0xd(%r12), %eax
leaq -0x30(%rbp), %r15
movq -0x40(%rbp), %r13
movl %r13d, (%r15)
movl %eax, 0x4(%r15)
movq 0xcfc2(%rip), %rbx      # 0x10fd0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3e76
leaq 0x815e(%rip), %rsi      # 0xc17e
movl $0x27, %edx
movq %rbx, %rdi
callq 0x3310
leal 0x12(%r13), %ecx
leal 0x1(%r12), %eax
movl %ecx, (%r15)
movl %ecx, %r14d
movl %ecx, -0x34(%rbp)
movl %eax, 0x4(%r15)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3e76
leaq 0x8151(%rip), %rsi      # 0xc1a6
movl $0x6, %edx
movq %rax, %rdi
callq 0x3310
leal 0x2(%r12), %ebx
movl %r14d, (%r15)
movl %ebx, 0x4(%r15)
leaq -0x30(%rbp), %rsi
movq 0xcf57(%rip), %rdi      # 0x10fd0
callq 0x3e76
movq %rax, %r14
leaq 0x85d9(%rip), %rsi      # 0xc661
movl $0x2, %edx
movq %rax, %rdi
callq 0x3310
addl $0x16, %r13d
leaq -0x50(%rbp), %r15
movl %r13d, (%r15)
movl %ebx, 0x4(%r15)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3e76
movl $0x2, %edx
movq %rax, %rdi
leaq 0x85a3(%rip), %rsi      # 0xc661
callq 0x3310
leal 0x3(%r12), %ebx
movl -0x34(%rbp), %eax
leaq -0x30(%rbp), %rcx
movl %eax, (%rcx)
movl %ebx, 0x4(%rcx)
leaq -0x30(%rbp), %rsi
movq 0xcef1(%rip), %rdi      # 0x10fd0
callq 0x3e76
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
leaq 0x856b(%rip), %rsi      # 0xc661
callq 0x3310
movl %r13d, (%r15)
movl %ebx, 0x4(%r15)
leaq -0x50(%rbp), %rsi
movq %r14, %rdi
callq 0x3e76
movl $0x2, %edx
movq %rax, %rdi
leaq 0x8544(%rip), %rsi      # 0xc661
callq 0x3310
leal 0x4(%r12), %eax
movl -0x34(%rbp), %r15d
leaq -0x30(%rbp), %rcx
movl %r15d, (%rcx)
movl %eax, 0x4(%rcx)
leaq -0x30(%rbp), %r14
movq 0xce90(%rip), %rbx      # 0x10fd0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3e76
leaq 0x805b(%rip), %rsi      # 0xc1ad
movl $0x6, %edx
movq %rax, %rdi
callq 0x3310
leal 0x6(%r12), %eax
movl %r15d, (%r14)
movl %eax, 0x4(%r14)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3e76
leaq 0x8037(%rip), %rsi      # 0xc1b4
movl $0x6, %edx
movq %rax, %rdi
callq 0x3310
leal 0x8(%r12), %eax
movl %r15d, (%r14)
movl %eax, 0x4(%r14)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3e76
leaq 0x8013(%rip), %rsi      # 0xc1bb
movl $0x6, %edx
movq %rax, %rdi
callq 0x3310
leal 0xa(%r12), %eax
movl %r15d, (%r14)
movl %eax, 0x4(%r14)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3e76
leaq 0x7fef(%rip), %rsi      # 0xc1c2
movl $0x6, %edx
movq %rax, %rdi
callq 0x3310
addl $0xb, %r12d
movl %r15d, (%r14)
movl %r12d, 0x4(%r14)
leaq -0x30(%rbp), %rsi
movq %rbx, %rdi
callq 0x3e76
leaq 0x7fcb(%rip), %rsi      # 0xc1c9
movl $0x6, %edx
movq %rax, %rdi
callq 0x3310
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq