// File: /workspace/github_cpp_makefile_star2_O2/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 0x5e78
retq
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x1, 0x88(%rdi)
movq 0x50(%rdi), %rdi
testq %rdi, %rdi
je 0x5f48
movl 0x4(%rdi), %eax
cmpl $0x1, %eax
je 0x5f48
cmpl $0x2, %eax
je 0x5ed1
cmpl $0x3, %eax
jne 0x5f03
movslq 0x64(%rbx), %rax
cmpq $0xc, %rax
je 0x5eca
imulq $0x6, %rax, %rcx
movslq 0x60(%rbx), %rdx
addq %rbx, %rcx
cmpb $0x0, 0x6(%rdx,%rcx)
je 0x5f48
decl %eax
movl %eax, 0x64(%rbx)
jmp 0x5f48
movslq 0x60(%rbx), %rax
movslq 0x64(%rbx), %rcx
cmpq $0x5, %rax
je 0x5ef1
imulq $0x6, %rcx, %rdx
addq %rbx, %rdx
cmpb $0x0, 0x1(%rax,%rdx)
je 0x5f48
testl %eax, %eax
je 0x5eff
imulq $0x6, %rcx, %rdx
addq %rbx, %rdx
cmpb $0x0, -0x1(%rax,%rdx)
je 0x5f3d
incl %ecx
jmp 0x5f33
movslq 0x60(%rbx), %rax
movslq 0x64(%rbx), %rcx
testq %rax, %rax
je 0x5f23
imulq $0x6, %rcx, %rdx
addq %rbx, %rdx
cmpb $0x0, -0x1(%rax,%rdx)
je 0x5f48
cmpl $0x5, %eax
je 0x5f31
imulq $0x6, %rcx, %rdx
addq %rbx, %rdx
cmpb $0x0, 0x1(%rax,%rdx)
je 0x5f42
decl %ecx
movl %ecx, 0x64(%rbx)
callq 0x6bec
jmp 0x5f48
decq %rax
jmp 0x5f45
incq %rax
movl %eax, 0x60(%rbx)
movq 0x50(%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x6bec
nop