// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %rbx
subq $0x1e8, %rsp            # imm = 0x1E8
movq %rsi, %r14
movq %rdi, %rbx
leaq -0x1f8(%rbp), %rdi
callq 0x415a0
movl 0x3c(%r14), %eax
andl $-0x2, %eax
cmpl $0x4, %eax
jne 0x46cd4
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *(%rax)
leaq -0x1f8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x41380
leaq -0x40(%rbp), %rdi
jmp 0x46e55
movq 0x30(%r14), %r15
testq %r15, %r15
je 0x46dee
leaq 0x4d9a8(%rip), %rsi     # 0x94690
leaq 0x4de89(%rip), %rdx     # 0x94b78
movq %r15, %rdi
xorl %ecx, %ecx
callq 0x41480
testq %rax, %rax
je 0x46d97
movq 0x40(%rax), %rax
testq %rax, %rax
je 0x46d97
movq 0x50(%rax), %rax
testq %rax, %rax
je 0x46d97
cmpl $0x5, 0x3c(%rax)
jne 0x46d97
leaq 0x4d96b(%rip), %rsi     # 0x94690
leaq 0x4de4c(%rip), %rdx     # 0x94b78
movq %r15, %rdi
xorl %ecx, %ecx
callq 0x41480
movq 0x40(%rax), %rax
movq 0x50(%rax), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *(%rax)
leaq 0x329bb(%rip), %rsi     # 0x7970d
leaq -0x40(%rbp), %rdi
callq 0x49aad
movl %eax, %r15d
leaq -0x40(%rbp), %rdi
callq 0x418c8
testb %r15b, %r15b
je 0x46d8e
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *(%rax)
leaq -0x1f8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x41380
jmp 0x46ccb
movq 0x30(%r14), %r15
testq %r15, %r15
je 0x46dee
leaq 0x4d8f2(%rip), %rsi     # 0x94690
leaq 0x4ddd3(%rip), %rdx     # 0x94b78
movq %r15, %rdi
xorl %ecx, %ecx
callq 0x41480
testq %rax, %rax
je 0x46dee
movq 0x40(%rax), %rax
testq %rax, %rax
je 0x46dee
movq 0x50(%rax), %rax
testq %rax, %rax
je 0x46dee
cmpl $0x4, 0x3c(%rax)
jne 0x46dee
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *(%rax)
leaq -0x1f8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x41380
jmp 0x46ccb
leaq 0x3425b(%rip), %rsi     # 0x7b050
leaq -0x80(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x411c0
movl 0x48(%r14), %edx
leaq -0x40(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x46f27
leaq -0x1f8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x41380
movq %rax, %r15
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x60(%rbp), %rdi
callq *(%rax)
leaq -0x60(%rbp), %rsi
movq %r15, %rdi
callq 0x41380
leaq -0x60(%rbp), %rdi
callq 0x418c8
leaq -0x40(%rbp), %rdi
callq 0x418c8
leaq -0x80(%rbp), %rdi
callq 0x418c8
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *(%rax)
leaq 0x3289f(%rip), %rsi     # 0x7970d
leaq -0x40(%rbp), %r14
movq %r14, %rdi
callq 0x49aba
movl %eax, %r15d
movq %r14, %rdi
callq 0x418c8
testb %r15b, %r15b
je 0x46e9d
leaq 0x31f13(%rip), %rsi     # 0x78da4
leaq -0x1f8(%rbp), %rdi
callq 0x413d0
leaq -0x1f0(%rbp), %rsi
movq %rbx, %rdi
callq 0x416b0
leaq -0x1f8(%rbp), %rdi
callq 0x410e0
movq %rbx, %rax
addq $0x1e8, %rsp            # imm = 0x1E8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x46efe
jmp 0x46f10
jmp 0x46efe
jmp 0x46f10
jmp 0x46efe
jmp 0x46f10
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x418c8
jmp 0x46ee8
jmp 0x46ee5
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x418c8
jmp 0x46ef6
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
jmp 0x46f05
jmp 0x46f10
movq %rax, %rbx
leaq -0x40(%rbp), %rdi
callq 0x418c8
jmp 0x46f13
jmp 0x46f10
jmp 0x46f10
movq %rax, %rbx
leaq -0x1f8(%rbp), %rdi
callq 0x410e0
movq %rbx, %rdi
callq 0x41790