// File: /workspace/github_cpp_makefile_star2_O3/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 0x7090
retq
pushq %rbp
movq %rsp, %rbp
movl $0x1, 0x88(%rdi)
movq 0x50(%rdi), %rax
testq %rax, %rax
je 0x70ef
movl 0x4(%rax), %ecx
xorl %edx, %edx
cmpl $0x1, %ecx
je 0x71b0
cmpl $0x2, %ecx
je 0x7112
cmpl $0x3, %ecx
jne 0x7152
movslq 0x64(%rdi), %rcx
cmpq $0xc, %rcx
je 0x70e0
leaq (%rcx,%rcx,2), %rdx
movslq 0x60(%rdi), %rsi
leaq (%rdi,%rdx,2), %rdx
cmpb $0x0, 0x6(%rsi,%rdx)
je 0x70e5
decl %ecx
movl %ecx, 0x64(%rdi)
movl $0x2, %edx
jmp 0x71b0
movl 0x4, %ecx
xorl %edx, %edx
cmpl $0x3, %ecx
ja 0x71b0
movl %ecx, %ecx
leaq 0x4fb6(%rip), %rdx      # 0xc0c0
movl (%rdx,%rcx,4), %edx
jmp 0x71b0
movslq 0x60(%rdi), %rcx
movslq 0x64(%rdi), %rsi
cmpq $0x5, %rcx
je 0x7134
leaq (%rsi,%rsi,2), %r8
leaq (%rdi,%r8,2), %r8
cmpb $0x0, 0x1(%rcx,%r8)
je 0x71ab
testl %ecx, %ecx
je 0x7144
leaq (%rsi,%rsi,2), %r8
leaq (%rdi,%r8,2), %r8
cmpb $0x0, -0x1(%rcx,%r8)
je 0x71a5
incl %esi
movl %esi, 0x64(%rdi)
movl $0x1, 0x4(%rax)
jmp 0x71b0
movslq 0x60(%rdi), %rdx
movslq 0x64(%rdi), %rsi
testq %rdx, %rdx
je 0x7174
leaq (%rsi,%rsi,2), %r8
leaq (%rdi,%r8,2), %r8
cmpb $0x0, -0x1(%rdx,%r8)
je 0x70f6
cmpl $0x5, %edx
je 0x7184
leaq (%rsi,%rsi,2), %r8
leaq (%rdi,%r8,2), %r8
cmpb $0x0, 0x1(%rdx,%r8)
je 0x71b5
decl %esi
movl %esi, 0x64(%rdi)
xorl %edx, %edx
cmpl $0x3, %ecx
sete %dl
addl %edx, %edx
testl %ecx, %ecx
movl $0x3, %ecx
cmovnel %edx, %ecx
movl %ecx, 0x4(%rax)
jmp 0x70f6
decq %rcx
movl %ecx, 0x60(%rdi)
movl $0x1, %edx
movl %edx, 0x4(%rax)
popq %rbp
retq
incq %rdx
movl %edx, 0x60(%rdi)
jmp 0x70f6