// File: eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: BodyWordNode::toString[abi:cxx11]()
string BodyWordNode::toString() {
    ostringstream oss; 
    if (wordType_ == WordType::INTEGER || wordType_ == WordType::SPECIAL) {
        oss << contents_->toString();
    } else if (dynamic_cast<BodyNode*>(parent_) != NULL && dynamic_cast<BodyNode*>(parent_)->bodyOuter_ != NULL && 
        dynamic_cast<BodyNode*>(parent_)->bodyOuter_->str_ != NULL && dynamic_cast<BodyNode*>(parent_)->bodyOuter_->str_->wordType_ == WordType::SPECIAL &&
        dynamic_cast<BodyNode*>(parent_)->bodyOuter_->str_->contents_->toString() != ";" ) {
        oss << contents_->toString();
    } else if (dynamic_cast<BodyNode*>(parent_) != NULL && dynamic_cast<BodyNode*>(parent_)->bodyOuter_ != NULL && 
        dynamic_cast<BodyNode*>(parent_)->bodyOuter_->str_ != NULL && dynamic_cast<BodyNode*>(parent_)->bodyOuter_->str_->wordType_ == WordType::INTEGER) {
        oss << contents_->toString();
    } else {
        oss << string("  ")*indent_ << contents_->toString();
    }
    if (contents_->toString() == ";") {
        oss << "\n";
    }    
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x380, %rsp            # imm = 0x380
movq %rdi, -0x2c0(%rbp)
movq %rdi, %rax
movq %rax, -0x2b8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x2b0(%rbp)
leaq -0x188(%rbp), %rdi
callq 0xaa7b0
movq -0x2b0(%rbp), %rax
cmpl $0x4, 0x3c(%rax)
je 0xba695
movq -0x2b0(%rbp), %rax
cmpl $0x5, 0x3c(%rax)
jne 0xba711
movq -0x2b0(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x1a8(%rbp), %rdi
callq *%rax
jmp 0xba6b1
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xaa4c0
jmp 0xba6c6
leaq -0x1a8(%rbp), %rdi
callq 0xaabe8
jmp 0xbad47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbadfe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0xaabe8
jmp 0xbadfe
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x2c8(%rbp)
movb $0x0, -0x1d9(%rbp)
cmpq $0x0, %rax
je 0xba757
movq -0x2c8(%rbp), %rdi
leaq 0xb7ea2(%rip), %rsi     # 0x1725e0
leaq 0xb8383(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x2d0(%rbp)
jmp 0xba762
xorl %eax, %eax
movq %rax, -0x2d0(%rbp)
jmp 0xba762
movq -0x2d0(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x2d1(%rbp)
je 0xba950
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x2e0(%rbp)
cmpq $0x0, %rax
je 0xba7ba
movq -0x2e0(%rbp), %rdi
leaq 0xb7e3f(%rip), %rsi     # 0x1725e0
leaq 0xb8320(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x2e8(%rbp)
jmp 0xba7c5
xorl %eax, %eax
movq %rax, -0x2e8(%rbp)
jmp 0xba7c5
movq -0x2e8(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, 0x40(%rcx)
movb %al, -0x2d1(%rbp)
je 0xba950
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x2f0(%rbp)
cmpq $0x0, %rax
je 0xba81e
movq -0x2f0(%rbp), %rdi
leaq 0xb7ddb(%rip), %rsi     # 0x1725e0
leaq 0xb82bc(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x2f8(%rbp)
jmp 0xba829
xorl %eax, %eax
movq %rax, -0x2f8(%rbp)
jmp 0xba829
movq -0x2f8(%rbp), %rax
movq 0x40(%rax), %rcx
xorl %eax, %eax
cmpq $0x0, 0x50(%rcx)
movb %al, -0x2d1(%rbp)
je 0xba950
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x300(%rbp)
cmpq $0x0, %rax
je 0xba886
movq -0x300(%rbp), %rdi
leaq 0xb7d73(%rip), %rsi     # 0x1725e0
leaq 0xb8254(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x308(%rbp)
jmp 0xba891
xorl %eax, %eax
movq %rax, -0x308(%rbp)
jmp 0xba891
movq -0x308(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x50(%rax), %rcx
xorl %eax, %eax
cmpl $0x5, 0x3c(%rcx)
movb %al, -0x2d1(%rbp)
jne 0xba950
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x310(%rbp)
cmpq $0x0, %rax
je 0xba8f1
movq -0x310(%rbp), %rdi
leaq 0xb7d08(%rip), %rsi     # 0x1725e0
leaq 0xb81e9(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x318(%rbp)
jmp 0xba8fc
xorl %eax, %eax
movq %rax, -0x318(%rbp)
jmp 0xba8fc
movq -0x318(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x50(%rax), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x1d8(%rbp), %rdi
callq *%rax
jmp 0xba920
movb $0x1, -0x1d9(%rbp)
leaq 0x800c7(%rip), %rsi     # 0x13a9f5
leaq -0x1d8(%rbp), %rdi
callq 0xbfea0
movb %al, -0x319(%rbp)
jmp 0xba942
movb -0x319(%rbp), %al
movb %al, -0x2d1(%rbp)
jmp 0xba950
movb -0x2d1(%rbp), %al
movb %al, -0x31a(%rbp)
testb $0x1, -0x1d9(%rbp)
jne 0xba967
jmp 0xba973
leaq -0x1d8(%rbp), %rdi
callq 0xaabe8
movb -0x31a(%rbp), %al
testb $0x1, %al
jne 0xba982
jmp 0xbaa15
movq -0x2b0(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x200(%rbp), %rdi
callq *%rax
jmp 0xba99e
leaq -0x188(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0xaa4c0
jmp 0xba9b3
leaq -0x200(%rbp), %rdi
callq 0xaabe8
jmp 0xbad45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
testb $0x1, -0x1d9(%rbp)
jne 0xba9e1
jmp 0xba9ed
leaq -0x1d8(%rbp), %rdi
callq 0xaabe8
jmp 0xbadfe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x200(%rbp), %rdi
callq 0xaabe8
jmp 0xbadfe
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x328(%rbp)
cmpq $0x0, %rax
je 0xbaa54
movq -0x328(%rbp), %rdi
leaq 0xb7ba5(%rip), %rsi     # 0x1725e0
leaq 0xb8086(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x330(%rbp)
jmp 0xbaa5f
xorl %eax, %eax
movq %rax, -0x330(%rbp)
jmp 0xbaa5f
movq -0x330(%rbp), %rax
cmpq $0x0, %rax
je 0xbabf0
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x338(%rbp)
cmpq $0x0, %rax
je 0xbaaaf
movq -0x338(%rbp), %rdi
leaq 0xb7b4a(%rip), %rsi     # 0x1725e0
leaq 0xb802b(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x340(%rbp)
jmp 0xbaaba
xorl %eax, %eax
movq %rax, -0x340(%rbp)
jmp 0xbaaba
movq -0x340(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0xbabf0
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x348(%rbp)
cmpq $0x0, %rax
je 0xbab0b
movq -0x348(%rbp), %rdi
leaq 0xb7aee(%rip), %rsi     # 0x1725e0
leaq 0xb7fcf(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x350(%rbp)
jmp 0xbab16
xorl %eax, %eax
movq %rax, -0x350(%rbp)
jmp 0xbab16
movq -0x350(%rbp), %rax
movq 0x40(%rax), %rax
cmpq $0x0, 0x50(%rax)
je 0xbabf0
movq -0x2b0(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x358(%rbp)
cmpq $0x0, %rax
je 0xbab6b
movq -0x358(%rbp), %rdi
leaq 0xb7a8e(%rip), %rsi     # 0x1725e0
leaq 0xb7f6f(%rip), %rdx     # 0x172ac8
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x360(%rbp)
jmp 0xbab76
xorl %eax, %eax
movq %rax, -0x360(%rbp)
jmp 0xbab76
movq -0x360(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x50(%rax), %rax
cmpl $0x4, 0x3c(%rax)
jne 0xbabf0
movq -0x2b0(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x220(%rbp), %rdi
callq *%rax
jmp 0xbaba7
leaq -0x188(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xaa4c0
jmp 0xbabbc
leaq -0x220(%rbp), %rdi
callq 0xaabe8
jmp 0xbad43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x220(%rbp), %rdi
callq 0xaabe8
jmp 0xbadfe
leaq -0x261(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0xaaa70
movq -0x368(%rbp), %rdx
leaq 0x81727(%rip), %rsi     # 0x13c338
leaq -0x260(%rbp), %rdi
callq 0xaa7d0
jmp 0xbac1f
movq -0x2b0(%rbp), %rax
movl 0x48(%rax), %edx
leaq -0x240(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0xbae20
jmp 0xbac3e
leaq -0x188(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x370(%rbp)
jmp 0xbac5a
movq -0x2b0(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x288(%rbp), %rdi
callq *%rax
jmp 0xbac76
movq -0x370(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xaa4c0
jmp 0xbac8b
leaq -0x288(%rbp), %rdi
callq 0xaabe8
leaq -0x240(%rbp), %rdi
callq 0xaabe8
leaq -0x260(%rbp), %rdi
callq 0xaabe8
leaq -0x261(%rbp), %rdi
callq 0xaa5f0
jmp 0xbad43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbad32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbad26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
jmp 0xbad1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x288(%rbp), %rdi
callq 0xaabe8
leaq -0x240(%rbp), %rdi
callq 0xaabe8
leaq -0x260(%rbp), %rdi
callq 0xaabe8
leaq -0x261(%rbp), %rdi
callq 0xaa5f0
jmp 0xbadfe
jmp 0xbad45
jmp 0xbad47
movq -0x2b0(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x2a8(%rbp), %rdi
callq *%rax
jmp 0xbad63
leaq 0x7fc8b(%rip), %rsi     # 0x13a9f5
leaq -0x2a8(%rbp), %rdi
callq 0xbfed0
movb %al, -0x371(%rbp)
jmp 0xbad7e
leaq -0x2a8(%rbp), %rdi
callq 0xaabe8
movb -0x371(%rbp), %al
testb $0x1, %al
jne 0xbad96
jmp 0xbadcd
leaq 0x7f037(%rip), %rsi     # 0x139dd4
leaq -0x188(%rbp), %rdi
callq 0xaa540
jmp 0xbadab
jmp 0xbadcd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0xaabe8
jmp 0xbadfe
movq -0x2c0(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0xaa580
jmp 0xbade2
leaq -0x188(%rbp), %rdi
callq 0xaa130
movq -0x2b8(%rbp), %rax
addq $0x380, %rsp            # imm = 0x380
popq %rbp
retq
leaq -0x188(%rbp), %rdi
callq 0xaa130
movq -0x1b0(%rbp), %rdi
callq 0xaaa60
nopw %cs:(%rax,%rax)