// File: /workspace/github_cpp_makefile_star2_O2/mororo18[P]simplex-method/src/model.cpp
// Function: Model::output_mod_generate()
void Model::output_mod_generate(){
    if(analysed_mod){

        // ======== mod model output ===========

        std::string output = output_model;
        char * mod = " MOD";

        output.insert(10, mod);
        int count = cstr_vec.size();

        // append the new cstrs to the Model output string
        for(int i = 0; i < cstr_vec_new.size(); i++){
            std::vector<double> coef_vec = cstr_vec_new[i].coef_get();
            char cstr_n[20];
            sprintf(cstr_n, "    (%d) ", count++);
            output.append(cstr_n);

            std::string opt1;
            std::string opt2;
            std::string opt3;
            for(int j = 0; j < coef_vec.size(); j++){
                std::stringstream coef_stream;
                coef_stream << std::setprecision(OUT_PRECISION) << coef_vec[j];

                std::string coef_str = coef_stream.str();

                opt1 = " " + coef_str + " " + main_func->var_name_get(j);
                opt2 = " + " + coef_str + " " + main_func->var_name_get(j);
                opt3 = coef_str + " " + main_func->var_name_get(j);

                if(coef_vec[j] < 0)
                    output.append(opt1);
                else if(j != 0)
                    output.append(opt2);
                else
                    output.append(opt3);

            }

            if(cstr_vec_new[i].type_id == EQ)
                output.append(" = ");
            else if(cstr_vec_new[i].type_id == L_EQ)
                output.append(" <= ");
            else if(cstr_vec_new[i].type_id == G_EQ)
                output.append(" >= ");

            double value = cstr_vec_new[i].value;
            std::stringstream value_stream;
            value_stream << std::setprecision(OUT_PRECISION) << value;

            output.append(value_stream.str() + "\n");

        }

        output_model_mod = output;
        output.clear();


        //  ========== mod optimal soluiton output ==========

        output.append("\n\n[*] OPTIMAL SOLUTION:\n\n > O.F. value = ");

        std::stringstream obj_value_stream;
        obj_value_stream << std::setprecision(OUT_PRECISION) << obj_value_mod;

        output.append(obj_value_stream.str() + "\n");

        output.append("\n Primal Variables:\n\n");

        for(int i = 0; i < solution_primal_mod.size(); i++){
            output.append("   > ");
            output.append(main_func->var_name_get(i) + " = ");
            
            std::stringstream var_value_stream;
            var_value_stream << std::setprecision(OUT_PRECISION) << solution_primal_mod[i];
            output.append(var_value_stream.str() + ";\n");

        }
        
        output.append("\n Dual Variables:\n\n");

        for(int i = 0; i < solution_dual_mod.size(); i++){
            output.append("   > Y_" + std::to_string(i+1) + " = ");
            
            std::stringstream var_value_stream;
            var_value_stream << std::setprecision(OUT_PRECISION) << solution_dual_mod[i];
            output.append(var_value_stream.str() + ";\n");

        }
        
        output_solution_mod = output;

        output.clear();

        // ========= Mod analysis output =========

        output.append("\n\n[@] MOD SENSITIVITY ANALYSIS:\n\n");
        
        output.append(" > Ranges for unchange the Basis: \n\n");
        output.append("\t\t > OBJ Coefficient Ranges <\n");
        output.append("   Variables\tCrnt Coef\tAlwb Inc.\tAlwb Dec.\n");
        for(int i = 0; i < var_qnt; i++){
            std::stringstream coef_stream;
            std::stringstream upper_bd_stream;
            std::stringstream lower_bd_stream;

            std::string coef_str;
            std::string upper_str;
            std::string lower_str;

            coef_stream << std::setprecision(OUT_PRECISION) << original_coef[i];
            upper_bd_stream << std::setprecision(OUT_PRECISION) << std::abs(c_range_mod[i].second);
            lower_bd_stream << std::setprecision(OUT_PRECISION) << std::abs(c_range_mod[i].first);

            coef_str = coef_stream.str();

            if(std::abs(c_range_mod[i].second) >= INFINITE - 2){
                upper_str = "INFINITY";
                output.append("   > " + main_func->var_name_get(i) + "\t" + coef_str + "\t\t" + upper_str + "\t");
            }else{
                upper_str = upper_bd_stream.str();
                output.append("   > " + main_func->var_name_get(i) +  "\t" + coef_str + "\t\t" + upper_str + "\t\t");
            }

            if(std::abs(c_range_mod[i].first) >= INFINITE - 2){
                lower_str = "INFINITY";
            }else
                lower_str = lower_bd_stream.str();

            output.append(lower_str + "\n");


        }

        std::vector<cstr> cstr_vec_mod = cstr_vec;
        cstr_vec_mod.insert(cstr_vec_mod.end(), cstr_vec_new.begin(), cstr_vec_new.end());
        output.append("\n\t\t     > Right Hand Side <\n");
        output.append("   Constraint\tCrnt RHS\tAlwb Inc.\tAlwb Dec.\n");
        for(int i = 0; i < cstr_vec_mod.size(); i++){
            std::stringstream hand_stream;
            std::stringstream upper_bd_stream;
            std::stringstream lower_bd_stream;

            std::string hand_str;
            std::string upper_str;
            std::string lower_str;

            hand_stream << std::setprecision(OUT_PRECISION) << cstr_vec_mod[i].value;
            upper_bd_stream << std::setprecision(OUT_PRECISION) << std::abs(b_range_mod[i].second);
            lower_bd_stream << std::setprecision(OUT_PRECISION) << std::abs(b_range_mod[i].first);

            hand_str = hand_stream.str();

            char cstr_n[20]; 
            sprintf(cstr_n, "(%d)", i);
            std::string cstr_str = cstr_n;
            if(std::abs(b_range_mod[i].second) >= INFINITE - 2){
                upper_str = "INFINITY";
                output.append("   > " + cstr_str + "\t" + hand_str + "\t\t" + upper_str + "\t");
            }else{
                upper_str = upper_bd_stream.str();
                output.append("   > " + cstr_str +  "\t" + hand_str + "\t\t" + upper_str + "\t\t");
            }

            if(std::abs(b_range_mod[i].first) >= INFINITE - 2){
                lower_str = "INFINITY";
            }else
                lower_str = lower_bd_stream.str();

            output.append(lower_str + "\n");


        }

        output_analysis_mod = output;
    }

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x7e8, %rsp            # imm = 0x7E8
cmpb $0x1, 0x42(%rdi)
jne 0x83e1
movq %rdi, %r14
leaq 0x1f0(%rdi), %rsi
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x2200
leaq 0x5308(%rip), %rdx      # 0xc557
pushq $0xa
popq %rsi
movq %rbx, %rdi
callq 0x2070
leaq 0x58(%r14), %rax
movq %rax, 0x1a0(%rsp)
movq 0x60(%r14), %rax
movq %r14, 0x8(%rsp)
subq 0x58(%r14), %rax
pushq $0x48
popq %rcx
cqto
idivq %rcx
movq %rax, 0xf8(%rsp)
leaq 0xb8(%rsp), %r12
leaq 0x78(%rsp), %r13
leaq 0x98(%rsp), %rbp
xorl %edi, %edi
movq 0x8(%rsp), %rax
movq 0x70(%rax), %rcx
movq 0x78(%rax), %rax
subq %rcx, %rax
cqto
pushq $0x48
popq %rsi
idivq %rsi
cmpq %rdi, %rax
jbe 0x76ad
movq %rdi, 0x1a8(%rsp)
imulq $0x48, %rdi, %rax
movq %rax, 0x10(%rsp)
leaq (%rcx,%rax), %rsi
addq $0x30, %rsi
leaq 0x58(%rsp), %rdi
callq 0x3fd8
leaq 0x140(%rsp), %rbx
movq %rbx, %rdi
leaq 0x5102(%rip), %rsi      # 0xc3f2
movq 0xf8(%rsp), %r15
movl %r15d, %edx
xorl %eax, %eax
callq 0x2050
leaq 0x18(%rsp), %rdi
movq %rbx, %rsi
callq 0x22d0
incl %r15d
movq %r15, 0xf8(%rsp)
leaq 0x1c0(%rsp), %rax
movq %rax, 0x1b0(%rsp)
andq $0x0, 0x1b8(%rsp)
leaq 0x348(%rsp), %rax
movq %rax, 0x338(%rsp)
andq $0x0, 0x340(%rsp)
leaq 0x4d0(%rsp), %rax
movq %rax, 0x4c0(%rsp)
andq $0x0, 0x4c8(%rsp)
xorl %eax, %eax
movb %al, 0x1c0(%rsp)
movb %al, 0x348(%rsp)
movb %al, 0x4d0(%rsp)
xorl %r15d, %r15d
movq 0x60(%rsp), %rax
subq 0x58(%rsp), %rax
sarq $0x3, %rax
cmpq %r15, %rax
jbe 0x7599
leaq 0x648(%rsp), %rdi
callq 0x2130
movq 0x658(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x660(%rsp,%rax)
movq 0x58(%rsp), %rax
movsd (%rax,%r15,8), %xmm0
leaq 0x658(%rsp), %rdi
callq 0x2280
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
leaq 0x660(%rsp), %rsi
callq 0x2260
movq %r12, %rdi
leaq 0x5008(%rip), %r14      # 0xc3fa
movq %r14, %rsi
movq %rbx, %rdx
callq 0x958d
movq %r13, %rdi
movq %r12, %rsi
movq %r14, %rdx
callq 0x956e
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rsi
leaq 0xd8(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %edx
callq 0x8bd2
movq %rbp, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x9507
leaq 0x1b0(%rsp), %rdi
movq %rbp, %rsi
callq 0x21e0
movq %rbp, %rdi
callq 0x20e0
movq %rbx, %rdi
callq 0x20e0
movq %r13, %rdi
callq 0x20e0
movq %r12, %rdi
callq 0x20e0
movq %r12, %rdi
leaq 0x4f8d(%rip), %rsi      # 0xc3fc
leaq 0x38(%rsp), %rdx
callq 0x958d
movq %r13, %rdi
movq %r12, %rsi
leaq 0x4f74(%rip), %rdx      # 0xc3fa
callq 0x956e
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rsi
leaq 0xd8(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %edx
callq 0x8bd2
movq %rbp, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x9507
leaq 0x338(%rsp), %rdi
movq %rbp, %rsi
callq 0x21e0
movq %rbp, %rdi
callq 0x20e0
movq %rbx, %rdi
callq 0x20e0
movq %r13, %rdi
callq 0x20e0
movq %r12, %rdi
callq 0x20e0
movq %r13, %rdi
leaq 0x38(%rsp), %rsi
leaq 0x4f06(%rip), %rdx      # 0xc3fa
callq 0x9603
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rsi
movq %r12, %rdi
movl %r15d, %edx
callq 0x8bd2
movq %rbp, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x9507
leaq 0x4c0(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x21e0
movq %rbp, %rdi
callq 0x20e0
movq %r12, %rdi
callq 0x20e0
movq %r13, %rdi
callq 0x20e0
testq %r15, %r15
leaq 0x338(%rsp), %rsi
cmoveq %rbx, %rsi
movq 0x58(%rsp), %rax
xorpd %xmm0, %xmm0
ucomisd (%rax,%r15,8), %xmm0
leaq 0x1b0(%rsp), %rax
cmovaq %rax, %rsi
leaq 0x18(%rsp), %rdi
callq 0x22f0
leaq 0x38(%rsp), %rdi
callq 0x20e0
leaq 0x648(%rsp), %rdi
callq 0x2140
incq %r15
jmp 0x737f
movq 0x8(%rsp), %rax
movq 0x70(%rax), %rax
movq 0x10(%rsp), %rcx
movl 0x20(%rax,%rcx), %eax
incl %eax
cmpl $0x3, %eax
jae 0x75c9
movl %eax, %eax
leaq 0xa7e5(%rip), %rcx      # 0x11da0
movq (%rcx,%rax,8), %rsi
leaq 0x18(%rsp), %rdi
callq 0x22d0
movq 0x8(%rsp), %rax
movq 0x70(%rax), %rax
movq 0x10(%rsp), %rcx
movsd 0x28(%rax,%rcx), %xmm0
movsd %xmm0, 0x10(%rsp)
leaq 0x648(%rsp), %rdi
callq 0x2130
movq 0x658(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x660(%rsp,%rax)
leaq 0x658(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
callq 0x2280
movq %rbp, %rdi
leaq 0x660(%rsp), %rsi
callq 0x2260
leaq 0x38(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x4e73(%rip), %rdx      # 0xc4b0
callq 0x956e
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x22f0
movq %r14, %rdi
callq 0x20e0
movq %rbp, %rdi
callq 0x20e0
leaq 0x648(%rsp), %rdi
callq 0x2140
leaq 0x4c0(%rsp), %rdi
callq 0x20e0
leaq 0x338(%rsp), %rdi
callq 0x20e0
leaq 0x1b0(%rsp), %rdi
callq 0x20e0
leaq 0x58(%rsp), %rdi
callq 0x415a
movq 0x1a8(%rsp), %rdi
incq %rdi
jmp 0x729a
movq 0x8(%rsp), %rax
leaq 0x210(%rax), %rdi
leaq 0x18(%rsp), %rsi
callq 0x2110
leaq 0x18(%rsp), %rdi
andq $0x0, 0x8(%rdi)
movq (%rdi), %rax
movb $0x0, (%rax)
leaq 0x4d30(%rip), %rsi      # 0xc40a
callq 0x22d0
leaq 0x648(%rsp), %rdi
callq 0x2130
leaq 0x658(%rsp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x660(%rsp,%rax)
movq 0x8(%rsp), %rax
movsd 0x38(%rax), %xmm0
callq 0x2280
leaq 0x660(%rsp), %rsi
leaq 0x338(%rsp), %rdi
callq 0x2260
leaq 0x4d7e(%rip), %rdx      # 0xc4b0
leaq 0x1b0(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x956e
leaq 0x18(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x22f0
leaq 0x1b0(%rsp), %rdi
callq 0x20e0
leaq 0x338(%rsp), %rdi
callq 0x20e0
leaq 0x4cba(%rip), %rsi      # 0xc434
leaq 0x18(%rsp), %rdi
callq 0x22d0
xorl %r15d, %r15d
leaq 0x18(%rsp), %r13
leaq 0x338(%rsp), %rbp
leaq 0x1b0(%rsp), %r14
leaq 0x4c0(%rsp), %r12
leaq 0x4ca5(%rip), %rbx      # 0xc450
movq 0x8(%rsp), %rcx
movq 0xd8(%rcx), %rax
subq 0xd0(%rcx), %rax
sarq $0x3, %rax
cmpq %r15, %rax
jbe 0x78a3
movq %r13, %rdi
leaq 0x4c75(%rip), %rsi      # 0xc44a
callq 0x22d0
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rsi
movq %rbp, %rdi
movl %r15d, %edx
callq 0x8bd2
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x4d9a(%rip), %rdx      # 0xc595
callq 0x956e
movq %r13, %rdi
movq %r14, %rsi
callq 0x22f0
movq %r14, %rdi
callq 0x20e0
movq %rbp, %rdi
callq 0x20e0
movq %r14, %rdi
callq 0x2130
movq 0x1c0(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x1c8(%rsp,%rax)
movq 0x8(%rsp), %rax
movq 0xd0(%rax), %rax
movsd (%rax,%r15,8), %xmm0
leaq 0x1c0(%rsp), %rdi
callq 0x2280
movq %r12, %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x2260
movq %rbp, %rdi
movq %r12, %rsi
movq %rbx, %rdx
callq 0x956e
movq %r13, %rdi
movq %rbp, %rsi
callq 0x22f0
movq %rbp, %rdi
callq 0x20e0
movq %r12, %rdi
callq 0x20e0
movq %r14, %rdi
callq 0x2140
incq %r15
jmp 0x77ab
leaq 0x4ba9(%rip), %rsi      # 0xc453
leaq 0x18(%rsp), %rdi
callq 0x22d0
xorl %ebp, %ebp
leaq 0x4c0(%rsp), %r15
leaq 0x338(%rsp), %r13
leaq 0x1b0(%rsp), %rbx
leaq 0x18(%rsp), %r14
leaq 0x4b76(%rip), %r12      # 0xc450
movq 0x8(%rsp), %rcx
movq 0x108(%rcx), %rax
subq 0x100(%rcx), %rax
sarq $0x3, %rax
cmpq %rbp, %rax
jbe 0x79d3
leal 0x1(%rbp), %esi
movq %r15, %rdi
callq 0x965f
movq %r13, %rdi
leaq 0x4b58(%rip), %rsi      # 0xc467
movq %r15, %rdx
callq 0x963b
movq %rbx, %rdi
movq %r13, %rsi
leaq 0x4c71(%rip), %rdx      # 0xc595
callq 0x956e
movq %r14, %rdi
movq %rbx, %rsi
callq 0x22f0
movq %rbx, %rdi
callq 0x20e0
movq %r13, %rdi
callq 0x20e0
movq %r15, %rdi
callq 0x20e0
movq %rbx, %rdi
callq 0x2130
movq 0x1c0(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x1c8(%rsp,%rax)
movq 0x8(%rsp), %rax
movq 0x100(%rax), %rax
movsd (%rax,%rbp,8), %xmm0
leaq 0x1c0(%rsp), %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x2260
movq %r13, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x956e
movq %r14, %rdi
movq %r13, %rsi
callq 0x22f0
movq %r13, %rdi
callq 0x20e0
movq %r15, %rdi
callq 0x20e0
movq %rbx, %rdi
callq 0x2140
incq %rbp
jmp 0x78da
movq 0x8(%rsp), %rax
leaq 0x250(%rax), %rdi
leaq 0x18(%rsp), %rsi
callq 0x2110
leaq 0x18(%rsp), %rdi
andq $0x0, 0x8(%rdi)
movq (%rdi), %rax
movb $0x0, (%rax)
leaq 0x4b5c(%rip), %rsi      # 0xc55c
callq 0x22d0
leaq 0x4a81(%rip), %rsi      # 0xc48d
leaq 0x18(%rsp), %rdi
callq 0x22d0
leaq 0x4a95(%rip), %rsi      # 0xc4b2
leaq 0x18(%rsp), %rdi
callq 0x22d0
leaq 0x4aa3(%rip), %rsi      # 0xc4d1
leaq 0x18(%rsp), %rdi
callq 0x22d0
leaq 0xb8(%rsp), %r15
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0x8(%rsp), %rax
movslq (%rax), %rax
cmpq %rax, %r13
jge 0x7ec1
leaq 0x1b0(%rsp), %rdi
callq 0x2130
leaq 0x338(%rsp), %rdi
callq 0x2130
leaq 0x4c0(%rsp), %rdi
callq 0x2130
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
andq $0x0, 0xa0(%rsp)
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
andq $0x0, 0x80(%rsp)
xorl %eax, %eax
movb %al, 0x48(%rsp)
movb %al, 0xa8(%rsp)
movb %al, 0x88(%rsp)
movq 0x1c0(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x1c8(%rsp,%rax)
movq 0x8(%rsp), %rax
movq 0x1c0(%rax), %rax
movsd (%rax,%rbx), %xmm0
leaq 0x1c0(%rsp), %rdi
callq 0x2280
movq 0x348(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x350(%rsp,%rax)
movq 0x8(%rsp), %rax
movq 0x178(%rax), %rax
movsd 0x8(%rax,%rbx,2), %xmm0
andpd 0x4748(%rip), %xmm0     # 0xc280
leaq 0x348(%rsp), %rdi
callq 0x2280
movq 0x4d0(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x4d8(%rsp,%rax)
movq 0x8(%rsp), %rax
movq 0x178(%rax), %rax
movsd (%rax,%rbx,2), %xmm0
andpd 0x470a(%rip), %xmm0     # 0xc280
leaq 0x4d0(%rsp), %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x2260
leaq 0x38(%rsp), %rdi
movq %r15, %rsi
callq 0x21e0
movq %r15, %rdi
callq 0x20e0
movq 0x8(%rsp), %rax
movq 0x178(%rax), %rax
movsd 0x8(%rax,%rbx,2), %xmm0
andpd 0x46be(%rip), %xmm0     # 0xc280
ucomisd 0x470e(%rip), %xmm0     # 0xc2d8
jae 0x7cbe
movq %r15, %rdi
leaq 0x350(%rsp), %rsi
callq 0x2260
leaq 0x98(%rsp), %rdi
movq %r15, %rsi
callq 0x21e0
movq %r15, %rdi
callq 0x20e0
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rsi
leaq 0x100(%rsp), %r12
movq %r12, %rdi
movl %r13d, %edx
callq 0x8bd2
leaq 0x168(%rsp), %r15
movq %r15, %rdi
leaq 0x4824(%rip), %rsi      # 0xc44a
movq %r12, %rdx
callq 0x963b
leaq 0x120(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
leaq 0x48c4(%rip), %rdx      # 0xc507
callq 0x956e
leaq 0x140(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
leaq 0x38(%rsp), %rdx
callq 0x96b8
leaq 0x58(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
leaq 0x4894(%rip), %rdx      # 0xc506
callq 0x956e
leaq 0xd8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x98(%rsp), %rdx
callq 0x96b8
leaq 0xb8(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x485f(%rip), %rdx      # 0xc506
callq 0x956e
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x22f0
jmp 0x7d93
leaq 0x98(%rsp), %rdi
leaq 0x4830(%rip), %rsi      # 0xc4fd
callq 0x22e0
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rsi
leaq 0x100(%rsp), %r12
movq %r13, %rdx
movq %r12, %rdi
callq 0x8bd2
leaq 0x168(%rsp), %r15
movq %r15, %rdi
leaq 0x474a(%rip), %rsi      # 0xc44a
movq %r12, %rdx
callq 0x963b
leaq 0x120(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
leaq 0x47ea(%rip), %rdx      # 0xc507
callq 0x956e
leaq 0x140(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
leaq 0x38(%rsp), %rdx
callq 0x96b8
leaq 0x58(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
leaq 0x47ba(%rip), %rdx      # 0xc506
callq 0x956e
leaq 0xd8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x98(%rsp), %rdx
callq 0x96b8
leaq 0xb8(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x4786(%rip), %rdx      # 0xc507
callq 0x956e
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x22f0
movq %r14, %rdi
callq 0x20e0
leaq 0xd8(%rsp), %rdi
callq 0x20e0
leaq 0x58(%rsp), %rdi
callq 0x20e0
movq %r12, %rdi
callq 0x20e0
leaq 0x120(%rsp), %rdi
callq 0x20e0
movq %r15, %rdi
callq 0x20e0
leaq 0x100(%rsp), %rdi
callq 0x20e0
movq 0x8(%rsp), %rax
movq 0x178(%rax), %rax
movsd (%rax,%rbx,2), %xmm0
andpd 0x448b(%rip), %xmm0     # 0xc280
ucomisd 0x44db(%rip), %xmm0     # 0xc2d8
leaq 0x78(%rsp), %r14
jae 0x7e31
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
leaq 0x4d8(%rsp), %rsi
callq 0x2260
movq %r14, %rdi
movq %r15, %rsi
callq 0x21e0
movq %r15, %rdi
callq 0x20e0
jmp 0x7e48
movq %r14, %rdi
leaq 0x46c2(%rip), %rsi      # 0xc4fd
callq 0x22e0
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
leaq 0x465b(%rip), %rdx      # 0xc4b0
callq 0x9603
leaq 0x18(%rsp), %rdi
movq %r15, %rsi
callq 0x22f0
movq %r15, %rdi
callq 0x20e0
movq %r14, %rdi
callq 0x20e0
leaq 0x98(%rsp), %rdi
callq 0x20e0
leaq 0x38(%rsp), %rdi
callq 0x20e0
leaq 0x4c0(%rsp), %rdi
callq 0x2140
leaq 0x338(%rsp), %rdi
callq 0x2140
leaq 0x1b0(%rsp), %rdi
callq 0x2140
incq %r13
addq $0x8, %rbx
jmp 0x7a45
leaq 0x188(%rsp), %rdi
movq 0x1a0(%rsp), %rsi
callq 0x96d8
leaq 0x188(%rsp), %rdi
movq 0x8(%rdi), %rsi
movq 0x8(%rsp), %rax
movq 0x70(%rax), %rdx
movq 0x78(%rax), %rcx
callq 0x9732
leaq 0x460e(%rip), %rsi      # 0xc509
leaq 0x18(%rsp), %rdi
callq 0x22d0
leaq 0x461a(%rip), %rsi      # 0xc526
leaq 0x18(%rsp), %rdi
callq 0x22d0
pushq $0x28
popq %rax
movq %rax, 0x10(%rsp)
leaq 0xd8(%rsp), %r14
leaq 0x98(%rsp), %r15
xorl %ebp, %ebp
xorl %r13d, %r13d
movq 0x190(%rsp), %rax
subq 0x188(%rsp), %rax
cqto
pushq $0x48
popq %rcx
idivq %rcx
cmpq %r13, %rax
jbe 0x83a7
leaq 0x1b0(%rsp), %rdi
callq 0x2130
leaq 0x338(%rsp), %rdi
callq 0x2130
leaq 0x4c0(%rsp), %rdi
callq 0x2130
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
andq $0x0, 0x40(%rsp)
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
andq $0x0, 0xa0(%rsp)
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
andq $0x0, 0x80(%rsp)
xorl %eax, %eax
movb %al, 0x48(%rsp)
movb %al, 0xa8(%rsp)
movb %al, 0x88(%rsp)
movq 0x1c0(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x1c8(%rsp,%rax)
movq 0x188(%rsp), %rax
movq 0x10(%rsp), %rcx
movsd (%rax,%rcx), %xmm0
leaq 0x1c0(%rsp), %rdi
callq 0x2280
movq 0x348(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x350(%rsp,%rax)
movq 0x8(%rsp), %rax
movq 0x148(%rax), %rax
movsd 0x8(%rax,%rbp), %xmm0
andpd 0x4249(%rip), %xmm0     # 0xc280
leaq 0x348(%rsp), %rdi
callq 0x2280
movq 0x4d0(%rsp), %rax
movq -0x18(%rax), %rax
movq $0x5, 0x4d8(%rsp,%rax)
movq 0x8(%rsp), %rax
movq 0x148(%rax), %rax
movsd (%rax,%rbp), %xmm0
andpd 0x420b(%rip), %xmm0     # 0xc280
leaq 0x4d0(%rsp), %rdi
callq 0x2280
movq %r15, %rbx
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x2260
leaq 0x38(%rsp), %rdi
movq %r15, %rsi
callq 0x21e0
movq %r15, %rdi
callq 0x20e0
movq %r15, %r12
leaq 0x7d0(%rsp), %r15
movq %r15, %rdi
leaq 0x448b(%rip), %rsi      # 0xc552
movl %r13d, %edx
xorl %eax, %eax
callq 0x2050
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x20b0
movq 0x8(%rsp), %rax
movq 0x148(%rax), %rax
movsd 0x8(%rax,%rbp), %xmm0
andpd 0x4187(%rip), %xmm0     # 0xc280
ucomisd 0x41d7(%rip), %xmm0     # 0xc2d8
movq %rbx, %r15
jae 0x81cf
movq %r14, %rdi
leaq 0x350(%rsp), %rsi
callq 0x2260
movq %r15, %rdi
movq %r14, %rsi
callq 0x21e0
movq %r14, %rdi
callq 0x20e0
leaq 0x100(%rsp), %rbx
movq %rbx, %rdi
leaq 0x430b(%rip), %rsi      # 0xc44a
leaq 0xb8(%rsp), %rdx
callq 0x958d
leaq 0x168(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x43a6(%rip), %rdx      # 0xc507
callq 0x956e
leaq 0x120(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x38(%rsp), %rdx
callq 0x96b8
leaq 0x140(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x4373(%rip), %rdx      # 0xc506
callq 0x956e
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x96b8
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x434e(%rip), %rdx      # 0xc506
callq 0x956e
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x22f0
jmp 0x827b
movq %r15, %rdi
leaq 0x4324(%rip), %rsi      # 0xc4fd
callq 0x22e0
leaq 0x100(%rsp), %rbx
movq %rbx, %rdi
leaq 0x425a(%rip), %rsi      # 0xc44a
leaq 0xb8(%rsp), %rdx
callq 0x958d
leaq 0x168(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x42f5(%rip), %rdx      # 0xc507
callq 0x956e
leaq 0x120(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x38(%rsp), %rdx
callq 0x96b8
leaq 0x140(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
leaq 0x42c2(%rip), %rdx      # 0xc506
callq 0x956e
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x96b8
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x429e(%rip), %rdx      # 0xc507
callq 0x956e
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x22f0
movq %r14, %rdi
callq 0x20e0
leaq 0x58(%rsp), %rdi
callq 0x20e0
leaq 0x140(%rsp), %rdi
callq 0x20e0
leaq 0x120(%rsp), %rdi
callq 0x20e0
leaq 0x168(%rsp), %rdi
callq 0x20e0
leaq 0x100(%rsp), %rdi
callq 0x20e0
movq 0x8(%rsp), %rax
movq 0x148(%rax), %rax
movsd (%rax,%rbp), %xmm0
andpd 0x3fa6(%rip), %xmm0     # 0xc280
ucomisd 0x3ff6(%rip), %xmm0     # 0xc2d8
jae 0x830b
movq %r14, %rdi
leaq 0x4d8(%rsp), %rsi
callq 0x2260
leaq 0x78(%rsp), %rdi
movq %r14, %rsi
callq 0x21e0
movq %r14, %rdi
callq 0x20e0
jmp 0x831c
leaq 0x78(%rsp), %rdi
leaq 0x41e6(%rip), %rsi      # 0xc4fd
callq 0x22e0
movq %r14, %rdi
leaq 0x78(%rsp), %rsi
leaq 0x4185(%rip), %rdx      # 0xc4b0
callq 0x9603
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x22f0
movq %r14, %rdi
callq 0x20e0
leaq 0xb8(%rsp), %rdi
callq 0x20e0
leaq 0x78(%rsp), %rdi
callq 0x20e0
movq %r15, %rdi
callq 0x20e0
leaq 0x38(%rsp), %rdi
callq 0x20e0
leaq 0x4c0(%rsp), %rdi
callq 0x2140
leaq 0x338(%rsp), %rdi
callq 0x2140
leaq 0x1b0(%rsp), %rdi
callq 0x2140
incq %r13
addq $0x10, %rbp
addq $0x48, 0x10(%rsp)
jmp 0x7f33
movq 0x8(%rsp), %rdi
addq $0x290, %rdi            # imm = 0x290
leaq 0x18(%rsp), %rsi
callq 0x2110
leaq 0x188(%rsp), %rdi
callq 0x91e6
leaq 0x648(%rsp), %rdi
callq 0x2140
leaq 0x18(%rsp), %rdi
callq 0x20e0
addq $0x7e8, %rsp            # imm = 0x7E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x858a
jmp 0x8698
jmp 0x866d
jmp 0x867f
jmp 0x8698
jmp 0x86a0
jmp 0x86a0
jmp 0x86a0
jmp 0x858a
jmp 0x8698
jmp 0x8575
jmp 0x8433
jmp 0x8466
jmp 0x8575
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0x20e0
jmp 0x8451
jmp 0x844e
jmp 0x8461
jmp 0x8575
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x20e0
jmp 0x8469
jmp 0x8478
jmp 0x848a
movq %rax, %rbx
jmp 0x849a
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
callq 0x20e0
jmp 0x847b
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0x20e0
jmp 0x848d
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
callq 0x20e0
leaq 0x100(%rsp), %rdi
callq 0x20e0
jmp 0x8578
jmp 0x8575
jmp 0x84ff
jmp 0x84cc
jmp 0x84d1
jmp 0x8545
jmp 0x870a
jmp 0x870a
jmp 0x84ed
jmp 0x84d6
jmp 0x84db
movq %rax, %rbx
jmp 0x850c
movq %rax, %rbx
jmp 0x8519
movq %rax, %rbx
jmp 0x8533
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x20e0
jmp 0x84f0
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0x20e0
jmp 0x8502
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x20e0
leaq 0x140(%rsp), %rdi
callq 0x20e0
leaq 0x120(%rsp), %rdi
callq 0x20e0
leaq 0x168(%rsp), %rdi
callq 0x20e0
leaq 0x100(%rsp), %rdi
callq 0x20e0
jmp 0x870d
movq %rax, %rbx
jmp 0x8526
jmp 0x870a
jmp 0x870a
jmp 0x8826
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
jmp 0x84a2
jmp 0x8575
jmp 0x86b0
jmp 0x86b0
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x20e0
jmp 0x86b3
movq %rax, %rbx
jmp 0x86fb
movq %rax, %rbx
jmp 0x86e1
movq %rax, %rbx
jmp 0x86ee
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x853b
jmp 0x870a
jmp 0x8698
jmp 0x870a
movq %rax, %rbx
jmp 0x873b
jmp 0x8665
movq %rax, %rbx
leaq 0x1b0(%rsp), %rdi
callq 0x20e0
jmp 0x85e0
movq %rax, %rbx
leaq 0x338(%rsp), %rdi
callq 0x20e0
jmp 0x8604
jmp 0x8698
jmp 0x863c
jmp 0x864e
jmp 0x8665
jmp 0x8665
jmp 0x8698
movq %rax, %rbx
leaq 0x4c0(%rsp), %rdi
jmp 0x868a
jmp 0x879b
jmp 0x879b
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x20e0
jmp 0x862a
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
jmp 0x87d1
jmp 0x8826
movq %rax, %rbx
leaq 0x338(%rsp), %rdi
callq 0x20e0
jmp 0x8651
movq %rax, %rbx
leaq 0x4c0(%rsp), %rdi
callq 0x20e0
jmp 0x8748
jmp 0x8665
movq %rax, %rbx
jmp 0x8748
movq %rax, %rbx
leaq 0x1b0(%rsp), %rdi
callq 0x20e0
jmp 0x8682
movq %rax, %rbx
leaq 0x338(%rsp), %rdi
callq 0x20e0
jmp 0x8755
jmp 0x8698
jmp 0x8698
movq %rax, %rbx
jmp 0x8755
movq %rax, %rbx
jmp 0x8814
movq %rax, %rbx
jmp 0x880a
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x20e0
leaq 0x98(%rsp), %rdi
callq 0x20e0
leaq 0x38(%rsp), %rdi
callq 0x20e0
leaq 0x4c0(%rsp), %rdi
callq 0x2140
leaq 0x338(%rsp), %rdi
callq 0x2140
leaq 0x1b0(%rsp), %rdi
callq 0x2140
leaq 0x188(%rsp), %rdi
callq 0x91e6
jmp 0x8755
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x20e0
leaq 0x98(%rsp), %rdi
callq 0x20e0
leaq 0x38(%rsp), %rdi
callq 0x20e0
leaq 0x4c0(%rsp), %rdi
callq 0x2140
leaq 0x338(%rsp), %rdi
callq 0x2140
leaq 0x1b0(%rsp), %rdi
callq 0x2140
leaq 0x648(%rsp), %rdi
callq 0x2140
jmp 0x8814
jmp 0x87a0
jmp 0x876b
movq %rax, %rbx
jmp 0x87ba
jmp 0x879b
jmp 0x8796
jmp 0x87c9
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0x20e0
jmp 0x878f
jmp 0x87c9
jmp 0x87c9
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
jmp 0x87c2
movq %rax, %rbx
jmp 0x87b0
movq %rax, %rbx
jmp 0x87d6
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0x20e0
leaq 0x78(%rsp), %rdi
callq 0x20e0
leaq 0xb8(%rsp), %rdi
callq 0x20e0
jmp 0x87cc
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x20e0
leaq 0x648(%rsp), %rdi
callq 0x2140
leaq 0x4c0(%rsp), %rdi
callq 0x20e0
leaq 0x338(%rsp), %rdi
callq 0x20e0
leaq 0x1b0(%rsp), %rdi
callq 0x20e0
leaq 0x58(%rsp), %rdi
callq 0x415a
leaq 0x18(%rsp), %rdi
callq 0x20e0
movq %rbx, %rdi
callq 0x22c0
movq %rax, %rbx
jmp 0x87e3
nop