// File: eniac[P]Mantis/src/compile/compile_p4.cpp
// Function: augmentRegisterArgProgForIng(std::vector<AstNode*, std::allocator<AstNode*>>*, std::vector<AstNode*, std::allocator<AstNode*>>*, std::vector<ReactionArgNode*, std::allocator<ReactionArgNode*>> const&, int, bool)
void augmentRegisterArgProgForIng(vector<AstNode*>* newNodes,
                         vector<AstNode*>* nodeArray,
                         const vector<ReactionArgNode*>& reaction_args,
                         int iso_opt, bool forIng) {
    string p4rRegMetadataType;
    string p4rRegMetadataName;
    if(forIng) {
        p4rRegMetadataType = string(kP4rIngRegMetadataType);
        p4rRegMetadataName = string(kP4rIngRegMetadataName);
    } else {
        p4rRegMetadataType = string(kP4rEgrRegMetadataType);
        p4rRegMetadataName = string(kP4rEgrRegMetadataName);
    }

    // Generate meta data for storing latest value of register index, value
    if (((unsigned int)iso_opt) & 0b1) {
        ostringstream oss;
        oss << "header_type "<< p4rRegMetadataType << " {\n"
            << " fields {\n";        
        vector<P4RegisterNode*> regNodes = findP4RegisterNode(*nodeArray);

        for (auto ra : reaction_args) {    
            if (ra->argType_==ReactionArgNode::REGISTER) {
                if(forIng) {
                    if(!findRegargInIng(ra, *nodeArray)) {
                        continue;
                    }
                } else {
                    if(findRegargInIng(ra, *nodeArray)) {
                        continue;
                    }
                }
                for(auto reg : regNodes) {
                    if(reg->name_->toString().compare(ra->toString())==0) {
                        oss << "  " << ra->toString() << kP4rRegMetadataOutputSuffix << "  : "<< reg->width_ << ";\n";
                        int index_width = int(ceil(log2(reg->instanceCount_)));
                        if (index_width==0) {
                            index_width = 1;
                        }
                        oss << "  " << ra->toString() << kP4rRegMetadataIndexSuffix << "  : "<< index_width << ";\n";
                        break;
                    }
                }
            }
        }        

        oss << " }" << endl;
        oss << "}" << endl;
        oss << "metadata " << p4rRegMetadataType << " "
                           << p4rRegMetadataName << ";\n\n";

        newNodes->push_back(new UnanchoredNode(new string(oss.str()),
                                               new string("metadata"),
                                               new string(p4rRegMetadataName)));

        // Transform original blackbox program 
        // Currently assume the reg to isolation has no HI member and no output instruction
        // If original blackbox has output instruction already, just mirror that the output meta data

        vector<P4ExprNode*> blackboxes = findBlackbox(*nodeArray);
        for (auto blackbox : blackboxes) {
            std::string prog_name = blackbox->name2_->toString();
            std::stringstream ss(blackbox->body_->toString());
            std::string reg_name;
            std::string item;
            while (std::getline(ss, item, ';'))
            {
                std::stringstream ss_(item);
                std::string item_;
                while (std::getline(ss_, item_, ':')) {
                    boost::algorithm::trim(item_);
                    if(item_.compare("reg")==0) {
                        std::getline(ss_, item_, ':');
                        boost::algorithm::trim(item_);
                        reg_name = item_;
                    }
                }
            }
            ostringstream oss_dst_field, oss_index_field;
            oss_dst_field << p4rRegMetadataName
                             << "."
                             << reg_name
                             << kP4rRegMetadataOutputSuffix;       
            oss_index_field << p4rRegMetadataName
                            << "."
                            << reg_name
                            << kP4rRegMetadataIndexSuffix;                                      
            ostringstream oss_cmd;
            oss_cmd << "  " << "output_value : alu_lo;\n"
                    << "  " << "output_dst : "
                    << oss_dst_field.str()
                    << ";\n";
            string newbodystr = blackbox->body_->toString()+oss_cmd.str();
            blackbox->body_ = new BodyNode(NULL, NULL, new BodyWordNode(BodyWordNode::STRING, new StrNode(new string(newbodystr))));

            // Singleton action that executes the prog
            // Locate the action that executes the stateful prog and mirror the index to meta
            bool transformed = false;
            for (auto tmp_node : *nodeArray) {
                if(typeContains(tmp_node, "ActionNode") && !typeContains(tmp_node, "P4R")) {
                    ActionNode* tmp_action_node = dynamic_cast<ActionNode*>(tmp_node);
                    string tmp_action_name = tmp_action_node->name_->toString();
                    ActionStmtsNode* actionstmts = tmp_action_node->stmts_;
                    for (ActionStmtNode* as : *actionstmts->list_) {
                        if(as->toString().find("execute_stateful_alu")!=string::npos &&
                            as->toString().find(prog_name)!=string::npos) {
                            // Extract the index or index metadata/field
                            unsigned first = as->toString().find("(");
                            unsigned last = as->toString().find(")");
                            string index = as->toString().substr (first+1,last-first-1);
                            
                            // Mirror the index to p4r reg metadata
                            auto tmp_args = new ArgsNode();
                            tmp_args->push_back(new BodyWordNode(
                                BodyWordNode::STRING,
                                new StrNode(new string(oss_index_field.str()))));
                            tmp_args->push_back(new BodyWordNode(
                                BodyWordNode::STRING,
                                new StrNode(new string(index))));                            
                            actionstmts->push_back(new ActionStmtNode(
                                                        new NameNode(new string("modify_field")),
                                                        tmp_args,
                                                        ActionStmtNode::NAME_ARGLIST,
                                                        NULL,
                                                        NULL
                                                    ));     
                            transformed = true;
                            break;
                        }
                    }
                    if (transformed) {
                        break;
                    }
                }
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1060, %rsp           # imm = 0x1060
movb %r8b, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
andb $0x1, %al
movb %al, -0x1d(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xaa7f0
leaq -0x60(%rbp), %rdi
callq 0xaa7f0
testb $0x1, -0x1d(%rbp)
je 0x11e1c8
leaq -0x81(%rbp), %rdi
movq %rdi, -0xde8(%rbp)
callq 0xaaa70
movq -0xde8(%rbp), %rdx
leaq 0x1ffe0(%rip), %rsi     # 0x13e0cf
leaq -0x80(%rbp), %rdi
callq 0xaa7d0
jmp 0x11e0fa
leaq -0x40(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movq %rsi, -0xdf8(%rbp)
callq 0xaa6d0
movq -0xdf8(%rbp), %rdi
callq 0xaabe8
leaq -0x81(%rbp), %rdi
callq 0xaa5f0
leaq -0xb9(%rbp), %rdi
movq %rdi, -0xdf0(%rbp)
callq 0xaaa70
movq -0xdf0(%rbp), %rdx
leaq 0x1ff22(%rip), %rsi     # 0x13e069
leaq -0xb8(%rbp), %rdi
callq 0xaa7d0
jmp 0x11e155
leaq -0x60(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xaa6d0
leaq -0xb8(%rbp), %rdi
callq 0xaabe8
leaq -0xb9(%rbp), %rdi
callq 0xaa5f0
jmp 0x11e2c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x81(%rbp), %rdi
callq 0xaa5f0
jmp 0x11fc77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xb9(%rbp), %rdi
callq 0xaa5f0
jmp 0x11fc77
leaq -0xe1(%rbp), %rdi
movq %rdi, -0xe00(%rbp)
callq 0xaaa70
movq -0xe00(%rbp), %rdx
leaq 0x1fef8(%rip), %rsi     # 0x13e0e1
leaq -0xe0(%rbp), %rdi
callq 0xaa7d0
jmp 0x11e1f7
leaq -0x40(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movq %rsi, -0xe10(%rbp)
callq 0xaa6d0
movq -0xe10(%rbp), %rdi
callq 0xaabe8
leaq -0xe1(%rbp), %rdi
callq 0xaa5f0
leaq -0x109(%rbp), %rdi
movq %rdi, -0xe08(%rbp)
callq 0xaaa70
movq -0xe08(%rbp), %rdx
leaq 0x1feac(%rip), %rsi     # 0x13e0f3
leaq -0x108(%rbp), %rdi
callq 0xaa7d0
jmp 0x11e255
leaq -0x60(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xaa6d0
leaq -0x108(%rbp), %rdi
callq 0xaabe8
leaq -0x109(%rbp), %rdi
callq 0xaa5f0
jmp 0x11e2c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xe1(%rbp), %rdi
callq 0xaa5f0
jmp 0x11fc77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x109(%rbp), %rdi
callq 0xaa5f0
jmp 0x11fc77
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x11fc5c
leaq -0x288(%rbp), %rdi
callq 0xaa7b0
jmp 0x11e2e2
leaq 0x1bb0c(%rip), %rsi     # 0x139df5
leaq -0x288(%rbp), %rdi
callq 0xaa540
movq %rax, -0xe18(%rbp)
jmp 0x11e2fe
movq -0xe18(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xe20(%rbp)
jmp 0x11e317
movq -0xe20(%rbp), %rdi
leaq 0x1fc72(%rip), %rsi     # 0x13df97
callq 0xaa540
movq %rax, -0xe28(%rbp)
jmp 0x11e333
movq -0xe28(%rbp), %rdi
leaq 0x1bac2(%rip), %rsi     # 0x139e03
callq 0xaa540
jmp 0x11e348
movq -0x10(%rbp), %rsi
leaq -0x2a0(%rbp), %rdi
callq 0x12dae0
jmp 0x11e35a
movq -0x18(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x2a8(%rbp), %rdi
callq 0x127ae0
movq %rax, -0x2b0(%rbp)
movq -0x2a8(%rbp), %rdi
callq 0x127b10
movq %rax, -0x2b8(%rbp)
leaq -0x2b0(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x127b40
testb $0x1, %al
jne 0x11e3a7
jmp 0x11e885
leaq -0x2b0(%rbp), %rdi
callq 0x127b80
movq (%rax), %rax
movq %rax, -0x2c0(%rbp)
movq -0x2c0(%rbp), %rax
cmpl $0x4, 0x3c(%rax)
jne 0x11e872
testb $0x1, -0x1d(%rbp)
je 0x11e4a8
movq -0x2c0(%rbp), %rax
movq %rax, -0xe30(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x2d8(%rbp), %rdi
callq 0xb2bc0
jmp 0x11e3f8
movq -0xe30(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x12e7f0
movb %al, -0xe31(%rbp)
jmp 0x11e413
movb -0xe31(%rbp), %al
xorb $-0x1, %al
movb %al, -0xe32(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0xb22f0
movb -0xe32(%rbp), %al
testb $0x1, %al
jne 0x11e439
jmp 0x11e4a6
jmp 0x11e874
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fc77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fc4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fc42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0xb22f0
jmp 0x11fc42
jmp 0x11e525
movq -0x2c0(%rbp), %rax
movq %rax, -0xe40(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x2f0(%rbp), %rdi
callq 0xb2bc0
jmp 0x11e4c8
movq -0xe40(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x12e7f0
movb %al, -0xe41(%rbp)
jmp 0x11e4e3
leaq -0x2f0(%rbp), %rdi
callq 0xb22f0
movb -0xe41(%rbp), %al
testb $0x1, %al
jne 0x11e4fb
jmp 0x11e523
jmp 0x11e874
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0xb22f0
jmp 0x11fc42
jmp 0x11e525
leaq -0x2a0(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x127bc0
movq %rax, -0x300(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x127bf0
movq %rax, -0x308(%rbp)
leaq -0x300(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x127c20
testb $0x1, %al
jne 0x11e575
jmp 0x11e870
leaq -0x300(%rbp), %rdi
callq 0x127c60
movq (%rax), %rax
movq %rax, -0x310(%rbp)
movq -0x310(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x330(%rbp), %rdi
callq *%rax
jmp 0x11e5a7
movq -0x2c0(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x350(%rbp), %rdi
callq *%rax
jmp 0x11e5bf
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0xaa060
movl %eax, -0xe48(%rbp)
jmp 0x11e5da
leaq -0x350(%rbp), %rdi
callq 0xaabe8
leaq -0x330(%rbp), %rdi
callq 0xaabe8
movl -0xe48(%rbp), %eax
cmpl $0x0, %eax
jne 0x11e85d
leaq 0x1dd30(%rip), %rsi     # 0x13c338
leaq -0x288(%rbp), %rdi
callq 0xaa540
movq %rax, -0xe50(%rbp)
jmp 0x11e61d
movq -0x2c0(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x370(%rbp), %rdi
callq *%rax
jmp 0x11e635
movq -0xe50(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xe58(%rbp)
jmp 0x11e651
movq -0xe58(%rbp), %rdi
leaq 0x1fa1a(%rip), %rsi     # 0x13e079
callq 0xaa540
movq %rax, -0xe60(%rbp)
jmp 0x11e66d
movq -0xe60(%rbp), %rdi
leaq 0x1fa88(%rip), %rsi     # 0x13e103
callq 0xaa540
movq %rax, -0xe68(%rbp)
jmp 0x11e689
movq -0xe68(%rbp), %rdi
movq -0x310(%rbp), %rax
movl 0x50(%rax), %esi
callq 0xaaa20
movq %rax, -0xe70(%rbp)
jmp 0x11e6a8
movq -0xe70(%rbp), %rdi
leaq 0x1b77f(%rip), %rsi     # 0x139e35
callq 0xaa540
jmp 0x11e6bd
leaq -0x370(%rbp), %rdi
callq 0xaabe8
movq -0x310(%rbp), %rax
movl 0x54(%rax), %edi
callq 0x127d60
movsd %xmm0, -0xe78(%rbp)
jmp 0x11e6e2
movsd -0xe78(%rbp), %xmm0
callq 0xaa0c0
cvttsd2si %xmm0, %eax
movl %eax, -0x374(%rbp)
cmpl $0x0, -0x374(%rbp)
jne 0x11e774
movl $0x1, -0x374(%rbp)
jmp 0x11e774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11e740
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x350(%rbp), %rdi
callq 0xaabe8
leaq -0x330(%rbp), %rdi
callq 0xaabe8
jmp 0x11fc42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x370(%rbp), %rdi
callq 0xaabe8
jmp 0x11fc42
leaq 0x1dbbd(%rip), %rsi     # 0x13c338
leaq -0x288(%rbp), %rdi
callq 0xaa540
movq %rax, -0xe80(%rbp)
jmp 0x11e790
movq -0x2c0(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x398(%rbp), %rdi
callq *%rax
jmp 0x11e7a8
movq -0xe80(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xe88(%rbp)
jmp 0x11e7c4
movq -0xe88(%rbp), %rdi
leaq 0x1f8dc(%rip), %rsi     # 0x13e0ae
callq 0xaa540
movq %rax, -0xe90(%rbp)
jmp 0x11e7e0
movq -0xe90(%rbp), %rdi
leaq 0x1f915(%rip), %rsi     # 0x13e103
callq 0xaa540
movq %rax, -0xe98(%rbp)
jmp 0x11e7fc
movq -0xe98(%rbp), %rdi
movl -0x374(%rbp), %esi
callq 0xaaa20
movq %rax, -0xea0(%rbp)
jmp 0x11e817
movq -0xea0(%rbp), %rdi
leaq 0x1b610(%rip), %rsi     # 0x139e35
callq 0xaa540
jmp 0x11e82c
leaq -0x398(%rbp), %rdi
callq 0xaabe8
jmp 0x11e870
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x398(%rbp), %rdi
callq 0xaabe8
jmp 0x11fc42
jmp 0x11e85f
leaq -0x300(%rbp), %rdi
callq 0x127c80
jmp 0x11e559
jmp 0x11e872
jmp 0x11e874
leaq -0x2b0(%rbp), %rdi
callq 0x127ba0
jmp 0x11e38b
leaq 0x1f906(%rip), %rsi     # 0x13e192
leaq -0x288(%rbp), %rdi
callq 0xaa540
movq %rax, -0xea8(%rbp)
jmp 0x11e8a1
movq -0xea8(%rbp), %rdi
movq 0x556b9(%rip), %rsi     # 0x173f68
callq 0xaa5b0
jmp 0x11e8b6
leaq 0x1d6db(%rip), %rsi     # 0x13bf98
leaq -0x288(%rbp), %rdi
callq 0xaa540
movq %rax, -0xeb0(%rbp)
jmp 0x11e8d2
movq -0xeb0(%rbp), %rdi
movq 0x55688(%rip), %rsi     # 0x173f68
callq 0xaa5b0
jmp 0x11e8e7
leaq 0x1b528(%rip), %rsi     # 0x139e16
leaq -0x288(%rbp), %rdi
callq 0xaa540
movq %rax, -0xeb8(%rbp)
jmp 0x11e903
movq -0xeb8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xec0(%rbp)
jmp 0x11e91c
movq -0xec0(%rbp), %rdi
leaq 0x1da0f(%rip), %rsi     # 0x13c339
callq 0xaa540
movq %rax, -0xec8(%rbp)
jmp 0x11e938
movq -0xec8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xed0(%rbp)
jmp 0x11e951
movq -0xed0(%rbp), %rdi
leaq 0x1cb3d(%rip), %rsi     # 0x13b49c
callq 0xaa540
jmp 0x11e966
movq -0x8(%rbp), %rax
movq %rax, -0xee0(%rbp)
movl $0x58, %edi
callq 0xaa560
movq %rax, -0xed8(%rbp)
jmp 0x11e984
movb $0x1, -0x3a3(%rbp)
movl $0x20, %edi
callq 0xaa560
movq %rax, -0xee8(%rbp)
jmp 0x11e99e
movq -0xee8(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xaa580
jmp 0x11e9b3
movl $0x20, %edi
callq 0xaa560
movq %rax, -0xef0(%rbp)
jmp 0x11e9c6
movb $0x1, -0x3a2(%rbp)
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0xef8(%rbp)
callq 0xaaa70
movq -0xef0(%rbp), %rdi
movq -0xef8(%rbp), %rdx
leaq 0x1f713(%rip), %rsi     # 0x13e108
callq 0xaa7d0
jmp 0x11e9fc
movb $0x0, -0x3a2(%rbp)
movl $0x20, %edi
callq 0xaa560
movq %rax, -0xf00(%rbp)
jmp 0x11ea16
movq -0xf00(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xaa290
jmp 0x11ea28
movq -0xf00(%rbp), %rcx
movq -0xef0(%rbp), %rdx
movq -0xee8(%rbp), %rsi
movq -0xed8(%rbp), %rdi
callq 0xcaee0
jmp 0x11ea4b
movq -0xee0(%rbp), %rdi
movq -0xed8(%rbp), %rax
movb $0x0, -0x3a3(%rbp)
movq %rax, -0x3a0(%rbp)
leaq -0x3a0(%rbp), %rsi
callq 0xb2540
jmp 0x11ea75
leaq -0x3a1(%rbp), %rdi
callq 0xaa5f0
movq -0x10(%rbp), %rsi
leaq -0x3c0(%rbp), %rdi
callq 0x12cda0
jmp 0x11ea93
leaq -0x3c0(%rbp), %rax
movq %rax, -0x3c8(%rbp)
movq -0x3c8(%rbp), %rdi
callq 0x127d80
movq %rax, -0x3d0(%rbp)
movq -0x3c8(%rbp), %rdi
callq 0x127db0
movq %rax, -0x3d8(%rbp)
leaq -0x3d0(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x127de0
testb $0x1, %al
jne 0x11eae3
jmp 0x11fc10
leaq -0x3d0(%rbp), %rdi
callq 0x127e20
movq (%rax), %rax
movq %rax, -0x3e0(%rbp)
movq -0x3e0(%rbp), %rax
movq 0x50(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x400(%rbp), %rdi
callq *%rax
jmp 0x11eb15
movq -0x3e0(%rbp), %rax
movq 0x60(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x5a8(%rbp), %rdi
callq *%rax
jmp 0x11eb31
movl $0x10, %edi
movl $0x8, %esi
callq 0xbff00
movl %eax, -0xf04(%rbp)
jmp 0x11eb48
movl -0xf04(%rbp), %edx
leaq -0x588(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0xaa920
jmp 0x11eb63
leaq -0x5a8(%rbp), %rdi
callq 0xaabe8
leaq -0x5c8(%rbp), %rdi
callq 0xaa7f0
leaq -0x5e8(%rbp), %rdi
callq 0xaa7f0
leaq -0x588(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
movl $0x3b, %edx
callq 0xaaae0
movq %rax, -0xf10(%rbp)
jmp 0x11eba8
movq -0xf10(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xaa6f0
movb %al, -0xf11(%rbp)
jmp 0x11ebc6
movb -0xf11(%rbp), %al
testb $0x1, %al
jne 0x11ebd5
jmp 0x11eebb
movl $0x10, %edi
movl $0x8, %esi
callq 0xbff00
movl %eax, -0xf18(%rbp)
jmp 0x11ebec
movl -0xf18(%rbp), %edx
leaq -0x770(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
callq 0xaa920
jmp 0x11ec07
leaq -0x790(%rbp), %rdi
callq 0xaa7f0
leaq -0x770(%rbp), %rdi
leaq -0x790(%rbp), %rsi
movl $0x3a, %edx
callq 0xaaae0
movq %rax, -0xf20(%rbp)
jmp 0x11ec34
movq -0xf20(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xaa6f0
movb %al, -0xf21(%rbp)
jmp 0x11ec52
movb -0xf21(%rbp), %al
testb $0x1, %al
jne 0x11ec61
jmp 0x11ee81
leaq -0x798(%rbp), %rdi
movq %rdi, -0xf30(%rbp)
callq 0xaabc0
movq -0xf30(%rbp), %rsi
leaq -0x790(%rbp), %rdi
callq 0xbff20
jmp 0x11ec89
leaq -0x798(%rbp), %rdi
callq 0xaa810
leaq -0x790(%rbp), %rdi
leaq 0x1f715(%rip), %rsi     # 0x13e3b8
callq 0xaa180
cmpl $0x0, %eax
jne 0x11ee7c
leaq -0x770(%rbp), %rdi
leaq -0x790(%rbp), %rsi
movl $0x3a, %edx
callq 0xaaae0
jmp 0x11eccb
leaq -0x7a0(%rbp), %rdi
movq %rdi, -0xf38(%rbp)
callq 0xaabc0
movq -0xf38(%rbp), %rsi
leaq -0x790(%rbp), %rdi
callq 0xbff20
jmp 0x11ecf3
leaq -0x7a0(%rbp), %rdi
callq 0xaa810
leaq -0x5c8(%rbp), %rdi
leaq -0x790(%rbp), %rsi
callq 0xaa070
jmp 0x11ed14
jmp 0x11ee7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11eda4
movq -0xee8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0xaa4e0
jmp 0x11eda4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11ed7f
movq -0xf00(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0xaa4e0
leaq -0x3a1(%rbp), %rdi
callq 0xaa5f0
testb $0x1, -0x3a2(%rbp)
jne 0x11ed96
jmp 0x11eda2
movq -0xef0(%rbp), %rdi
callq 0xaa4e0
jmp 0x11eda4
testb $0x1, -0x3a3(%rbp)
jne 0x11edaf
jmp 0x11edbb
movq -0xed8(%rbp), %rdi
callq 0xaa4e0
jmp 0x11fc42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fc36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fc02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x5a8(%rbp), %rdi
callq 0xaabe8
jmp 0x11fc02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fbde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11ee9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x798(%rbp), %rdi
callq 0xaa810
jmp 0x11ee9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x7a0(%rbp), %rdi
callq 0xaa810
jmp 0x11ee9e
jmp 0x11ec13
leaq -0x790(%rbp), %rdi
callq 0xaabe8
leaq -0x770(%rbp), %rdi
callq 0xaa440
jmp 0x11eb87
leaq -0x790(%rbp), %rdi
callq 0xaabe8
leaq -0x770(%rbp), %rdi
callq 0xaa440
jmp 0x11fbde
leaq -0x918(%rbp), %rdi
callq 0xaa7b0
jmp 0x11eec9
leaq -0xa90(%rbp), %rdi
callq 0xaa7b0
jmp 0x11eed7
leaq -0x918(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xf40(%rbp)
jmp 0x11eef0
movq -0xf40(%rbp), %rdi
leaq 0x1ccf3(%rip), %rsi     # 0x13bbf1
callq 0xaa540
movq %rax, -0xf48(%rbp)
jmp 0x11ef0c
movq -0xf48(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xf50(%rbp)
jmp 0x11ef28
movq -0xf50(%rbp), %rdi
leaq 0x1f143(%rip), %rsi     # 0x13e079
callq 0xaa540
jmp 0x11ef3d
leaq -0xa90(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xf58(%rbp)
jmp 0x11ef56
movq -0xf58(%rbp), %rdi
leaq 0x1cc8d(%rip), %rsi     # 0x13bbf1
callq 0xaa540
movq %rax, -0xf60(%rbp)
jmp 0x11ef72
movq -0xf60(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xf68(%rbp)
jmp 0x11ef8e
movq -0xf68(%rbp), %rdi
leaq 0x1f112(%rip), %rsi     # 0x13e0ae
callq 0xaa540
jmp 0x11efa3
leaq -0xc08(%rbp), %rdi
callq 0xaa7b0
jmp 0x11efb1
leaq 0x1d380(%rip), %rsi     # 0x13c338
leaq -0xc08(%rbp), %rdi
callq 0xaa540
movq %rax, -0xf70(%rbp)
jmp 0x11efcd
movq -0xf70(%rbp), %rdi
leaq 0x1f136(%rip), %rsi     # 0x13e111
callq 0xaa540
movq %rax, -0xf78(%rbp)
jmp 0x11efe9
movq -0xf78(%rbp), %rdi
leaq 0x1d341(%rip), %rsi     # 0x13c338
callq 0xaa540
movq %rax, -0xf80(%rbp)
jmp 0x11f005
movq -0xf80(%rbp), %rdi
leaq 0x1f116(%rip), %rsi     # 0x13e129
callq 0xaa540
movq %rax, -0xf88(%rbp)
jmp 0x11f021
leaq -0xc28(%rbp), %rdi
leaq -0x918(%rbp), %rsi
callq 0xaa580
jmp 0x11f036
movq -0xf88(%rbp), %rdi
leaq -0xc28(%rbp), %rsi
callq 0xaa4c0
movq %rax, -0xf90(%rbp)
jmp 0x11f052
movq -0xf90(%rbp), %rdi
leaq 0x1add5(%rip), %rsi     # 0x139e35
callq 0xaa540
jmp 0x11f067
leaq -0xc28(%rbp), %rdi
callq 0xaabe8
movq -0x3e0(%rbp), %rax
movq 0x60(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xc68(%rbp), %rdi
callq *%rax
jmp 0x11f08f
leaq -0xc88(%rbp), %rdi
leaq -0xc08(%rbp), %rsi
callq 0xaa580
jmp 0x11f0a4
leaq -0xc48(%rbp), %rdi
leaq -0xc68(%rbp), %rsi
leaq -0xc88(%rbp), %rdx
callq 0xb2200
jmp 0x11f0c0
leaq -0xc88(%rbp), %rdi
callq 0xaabe8
leaq -0xc68(%rbp), %rdi
callq 0xaabe8
movl $0x60, %edi
callq 0xaa560
movq %rax, -0xf98(%rbp)
jmp 0x11f0eb
movl $0x50, %edi
callq 0xaa560
movq %rax, -0xfa0(%rbp)
jmp 0x11f0fe
movl $0x48, %edi
callq 0xaa560
movq %rax, -0xfa8(%rbp)
jmp 0x11f111
movl $0x20, %edi
callq 0xaa560
movq %rax, -0xfb0(%rbp)
jmp 0x11f124
movq -0xfb0(%rbp), %rdi
leaq -0xc48(%rbp), %rsi
callq 0xaa290
jmp 0x11f139
movq -0xfb0(%rbp), %rsi
movq -0xfa8(%rbp), %rdi
callq 0xb2890
jmp 0x11f14e
movq -0xfa8(%rbp), %rdx
movq -0xfa0(%rbp), %rdi
movl $0x3, %esi
callq 0xba4d0
jmp 0x11f168
movq -0xfa0(%rbp), %rcx
movq -0xf98(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0xbaed0
jmp 0x11f184
movq -0xf98(%rbp), %rcx
movq -0x3e0(%rbp), %rax
movq %rcx, 0x60(%rax)
movb $0x0, -0xc89(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xc98(%rbp)
movq -0xc98(%rbp), %rdi
callq 0xb2ae0
movq %rax, -0xca0(%rbp)
movq -0xc98(%rbp), %rdi
callq 0xb2b10
movq %rax, -0xca8(%rbp)
leaq -0xca0(%rbp), %rdi
leaq -0xca8(%rbp), %rsi
callq 0xb2b40
testb $0x1, %al
jne 0x11f1ea
jmp 0x11fb3d
leaq -0xca0(%rbp), %rdi
callq 0xb2b80
movq (%rax), %rax
movq %rax, -0xcb0(%rbp)
movq -0xcb0(%rbp), %rdi
leaq 0x1ca29(%rip), %rsi     # 0x13bc37
callq 0x12c730
movb %al, -0xfb1(%rbp)
jmp 0x11f21b
movb -0xfb1(%rbp), %al
testb $0x1, %al
jne 0x11f22a
jmp 0x11fb2a
movq -0xcb0(%rbp), %rdi
leaq 0x1c95a(%rip), %rsi     # 0x13bb92
callq 0x12c730
movb %al, -0xfb2(%rbp)
jmp 0x11f245
movb -0xfb2(%rbp), %al
testb $0x1, %al
jne 0x11fb2a
jmp 0x11f255
movq -0xcb0(%rbp), %rax
movq %rax, -0xfc0(%rbp)
cmpq $0x0, %rax
je 0x11f3dc
movq -0xfc0(%rbp), %rdi
leaq 0x53365(%rip), %rsi     # 0x1725e0
leaq 0x53c1e(%rip), %rdx     # 0x172ea0
xorl %eax, %eax
movl %eax, %ecx
callq 0xaa660
movq %rax, -0xfc8(%rbp)
jmp 0x11f3e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fbd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fbc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fbba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xc28(%rbp), %rdi
callq 0xaabe8
jmp 0x11fbba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11f331
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xc88(%rbp), %rdi
callq 0xaabe8
leaq -0xc68(%rbp), %rdi
callq 0xaabe8
jmp 0x11fbba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fbae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11f3cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11f3bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11f3b3
movq -0xfb0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0xaa4e0
movq -0xfa8(%rbp), %rdi
callq 0xaa4e0
movq -0xfa0(%rbp), %rdi
callq 0xaa4e0
movq -0xf98(%rbp), %rdi
callq 0xaa4e0
jmp 0x11fbae
xorl %eax, %eax
movq %rax, -0xfc8(%rbp)
jmp 0x11f3e7
movq -0xfc8(%rbp), %rax
movq %rax, -0xcb8(%rbp)
movq -0xcb8(%rbp), %rax
movq 0x40(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xcd8(%rbp), %rdi
callq *%rax
jmp 0x11f411
movq -0xcb8(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0xce0(%rbp)
movq -0xce0(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0xce8(%rbp)
movq -0xce8(%rbp), %rdi
callq 0xb6410
movq %rax, -0xcf0(%rbp)
movq -0xce8(%rbp), %rdi
callq 0xb62a0
movq %rax, -0xcf8(%rbp)
leaq -0xcf0(%rbp), %rdi
leaq -0xcf8(%rbp), %rsi
callq 0xc0ca0
testb $0x1, %al
jne 0x11f477
jmp 0x11fade
leaq -0xcf0(%rbp), %rdi
callq 0xc0ce0
movq (%rax), %rax
movq %rax, -0xd00(%rbp)
movq -0xd00(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
movb $0x0, -0xd41(%rbp)
leaq -0xd20(%rbp), %rdi
callq *%rax
jmp 0x11f4ac
leaq -0xd20(%rbp), %rdi
leaq 0x1ec7d(%rip), %rsi     # 0x13e137
xorl %eax, %eax
movl %eax, %edx
callq 0xaab90
movq %rax, %rcx
xorl %eax, %eax
cmpq $-0x1, %rcx
movb %al, -0xfc9(%rbp)
je 0x11f517
movq -0xd00(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xd40(%rbp), %rdi
callq *%rax
jmp 0x11f4ec
movb $0x1, -0xd41(%rbp)
leaq -0xd40(%rbp), %rdi
leaq -0x400(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xaabb0
cmpq $-0x1, %rax
setne %al
movb %al, -0xfc9(%rbp)
movb -0xfc9(%rbp), %al
movb %al, -0xfca(%rbp)
testb $0x1, -0xd41(%rbp)
jne 0x11f52e
jmp 0x11f53a
leaq -0xd40(%rbp), %rdi
callq 0xaabe8
leaq -0xd20(%rbp), %rdi
callq 0xaabe8
movb -0xfca(%rbp), %al
testb $0x1, %al
jne 0x11f555
jmp 0x11facb
movq -0xd00(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xd68(%rbp), %rdi
callq *%rax
jmp 0x11f56d
leaq 0x1ea15(%rip), %rsi     # 0x13df89
xorl %eax, %eax
movl %eax, %edx
leaq -0xd68(%rbp), %rdi
movq %rdi, -0xfd8(%rbp)
callq 0xaab90
movq -0xfd8(%rbp), %rdi
movl %eax, -0xfd0(%rbp)
callq 0xaabe8
movl -0xfd0(%rbp), %eax
movl %eax, -0xd48(%rbp)
movq -0xd00(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xd90(%rbp), %rdi
callq *%rax
jmp 0x11f5c1
leaq 0x1f211(%rip), %rsi     # 0x13e7d9
xorl %eax, %eax
movl %eax, %edx
leaq -0xd90(%rbp), %rdi
movq %rdi, -0xfe8(%rbp)
callq 0xaab90
movq -0xfe8(%rbp), %rdi
movl %eax, -0xfdc(%rbp)
callq 0xaabe8
movl -0xfdc(%rbp), %eax
movl %eax, -0xd6c(%rbp)
movq -0xd00(%rbp), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0xdd0(%rbp), %rdi
callq *%rax
jmp 0x11f615
movl -0xd48(%rbp), %eax
movl %eax, %ecx
incl %ecx
movl %ecx, %edx
movl -0xd6c(%rbp), %ecx
notl %eax
addl %ecx, %eax
movl %eax, %ecx
leaq -0xdb0(%rbp), %rdi
leaq -0xdd0(%rbp), %rsi
callq 0xaa590
jmp 0x11f642
leaq -0xdd0(%rbp), %rdi
callq 0xaabe8
movl $0x48, %edi
callq 0xaa560
movq %rax, -0xff0(%rbp)
jmp 0x11f661
movq -0xff0(%rbp), %rdi
callq 0xbe9b0
jmp 0x11f66f
movq -0xff0(%rbp), %rax
movq %rax, -0xdd8(%rbp)
movq -0xdd8(%rbp), %rax
movq %rax, -0x1000(%rbp)
movl $0x50, %edi
callq 0xaa560
movq %rax, -0xff8(%rbp)
jmp 0x11f69e
movl $0x48, %edi
callq 0xaa560
movq %rax, -0x1008(%rbp)
jmp 0x11f6b1
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x1010(%rbp)
jmp 0x11f6c4
movq -0x1010(%rbp), %rdi
leaq -0xa90(%rbp), %rsi
callq 0xaa580
jmp 0x11f6d9
movq -0x1010(%rbp), %rsi
movq -0x1008(%rbp), %rdi
callq 0xb2890
jmp 0x11f6ee
movq -0x1008(%rbp), %rdx
movq -0xff8(%rbp), %rdi
movl $0x3, %esi
callq 0xba4d0
jmp 0x11f708
movq -0xff8(%rbp), %rsi
movq -0x1000(%rbp), %rdi
callq 0xb26b0
jmp 0x11f71d
movq -0xdd8(%rbp), %rax
movq %rax, -0x1020(%rbp)
movl $0x50, %edi
callq 0xaa560
movq %rax, -0x1018(%rbp)
jmp 0x11f73e
movl $0x48, %edi
callq 0xaa560
movq %rax, -0x1028(%rbp)
jmp 0x11f751
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x1030(%rbp)
jmp 0x11f764
movq -0x1030(%rbp), %rdi
leaq -0xdb0(%rbp), %rsi
callq 0xaa290
jmp 0x11f779
movq -0x1030(%rbp), %rsi
movq -0x1028(%rbp), %rdi
callq 0xb2890
jmp 0x11f78e
movq -0x1028(%rbp), %rdx
movq -0x1018(%rbp), %rdi
movl $0x3, %esi
callq 0xba4d0
jmp 0x11f7a8
movq -0x1018(%rbp), %rsi
movq -0x1020(%rbp), %rdi
callq 0xb26b0
jmp 0x11f7bd
movq -0xce0(%rbp), %rax
movq %rax, -0x1040(%rbp)
movl $0x60, %edi
callq 0xaa560
movq %rax, -0x1038(%rbp)
jmp 0x11f7de
movb $0x1, -0xddc(%rbp)
movl $0x48, %edi
callq 0xaa560
movq %rax, -0x1048(%rbp)
jmp 0x11f7f8
movb $0x1, -0xddb(%rbp)
movl $0x20, %edi
callq 0xaa560
movq %rax, -0x1050(%rbp)
jmp 0x11f812
movb $0x1, -0xdda(%rbp)
leaq -0xdd9(%rbp), %rdi
movq %rdi, -0x1058(%rbp)
callq 0xaaa70
movq -0x1050(%rbp), %rdi
movq -0x1058(%rbp), %rdx
leaq 0x1e90b(%rip), %rsi     # 0x13e14c
callq 0xaa7d0
jmp 0x11f848
movq -0x1050(%rbp), %rsi
movq -0x1048(%rbp), %rdi
movb $0x0, -0xdda(%rbp)
callq 0xb26f0
jmp 0x11f864
movq -0x1048(%rbp), %rsi
movq -0x1038(%rbp), %rdi
movb $0x0, -0xddb(%rbp)
movq -0xdd8(%rbp), %rdx
xorl %ecx, %ecx
movl %ecx, %r9d
movq %r9, %r8
callq 0xbf140
jmp 0x11f88f
movq -0x1038(%rbp), %rsi
movq -0x1040(%rbp), %rdi
movb $0x0, -0xddc(%rbp)
callq 0xb2670
jmp 0x11f8ab
leaq -0xdd9(%rbp), %rdi
callq 0xaa5f0
movb $0x1, -0xc89(%rbp)
leaq -0xdb0(%rbp), %rdi
callq 0xaabe8
jmp 0x11fade
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fb19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xd20(%rbp), %rdi
callq 0xaabe8
jmp 0x11fb19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xdd0(%rbp), %rdi
callq 0xaabe8
jmp 0x11fb19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fabd
movq -0xff0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0xaa4e0
jmp 0x11fabd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11f9b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11f9ac
movq -0x1010(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0xaa4e0
movq -0x1008(%rbp), %rdi
callq 0xaa4e0
movq -0xff8(%rbp), %rdi
callq 0xaa4e0
jmp 0x11fabd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fa1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fa0f
movq -0x1030(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
callq 0xaa4e0
movq -0x1028(%rbp), %rdi
callq 0xaa4e0
movq -0x1018(%rbp), %rdi
callq 0xaa4e0
jmp 0x11fabd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11faa4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x11fa8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xdd9(%rbp), %rdi
callq 0xaa5f0
testb $0x1, -0xdda(%rbp)
jne 0x11fa7d
jmp 0x11fa89
movq -0x1050(%rbp), %rdi
callq 0xaa4e0
jmp 0x11fa8b
testb $0x1, -0xddb(%rbp)
jne 0x11fa96
jmp 0x11faa2
movq -0x1048(%rbp), %rdi
callq 0xaa4e0
jmp 0x11faa4
testb $0x1, -0xddc(%rbp)
jne 0x11faaf
jmp 0x11fabb
movq -0x1038(%rbp), %rdi
callq 0xaa4e0
jmp 0x11fabd
leaq -0xdb0(%rbp), %rdi
callq 0xaabe8
jmp 0x11fb19
jmp 0x11facd
leaq -0xcf0(%rbp), %rdi
callq 0xc0d00
jmp 0x11f45b
testb $0x1, -0xc89(%rbp)
je 0x11faf3
movl $0xc, -0xde0(%rbp)
jmp 0x11fafd
movl $0x0, -0xde0(%rbp)
leaq -0xcd8(%rbp), %rdi
callq 0xaabe8
movl -0xde0(%rbp), %eax
testl %eax, %eax
je 0x11fb17
jmp 0x11fb15
jmp 0x11fb3d
jmp 0x11fb2a
leaq -0xcd8(%rbp), %rdi
callq 0xaabe8
jmp 0x11fbae
jmp 0x11fb2c
leaq -0xca0(%rbp), %rdi
callq 0xb2ba0
jmp 0x11f1ce
leaq -0xc48(%rbp), %rdi
callq 0xaabe8
leaq -0xc08(%rbp), %rdi
callq 0xaa130
leaq -0xa90(%rbp), %rdi
callq 0xaa130
leaq -0x918(%rbp), %rdi
callq 0xaa130
leaq -0x5e8(%rbp), %rdi
callq 0xaabe8
leaq -0x5c8(%rbp), %rdi
callq 0xaabe8
leaq -0x588(%rbp), %rdi
callq 0xaa440
leaq -0x400(%rbp), %rdi
callq 0xaabe8
leaq -0x3d0(%rbp), %rdi
callq 0x127e40
jmp 0x11eac7
leaq -0xc48(%rbp), %rdi
callq 0xaabe8
leaq -0xc08(%rbp), %rdi
callq 0xaa130
leaq -0xa90(%rbp), %rdi
callq 0xaa130
leaq -0x918(%rbp), %rdi
callq 0xaa130
leaq -0x5e8(%rbp), %rdi
callq 0xaabe8
leaq -0x5c8(%rbp), %rdi
callq 0xaabe8
leaq -0x588(%rbp), %rdi
callq 0xaa440
leaq -0x400(%rbp), %rdi
callq 0xaabe8
jmp 0x11fc36
leaq -0x3c0(%rbp), %rdi
callq 0x127ca0
leaq -0x2a0(%rbp), %rdi
callq 0x127d00
leaq -0x288(%rbp), %rdi
callq 0xaa130
jmp 0x11fc5c
leaq -0x3c0(%rbp), %rdi
callq 0x127ca0
leaq -0x2a0(%rbp), %rdi
callq 0x127d00
leaq -0x288(%rbp), %rdi
callq 0xaa130
jmp 0x11fc77
leaq -0x60(%rbp), %rdi
callq 0xaabe8
leaq -0x40(%rbp), %rdi
callq 0xaabe8
addq $0x1060, %rsp           # imm = 0x1060
popq %rbp
retq
leaq -0x60(%rbp), %rdi
callq 0xaabe8
leaq -0x40(%rbp), %rdi
callq 0xaabe8
movq -0x90(%rbp), %rdi
callq 0xaaa60
nopw %cs:(%rax,%rax)