// File: /workspace/github_cpp_makefile_star2_O2/eniac[P]Mantis/src/compile/compile_c.cpp
// Function: mirrorRegisterArgForIng(std::vector<AstNode*, std::allocator<AstNode*>>, std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char>>&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool)
void mirrorRegisterArgForIng(std::vector<AstNode*> nodeArray, ostringstream& oss_reaction_mirror, int iso_opt, string prefix_str, bool forIng) {

    vector<ReactionArgNode*> reaction_args = findReactionArgs(nodeArray);
    if(((unsigned int)iso_opt) & 0b1) {
        // Read replicas based on mv for each reg arg
        for (auto ra : reaction_args) {
            if(ra->argType_==ReactionArgNode::REGISTER) {
                if(forIng) {
                    if(!findRegargInIng(ra, nodeArray)) {
                        // Skip egr reg
                        continue;
                    }
                } else {
                    if(findRegargInIng(ra, nodeArray)) {
                        // Skip ing reg
                        continue;
                    }
                }
                bool is_valid_tmp = false;
                P4RegisterNode* target_reg = NULL;
                for (auto n : nodeArray) {
                    if (typeContains(n, "P4RegisterNode")) {
                        target_reg = dynamic_cast<P4RegisterNode*>(n);
                        if(target_reg->name_->toString().compare(ra->arg_->toString())==0) {
                            is_valid_tmp = true;
                            break;
                        }
                    }
                }    
                // Currently assuming non-64b reg to isolate
                if(is_valid_tmp) {
                    if(ra->index2_) {
                        if(forIng) {
                            oss_reaction_mirror << str(boost::format(kRegArgIsoMirrorT) % ra->arg_->toString() % std::to_string(target_reg->width_) % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(std::stoi(ra->index2_->toString())) % "__mantis__mv_ing");
                        } else {
                            oss_reaction_mirror << str(boost::format(kRegArgIsoMirrorT) % ra->arg_->toString() % std::to_string(target_reg->width_) % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(std::stoi(ra->index2_->toString())) % "__mantis__mv_egr");
                        }
                    } else {
                        if(forIng) {
                            oss_reaction_mirror << str(boost::format(kRegArgIsoMirrorT) % ra->arg_->toString() % std::to_string(target_reg->width_) % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(target_reg->instanceCount_) % "__mantis__mv_ing");
                        } else {
                            oss_reaction_mirror << str(boost::format(kRegArgIsoMirrorT) % ra->arg_->toString() % std::to_string(target_reg->width_) % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(target_reg->instanceCount_) % "__mantis__mv_egr");
                        }
                    }
                } else {
                    PANIC("WARNING: Invalid register argument\n");
                }
            }
        }

        // After all arg mirroring, flip mv
        if(forIng) {
            oss_reaction_mirror << "\n  __mantis__flip_mv_ing;\n\n";
        } else {
            oss_reaction_mirror << "\n  __mantis__flip_mv_egr;\n\n";
        }
    } else {
        // Directly mirror the value to the correponding control plane array
        for (auto ra : reaction_args) {
            if(ra->argType_==ReactionArgNode::REGISTER) {
                if(forIng) {
                    if(!findRegargInIng(ra, nodeArray)) {
                        // Skip egr reg
                        continue;
                    }
                } else {
                    if(findRegargInIng(ra, nodeArray)) {
                        // Skip ing reg
                        continue;
                    }
                }                
                bool is_valid_tmp = false;
                P4RegisterNode* target_reg = NULL;
                for (auto n : nodeArray) {
                    if (typeContains(n, "P4RegisterNode")) {
                        target_reg = dynamic_cast<P4RegisterNode*>(n);
                        if(target_reg->name_->toString().compare(ra->arg_->toString())==0) {
                            is_valid_tmp = true;
                            break;
                        }
                    }
                }              
                // Check the register width
                int width = findRegargWidth(ra, nodeArray);
                if(is_valid_tmp) {
                    if(ra->index2_) {
                        if (width==64) {
                            oss_reaction_mirror << str(boost::format(kRegArgMirrorT_64) % ra->arg_->toString() % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(std::stoi(ra->index2_->toString())) % ra->arg_->toString());
                        } else {
                            oss_reaction_mirror << str(boost::format(kRegArgMirrorT_32) % std::to_string(target_reg->width_) % ra->arg_->toString() % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(std::stoi(ra->index2_->toString())) % ra->arg_->toString());
                        }
                    } else {
                        if (width==64) {
                            oss_reaction_mirror << str(boost::format(kRegArgMirrorT_64) % ra->arg_->toString() % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(target_reg->instanceCount_) % ra->arg_->toString());
                        } else {
                            oss_reaction_mirror << str(boost::format(kRegArgMirrorT_32) % std::to_string(target_reg->width_) % ra->arg_->toString() % std::to_string(target_reg->instanceCount_) % prefix_str % std::to_string(target_reg->instanceCount_) % ra->arg_->toString());
                        }                        
                    }
                } else {
                    PRINT_VERBOSE("WARNING: Invalid register argument\n");
                }
            }
        }
    }

    // Before reaction logic, flip __vv from working copy for prepare phase
    if(forIng) {
        if(((unsigned int)iso_opt) & 0b10) {
            oss_reaction_mirror << "\n  __mantis__flip_vv_ing;\n\n";
            // Note that __mantis__mbl_updated_ing=1 not appended as it is only triggered when
            // there are entries actually prepared for execution
        }
    } else {
        if(((unsigned int)iso_opt) & 0b10) {
            oss_reaction_mirror << "\n  __mantis__flip_vv_egr;\n\n";
        }        
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x298, %rsp            # imm = 0x298
movl %r8d, -0x3c(%rbp)
movq %rcx, -0x50(%rbp)
movl %edx, %r14d
movq %rsi, -0x48(%rbp)
movq %rdi, %rsi
leaq -0x270(%rbp), %rbx
movq %rbx, %rdi
movq %rsi, -0x58(%rbp)
callq 0x7272a
movq (%rbx), %r15
movq 0x8(%rbx), %rax
movq %rax, -0x130(%rbp)
movl %r14d, -0x9c(%rbp)
testb $0x1, %r14b
jne 0x51395
leaq -0x240(%rbp), %rbx
cmpq -0x130(%rbp), %r15
je 0x5193b
movq %r15, -0x108(%rbp)
movq (%r15), %rax
movq %rax, -0x30(%rbp)
cmpl $0x4, 0x3c(%rax)
jne 0x5125b
cmpb $0x0, -0x3c(%rbp)
je 0x50dcc
movq %rbx, %rdi
movq -0x58(%rbp), %rsi
callq 0x4486c
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
callq 0x72d72
movl %eax, %r12d
movq %rbx, %rdi
callq 0x44be0
testb %r12b, %r12b
jne 0x50dff
jmp 0x5125b
leaq -0x2c0(%rbp), %r14
movq %r14, %rdi
movq -0x58(%rbp), %rsi
callq 0x4486c
movq -0x30(%rbp), %rdi
movq %r14, %rsi
callq 0x72d72
movl %eax, %r12d
movq %r14, %rdi
callq 0x44be0
testb %r12b, %r12b
jne 0x5125b
movq -0x58(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r14
movq $0x0, -0x38(%rbp)
cmpq %r14, %rbx
je 0x50eaa
movq (%rbx), %r12
movq %r12, %rdi
leaq 0x28c8c(%rip), %rsi     # 0x79ab4
callq 0x71cf8
testb %al, %al
je 0x50ea1
movq %r12, %rdi
leaq 0x43855(%rip), %rsi     # 0x94690
leaq 0x43fbe(%rip), %rdx     # 0x94e00
xorl %ecx, %ecx
callq 0x41480
movq %rax, -0x38(%rbp)
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x228(%rbp), %rdi
callq *(%rax)
leaq -0xc0(%rbp), %r15
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq %r15, %rdi
callq *(%rax)
movq %r15, %r13
leaq -0x228(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x41040
movl %eax, %r12d
movq %r13, %rdi
callq 0x418c8
movq %r15, %rdi
callq 0x418c8
testl %r12d, %r12d
je 0x50eaa
addq $0x8, %rbx
jmp 0x50e12
leaq -0x2a8(%rbp), %r15
movq %r15, %rdi
movq -0x58(%rbp), %rsi
callq 0x4486c
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x7352f
movl %eax, %r12d
movq %r15, %rdi
callq 0x44be0
cmpq %r14, %rbx
leaq -0x240(%rbp), %rbx
je 0x5125b
movq -0x30(%rbp), %rax
cmpq $0x0, 0x50(%rax)
je 0x51012
cmpl $0x40, %r12d
jne 0x510fa
leaq -0x228(%rbp), %rdi
leaq 0x292c9(%rip), %rsi     # 0x7a1d4
callq 0x58b7c
leaq -0x100(%rbp), %r14
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq %r14, %rdi
callq *(%rax)
leaq -0xe0(%rbp), %r15
leaq -0x228(%rbp), %rdi
movq %r14, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
movq %r15, %rdi
callq 0x49e1c
movq %r12, %rdi
movq %r15, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %r13
movq -0x30(%rbp), %rax
movq 0x50(%rax), %rsi
movq (%rsi), %rax
leaq -0x78(%rbp), %r12
movq %r12, %rdi
callq *(%rax)
movq %r12, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x49b15
leaq -0x98(%rbp), %r12
movq %r12, %rdi
movl %eax, %esi
callq 0x49e1c
movq %r13, %rdi
movq %r12, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x128(%rbp), %r13
movq %r13, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r13, %rsi
callq 0x5b849
leaq -0xc0(%rbp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x41380
movq %r12, %rdi
callq 0x418c8
leaq -0x128(%rbp), %rdi
callq 0x418c8
leaq -0x98(%rbp), %rdi
callq 0x418c8
leaq -0x78(%rbp), %rdi
jmp 0x5123a
cmpl $0x40, %r12d
jne 0x5126b
leaq -0x228(%rbp), %rdi
leaq 0x291aa(%rip), %rsi     # 0x7a1d4
callq 0x58b7c
leaq -0x100(%rbp), %r14
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq %r14, %rdi
callq *(%rax)
leaq -0xe0(%rbp), %r15
leaq -0x228(%rbp), %rdi
movq %r14, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
movq %r15, %rdi
callq 0x49e1c
movq %r12, %rdi
movq %r15, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %r12
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x98(%rbp), %r13
movq %r13, %rdi
callq 0x49e1c
movq %r12, %rdi
movq %r13, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x78(%rbp), %r13
movq %r13, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r13, %rsi
callq 0x5b849
leaq -0xc0(%rbp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x41380
movq %r12, %rdi
callq 0x418c8
leaq -0x78(%rbp), %rdi
jmp 0x5122e
leaq -0x228(%rbp), %rdi
leaq 0x29293(%rip), %rsi     # 0x7a39b
callq 0x58b7c
leaq -0x100(%rbp), %r14
movq -0x38(%rbp), %rax
movl 0x50(%rax), %esi
movq %r14, %rdi
callq 0x49e1c
leaq -0xe0(%rbp), %r15
leaq -0x228(%rbp), %rdi
movq %r14, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq %r15, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x98(%rbp), %r13
movq %r13, %rdi
callq 0x49e1c
movq %r12, %rdi
movq %r13, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %r13
movq -0x30(%rbp), %rax
movq 0x50(%rax), %rsi
movq (%rsi), %rax
leaq -0x128(%rbp), %r12
movq %r12, %rdi
callq *(%rax)
movq %r12, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x49b15
leaq -0x78(%rbp), %r12
movq %r12, %rdi
movl %eax, %esi
callq 0x49e1c
movq %r13, %rdi
movq %r12, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x290(%rbp), %r13
movq %r13, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r13, %rsi
callq 0x5b849
leaq -0xc0(%rbp), %r12
movq %r12, %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x41380
movq %r12, %rdi
callq 0x418c8
leaq -0x290(%rbp), %rdi
callq 0x418c8
leaq -0x78(%rbp), %rdi
callq 0x418c8
leaq -0x128(%rbp), %rdi
callq 0x418c8
leaq -0x98(%rbp), %rdi
callq 0x418c8
movq %r15, %rdi
callq 0x418c8
movq %r14, %rdi
callq 0x418c8
leaq -0x228(%rbp), %rdi
callq 0x58c68
movq -0x108(%rbp), %r15
addq $0x8, %r15
jmp 0x50d74
leaq -0x228(%rbp), %rdi
leaq 0x29122(%rip), %rsi     # 0x7a39b
callq 0x58b7c
leaq -0x100(%rbp), %r13
movq -0x38(%rbp), %rax
movl 0x50(%rax), %esi
movq %r13, %rdi
callq 0x49e1c
leaq -0xe0(%rbp), %r15
leaq -0x228(%rbp), %rdi
movq %r13, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq %r15, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x98(%rbp), %r14
movq %r14, %rdi
callq 0x49e1c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %r12
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x49e1c
movq %r12, %rdi
movq %r14, %rsi
callq 0x5b849
movq %rax, %r12
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x128(%rbp), %r14
movq %r14, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r14, %rsi
callq 0x5b849
leaq -0xc0(%rbp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
movq %r14, %rsi
callq 0x41380
movq %r14, %rdi
callq 0x418c8
leaq -0x128(%rbp), %rdi
callq 0x418c8
leaq -0x78(%rbp), %rdi
callq 0x418c8
leaq -0x98(%rbp), %rdi
callq 0x418c8
movq %r15, %rdi
callq 0x418c8
movq %r13, %rdi
jmp 0x5124a
leaq -0x258(%rbp), %r12
leaq -0x148(%rbp), %rbx
cmpq -0x130(%rbp), %r15
je 0x51943
movq (%r15), %rax
movq %rax, -0x30(%rbp)
cmpl $0x4, 0x3c(%rax)
jne 0x51932
cmpb $0x0, -0x3c(%rbp)
je 0x513f4
movq %r12, %rdi
movq -0x58(%rbp), %rsi
callq 0x4486c
movq -0x30(%rbp), %rdi
movq %r12, %rsi
callq 0x72d72
movl %eax, %r14d
movq %r12, %rdi
callq 0x44be0
testb %r14b, %r14b
jne 0x51420
jmp 0x51932
movq %rbx, %rdi
movq -0x58(%rbp), %rsi
callq 0x4486c
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
callq 0x72d72
movl %eax, %r14d
movq %rbx, %rdi
callq 0x44be0
testb %r14b, %r14b
jne 0x51932
movq %r15, -0x108(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
movq $0x0, -0x38(%rbp)
cmpq %r12, %r15
je 0x514cf
movq (%r15), %r13
movq %r13, %rdi
leaq 0x28664(%rip), %rsi     # 0x79ab4
callq 0x71cf8
testb %al, %al
je 0x514c6
movq %r13, %rdi
leaq 0x4322d(%rip), %rsi     # 0x94690
leaq 0x43996(%rip), %rdx     # 0x94e00
xorl %ecx, %ecx
callq 0x41480
movq %rax, -0x38(%rbp)
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x228(%rbp), %rdi
callq *(%rax)
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0xc0(%rbp), %r14
movq %r14, %rdi
callq *(%rax)
leaq -0x228(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x41040
movl %eax, %r13d
movq %r14, %rdi
callq 0x418c8
movq %rbx, %rdi
callq 0x418c8
testl %r13d, %r13d
je 0x514cf
addq $0x8, %r15
jmp 0x5143a
cmpq %r12, %r15
je 0x519b2
movq -0x30(%rbp), %rax
cmpq $0x0, 0x50(%rax)
movq -0x108(%rbp), %r15
leaq -0x258(%rbp), %r12
je 0x51602
cmpb $0x0, -0x3c(%rbp)
je 0x516f0
leaq -0x228(%rbp), %rdi
leaq 0x285b6(%rip), %rsi     # 0x79ac3
callq 0x58b7c
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x100(%rbp), %rbx
movq %rbx, %rdi
callq *(%rax)
leaq -0x228(%rbp), %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %r13
movq -0x38(%rbp), %rax
movl 0x50(%rax), %esi
leaq -0xe0(%rbp), %rbx
movq %rbx, %rdi
callq 0x49e1c
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %r13
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x98(%rbp), %rbx
movq %rbx, %rdi
callq 0x49e1c
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %r14
movq -0x30(%rbp), %rax
movq 0x50(%rax), %rsi
movq (%rsi), %rax
leaq -0x128(%rbp), %rbx
movq %rbx, %rdi
callq *(%rax)
movq %rbx, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x49b15
leaq -0x78(%rbp), %rbx
movq %rbx, %rdi
movl %eax, %esi
callq 0x49e1c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %rdi
leaq 0x28b3d(%rip), %rsi     # 0x7a113
callq 0x691e2
leaq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
leaq -0xc0(%rbp), %rbx
movq %rbx, %rsi
callq 0x41380
jmp 0x517ee
cmpb $0x0, -0x3c(%rbp)
je 0x5180b
leaq -0x228(%rbp), %rdi
leaq 0x284a9(%rip), %rsi     # 0x79ac3
callq 0x58b7c
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x100(%rbp), %rbx
movq %rbx, %rdi
callq *(%rax)
leaq -0x228(%rbp), %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %rbx
movq -0x38(%rbp), %rax
movl 0x50(%rax), %esi
leaq -0xe0(%rbp), %r13
movq %r13, %rdi
callq 0x49e1c
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5b849
movq %rax, %rbx
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x98(%rbp), %r13
movq %r13, %rdi
callq 0x49e1c
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %rbx
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x49e1c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5b849
movq %rax, %rdi
leaq 0x28a4f(%rip), %rsi     # 0x7a113
callq 0x691e2
leaq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
leaq -0xc0(%rbp), %rbx
movq %rbx, %rsi
callq 0x41380
jmp 0x518ea
leaq -0x228(%rbp), %rdi
leaq 0x283c5(%rip), %rsi     # 0x79ac3
callq 0x58b7c
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x100(%rbp), %rbx
movq %rbx, %rdi
callq *(%rax)
leaq -0x228(%rbp), %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %r13
movq -0x38(%rbp), %rax
movl 0x50(%rax), %esi
leaq -0xe0(%rbp), %rbx
movq %rbx, %rdi
callq 0x49e1c
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %r13
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x98(%rbp), %rbx
movq %rbx, %rdi
callq 0x49e1c
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %r14
movq -0x30(%rbp), %rax
movq 0x50(%rax), %rsi
movq (%rsi), %rax
leaq -0x128(%rbp), %rbx
movq %rbx, %rdi
callq *(%rax)
movq %rbx, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x49b15
leaq -0x78(%rbp), %rbx
movq %rbx, %rdi
movl %eax, %esi
callq 0x49e1c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %rdi
leaq 0x2895d(%rip), %rsi     # 0x7a124
callq 0x691e2
leaq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
leaq -0xc0(%rbp), %rbx
movq %rbx, %rsi
callq 0x41380
movq %rbx, %rdi
callq 0x418c8
leaq -0x78(%rbp), %rdi
callq 0x418c8
leaq -0x128(%rbp), %rdi
jmp 0x518f6
leaq -0x228(%rbp), %rdi
leaq 0x282aa(%rip), %rsi     # 0x79ac3
callq 0x58b7c
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
leaq -0x100(%rbp), %rbx
movq %rbx, %rdi
callq *(%rax)
leaq -0x228(%rbp), %rdi
movq %rbx, %rsi
callq 0x5b849
movq %rax, %rbx
movq -0x38(%rbp), %rax
movl 0x50(%rax), %esi
leaq -0xe0(%rbp), %r13
movq %r13, %rdi
callq 0x49e1c
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5b849
movq %rax, %rbx
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x98(%rbp), %r13
movq %r13, %rdi
callq 0x49e1c
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5b849
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x6919f
movq %rax, %rbx
movq -0x38(%rbp), %rax
movl 0x54(%rax), %esi
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x49e1c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5b849
movq %rax, %rdi
leaq 0x28861(%rip), %rsi     # 0x7a124
callq 0x691e2
leaq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x5c6f6
movq -0x48(%rbp), %rdi
leaq -0xc0(%rbp), %rbx
movq %rbx, %rsi
callq 0x41380
movq %rbx, %rdi
callq 0x418c8
leaq -0x78(%rbp), %rdi
callq 0x418c8
leaq -0x98(%rbp), %rdi
callq 0x418c8
leaq -0xe0(%rbp), %rdi
callq 0x418c8
leaq -0x100(%rbp), %rdi
callq 0x418c8
leaq -0x228(%rbp), %rdi
callq 0x58c68
leaq -0x148(%rbp), %rbx
addq $0x8, %r15
jmp 0x513a3
cmpb $0x0, -0x3c(%rbp)
jne 0x51959
jmp 0x5197b
cmpb $0x0, -0x3c(%rbp)
je 0x5196b
leaq 0x2884c(%rip), %rsi     # 0x7a19c
movq -0x48(%rbp), %rdi
callq 0x413d0
testb $0x2, -0x9c(%rbp)
je 0x51994
leaq 0x28bef(%rip), %rsi     # 0x7a558
jmp 0x5198b
leaq 0x28846(%rip), %rsi     # 0x7a1b8
movq -0x48(%rbp), %rdi
callq 0x413d0
testb $0x2, -0x9c(%rbp)
je 0x51994
leaq 0x28be9(%rip), %rsi     # 0x7a574
movq -0x48(%rbp), %rdi
callq 0x413d0
leaq -0x270(%rbp), %rdi
callq 0x4f87c
addq $0x298, %rsp            # imm = 0x298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x445f7(%rip), %rax     # 0x95fb0
movq (%rax), %rdi
leaq 0x28772(%rip), %rsi     # 0x7a135
leaq 0x287a0(%rip), %rdx     # 0x7a16a
leaq 0x287b3(%rip), %r8      # 0x7a184
movl $0xe6, %ecx
xorl %eax, %eax
callq 0x41600
pushq $0x1
popq %rdi
callq 0x414f0
jmp 0x51a73
jmp 0x51bd3
jmp 0x51bd3
jmp 0x51ba5
jmp 0x51b58
jmp 0x51b58
jmp 0x51b60
jmp 0x51c84
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x418c8
jmp 0x51b21
jmp 0x51bc1
jmp 0x51bc1
jmp 0x51bd3
jmp 0x51ba5
jmp 0x51ba5
jmp 0x51b58
jmp 0x51b58
jmp 0x51b60
jmp 0x51c84
jmp 0x51a73
jmp 0x51bd3
jmp 0x51ba5
jmp 0x51ba5
jmp 0x51b58
jmp 0x51b58
jmp 0x51b60
jmp 0x51c84
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
jmp 0x51b28
jmp 0x51bd3
jmp 0x51ba5
jmp 0x51ba5
jmp 0x51b58
jmp 0x51b58
jmp 0x51b60
jmp 0x51c84
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x418c8
jmp 0x51b82
jmp 0x51abb
movq %rax, %rbx
jmp 0x51b8e
jmp 0x51ba5
jmp 0x51b58
jmp 0x51b58
jmp 0x51b60
jmp 0x51c84
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
callq 0x418c8
jmp 0x51bad
jmp 0x51bda
jmp 0x51bda
jmp 0x51bd3
jmp 0x51ba5
jmp 0x51ba5
jmp 0x51b58
jmp 0x51b58
jmp 0x51b60
jmp 0x51c84
jmp 0x51bc1
jmp 0x51ba5
movq %rax, %rbx
leaq -0x128(%rbp), %rdi
callq 0x418c8
jmp 0x51bc4
jmp 0x51bd3
jmp 0x51c84
jmp 0x51ba5
jmp 0x51ba5
jmp 0x51b58
jmp 0x51b58
jmp 0x51b60
jmp 0x51c84
jmp 0x51b6d
jmp 0x51bd3
jmp 0x51ba5
jmp 0x51ba5
jmp 0x51b58
movq %rax, %rbx
jmp 0x51c0a
movq %rax, %rbx
jmp 0x51c16
jmp 0x51c84
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
jmp 0x51bb4
jmp 0x51bd3
jmp 0x51bd3
jmp 0x51bd3
movq %rax, %rbx
leaq -0x128(%rbp), %rdi
callq 0x418c8
leaq -0x98(%rbp), %rdi
callq 0x418c8
jmp 0x51b9f
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
jmp 0x51bf9
movq %rax, %rbx
jmp 0x51bfe
movq %rax, %rbx
leaq -0x290(%rbp), %rdi
callq 0x418c8
jmp 0x51bdd
jmp 0x51bce
jmp 0x51bd3
jmp 0x51bc1
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
jmp 0x51bed
jmp 0x51bce
jmp 0x51bd3
movq %rax, %rbx
jmp 0x51be6
movq %rax, %rbx
jmp 0x51bf2
jmp 0x51bda
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0x418c8
leaq -0x128(%rbp), %rdi
callq 0x418c8
leaq -0x98(%rbp), %rdi
callq 0x418c8
leaq -0xe0(%rbp), %rdi
callq 0x418c8
leaq -0x100(%rbp), %rdi
callq 0x418c8
leaq -0x228(%rbp), %rdi
callq 0x58c68
jmp 0x51c87
movq %rax, %rbx
leaq -0x258(%rbp), %rdi
jmp 0x51c60
movq %rax, %rbx
leaq -0x148(%rbp), %rdi
jmp 0x51c60
movq %rax, %rbx
leaq -0x2c0(%rbp), %rdi
jmp 0x51c60
movq %rax, %rbx
leaq -0x2a8(%rbp), %rdi
jmp 0x51c60
jmp 0x51c84
movq %rax, %rbx
leaq -0x240(%rbp), %rdi
callq 0x44be0
jmp 0x51c87
jmp 0x51c84
jmp 0x51c84
jmp 0x51c6f
jmp 0x51c84
movq %rax, %rbx
leaq -0x228(%rbp), %rdi
callq 0x418c8
jmp 0x51c87
jmp 0x51c84
jmp 0x51c84
movq %rax, %rbx
leaq -0x270(%rbp), %rdi
callq 0x4f87c
movq %rbx, %rdi
callq 0x41790