// File: eniac[P]Mantis/src/compile/compile_c.cpp
// Function: generatePrologueEnd(std::vector<AstNode*, std::allocator<AstNode*>>, std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char>>&, int, int)
void generatePrologueEnd(std::vector<AstNode*> nodeArray, ostringstream& oss_init_end, int ing_iso_opt, int egr_iso_opt) {

    oss_init_end << "  __mantis__add_vars_ing;\n";
    oss_init_end << "  __mantis__add_vars_egr;\n";

    // Flip __vv to point to shallow copy
    if(((unsigned int)ing_iso_opt) & 0b10) {
        oss_init_end << "\n  __mantis__flip_vv_ing;\n\n";
    }
    if(((unsigned int)egr_iso_opt) & 0b10) {
        oss_init_end << "\n  __mantis__flip_vv_egr;\n\n";
    }    

    P4RInitBlockNode * init_node = findInitBlock(nodeArray);
    string p4r_init_user_str = "";
    if (init_node != 0) {
        p4r_init_user_str = init_node->body_->toString();
    }

    for (auto node : nodeArray) {
        // For each mbl table
        if(typeContains(node, "P4RMalleableTableNode")) {
            TableNode* table = dynamic_cast<P4RMalleableTableNode*>(node)->table_;
            string table_name = *(table->name_->word_);

            // Whenever mbl table(s) present, isolation required

            TableActionStmtsNode* actions = table->actions_;

            // Mbl tables are always with With matches (at least match on __vv)
            // For each action
            for (TableActionStmtNode* tas : *actions->list_) {
                string action_name = *tas->name_->word_;

                string str_prepare_macro_func;
                string str_mirror_macro_func;

                std::smatch result;

                // Construct match regrex for add
                str_prepare_macro_func = table_name + "_add_" + action_name;
                std::regex e_add (str_prepare_macro_func+"\\s*\\("+"([^\\)]*)"+"\\)");   // matches words beginning by "sub"

                // Stop after first match
                while (std::regex_search (p4r_init_user_str, result, e_add)) {
                    
                    str_prepare_macro_func = result[0];
                    str_mirror_macro_func = "__mantis__mirror_" + str_prepare_macro_func;
                    // Call corresponding mirror macros
                    oss_init_end << "\n  "
                                        << str_mirror_macro_func
                                        << ";\n\n";

                    // Search remaining string of p4r_reaction_user_str
                    p4r_init_user_str = result.suffix().str();
                }
                // Mod
                str_prepare_macro_func = table_name + "_mod_" + action_name;
                std::regex e_mod (str_prepare_macro_func+"\\s*\\("+"([^\\)]*)"+"\\)");   // matches words beginning by "sub"
                while (std::regex_search (p4r_init_user_str, result, e_mod)) {
                    str_prepare_macro_func = result[0];
                    str_mirror_macro_func = "__mantis__mirror_" + str_prepare_macro_func;
                    oss_init_end << "\n  "
                                        << str_mirror_macro_func
                                        << ";\n\n";
                    p4r_init_user_str = result.suffix().str();
                }
                // Del
                str_prepare_macro_func = table_name + "_del_" + action_name;
                std::regex e_del (str_prepare_macro_func+"\\s*\\("+"([^\\)]*)"+"\\)");   // matches words beginning by "sub"
                while (std::regex_search (p4r_init_user_str, result, e_del)) {
                    str_prepare_macro_func = result[0];
                    str_mirror_macro_func = "__mantis__mirror_" + str_prepare_macro_func;
                    oss_init_end << "\n  "
                                << str_mirror_macro_func
                                << ";\n\n";
                    p4r_init_user_str = result.suffix().str();
                }
            }   
        }
    }

    // Point __vv back to working copy for dialogue
    if(((unsigned int)ing_iso_opt) & 0b10) {
        oss_init_end<< "\n  __mantis__flip_vv_ing;\n\n"; 
    }
    if(((unsigned int)egr_iso_opt) & 0b10) {
        oss_init_end<< "\n  __mantis__flip_vv_egr;\n\n";
    }  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x610, %rsp            # imm = 0x610
movq %rdi, -0x4e8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x5aea4(%rip), %rsi     # 0x13c2ef
callq 0xaa540
movq -0x10(%rbp), %rdi
leaq 0x5aeaf(%rip), %rsi     # 0x13c30a
callq 0xaa540
movl -0x14(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xe147b
movq -0x10(%rbp), %rdi
leaq 0x5a3ca(%rip), %rsi     # 0x13b840
callq 0xaa540
movl -0x18(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xe1496
movq -0x10(%rbp), %rdi
leaq 0x5a3cb(%rip), %rsi     # 0x13b85c
callq 0xaa540
movq -0x4e8(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0xb2bc0
movq -0x4f8(%rbp), %rdi
callq 0x12d820
movq %rax, -0x4f0(%rbp)
jmp 0xe14c2
leaq -0x38(%rbp), %rdi
callq 0xb22f0
movq -0x4f0(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0xaaa70
movq -0x500(%rbp), %rdx
leaq 0x5a6af(%rip), %rsi     # 0x13bba3
leaq -0x68(%rbp), %rdi
callq 0xaa7d0
jmp 0xe14ff
leaq -0x69(%rbp), %rdi
callq 0xaa5f0
cmpq $0x0, -0x20(%rbp)
je 0xe158b
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x90(%rbp), %rdi
callq *%rax
jmp 0xe1528
leaq -0x68(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0xaa6d0
leaq -0x90(%rbp), %rdi
callq 0xaabe8
jmp 0xe158b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xb22f0
jmp 0xe216b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x69(%rbp), %rdi
callq 0xaa5f0
jmp 0xe216b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe2162
movq -0x4e8(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
callq 0xb2ae0
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rdi
callq 0xb2b10
movq %rax, -0xa8(%rbp)
leaq -0xa0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xb2b40
testb $0x1, %al
jne 0xe15db
jmp 0xe2112
leaq -0xa0(%rbp), %rdi
callq 0xb2b80
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
leaq 0x5a8ae(%rip), %rsi     # 0x13bead
callq 0x12c730
movb %al, -0x501(%rbp)
jmp 0xe160c
movb -0x501(%rbp), %al
testb $0x1, %al
jne 0xe161b
jmp 0xe20ff
movq -0xb0(%rbp), %rax
movq %rax, -0x510(%rbp)
cmpq $0x0, %rax
je 0xe1656
movq -0x510(%rbp), %rdi
leaq 0x90fa3(%rip), %rsi     # 0x1725e0
leaq 0x91d3c(%rip), %rdx     # 0x173380
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0x518(%rbp)
jmp 0xe1661
xorl %eax, %eax
movq %rax, -0x518(%rbp)
jmp 0xe1661
movq -0x518(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x40(%rax), %rsi
leaq -0xd8(%rbp), %rdi
callq 0xaa290
jmp 0xe1690
movq -0xb8(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rdi
callq 0xb4ca0
movq %rax, -0xf0(%rbp)
movq -0xe8(%rbp), %rdi
callq 0xb4b30
movq %rax, -0xf8(%rbp)
leaq -0xf0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0xc0190
testb $0x1, %al
jne 0xe16f6
jmp 0xe20e3
leaq -0xf0(%rbp), %rdi
callq 0xc01d0
movq (%rax), %rax
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x40(%rax), %rsi
leaq -0x120(%rbp), %rdi
callq 0xaa290
jmp 0xe1729
leaq -0x140(%rbp), %rdi
callq 0xaa7f0
leaq -0x160(%rbp), %rdi
callq 0xaa7f0
leaq -0x180(%rbp), %rdi
callq 0xe35d0
jmp 0xe174f
leaq 0x5a5d0(%rip), %rdx     # 0x13bd26
leaq -0x1c0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0xcb380
jmp 0xe176b
leaq -0x1a0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0xcb330
jmp 0xe1787
leaq -0x140(%rbp), %rdi
movq %rdi, -0x520(%rbp)
leaq -0x1a0(%rbp), %rsi
movq %rsi, -0x528(%rbp)
callq 0xaa6d0
movq -0x528(%rbp), %rdi
callq 0xaabe8
leaq -0x1c0(%rbp), %rdi
callq 0xaabe8
movq -0x520(%rbp), %rsi
leaq 0x5ab57(%rip), %rdx     # 0x13c325
leaq -0x240(%rbp), %rdi
callq 0xcb380
jmp 0xe17dc
leaq 0x5ab48(%rip), %rdx     # 0x13c32b
leaq -0x220(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0xccc30
jmp 0xe17f8
leaq 0x5ab35(%rip), %rdx     # 0x13c334
leaq -0x200(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xccc30
jmp 0xe1814
leaq -0x1e0(%rbp), %rdi
leaq -0x200(%rbp), %rsi
movl $0x10, %edx
callq 0xe32d0
jmp 0xe182e
leaq -0x200(%rbp), %rdi
callq 0xaabe8
leaq -0x220(%rbp), %rdi
callq 0xaabe8
leaq -0x240(%rbp), %rdi
callq 0xaabe8
leaq -0x68(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
xorl %ecx, %ecx
callq 0xe3610
movb %al, -0x529(%rbp)
jmp 0xe1873
movb -0x529(%rbp), %al
testb $0x1, %al
jne 0xe1882
jmp 0xe1a66
xorl %eax, %eax
movl %eax, %esi
leaq -0x180(%rbp), %rdi
callq 0xe3670
movq %rax, -0x538(%rbp)
jmp 0xe189b
movq -0x538(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0xe36e0
jmp 0xe18b0
leaq -0x140(%rbp), %rdi
movq %rdi, -0x540(%rbp)
leaq -0x260(%rbp), %rsi
movq %rsi, -0x548(%rbp)
callq 0xaa6d0
movq -0x548(%rbp), %rdi
callq 0xaabe8
movq -0x540(%rbp), %rdx
leaq 0x5a664(%rip), %rsi     # 0x13bf4f
leaq -0x280(%rbp), %rdi
callq 0xe3710
jmp 0xe18f9
leaq -0x160(%rbp), %rdi
leaq -0x280(%rbp), %rsi
movq %rsi, -0x558(%rbp)
callq 0xaa6d0
movq -0x558(%rbp), %rdi
callq 0xaabe8
movq -0x10(%rbp), %rdi
leaq 0x5aa0d(%rip), %rsi     # 0x13c337
callq 0xaa540
movq %rax, -0x550(%rbp)
jmp 0xe1938
movq -0x550(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x560(%rbp)
jmp 0xe1954
movq -0x560(%rbp), %rdi
leaq 0x59b3a(%rip), %rsi     # 0x13b49c
callq 0xaa540
jmp 0xe1969
leaq -0x180(%rbp), %rdi
callq 0xe3820
movq %rax, -0x568(%rbp)
jmp 0xe197e
movq -0x568(%rbp), %rsi
leaq -0x2a0(%rbp), %rdi
callq 0xe3870
jmp 0xe1993
leaq -0x68(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0xaa6d0
leaq -0x2a0(%rbp), %rdi
callq 0xaabe8
jmp 0xe1852
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe20f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe20bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe20b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0xaabe8
jmp 0xe20b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe1a44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe1a38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x200(%rbp), %rdi
callq 0xaabe8
leaq -0x220(%rbp), %rdi
callq 0xaabe8
leaq -0x240(%rbp), %rdi
callq 0xaabe8
jmp 0xe20b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe20a5
leaq 0x5a3a1(%rip), %rdx     # 0x13be0e
leaq -0x2e0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0xcb380
jmp 0xe1a82
leaq -0x2c0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0xcb330
jmp 0xe1a9e
leaq -0x140(%rbp), %rdi
movq %rdi, -0x570(%rbp)
leaq -0x2c0(%rbp), %rsi
movq %rsi, -0x578(%rbp)
callq 0xaa6d0
movq -0x578(%rbp), %rdi
callq 0xaabe8
leaq -0x2e0(%rbp), %rdi
callq 0xaabe8
movq -0x570(%rbp), %rsi
leaq 0x5a840(%rip), %rdx     # 0x13c325
leaq -0x360(%rbp), %rdi
callq 0xcb380
jmp 0xe1af3
leaq 0x5a831(%rip), %rdx     # 0x13c32b
leaq -0x340(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0xccc30
jmp 0xe1b0f
leaq 0x5a81e(%rip), %rdx     # 0x13c334
leaq -0x320(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0xccc30
jmp 0xe1b2b
leaq -0x300(%rbp), %rdi
leaq -0x320(%rbp), %rsi
movl $0x10, %edx
callq 0xe32d0
jmp 0xe1b45
leaq -0x320(%rbp), %rdi
callq 0xaabe8
leaq -0x340(%rbp), %rdi
callq 0xaabe8
leaq -0x360(%rbp), %rdi
callq 0xaabe8
leaq -0x68(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x300(%rbp), %rdx
xorl %ecx, %ecx
callq 0xe3610
movb %al, -0x579(%rbp)
jmp 0xe1b8a
movb -0x579(%rbp), %al
testb $0x1, %al
jne 0xe1b99
jmp 0xe1d4a
xorl %eax, %eax
movl %eax, %esi
leaq -0x180(%rbp), %rdi
callq 0xe3670
movq %rax, -0x588(%rbp)
jmp 0xe1bb2
movq -0x588(%rbp), %rsi
leaq -0x380(%rbp), %rdi
callq 0xe36e0
jmp 0xe1bc7
leaq -0x140(%rbp), %rdi
movq %rdi, -0x590(%rbp)
leaq -0x380(%rbp), %rsi
movq %rsi, -0x598(%rbp)
callq 0xaa6d0
movq -0x598(%rbp), %rdi
callq 0xaabe8
movq -0x590(%rbp), %rdx
leaq 0x5a34d(%rip), %rsi     # 0x13bf4f
leaq -0x3a0(%rbp), %rdi
callq 0xe3710
jmp 0xe1c10
leaq -0x160(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
movq %rsi, -0x5a8(%rbp)
callq 0xaa6d0
movq -0x5a8(%rbp), %rdi
callq 0xaabe8
movq -0x10(%rbp), %rdi
leaq 0x5a6f6(%rip), %rsi     # 0x13c337
callq 0xaa540
movq %rax, -0x5a0(%rbp)
jmp 0xe1c4f
movq -0x5a0(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x5b0(%rbp)
jmp 0xe1c6b
movq -0x5b0(%rbp), %rdi
leaq 0x59823(%rip), %rsi     # 0x13b49c
callq 0xaa540
jmp 0xe1c80
leaq -0x180(%rbp), %rdi
callq 0xe3820
movq %rax, -0x5b8(%rbp)
jmp 0xe1c95
movq -0x5b8(%rbp), %rsi
leaq -0x3c0(%rbp), %rdi
callq 0xe3870
jmp 0xe1caa
leaq -0x68(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0xaa6d0
leaq -0x3c0(%rbp), %rdi
callq 0xaabe8
jmp 0xe1b69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0xaabe8
jmp 0xe20a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe1d28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe1d1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x320(%rbp), %rdi
callq 0xaabe8
leaq -0x340(%rbp), %rdi
callq 0xaabe8
leaq -0x360(%rbp), %rdi
callq 0xaabe8
jmp 0xe20a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe2099
leaq 0x5a044(%rip), %rdx     # 0x13bd95
leaq -0x400(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0xcb380
jmp 0xe1d66
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0xcb330
jmp 0xe1d82
leaq -0x140(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
leaq -0x3e0(%rbp), %rsi
movq %rsi, -0x5c8(%rbp)
callq 0xaa6d0
movq -0x5c8(%rbp), %rdi
callq 0xaabe8
leaq -0x400(%rbp), %rdi
callq 0xaabe8
movq -0x5c0(%rbp), %rsi
leaq 0x5a55c(%rip), %rdx     # 0x13c325
leaq -0x480(%rbp), %rdi
callq 0xcb380
jmp 0xe1dd7
leaq 0x5a54d(%rip), %rdx     # 0x13c32b
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0xccc30
jmp 0xe1df3
leaq 0x5a53a(%rip), %rdx     # 0x13c334
leaq -0x440(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0xccc30
jmp 0xe1e0f
leaq -0x420(%rbp), %rdi
leaq -0x440(%rbp), %rsi
movl $0x10, %edx
callq 0xe32d0
jmp 0xe1e29
leaq -0x440(%rbp), %rdi
callq 0xaabe8
leaq -0x460(%rbp), %rdi
callq 0xaabe8
leaq -0x480(%rbp), %rdi
callq 0xaabe8
leaq -0x68(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x420(%rbp), %rdx
xorl %ecx, %ecx
callq 0xe3610
movb %al, -0x5c9(%rbp)
jmp 0xe1e6e
movb -0x5c9(%rbp), %al
testb $0x1, %al
jne 0xe1e7d
jmp 0xe2034
xorl %eax, %eax
movl %eax, %esi
leaq -0x180(%rbp), %rdi
callq 0xe3670
movq %rax, -0x5d8(%rbp)
jmp 0xe1e96
movq -0x5d8(%rbp), %rsi
leaq -0x4a0(%rbp), %rdi
callq 0xe36e0
jmp 0xe1eab
leaq -0x140(%rbp), %rdi
movq %rdi, -0x5e0(%rbp)
leaq -0x4a0(%rbp), %rsi
movq %rsi, -0x5e8(%rbp)
callq 0xaa6d0
movq -0x5e8(%rbp), %rdi
callq 0xaabe8
movq -0x5e0(%rbp), %rdx
leaq 0x5a069(%rip), %rsi     # 0x13bf4f
leaq -0x4c0(%rbp), %rdi
callq 0xe3710
jmp 0xe1ef4
leaq -0x160(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
movq %rsi, -0x5f8(%rbp)
callq 0xaa6d0
movq -0x5f8(%rbp), %rdi
callq 0xaabe8
movq -0x10(%rbp), %rdi
leaq 0x5a412(%rip), %rsi     # 0x13c337
callq 0xaa540
movq %rax, -0x5f0(%rbp)
jmp 0xe1f33
movq -0x5f0(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0x600(%rbp)
jmp 0xe1f4f
movq -0x600(%rbp), %rdi
leaq 0x5953f(%rip), %rsi     # 0x13b49c
callq 0xaa540
jmp 0xe1f64
leaq -0x180(%rbp), %rdi
callq 0xe3820
movq %rax, -0x608(%rbp)
jmp 0xe1f79
movq -0x608(%rbp), %rsi
leaq -0x4e0(%rbp), %rdi
callq 0xe3870
jmp 0xe1f8e
leaq -0x68(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0xaa6d0
leaq -0x4e0(%rbp), %rdi
callq 0xaabe8
jmp 0xe1e4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x400(%rbp), %rdi
callq 0xaabe8
jmp 0xe2099
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe200c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xe2000
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x440(%rbp), %rdi
callq 0xaabe8
leaq -0x460(%rbp), %rdi
callq 0xaabe8
leaq -0x480(%rbp), %rdi
callq 0xaabe8
jmp 0xe2099
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x420(%rbp), %rdi
callq 0xe3460
jmp 0xe2099
leaq -0x420(%rbp), %rdi
callq 0xe3460
leaq -0x300(%rbp), %rdi
callq 0xe3460
leaq -0x1e0(%rbp), %rdi
callq 0xe3460
leaq -0x180(%rbp), %rdi
callq 0xe3930
leaq -0x160(%rbp), %rdi
callq 0xaabe8
leaq -0x140(%rbp), %rdi
callq 0xaabe8
leaq -0x120(%rbp), %rdi
callq 0xaabe8
leaq -0xf0(%rbp), %rdi
callq 0xc01f0
jmp 0xe16da
leaq -0x300(%rbp), %rdi
callq 0xe3460
leaq -0x1e0(%rbp), %rdi
callq 0xe3460
leaq -0x180(%rbp), %rdi
callq 0xe3930
leaq -0x160(%rbp), %rdi
callq 0xaabe8
leaq -0x140(%rbp), %rdi
callq 0xaabe8
leaq -0x120(%rbp), %rdi
callq 0xaabe8
jmp 0xe20f1
leaq -0xd8(%rbp), %rdi
callq 0xaabe8
jmp 0xe20ff
leaq -0xd8(%rbp), %rdi
callq 0xaabe8
jmp 0xe2162
jmp 0xe2101
leaq -0xa0(%rbp), %rdi
callq 0xb2ba0
jmp 0xe15bf
movl -0x14(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xe2131
movq -0x10(%rbp), %rdi
leaq 0x59718(%rip), %rsi     # 0x13b840
callq 0xaa540
jmp 0xe212f
jmp 0xe2131
movl -0x18(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xe2150
movq -0x10(%rbp), %rdi
leaq 0x59715(%rip), %rsi     # 0x13b85c
callq 0xaa540
jmp 0xe214e
jmp 0xe2150
leaq -0x68(%rbp), %rdi
callq 0xaabe8
addq $0x610, %rsp            # imm = 0x610
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0xaabe8
movq -0x40(%rbp), %rdi
callq 0xaaa60
nopw %cs:(%rax,%rax)