// File: /workspace/github_cpp_makefile_star2_O1/Leeingnyo[P]newPuyoC/./board.h
// Function: Board::RotateCCW()
void RotateCCW() {
        if (rotate_t == 0) {
            rotate_t = 1;
            int sub_x = 0, sub_y = 0;
            if (bipuyo) {
                bipuyo->GetDirection(sub_x, sub_y);
            }
            if (sub_x == 1) {
                // MS 일때 
                // 아무 의미 없음 
            } 
            if (sub_y == -1) {
                // 위일 때 
                // |S
                // |M --> |SM 
                // 이면 밀어야 함 
                if (bipuyo_x == 0 || !map[bipuyo_y][bipuyo_x - 1].IsBlank()) {
                    // 근데 
                    // |S|     |M|
                    // |M| --> |S|
                    // 이면 뒤바꿔야 함 
                    if (bipuyo_x == (MAP_WIDTH - 1) || !map[bipuyo_y][bipuyo_x + 1].IsBlank()) {
                        bipuyo_y--;
                        bipuyo->RotateCCW();
                    }
                    else {
                        bipuyo_x++;
                    }
                }
            }
            if (sub_x == -1) {
                // SM 일떄 
                //       M
                // SM -> S
                // 바닥이 있으면 이렇게 
                if (bipuyo_y == (MAP_HEIGHT - 1) || !map[bipuyo_y + 1][bipuyo_x].IsBlank()) {
                    bipuyo_y--;
                }
            }
            if (sub_y == 1) {
                // 아래일 때 
                // M|
                // S| --> MS| 
                // 이면 밀어야 함 
                if (bipuyo_x == (MAP_WIDTH - 1) || !map[bipuyo_y][bipuyo_x + 1].IsBlank()) {
                    // 근데 
                    // |M|     |S|
                    // |S| --> |M|
                    // 이면 뒤바꿔야 함 
                    if (bipuyo_x == 0 || !map[bipuyo_y][bipuyo_x - 1].IsBlank()) {
                        bipuyo_y++;
                        bipuyo->RotateCCW();
                    }
                    else {
                        bipuyo_x--;
                    }
                }
            }
            bipuyo->RotateCCW();
        }
    }

// Assembly:
cmpl $0x0, 0x88(%rdi)
je 0x70a2
retq
pushq %rbp
movq %rsp, %rbp
movl $0x1, 0x88(%rdi)
movq 0x50(%rdi), %rax
testq %rax, %rax
je 0x70d6
movl 0x4(%rax), %ecx
cmpl $0x3, %ecx
ja 0x70dd
andb $0xf, %cl
movb $0x8, %sil
shrb %cl, %sil
movb $0x1, %r8b
shrb %cl, %r8b
movb $0x4, %dl
shrb %cl, %dl
jmp 0x70e4
xorl %esi, %esi
xorl %r8d, %r8d
jmp 0x70e2
movb $0x1, %r8b
xorl %esi, %esi
xorl %edx, %edx
testb %r8b, %r8b
je 0x7165
movslq 0x60(%rdi), %rcx
testq %rcx, %rcx
je 0x710b
movslq 0x64(%rdi), %r8
leaq (%r8,%r8,2), %r8
leaq (%rdi,%r8,2), %r8
cmpb $0x0, -0x1(%rcx,%r8)
je 0x7165
cmpl $0x5, %ecx
je 0x711f
movslq 0x64(%rdi), %r8
leaq (%r8,%r8,2), %r8
leaq (%rdi,%r8,2), %r8
cmpb $0x0, 0x1(%rcx,%r8)
je 0x714d
decl 0x64(%rdi)
movl 0x4(%rax), %ecx
cmpq $0x3, %rcx
ja 0x7144
leaq 0x4f9e(%rip), %r8       # 0xc0d0
movslq (%r8,%rcx,4), %rcx
addq %r8, %rcx
jmpq *%rcx
movl $0x3, 0x4(%rax)
jmp 0x7165
movl $0x0, 0x4(%rax)
jmp 0x7165
incq %rcx
movl %ecx, 0x60(%rdi)
jmp 0x7165
movl $0x1, 0x4(%rax)
jmp 0x7165
movl $0x2, 0x4(%rax)
testb $0x1, %sil
je 0x718e
movslq 0x64(%rdi), %rcx
cmpq $0xc, %rcx
je 0x7189
leaq (%rcx,%rcx,2), %rsi
movslq 0x60(%rdi), %r8
leaq (%rdi,%rsi,2), %rsi
cmpb $0x0, 0x6(%r8,%rsi)
je 0x718e
decl %ecx
movl %ecx, 0x64(%rdi)
testb $0x1, %dl
je 0x720d
movslq 0x60(%rdi), %rcx
cmpq $0x5, %rcx
je 0x71b4
movslq 0x64(%rdi), %rdx
leaq (%rdx,%rdx,2), %rdx
leaq (%rdi,%rdx,2), %rdx
cmpb $0x0, 0x1(%rcx,%rdx)
je 0x720d
testl %ecx, %ecx
je 0x71c7
movslq 0x64(%rdi), %rdx
leaq (%rdx,%rdx,2), %rdx
leaq (%rdi,%rdx,2), %rdx
cmpb $0x0, -0x1(%rcx,%rdx)
je 0x71ec
incl 0x64(%rdi)
movl 0x4(%rax), %ecx
cmpq $0x3, %rcx
ja 0x71f4
leaq 0x4f06(%rip), %rdx      # 0xc0e0
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl $0x3, 0x4(%rax)
jmp 0x720d
decq %rcx
movl %ecx, 0x60(%rdi)
jmp 0x720d
movl $0x0, 0x4(%rax)
jmp 0x720d
movl $0x1, 0x4(%rax)
jmp 0x720d
movl $0x2, 0x4(%rax)
movl 0x4(%rax), %ecx
xorl %edx, %edx
cmpq $0x3, %rcx
ja 0x7222
leaq 0x4ea1(%rip), %rdx      # 0xc0c0
movl (%rdx,%rcx,4), %edx
movl %edx, 0x4(%rax)
popq %rbp
retq
nop