// File: sighingnow[P]compile-pascal/pl0_opt.cpp
// Function: BasicBlock::dump()
void BasicBlock::dump() {
    cout << ";; +++++++++++++++++++ Basic block: ";
    if (this->no == 0) {
        cout << "header ";
        cout << "begin with: " << this->begin << " ";
        cout << "end with: " << this->end << " ";
    }
    else {
        cout << this->no << " ";
        cout << "prefix: [";
        for (auto && i: this->prefix) { cout << i << " "; }
        cout << "]  ";
        cout << "suffix: [";
        for (auto && i: this->suffix) { cout << i << " "; }
        cout << "]";
    }
    if (this->is_end) { cout << " is end "; }
    cout << endl;
    for (auto && c: this->code) {
        cout << ";; " << c.str() << endl;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq 0x95a67(%rip), %rdi     # 0x15efd8
leaq 0x27e30(%rip), %rsi     # 0xf13a8
callq 0x5330
movq -0xa0(%rbp), %rax
cmpl $0x0, (%rax)
jne 0xc960d
movq 0x95a44(%rip), %rdi     # 0x15efd8
leaq 0x27e32(%rip), %rsi     # 0xf13cd
callq 0x5330
movq 0x95a31(%rip), %rdi     # 0x15efd8
leaq 0x27e27(%rip), %rsi     # 0xf13d5
callq 0x5330
movq %rax, %rdi
movq -0xa0(%rbp), %rax
movl 0x8(%rax), %esi
callq 0x5590
movq %rax, %rdi
leaq 0x2845f(%rip), %rsi     # 0xf1a2e
callq 0x5330
movq 0x959fd(%rip), %rdi     # 0x15efd8
leaq 0x27e00(%rip), %rsi     # 0xf13e2
callq 0x5330
movq %rax, %rdi
movq -0xa0(%rbp), %rax
movl 0xc(%rax), %esi
callq 0x5590
movq %rax, %rdi
leaq 0x2842b(%rip), %rsi     # 0xf1a2e
callq 0x5330
jmp 0xc9767
movq -0xa0(%rbp), %rax
movl (%rax), %esi
movq 0x959bb(%rip), %rdi     # 0x15efd8
callq 0x5590
movq %rax, %rdi
leaq 0x28402(%rip), %rsi     # 0xf1a2e
callq 0x5330
movq 0x959a0(%rip), %rdi     # 0x15efd8
leaq 0x27dae(%rip), %rsi     # 0xf13ed
callq 0x5330
movq -0xa0(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0xc2d90
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0xc2be0
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0xccba0
testb $0x1, %al
jne 0xc9680
jmp 0xc96b9
leaq -0x18(%rbp), %rdi
callq 0xc3160
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl (%rax), %esi
movq 0x9593e(%rip), %rdi     # 0x15efd8
callq 0x5590
movq %rax, %rdi
leaq 0x28385(%rip), %rsi     # 0xf1a2e
callq 0x5330
leaq -0x18(%rbp), %rdi
callq 0xccbe0
jmp 0xc966d
movq 0x95918(%rip), %rdi     # 0x15efd8
leaq 0x27d30(%rip), %rsi     # 0xf13f7
callq 0x5330
movq 0x95905(%rip), %rdi     # 0x15efd8
leaq 0x27d21(%rip), %rsi     # 0xf13fb
callq 0x5330
movq -0xa0(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0xc2d90
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0xc2be0
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xccba0
testb $0x1, %al
jne 0xc971b
jmp 0xc9754
leaq -0x38(%rbp), %rdi
callq 0xc3160
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movl (%rax), %esi
movq 0x958a3(%rip), %rdi     # 0x15efd8
callq 0x5590
movq %rax, %rdi
leaq 0x282ea(%rip), %rsi     # 0xf1a2e
callq 0x5330
leaq -0x38(%rbp), %rdi
callq 0xccbe0
jmp 0xc9708
movq 0x9587d(%rip), %rdi     # 0x15efd8
leaq 0x27bf6(%rip), %rsi     # 0xf1358
callq 0x5330
movq -0xa0(%rbp), %rax
testb $0x1, 0x5(%rax)
je 0xc9787
movq 0x9585d(%rip), %rdi     # 0x15efd8
leaq 0x27c83(%rip), %rsi     # 0xf1405
callq 0x5330
movq 0x9584a(%rip), %rdi     # 0x15efd8
movq 0x9582b(%rip), %rsi     # 0x15efc0
callq 0x53a0
movq -0xa0(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0xc1b30
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rdi
callq 0xc1800
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xccc00
testb $0x1, %al
jne 0xc97d9
jmp 0xc9882
leaq -0x58(%rbp), %rdi
callq 0xc1fb0
movq %rax, -0x68(%rbp)
movq 0x957eb(%rip), %rdi     # 0x15efd8
leaq 0x27f99(%rip), %rsi     # 0xf178d
callq 0x5330
movq %rax, -0xb8(%rbp)
movq -0x68(%rbp), %rsi
leaq -0x88(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x9fa70
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0x52e0
movq %rax, -0xa8(%rbp)
jmp 0xc9833
movq -0xa8(%rbp), %rdi
movq 0x9577f(%rip), %rsi     # 0x15efc0
callq 0x53a0
jmp 0xc9848
leaq -0x88(%rbp), %rdi
callq 0x5200
leaq -0x58(%rbp), %rdi
callq 0xccc40
jmp 0xc97c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x5200
jmp 0xc988b
addq $0xc0, %rsp
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x55b0
nopw (%rax,%rax)