LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ArgsNode::deepCopy()
ArgsNode* ArgsNode::deepCopy() {
    auto newNode = new ArgsNode();
    for (auto bw : *list_) {
        auto newArg = bw->deepCopy();
        newNode->push_back(newArg);
    }

    return newNode;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movl $0x48, %edi
callq 0x2e3a0
movq %rax, %rbx
movq %rax, %rdi
callq 0x386a0
movq 0x40(%r14), %rax
movq (%rax), %r14
movq 0x8(%rax), %r15
cmpq %r15, %r14
je 0x3874d
movq (%r14), %rdi
callq 0x3530e
movq %rbx, %rdi
movq %rax, %rsi
callq 0x32998
addq $0x8, %r14
jmp 0x3872f
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ArgsNode::toString[abi:cxx11]()
string ArgsNode::toString() {
    bool first = true;
    ostringstream oss;
    for (auto bw : *list_) {
        if (first) {
            first = false;
        } else {
            oss << ", ";
        }
        oss << bw->toString();
    }
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rsi, %r14
movq %rdi, -0x30(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x2e550
movq 0x40(%r14), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r12
cmpq %r12, %rbx
je 0x38809
movb $0x1, %r14b
leaq -0x1c8(%rbp), %r15
movq (%rbx), %r13
testb $0x1, %r14b
je 0x387bd
xorl %r14d, %r14d
jmp 0x387d1
movl $0x2, %edx
movq %r15, %rdi
leaq 0x3f7b3(%rip), %rsi     # 0x77f7f
callq 0x2e440
movq (%r13), %rax
leaq -0x50(%rbp), %rdi
movq %r13, %rsi
callq *(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x38800
callq 0x2e360
addq $0x8, %rbx
cmpq %r12, %rbx
jne 0x387af
leaq -0x1c0(%rbp), %rsi
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x2e660
movq 0x55785(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x38854
jmp 0x38854
movq %rax, %rbx
jmp 0x3886e
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3886e
callq 0x2e360
movq 0x55733(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionParamNode::deepCopy()
ActionParamNode* ActionParamNode::deepCopy() {
    AstNode* newParam = param_;
    if (param_->nodeType_.find("MblRefNode") != string::npos) {
        newParam = dynamic_cast<MblRefNode*>(param_)->deepCopy();
    }
    auto newNode = new ActionParamNode(newParam);
    return newNode;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %r14
movq 0x40(%rdi), %rbx
leaq 0x10(%rbx), %rdi
leaq 0x3d4c9(%rip), %rsi     # 0x75e10
movl $0xa, %ecx
xorl %edx, %edx
callq 0x2e710
cmpq $-0x1, %rax
je 0x3897d
movq 0x40(%r14), %rdi
leaq 0x53ccc(%rip), %rsi     # 0x8c630
leaq 0x54b0d(%rip), %rdx     # 0x8d478
xorl %ecx, %ecx
callq 0x2e430
movq %rax, %rdi
callq 0x3e32c
movq %rax, %rbx
movl $0x48, %edi
callq 0x2e3a0
movq %rax, %r14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x38896
movq %r14, %rax
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
movq %r14, %rdi
callq 0x2e360
movq %rbx, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionParamsNode::deepCopy()
ActionParamsNode* ActionParamsNode::deepCopy() {
    auto newNode = new ActionParamsNode();
    for (auto ap : *list_) {
        auto newParam = ap->deepCopy();
        newNode->push_back(newParam);
    }

    return newNode;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movl $0x48, %edi
callq 0x2e3a0
movq %rax, %rbx
movq %rax, %rdi
callq 0x389cc
movq 0x40(%r14), %rax
movq (%rax), %r14
movq 0x8(%rax), %r15
cmpq %r15, %r14
je 0x38a79
movq (%r14), %rdi
callq 0x3892e
movq %rbx, %rdi
movq %rax, %rsi
callq 0x32918
addq $0x8, %r14
jmp 0x38a5b
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionParamsNode::toString[abi:cxx11]()
string ActionParamsNode::toString(){
    bool first = true;
    ostringstream oss;
    for (auto ap : *list_) {
        if (first) {
            first = false;
        } else {
            oss << ", ";
        }
        oss << ap->toString();
    }
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rsi, %r14
movq %rdi, -0x30(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x2e550
movq 0x40(%r14), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r12
cmpq %r12, %rbx
je 0x38b35
movb $0x1, %r14b
leaq -0x1c8(%rbp), %r15
movq (%rbx), %r13
testb $0x1, %r14b
je 0x38ae9
xorl %r14d, %r14d
jmp 0x38afd
movl $0x2, %edx
movq %r15, %rdi
leaq 0x3f487(%rip), %rsi     # 0x77f7f
callq 0x2e440
movq (%r13), %rax
leaq -0x50(%rbp), %rdi
movq %r13, %rsi
callq *(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x38b2c
callq 0x2e360
addq $0x8, %rbx
cmpq %r12, %rbx
jne 0x38adb
leaq -0x1c0(%rbp), %rsi
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x2e660
movq 0x55459(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x38b80
jmp 0x38b80
movq %rax, %rbx
jmp 0x38b9a
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x38b9a
callq 0x2e360
movq 0x55407(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionStmtNode::ActionStmtNode(AstNode*, AstNode*, ActionStmtNode::ActionStmtType, AstNode*, AstNode*)
ActionStmtNode::ActionStmtNode(AstNode* name1, AstNode* args, ActionStmtType type, AstNode* name2, AstNode* index) {
    nodeType_ = typeid(*this).name();
    name1_ = dynamic_cast<NameNode*>(name1);
    name2_ = dynamic_cast<NameNode*>(name2);
    if(args) {
        args_ = dynamic_cast<ArgsNode*>(args);
        args_->parent_ = this;
    }

    index_ = dynamic_cast<IntegerNode*>(index);
    type_ = type;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r9, -0x38(%rbp)
movq %r8, %r13
movl %ecx, -0x2c(%rbp)
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
movb $0x1, 0x8(%rdi)
addq $0x10, %rdi
leaq 0x20(%rbx), %r15
movq %r15, 0x10(%rbx)
movl $0x65736162, 0x20(%rbx) # imm = 0x65736162
movq $0x4, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x24(%rbx)
movq $0x0, 0x30(%rbx)
movb %al, 0x38(%rbx)
leaq 0x54104(%rip), %rax     # 0x8cd20
movq %rax, (%rbx)
leaq 0x3d39c(%rip), %rcx     # 0x75fc2
movl $0x4, %edx
movl $0x10, %r8d
xorl %esi, %esi
callq 0x2e640
testq %r14, %r14
je 0x38c57
leaq 0x539ec(%rip), %rsi     # 0x8c630
leaq 0x53d95(%rip), %rdx     # 0x8c9e0
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x2e430
jmp 0x38c59
xorl %eax, %eax
movq %rax, 0x40(%rbx)
testq %r13, %r13
je 0x38c7c
leaq 0x539c7(%rip), %rsi     # 0x8c630
leaq 0x53d70(%rip), %rdx     # 0x8c9e0
movq %r13, %rdi
xorl %ecx, %ecx
callq 0x2e430
jmp 0x38c7e
xorl %eax, %eax
movq %rax, 0x48(%rbx)
testq %r12, %r12
je 0x38ca7
leaq 0x539a2(%rip), %rsi     # 0x8c630
leaq 0x54093(%rip), %rdx     # 0x8cd28
movq %r12, %rdi
xorl %ecx, %ecx
callq 0x2e430
movq %rax, 0x58(%rbx)
movq %rbx, 0x30(%rax)
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x38cc7
leaq 0x53979(%rip), %rsi     # 0x8c630
leaq 0x53de2(%rip), %rdx     # 0x8caa0
xorl %ecx, %ecx
callq 0x2e430
jmp 0x38cc9
xorl %eax, %eax
movq %rax, 0x50(%rbx)
movl -0x2c(%rbp), %eax
movl %eax, 0x3c(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x53ca4(%rip), %rax     # 0x8c990
movq %rax, (%rbx)
movq 0x10(%rbx), %rdi
cmpq %r15, %rdi
je 0x38cfd
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionStmtsNode::deepCopy()
ActionStmtsNode* ActionStmtsNode::deepCopy() {
    auto newNode = new ActionStmtsNode();
    for (auto as : *list_) {
        auto newStmt = as->deepCopy();
        newNode->push_back(newStmt);
    }

    return newNode;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movl $0x48, %edi
callq 0x2e3a0
movq %rax, %rbx
movq %rax, %rdi
callq 0x38fe6
movq 0x40(%r14), %rax
movq (%rax), %r14
movq 0x8(%rax), %r15
cmpq %r15, %r14
je 0x39093
movq (%r14), %rdi
callq 0x38d06
movq %rbx, %rdi
movq %rax, %rsi
callq 0x32958
addq $0x8, %r14
jmp 0x39075
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionStmtsNode::toString[abi:cxx11]()
string ActionStmtsNode::toString() {
    ostringstream oss;
    for (auto as : *list_) {
        oss << as->toString();
    }
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rsi, %r14
movq %rdi, -0x30(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x2e550
movq 0x40(%r14), %rax
movq (%rax), %r12
movq 0x8(%rax), %rbx
cmpq %rbx, %r12
je 0x3912d
leaq -0x40(%rbp), %r13
leaq -0x50(%rbp), %r14
leaq -0x1c8(%rbp), %r15
movq (%r12), %rsi
movq (%rsi), %rax
movq %r14, %rdi
callq *(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x39124
callq 0x2e360
addq $0x8, %r12
cmpq %rbx, %r12
jne 0x390fa
leaq -0x1c0(%rbp), %rsi
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x2e660
movq 0x54e61(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x39176
movq %rax, %rbx
jmp 0x3918c
movq %rax, %rbx
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x3918c
callq 0x2e360
movq 0x54e15(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionNode::ActionNode(AstNode*, AstNode*, AstNode*)
ActionNode::ActionNode(AstNode* name, AstNode* params, AstNode* stmts) {
    nodeType_ = typeid(*this).name();
    name_ = dynamic_cast<NameNode*>(name);
    name_->parent_ = this;
    params_ = dynamic_cast<ActionParamsNode*>(params);
    params_->parent_ = this;
    stmts_ = dynamic_cast<ActionStmtsNode*>(stmts);
    stmts_->parent_ = this;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r14
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movb $0x1, 0x8(%rdi)
addq $0x10, %rdi
leaq 0x20(%rbx), %r13
movq %r13, 0x10(%rbx)
movl $0x65736162, 0x20(%rbx) # imm = 0x65736162
movq $0x4, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x24(%rbx)
movq $0x0, 0x30(%rbx)
movb %al, 0x38(%rbx)
leaq 0x53b64(%rip), %rax     # 0x8cd68
movq %rax, (%rbx)
leaq 0x3cdc5(%rip), %rcx     # 0x75fd3
movl $0x4, %edx
movl $0xc, %r8d
xorl %esi, %esi
callq 0x2e640
leaq 0x53409(%rip), %r13     # 0x8c630
leaq 0x537b2(%rip), %rdx     # 0x8c9e0
movq %r12, %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x2e430
movq %rax, 0x40(%rbx)
movq %rbx, 0x30(%rax)
leaq 0x53b26(%rip), %rdx     # 0x8cd70
movq %r15, %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x2e430
movq %rax, 0x48(%rbx)
movq %rbx, 0x30(%rax)
leaq 0x53b22(%rip), %rdx     # 0x8cd88
movq %r14, %rdi
movq %r13, %rsi
xorl %ecx, %ecx
callq 0x2e430
movq %rax, 0x50(%rbx)
movq %rbx, 0x30(%rax)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x536fc(%rip), %rax     # 0x8c990
movq %rax, (%rbx)
movq 0x10(%rbx), %rdi
cmpq %r13, %rdi
je 0x392a5
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4.cpp
// Function: ActionNode::toString[abi:cxx11]()
string ActionNode::toString() {
    ostringstream oss;
    oss << "action " << name_->toString()
                     << "(" << params_->toString() << ") {\n"
        << stmts_->toString()
        << "}\n";
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq %rsi, %r14
movq %rdi, %rbx
leaq -0x1f0(%rbp), %r15
movq %r15, %rdi
callq 0x2e550
leaq 0x3cf11(%rip), %rsi     # 0x762b3
movl $0x7, %edx
movq %r15, %rdi
callq 0x2e440
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x78(%rbp), %rdi
callq *(%rax)
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
leaq -0x1f0(%rbp), %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x407e7(%rip), %rsi     # 0x79bc1
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
movq 0x48(%r14), %rsi
movq (%rsi), %rax
leaq -0x58(%rbp), %rdi
callq *(%rax)
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x407c0(%rip), %rsi     # 0x79bce
movl $0x4, %edx
movq %rax, %rdi
callq 0x2e440
movq 0x50(%r14), %rsi
movq (%rsi), %rax
leaq -0x38(%rbp), %rdi
callq *(%rax)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
leaq 0x3d2a2(%rip), %rsi     # 0x766e1
movl $0x2, %edx
movq %rax, %rdi
callq 0x2e440
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3945e
callq 0x2e360
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x39470
callq 0x2e360
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x39482
callq 0x2e360
leaq -0x1e8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e660
movq 0x54b10(%rip), %rsi     # 0x8dfa8
leaq -0x1f0(%rbp), %rdi
callq 0x2e230
leaq -0x180(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x394de
jmp 0x394fa
jmp 0x394f5
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x394e1
callq 0x2e360
jmp 0x394e1
movq %rax, %rbx
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x394fd
callq 0x2e360
jmp 0x394fd
movq %rax, %rbx
jmp 0x3950f
movq %rax, %rbx
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3950f
callq 0x2e360
movq 0x54a92(%rip), %rsi     # 0x8dfa8
leaq -0x1f0(%rbp), %rdi
callq 0x2e230
leaq -0x180(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: P4RMalleableValueNode::toString[abi:cxx11]()
string P4RMalleableValueNode::toString() {
    if (removed_) {
        return "";
    }

    ostringstream oss;
    oss << "Malleable value " << name_->toString() << " {\n" 
        << " " << varWidth_->toString() << "\n"
        << " " << varInit_->toString() << "\n"
        << "}";
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq %rdi, %rbx
cmpb $0x1, 0x38(%rsi)
jne 0x3c579
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x3b372(%rip), %rdx     # 0x778db
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x33112
jmp 0x3c6df
movq %rsi, %r14
leaq -0x1f0(%rbp), %r15
movq %r15, %rdi
callq 0x2e550
leaq 0x39cca(%rip), %rsi     # 0x7625c
movl $0x10, %edx
movq %r15, %rdi
callq 0x2e440
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x78(%rbp), %rdi
callq *(%rax)
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
leaq -0x1f0(%rbp), %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x3d605(%rip), %rsi     # 0x79bcf
movl $0x3, %edx
movq %rax, %rdi
callq 0x2e440
leaq 0x3ba93(%rip), %rsi     # 0x78071
movl $0x1, %edx
movq %r15, %rdi
callq 0x2e440
movq 0x48(%r14), %rsi
movq (%rsi), %rax
leaq -0x58(%rbp), %rdi
callq *(%rax)
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x397b2(%rip), %rsi     # 0x75dc4
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
leaq 0x3ba4b(%rip), %rsi     # 0x78071
movl $0x1, %edx
movq %r15, %rdi
callq 0x2e440
movq 0x50(%r14), %rsi
movq (%rsi), %rax
leaq -0x38(%rbp), %rdi
callq *(%rax)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq %rax, %r14
leaq 0x3976a(%rip), %rsi     # 0x75dc4
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
leaq 0x3b662(%rip), %rsi     # 0x77cd0
movl $0x1, %edx
movq %r14, %rdi
callq 0x2e440
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c68d
callq 0x2e360
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c69f
callq 0x2e360
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c6b1
callq 0x2e360
leaq -0x1e8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e660
movq 0x518e1(%rip), %rsi     # 0x8dfa8
leaq -0x1f0(%rbp), %rdi
callq 0x2e230
leaq -0x180(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3c712
jmp 0x3c729
jmp 0x3c6f6
movq %rax, %rbx
jmp 0x3c73e
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c715
callq 0x2e360
jmp 0x3c715
movq %rax, %rbx
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c72c
callq 0x2e360
jmp 0x3c72c
movq %rax, %rbx
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c73e
callq 0x2e360
movq 0x51863(%rip), %rsi     # 0x8dfa8
leaq -0x1f0(%rbp), %rdi
callq 0x2e230
leaq -0x180(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: FieldNode::toString[abi:cxx11]()
string FieldNode::toString() {
    ostringstream oss;
    oss << headerName_->toString()
        << "."
        << fieldName_->toString();
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rsi, %r14
movq %rdi, %rbx
leaq -0x1d0(%rbp), %rdi
callq 0x2e550
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x58(%rbp), %rdi
callq *(%rax)
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x3b09a(%rip), %rsi     # 0x77929
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
movq 0x48(%r14), %rsi
movq (%rsi), %rax
leaq -0x38(%rbp), %rdi
callq *(%rax)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c8cb
callq 0x2e360
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c8dd
callq 0x2e360
leaq -0x1c8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e660
movq 0x516b5(%rip), %rsi     # 0x8dfa8
leaq -0x1d0(%rbp), %rdi
callq 0x2e230
leaq -0x160(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3c937
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c93f
callq 0x2e360
jmp 0x3c93f
jmp 0x3c93c
movq %rax, %rbx
jmp 0x3c951
movq %rax, %rbx
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3c951
callq 0x2e360
movq 0x51650(%rip), %rsi     # 0x8dfa8
leaq -0x1d0(%rbp), %rdi
callq 0x2e230
leaq -0x160(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: FieldsNode::toString[abi:cxx11]()
string FieldsNode::toString() {
    bool first = true;
    ostringstream oss;

    for (auto fld : *this->list_) {
        if (first) {
            first = false;
        } else {
            oss << ", ";
        }
        oss << fld->toString();
    }
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rsi, %r14
movq %rdi, -0x30(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x2e550
movq 0x40(%r14), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r12
cmpq %r12, %rbx
je 0x3ca75
movb $0x1, %r14b
leaq -0x1c8(%rbp), %r15
movq (%rbx), %r13
testb $0x1, %r14b
je 0x3ca29
xorl %r14d, %r14d
jmp 0x3ca3d
movl $0x2, %edx
movq %r15, %rdi
leaq 0x3b547(%rip), %rsi     # 0x77f7f
callq 0x2e440
movq (%r13), %rax
leaq -0x50(%rbp), %rdi
movq %r13, %rsi
callq *(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3ca6c
callq 0x2e360
addq $0x8, %rbx
cmpq %r12, %rbx
jne 0x3ca1b
leaq -0x1c0(%rbp), %rsi
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x2e660
movq 0x51519(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3cac0
jmp 0x3cac0
movq %rax, %rbx
jmp 0x3cada
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3cada
callq 0x2e360
movq 0x514c7(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: P4RMalleableFieldNode::mapAltToInt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
int P4RMalleableFieldNode::mapAltToInt(std::string input) {
    int val_int = 0;
    for (FieldNode* alt : *varAlts_->fields_->list_) {
        if (alt->toString().compare(input)==0) {
            return val_int;
        } else {
            val_int += 1;
        }
    }
    return -1;    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, -0x30(%rbp)
movq 0x58(%rdi), %rax
movq 0x40(%rax), %rax
movq 0x40(%rax), %rax
movq (%rax), %r13
movq 0x8(%rax), %rbx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq %rbx, %r13
je 0x3d0bf
xorl %r14d, %r14d
movq (%r13), %rsi
movq (%rsi), %rax
leaq -0x50(%rbp), %r12
movq %r12, %rdi
callq *(%rax)
movq %r12, %rdi
movq -0x30(%rbp), %rsi
callq 0x2e050
movl %eax, %r12d
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3d0a0
callq 0x2e360
testl %r12d, %r12d
cmovel %r14d, %r15d
je 0x3d0bc
incl %r14d
addq $0x8, %r13
cmpq %rbx, %r13
jne 0x3d06f
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x3d0bf
movl %r15d, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3d0e3
callq 0x2e360
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: P4RMalleableTableNode::P4RMalleableTableNode(AstNode*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
P4RMalleableTableNode::P4RMalleableTableNode(AstNode* table, std::string pragma) {
    nodeType_ = typeid(*this).name();
    table_ = dynamic_cast<TableNode*>(table);

    pragmaTransformed_ = false;
    pragma_ = pragma;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
movb $0x1, 0x8(%rdi)
addq $0x10, %rdi
leaq 0x20(%rbx), %rax
movq %rax, -0x30(%rbp)
movq %rax, 0x10(%rbx)
movl $0x65736162, 0x20(%rbx) # imm = 0x65736162
movq $0x4, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x24(%rbx)
movq %rax, 0x30(%rbx)
movb %al, 0x38(%rbx)
leaq 0x5016f(%rip), %rcx     # 0x8d2a8
movq %rcx, (%rbx)
leaq 0x50(%rbx), %r15
leaq 0x60(%rbx), %r13
movq %r13, 0x50(%rbx)
movq %rax, 0x58(%rbx)
movb %al, 0x60(%rbx)
leaq 0x391cb(%rip), %rcx     # 0x76321
movl $0x4, %edx
movl $0x17, %r8d
xorl %esi, %esi
callq 0x2e640
testq %r12, %r12
je 0x3d187
leaq 0x4f4bc(%rip), %rsi     # 0x8c630
leaq 0x4fccd(%rip), %rdx     # 0x8ce48
movq %r12, %rdi
xorl %ecx, %ecx
callq 0x2e430
jmp 0x3d189
xorl %eax, %eax
movq %rax, 0x40(%rbx)
movb $0x0, 0x48(%rbx)
movq %r15, %rdi
movq %r14, %rsi
callq 0x2e240
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq (%r15), %rdi
cmpq %r13, %rdi
je 0x3d1bb
callq 0x2e360
leaq 0x4f7ce(%rip), %rax     # 0x8c990
movq %rax, (%rbx)
movq 0x10(%rbx), %rdi
cmpq -0x30(%rbp), %rdi
je 0x3d1d4
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: P4RMalleableTableNode::toString[abi:cxx11]()
string P4RMalleableTableNode::toString() {
    ostringstream oss;
    if(pragma_.compare("")!=0) {
        oss << pragma_ << "\n";
    }
        
    if (!removed_) {
        oss << " malleable ";
    }

    oss << table_->toString();
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rsi, %r14
movq %rdi, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0x2e550
leaq 0x50(%r14), %rdi
leaq 0x3a42c(%rip), %rsi     # 0x778db
callq 0x2e0f0
testl %eax, %eax
je 0x3d4e0
movq 0x50(%r14), %rsi
movq 0x58(%r14), %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x2e440
leaq 0x388f1(%rip), %rsi     # 0x75dc4
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
cmpb $0x0, 0x38(%r14)
jne 0x3d4ff
leaq 0x38d98(%rip), %rsi     # 0x76286
leaq -0x1a8(%rbp), %rdi
movl $0xb, %edx
callq 0x2e440
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x30(%rbp), %rdi
callq *(%rax)
movq -0x30(%rbp), %rsi
movq -0x28(%rbp), %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x2e440
leaq -0x20(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3d532
callq 0x2e360
leaq -0x1a0(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e660
movq 0x50a60(%rip), %rsi     # 0x8dfa8
leaq -0x1a8(%rbp), %rdi
callq 0x2e230
leaq -0x138(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
leaq -0x20(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3d58b
callq 0x2e360
jmp 0x3d58b
jmp 0x3d588
movq %rax, %rbx
movq 0x50a16(%rip), %rsi     # 0x8dfa8
leaq -0x1a8(%rbp), %rdi
callq 0x2e230
leaq -0x138(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: P4RInitBlockNode::P4RInitBlockNode(AstNode*, AstNode*)
P4RInitBlockNode::P4RInitBlockNode(AstNode* name, AstNode* body) {
    nodeType_ = typeid(*this).name();
    name_ = dynamic_cast<NameNode*>(name);
    name_->parent_ = this;
    body_ = dynamic_cast<BodyNode*>(body);
    body_->parent_ = this;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
movb $0x1, 0x8(%rdi)
addq $0x10, %rdi
leaq 0x20(%rbx), %r12
movq %r12, 0x10(%rbx)
movl $0x65736162, 0x20(%rbx) # imm = 0x65736162
movq $0x4, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x24(%rbx)
movq $0x0, 0x30(%rbx)
movb %al, 0x38(%rbx)
leaq 0x4f9a6(%rip), %rax     # 0x8d2f0
movq %rax, (%rbx)
leaq 0x38a02(%rip), %rcx     # 0x76356
movl $0x4, %edx
movl $0x12, %r8d
xorl %esi, %esi
callq 0x2e640
leaq 0x4ecc3(%rip), %r12     # 0x8c630
leaq 0x4f06c(%rip), %rdx     # 0x8c9e0
movq %r15, %rdi
movq %r12, %rsi
xorl %ecx, %ecx
callq 0x2e430
movq %rax, 0x40(%rbx)
movq %rbx, 0x30(%rax)
leaq 0x4f188(%rip), %rdx     # 0x8cb18
movq %r14, %rdi
movq %r12, %rsi
xorl %ecx, %ecx
callq 0x2e430
movq %rax, 0x48(%rbx)
movq %rbx, 0x30(%rax)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x4efd8(%rip), %rax     # 0x8c990
movq %rax, (%rbx)
movq 0x10(%rbx), %rdi
cmpq %r12, %rdi
je 0x3d9c9
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: P4RInitBlockNode::toString[abi:cxx11]()
string P4RInitBlockNode::toString() {
    if (removed_) {
        return "";
    }

    ostringstream oss;
    oss << "initialization " 
        << name_->toString()
        << " {\n"
        << body_->toString()
        << "}";
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, %rbx
cmpb $0x1, 0x38(%rsi)
jne 0x3da09
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x39ee2(%rip), %rdx     # 0x778db
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x33112
jmp 0x3daea
movq %rsi, %r14
leaq -0x1d0(%rbp), %r15
movq %r15, %rdi
callq 0x2e550
leaq 0x3887f(%rip), %rsi     # 0x762a1
movl $0xf, %edx
movq %r15, %rdi
callq 0x2e440
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x58(%rbp), %rdi
callq *(%rax)
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x3c175(%rip), %rsi     # 0x79bcf
movl $0x3, %edx
movq %rax, %rdi
callq 0x2e440
movq 0x48(%r14), %rsi
movq (%rsi), %rax
leaq -0x38(%rbp), %rdi
callq *(%rax)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
leaq 0x3a245(%rip), %rsi     # 0x77cd0
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3daaa
callq 0x2e360
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3dabc
callq 0x2e360
leaq -0x1c8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e660
movq 0x504d6(%rip), %rsi     # 0x8dfa8
leaq -0x1d0(%rbp), %rdi
callq 0x2e230
leaq -0x160(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3db1b
jmp 0x3db16
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3db1e
callq 0x2e360
jmp 0x3db1e
movq %rax, %rbx
jmp 0x3db30
movq %rax, %rbx
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3db30
callq 0x2e360
movq 0x50471(%rip), %rsi     # 0x8dfa8
leaq -0x1d0(%rbp), %rdi
callq 0x2e230
leaq -0x160(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: P4RReactionNode::toString[abi:cxx11]()
string P4RReactionNode::toString() {
    if (removed_) {
        return "";
    }

    ostringstream oss;
    oss << "reaction " 
        << name_->toString()
        << " (" 
        << args_->toString()
        << " ) {\n"
        << body_->toString()
        << "}";
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
movq %rdi, %rbx
cmpb $0x1, 0x38(%rsi)
jne 0x3ddb9
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x39b32(%rip), %rdx     # 0x778db
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x33112
jmp 0x3dee0
movq %rsi, %r14
leaq -0x1f0(%rbp), %r15
movq %r15, %rdi
callq 0x2e550
leaq 0x384df(%rip), %rsi     # 0x762b1
movl $0x9, %edx
movq %r15, %rdi
callq 0x2e440
movq 0x40(%r14), %rsi
movq (%rsi), %rax
leaq -0x78(%rbp), %rdi
callq *(%rax)
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
leaq -0x1f0(%rbp), %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x3bdb6(%rip), %rsi     # 0x79bc0
movl $0x2, %edx
movq %rax, %rdi
callq 0x2e440
movq 0x48(%r14), %rsi
movq (%rsi), %rax
leaq -0x58(%rbp), %rdi
callq *(%rax)
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq %rax, %r15
leaq 0x3bd8f(%rip), %rsi     # 0x79bcd
movl $0x5, %edx
movq %rax, %rdi
callq 0x2e440
movq 0x50(%r14), %rsi
movq (%rsi), %rax
leaq -0x38(%rbp), %rdi
callq *(%rax)
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
leaq 0x39e61(%rip), %rsi     # 0x77cd0
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3de8e
callq 0x2e360
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3dea0
callq 0x2e360
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3deb2
callq 0x2e360
leaq -0x1e8(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e660
movq 0x500e0(%rip), %rsi     # 0x8dfa8
leaq -0x1f0(%rbp), %rdi
callq 0x2e230
leaq -0x180(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3df0e
jmp 0x3df2a
jmp 0x3df25
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3df11
callq 0x2e360
jmp 0x3df11
movq %rax, %rbx
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3df2d
callq 0x2e360
jmp 0x3df2d
movq %rax, %rbx
jmp 0x3df3f
movq %rax, %rbx
leaq -0x68(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3df3f
callq 0x2e360
movq 0x50062(%rip), %rsi     # 0x8dfa8
leaq -0x1f0(%rbp), %rdi
callq 0x2e230
leaq -0x180(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: ReactionArgsNode::toString[abi:cxx11]()
string ReactionArgsNode::toString() {
    bool first = true;
    ostringstream oss;
    for (auto ra : *list_) {
        if (first) {
            first = false;
        } else {
            oss << ", ";
        }
        oss << ra->toString();
    }
    return oss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rsi, %r14
movq %rdi, -0x30(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x2e550
movq 0x40(%r14), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r12
cmpq %r12, %rbx
je 0x3e063
movb $0x1, %r14b
leaq -0x1c8(%rbp), %r15
movq (%rbx), %r13
testb $0x1, %r14b
je 0x3e017
xorl %r14d, %r14d
jmp 0x3e02b
movl $0x2, %edx
movq %r15, %rdi
leaq 0x39f59(%rip), %rsi     # 0x77f7f
callq 0x2e440
movq (%r13), %rax
leaq -0x50(%rbp), %rdi
movq %r13, %rsi
callq *(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rdi
callq 0x2e440
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3e05a
callq 0x2e360
addq $0x8, %rbx
cmpq %r12, %rbx
jne 0x3e009
leaq -0x1c0(%rbp), %rsi
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x2e660
movq 0x4ff2b(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3e0ae
jmp 0x3e0ae
movq %rax, %rbx
jmp 0x3e0c8
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x3e0c8
callq 0x2e360
movq 0x4fed9(%rip), %rsi     # 0x8dfa8
leaq -0x1c8(%rbp), %rdi
callq 0x2e230
leaq -0x158(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: ReactionArgNode::ReactionArgNode(ReactionArgNode::ArgType const&, AstNode*, AstNode*, AstNode*)
ReactionArgNode::ReactionArgNode(const ArgType& argType, AstNode* arg, AstNode* index1, AstNode* index2)
                                 : argType_(argType) {
    nodeType_ = typeid(*this).name();
    arg_ = arg;
    arg_->parent_ = this;

    index1_ = dynamic_cast<IntegerNode*>(index1);
    index2_ = dynamic_cast<IntegerNode*>(index2);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r14
movq %rcx, %r15
movq %rdx, %r12
movq %rdi, %rbx
movb $0x1, 0x8(%rdi)
addq $0x10, %rdi
leaq 0x20(%rbx), %r13
movq %r13, 0x10(%rbx)
movl $0x65736162, 0x20(%rbx) # imm = 0x65736162
movq $0x4, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x24(%rbx)
movq $0x0, 0x30(%rbx)
movb %al, 0x38(%rbx)
leaq 0x4f1f8(%rip), %rax     # 0x8d338
movq %rax, (%rbx)
movl (%rsi), %eax
movl %eax, 0x3c(%rbx)
leaq 0x3823f(%rip), %rcx     # 0x7638e
movl $0x4, %edx
movl $0x11, %r8d
xorl %esi, %esi
callq 0x2e640
movq %r12, 0x40(%rbx)
movq %rbx, 0x30(%r12)
testq %r15, %r15
je 0x3e189
leaq 0x4e4ba(%rip), %rsi     # 0x8c630
leaq 0x4e923(%rip), %rdx     # 0x8caa0
movq %r15, %rdi
xorl %ecx, %ecx
callq 0x2e430
jmp 0x3e18b
xorl %eax, %eax
movq %rax, 0x48(%rbx)
testq %r14, %r14
je 0x3e1ae
leaq 0x4e495(%rip), %rsi     # 0x8c630
leaq 0x4e8fe(%rip), %rdx     # 0x8caa0
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x2e430
jmp 0x3e1b0
xorl %eax, %eax
movq %rax, 0x50(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x4e7c3(%rip), %rax     # 0x8c990
movq %rax, (%rbx)
movq 0x10(%rbx), %rdi
cmpq %r13, %rdi
je 0x3e1de
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: MblRefNode::deepCopy()
MblRefNode* MblRefNode::deepCopy() {
    auto newNode = new MblRefNode(name_->deepCopy());
    newNode->transformed_ = transformed_;
    newNode->transformedHeader_ = transformedHeader_;
    newNode->transformedField_ = transformedField_;

    return newNode;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %r14
movl $0x88, %edi
callq 0x2e3a0
movq %rax, %rbx
movq 0x80(%r14), %rdi
callq 0x3e79a
movq %rbx, %rdi
movq %rax, %rsi
callq 0x3e202
movb 0x39(%r14), %al
movb %al, 0x39(%rbx)
leaq 0x40(%r14), %rsi
leaq 0x40(%rbx), %rdi
callq 0x2e240
addq $0x60, %r14
movq %rbx, %rdi
addq $0x60, %rdi
movq %r14, %rsi
callq 0x2e240
movq %rbx, %rax
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: MblRefNode::toString[abi:cxx11]()
string MblRefNode::toString() {
    if (transformed_) {
        if (!inReaction_) {
            return transformedHeader_ + "." + transformedField_;
        }
    } else {
        ostringstream oss;
        oss << "${" << name_->toString() << "}";
        return oss.str();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rsi, %r14
movq %rdi, %rbx
cmpb $0x1, 0x39(%rsi)
jne 0x3e42c
leaq -0x1a8(%rbp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%r14), %rsi
movq 0x48(%r14), %rdx
addq %rsi, %rdx
leaq -0x1b8(%rbp), %r15
movq %r15, %rdi
callq 0x32f92
leaq 0x39542(%rip), %rsi     # 0x77929
movq %r15, %rdi
callq 0x2e7e0
movq 0x60(%r14), %rsi
movq 0x68(%r14), %rdx
leaq -0x1b8(%rbp), %rdi
callq 0x2e130
leaq 0x10(%rbx), %rdx
movq %rdx, (%rbx)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x3e4c9
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0x3e4cf
leaq -0x1b8(%rbp), %r15
movq %r15, %rdi
callq 0x2e550
leaq 0x37e79(%rip), %rsi     # 0x762bb
movl $0x2, %edx
movq %r15, %rdi
callq 0x2e440
movq 0x80(%r14), %rsi
movq (%rsi), %rax
leaq -0x40(%rbp), %rdi
callq *(%rax)
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
leaq -0x1b8(%rbp), %rdi
callq 0x2e440
leaq 0x39856(%rip), %rsi     # 0x77cd0
movl $0x1, %edx
movq %rax, %rdi
callq 0x2e440
leaq -0x30(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3e499
callq 0x2e360
leaq -0x1b0(%rbp), %rsi
movq %rbx, %rdi
callq 0x2e660
movq 0x4faf9(%rip), %rsi     # 0x8dfa8
leaq -0x1b8(%rbp), %rdi
callq 0x2e230
leaq -0x148(%rbp), %rdi
callq 0x2e150
jmp 0x3e4f7
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x1b8(%rbp), %rdi
cmpq %r12, %rdi
je 0x3e4f7
callq 0x2e360
movq %rbx, %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3e53b
jmp 0x3e50e
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
cmpq %r12, %rdi
je 0x3e55d
callq 0x2e360
jmp 0x3e55d
movq %rax, %rbx
leaq -0x30(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3e53e
callq 0x2e360
jmp 0x3e53e
movq %rax, %rbx
movq 0x4fa63(%rip), %rsi     # 0x8dfa8
leaq -0x1b8(%rbp), %rdi
callq 0x2e230
leaq -0x148(%rbp), %rdi
callq 0x2e150
movq %rbx, %rdi
callq 0x2e730
nop
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/ast/ast_nodes_p4r.cpp
// Function: UnanchoredNode::UnanchoredNode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
UnanchoredNode::UnanchoredNode(string* newCode, string* objType,
                               string* objName) {
    nodeType_ = typeid(*this).name();
    codeBlob_ = newCode;
    objType_ = objType;
    objName_ = objName;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r14
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movb $0x1, 0x8(%rdi)
addq $0x10, %rdi
leaq 0x20(%rbx), %r13
movq %r13, 0x10(%rbx)
movl $0x65736162, 0x20(%rbx) # imm = 0x65736162
movq $0x4, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x24(%rbx)
movq $0x0, 0x30(%rbx)
movb %al, 0x38(%rbx)
leaq 0x4edb2(%rip), %rax     # 0x8d368
movq %rax, (%rbx)
leaq 0x37ded(%rip), %rcx     # 0x763ad
movl $0x4, %edx
movl $0x10, %r8d
xorl %esi, %esi
callq 0x2e640
movq %r12, 0x40(%rbx)
movq %r15, 0x48(%rbx)
movq %r14, 0x50(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x4e399(%rip), %rax     # 0x8c990
movq %rax, (%rbx)
movq 0x10(%rbx), %rdi
cmpq %r13, %rdi
je 0x3e608
callq 0x2e360
movq %r14, %rdi
callq 0x2e730
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/compile/compile_c.cpp
// Function: generateDialogueArgStart(std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char>>&, int, int)
void generateDialogueArgStart(ostringstream& oss_reaction_mirror, int ing_iso_opt, int egr_iso_opt) {

    // Shared tmp variables
    oss_reaction_mirror << "  int __mantis__reg_flags=1;\n"
                       << "  int __mantis__value_count;\n"
                       << "  int __mantis__num_actually_read;\n"
                       << "  int __mantis__i;\n";
    // Take snapshots of ing/egr metrics
    if(((unsigned int)ing_iso_opt) & 0b1) {
        oss_reaction_mirror << "  __mantis__mbl_updated_ing=1;\n"
                           // Update data plane working copy
                           << "\n  __mantis__flip_mv_ing;\n"
                           << "\n  __mantis__mod_vars_ing;\n"
                           << "\n  __mantis__flip_mv_ing;\n"
                           << "\n  __mantis__mbl_updated_ing=0;\n";  
    }
    if(((unsigned int)egr_iso_opt) & 0b1) {
        oss_reaction_mirror << "  __mantis__mbl_updated_egr=1;\n"
                           // Update data plane working copy
                           << "\n  __mantis__flip_mv_egr;\n"
                           << "\n  __mantis__mod_vars_egr;\n"
                           << "\n  __mantis__flip_mv_egr;\n"
                           << "\n  __mantis__mbl_updated_egr=0;\n";  
    }    

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %r14d
movl %esi, %r15d
movq %rdi, %rbx
leaq 0x3289e(%rip), %rsi     # 0x77766
movl $0x1d, %edx
callq 0x2e440
leaq 0x328ab(%rip), %rsi     # 0x77784
movl $0x1d, %edx
movq %rbx, %rdi
callq 0x2e440
leaq 0x328b5(%rip), %rsi     # 0x777a2
movl $0x23, %edx
movq %rbx, %rdi
callq 0x2e440
leaq 0x328c5(%rip), %rsi     # 0x777c6
movl $0x13, %edx
movq %rbx, %rdi
callq 0x2e440
testb $0x1, %r15b
je 0x44f77
leaq 0x328bf(%rip), %rsi     # 0x777da
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x2e440
leaq 0x328cb(%rip), %r15     # 0x777fa
movl $0x1a, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2e440
leaq 0x328cf(%rip), %rsi     # 0x77815
movl $0x1b, %edx
movq %rbx, %rdi
callq 0x2e440
movl $0x1a, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2e440
leaq 0x328c7(%rip), %rsi     # 0x77831
movl $0x20, %edx
movq %rbx, %rdi
callq 0x2e440
testb $0x1, %r14b
jne 0x44f88
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x328c3(%rip), %rsi     # 0x77852
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x2e440
leaq 0x328cf(%rip), %r14     # 0x77872
movl $0x1a, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e440
leaq 0x328d3(%rip), %rsi     # 0x7788d
movl $0x1b, %edx
movq %rbx, %rdi
callq 0x2e440
movl $0x1a, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e440
leaq 0x328cb(%rip), %rsi     # 0x778a9
movl $0x20, %edx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x2e440
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/compile/compile_p4.cpp
// Function: transformPragma(std::vector<AstNode*, std::allocator<AstNode*>>*)
void transformPragma(vector<AstNode*>* astNodes) {
    // For now, a simple increment of stage index
	for (auto node : *astNodes) {
        if(typeContains(node, "TableNode")) {
            if (typeContains(node, "P4R")) {
                P4RMalleableTableNode* tablenode = dynamic_cast<P4RMalleableTableNode*>(node);
                tablenode->transformPragma();
            } else {
                TableNode* tablenode = dynamic_cast<TableNode*>(node);
                tablenode->transformPragma();
            }
        }
    }    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq (%rdi), %r13
movq 0x8(%rdi), %r14
cmpq %r14, %r13
je 0x637e3
leaq 0x14478(%rip), %rbx     # 0x77bf1
leaq 0x28eb0(%rip), %r15     # 0x8c630
movq (%r13), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x6f390
testb %al, %al
je 0x637da
movq %r12, %rdi
leaq 0x1412d(%rip), %rsi     # 0x778ca
callq 0x6f390
movq %r12, %rdi
movq %r15, %rsi
testb %al, %al
je 0x637c4
leaq 0x29c1d(%rip), %rdx     # 0x8d3d0
xorl %ecx, %ecx
callq 0x2e430
movq %rax, %rdi
callq 0x3d1dc
jmp 0x637da
leaq 0x2967d(%rip), %rdx     # 0x8ce48
xorl %ecx, %ecx
callq 0x2e430
movq %rax, %rdi
callq 0x37900
addq $0x8, %r13
cmpq %r14, %r13
jne 0x63780
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/compile/find_nodes.cpp
// Function: typeContains(AstNode*, char const*)
bool typeContains(AstNode* n, const char* type) {
    if (n->nodeType_.find(string(type)) != string::npos) {
        return true;    
    } else {
        return false;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
leaq -0x38(%rbp), %r14
leaq -0x11(%rbp), %rdx
movq %r14, %rdi
callq 0x2e190
addq $0x10, %rbx
movq (%r14), %rsi
movq 0x8(%r14), %rcx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x2e710
movq %rax, %rbx
movq (%r14), %rdi
leaq -0x28(%rbp), %rax
cmpq %rax, %rdi
je 0x6f3d7
callq 0x2e360
cmpq $-0x1, %rbx
setne %al
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/eniac[P]Mantis/src/compile/find_nodes.cpp
// Function: p4KeywordMatches(P4ExprNode*, char const*)
bool p4KeywordMatches(P4ExprNode* n, const char* type) {
    if (n->keyword_->word_->compare(string(type)) == 0) {
        return true;    
    } else {
        return false;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq 0x40(%rdi), %rax
movq 0x40(%rax), %rbx
leaq -0x38(%rbp), %r14
leaq -0x11(%rbp), %rdx
movq %r14, %rdi
callq 0x2e190
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e050
movl %eax, %ebx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f429
callq 0x2e360
testl %ebx, %ebx
sete %al
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
leaq -0x28(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f44c
callq 0x2e360
movq %rbx, %rdi
callq 0x2e730