// File: eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: BodyNode::toString[abi:cxx11]()
string BodyNode::toString() {
    ostringstream oss;
    // Called from the root BodyNode
    if (bodyOuter_) {
        bodyOuter_->indent_ = indent_;
        oss << bodyOuter_->toString();
    }
    if (str_) {
        str_->indent_ = indent_;
        oss << str_->toString();
        return oss.str();
    } else if (bodyInner_) {
        bodyInner_->indent_ = indent_ + 1; 
        oss << string("  ")*indent_ << "{\n"
            << bodyInner_->toString()
            << string("  ")*indent_ << "}\n";
        return oss.str();
    } else {
        assert(false);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movq %rdi, -0x2a8(%rbp)
movq %rdi, %rax
movq %rax, -0x2a0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x298(%rbp)
leaq -0x188(%rbp), %rdi
callq 0xaa7b0
movq -0x298(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0xbb140
movq -0x298(%rbp), %rax
movl 0x58(%rax), %edx
movq 0x40(%rax), %rcx
movl %edx, 0x58(%rcx)
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x1a8(%rbp), %rdi
callq *%rax
jmp 0xbb0e3
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xaa4c0
jmp 0xbb0f8
leaq -0x1a8(%rbp), %rdi
callq 0xaabe8
jmp 0xbb140
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbb4db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xaabe8
jmp 0xbb4db
movq -0x298(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0xbb1e0
movq -0x298(%rbp), %rax
movl 0x58(%rax), %edx
movq 0x50(%rax), %rcx
movl %edx, 0x48(%rcx)
movq 0x50(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x1d8(%rbp), %rdi
callq *%rax
jmp 0xbb178
leaq -0x188(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0xaa4c0
jmp 0xbb18d
leaq -0x1d8(%rbp), %rdi
callq 0xaabe8
movq -0x2a8(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0xaa580
jmp 0xbb1ae
movl $0x1, -0x1dc(%rbp)
jmp 0xbb4bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xaabe8
jmp 0xbb4db
movq -0x298(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0xbb4a0
movq -0x298(%rbp), %rax
movl 0x58(%rax), %ecx
incl %ecx
movq 0x48(%rax), %rax
movl %ecx, 0x58(%rax)
leaq -0x221(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0xaaa70
movq -0x2b0(%rbp), %rdx
leaq 0x81112(%rip), %rsi     # 0x13c338
leaq -0x220(%rbp), %rdi
callq 0xaa7d0
jmp 0xbb234
movq -0x298(%rbp), %rax
movl 0x58(%rax), %edx
leaq -0x200(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xbae20
jmp 0xbb253
leaq -0x188(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x2b8(%rbp)
jmp 0xbb26f
movq -0x2b8(%rbp), %rdi
leaq 0x82d1b(%rip), %rsi     # 0x13df98
callq 0xaa540
movq %rax, -0x2c0(%rbp)
jmp 0xbb28b
movq -0x298(%rbp), %rax
movq 0x48(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x248(%rbp), %rdi
callq *%rax
jmp 0xbb2a7
movq -0x2c0(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x2c8(%rbp)
jmp 0xbb2c3
leaq -0x289(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0xaaa70
movq -0x2d0(%rbp), %rdx
leaq 0x81054(%rip), %rsi     # 0x13c338
leaq -0x288(%rbp), %rdi
callq 0xaa7d0
jmp 0xbb2f2
movq -0x298(%rbp), %rax
movl 0x58(%rax), %edx
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xbae20
jmp 0xbb311
movq -0x2c8(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x2d8(%rbp)
jmp 0xbb32d
movq -0x2d8(%rbp), %rdi
leaq 0x7f66e(%rip), %rsi     # 0x13a9a9
callq 0xaa540
jmp 0xbb342
leaq -0x268(%rbp), %rdi
callq 0xaabe8
leaq -0x288(%rbp), %rdi
callq 0xaabe8
leaq -0x289(%rbp), %rdi
callq 0xaa5f0
leaq -0x248(%rbp), %rdi
callq 0xaabe8
leaq -0x200(%rbp), %rdi
callq 0xaabe8
leaq -0x220(%rbp), %rdi
callq 0xaabe8
leaq -0x221(%rbp), %rdi
callq 0xaa5f0
movq -0x2a8(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0xaa580
jmp 0xbb3ab
movl $0x1, -0x1dc(%rbp)
jmp 0xbb4bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbb492
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbb486
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbb47a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbb46e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbb462
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbb456
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x268(%rbp), %rdi
callq 0xaabe8
leaq -0x288(%rbp), %rdi
callq 0xaabe8
leaq -0x289(%rbp), %rdi
callq 0xaa5f0
leaq -0x248(%rbp), %rdi
callq 0xaabe8
leaq -0x200(%rbp), %rdi
callq 0xaabe8
leaq -0x220(%rbp), %rdi
callq 0xaabe8
leaq -0x221(%rbp), %rdi
callq 0xaa5f0
jmp 0xbb4db
leaq 0x7e89d(%rip), %rdi     # 0x139d44
leaq 0x7e89c(%rip), %rsi     # 0x139d4a
movl $0x65, %edx
leaq 0x7e8a9(%rip), %rcx     # 0x139d63
callq 0xaa3d0
leaq -0x188(%rbp), %rdi
callq 0xaa130
movq -0x2a0(%rbp), %rax
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
leaq -0x188(%rbp), %rdi
callq 0xaa130
movq -0x1b0(%rbp), %rdi
callq 0xaaa60
nopw %cs:(%rax,%rax)