// File: /workspace/github_cpp_makefile_star2_O2/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 0xc313(%rip), %r14      # 0xffc8
leaq 0xc5ec(%rip), %rsi      # 0x102a8
movq %r14, %rdi
callq 0x3c12
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 0x3c46
leaq 0x6423(%rip), %rsi      # 0xa110
movq %r14, %rdi
callq 0x3280
leal 0xe(,%r12,2), %eax
movl %eax, -0x34(%rbp)
leal 0x18(,%r12,2), %eax
movl %eax, -0x38(%rbp)
pushq $0x1
popq %r13
leaq 0x6424(%rip), %r12      # 0xa13a
cmpl $0xd, %r13d
je 0x3d8b
movq -0x48(%rbp), %rax
leal (%rax,%r13), %ebx
movq -0x40(%rbp), %rax
movl %eax, -0x30(%rbp)
movl %ebx, -0x2c(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3c46
movq %rax, %rdi
movq %r12, %rsi
callq 0x3280
movl -0x34(%rbp), %eax
movl %eax, -0x30(%rbp)
movl %ebx, -0x2c(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3c46
movq %rax, %rdi
leaq 0x63d5(%rip), %rsi      # 0xa137
callq 0x3280
movl -0x38(%rbp), %eax
movl %eax, -0x30(%rbp)
movl %ebx, -0x2c(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x3c46
movq %rax, %rdi
movq %r12, %rsi
callq 0x3280
incl %r13d
jmp 0x3d16
movq -0x48(%rbp), %r12
leal 0xd(%r12), %eax
leaq -0x30(%rbp), %r15
movq -0x40(%rbp), %r14
movl %r14d, (%r15)
movl %eax, 0x4(%r15)
movq 0xc21e(%rip), %rbx      # 0xffc8
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3c46
leaq 0x6382(%rip), %rsi      # 0xa13e
movq %rbx, %rdi
callq 0x3280
leal 0x12(%r14), %ecx
leal 0x1(%r12), %eax
movl %ecx, (%r15)
movl %ecx, %r13d
movl %ecx, -0x34(%rbp)
movl %eax, 0x4(%r15)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3c46
leaq 0x637a(%rip), %rsi      # 0xa166
movq %rax, %rdi
callq 0x3280
leal 0x2(%r12), %ebx
movl %r13d, (%r15)
movl %ebx, 0x4(%r15)
leaq -0x30(%rbp), %rsi
movq 0xc1bd(%rip), %rdi      # 0xffc8
callq 0x3c46
leaq 0x680a(%rip), %r15      # 0xa621
movq %rax, %rdi
movq %r15, %rsi
callq 0x3280
addl $0x16, %r14d
leaq -0x50(%rbp), %r13
movl %r14d, (%r13)
movl %ebx, 0x4(%r13)
movq %rax, %rdi
movq %r13, %rsi
callq 0x3c46
movq %rax, %rdi
movq %r15, %rsi
callq 0x3280
leal 0x3(%r12), %ebx
movl -0x34(%rbp), %r15d
leaq -0x30(%rbp), %rax
movl %r15d, (%rax)
movl %ebx, 0x4(%rax)
leaq -0x30(%rbp), %rsi
movq 0xc162(%rip), %rdi      # 0xffc8
callq 0x3c46
movq %rax, %rdi
leaq 0x67ac(%rip), %rsi      # 0xa621
callq 0x3280
movl %r14d, (%r13)
movl %ebx, 0x4(%r13)
leaq -0x50(%rbp), %rsi
movq %rax, %rdi
callq 0x3c46
movq %rax, %rdi
leaq 0x6789(%rip), %rsi      # 0xa621
callq 0x3280
leal 0x4(%r12), %eax
movl %r15d, %r14d
leaq -0x30(%rbp), %rcx
movl %r15d, (%rcx)
movl %eax, 0x4(%rcx)
leaq -0x30(%rbp), %r15
movq 0xc10e(%rip), %rbx      # 0xffc8
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3c46
leaq 0x62a1(%rip), %rsi      # 0xa16d
movq %rax, %rdi
callq 0x3280
leal 0x6(%r12), %eax
movl %r14d, (%r15)
movl %eax, 0x4(%r15)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3c46
leaq 0x6282(%rip), %rsi      # 0xa174
movq %rax, %rdi
callq 0x3280
leal 0x8(%r12), %eax
movl %r14d, (%r15)
movl %eax, 0x4(%r15)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3c46
leaq 0x6263(%rip), %rsi      # 0xa17b
movq %rax, %rdi
callq 0x3280
leal 0xa(%r12), %eax
movl %r14d, (%r15)
movl %eax, 0x4(%r15)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3c46
leaq 0x6244(%rip), %rsi      # 0xa182
movq %rax, %rdi
callq 0x3280
addl $0xb, %r12d
movl %r14d, (%r15)
movl %r12d, 0x4(%r15)
leaq -0x30(%rbp), %rsi
movq %rbx, %rdi
callq 0x3c46
leaq 0x6225(%rip), %rsi      # 0xa189
movq %rax, %rdi
callq 0x3280
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop