// File: /workspace/github_cpp_makefile_star2_O3/mororo18[P]simplex-method/src/main.cpp
// Function: main
int main(){

    /* =========== MODEL 01 ============*/
    

    {
        const int n_var = 2;
        
        // init with the solver and qnt of variables
        Model model(simplex(), n_var);

        // def the problem type
        model.def("min");

        /* =========== OBJECTIVE FUNCTION ============*/

        // declares the O.F. 
        Model::obj_func func(n_var);

        // add the coeficients
        func.coef_add(0.4);
        func.coef_add(0.5);

        // add the variables names
        func.var_add("X_1");
        func.var_add("X_2");

        //func.print();

        // add the F.O. to the model
        model.func_add(func);

        /* =========== CONSTRAINTS ============*/

        Model::cstr cstr_01;

        // def the type of cstr
        cstr_01.type_def("leq");

        //add the coeficients of the constraint sequentially
        cstr_01.coef_add(0.3);
        cstr_01.coef_add(0.1);

        // add the cstr value
        cstr_01.value_add(2.7);


        Model::cstr cstr_02;

        cstr_02.type_def("eq");

        cstr_02.coef_add(0.5);
        cstr_02.coef_add(0.5);

        cstr_02.value_add(6);



        Model::cstr cstr_03;

        cstr_03.type_def("geq");

        cstr_03.coef_add(0.6);
        cstr_03.coef_add(0.4);

        cstr_03.value_add(6);


        // add the cstrs to the model
        model.cstr_add(cstr_01);
        model.cstr_add(cstr_02);
        model.cstr_add(cstr_03);

        model.print_model();

        //model.tableau_print();
        model.solve();
        model.print_solution();

        model.analyse();

        model.print_analysis();

        //model.print();
        //model.tableau_print();

        const char * f_name = "results/example1.txt";
        std::ofstream file {f_name};

        std::ofstream o_file;
        o_file.open(f_name, std::ios::in );
        if(file.is_open()){
            o_file << model.output_get();
            o_file.close();
        }
    }

    /* =========== MODEL 02 ============*/

    {
        const int n_var = 2;
        
        // init with the solver and qnt of variables
        Model model(simplex(), n_var);
        // def the problem type
        model.def("max");

        /* =========== OBJECTIVE FUNCTION ============*/

        // declares the O.F. 
        Model::obj_func func(n_var);

        // add the coeficients
        func.coef_add(3);
        func.coef_add(5);

        // add the variables names
        func.var_add("X_1");
        func.var_add("X_2");

        //func.print();

        // add the F.O. to the model
        model.func_add(func);

        /* =========== CONSTRAINTS ============*/

        Model::cstr cstr_01;

        // def the type of cstr
        cstr_01.type_def("leq");

        //add the coeficients of the constraint sequentially
        cstr_01.coef_add(1);
        cstr_01.coef_add(0);

        // add the cstr value
        cstr_01.value_add(4);


        Model::cstr cstr_02;

        cstr_02.type_def("leq");

        cstr_02.coef_add(0);
        cstr_02.coef_add(2);

        cstr_02.value_add(24);



        Model::cstr cstr_03;

        cstr_03.type_def("leq");

        cstr_03.coef_add(3);
        cstr_03.coef_add(2);

        cstr_03.value_add(18);


        Model::cstr cstr_04;

        cstr_04.type_def("leq");

        cstr_04.coef_add(2);
        cstr_04.coef_add(3);

        cstr_04.value_add(24);

        // add the cstrs to the model
        model.cstr_add(cstr_01);
        model.cstr_add(cstr_02);
        model.cstr_add(cstr_03);

        model.analyse_add(cstr_04);


        //model.tableau_print();
        model.solve();
        std::cout << std::endl;

        model.analyse();
        //model.tableau_print();

        // PROBLEMA DE ALOCACAO AQUI
        model.analyse_reopt();

        model.print();
        //model.print_mod();
        //model.tableau_print();

        const char * f_name = "results/example2.txt";
        const char * f_name_mod = "results/example2_mod.txt";
        
        std::ofstream file {f_name};
        std::ofstream file_mod {f_name_mod};

        std::ofstream o_file;
        o_file.open(f_name, std::ios::in );
        if(file.is_open()){
            o_file << model.output_get();
            o_file.close();
        }

        o_file.open(f_name_mod, std::ios::in );
        if(file.is_open()){
            o_file << model.output_mod_get();
            o_file.close();
        }
    }

    /* =========== MODEL n ============*/

    {
        const int n_var = 6;

        // data
        std::vector<int> OF_coef = { 4, 8, 6, 4, 3, 9}; 
        std::vector<std::vector<int>> EQ_m = {
            {1, 1, 0, 0, 0, 0},
            {0, 0, 1, 1, 0, 0},
            {0, 0, 0, 0, 1, 1}
        };

        std::vector<int> EQ_v = {500, 1200, 1800};

        std::vector<std::vector<int>> LEQ_m = {
            {1, 0, 1, 0, 1, 0},
            {0, 1, 0, 1, 0, 1},
            {1, 0, 0, 0, 0, 0},
            {0, 1, 0, 0, 0, 0},
            {0, 0, 1, 0, 0, 0},
            {0, 0, 0, 1, 0, 0},
            {0, 0, 0, 0, 1, 0},
            {0, 0, 0, 0, 0, 1},
        };

        std::vector<int> LEQ_v = {2000, 2000, 300, 300, 720, 720, 1080, 1080};

        std::vector<std::vector<int>> GEQ_m = {
            {1, 0, 1, 0, 1, 0},
            {0, 1, 0, 1, 0, 1}
        };

        std::vector<int> GEQ_v = {1400, 1400};
        // init with the solver and qnt of variables
        Model model(simplex(), n_var);

        // def the problem type
        model.def("max");

        /* =========== OBJECTIVE FUNCTION ============*/

        // declares the O.F. 
        Model::obj_func func(n_var);

        char buf[100];
        for(int i = 0; i < OF_coef.size(); i++){

            sprintf(buf, "X_%d", i+1);

            // add the coeficients
            func.coef_add(OF_coef[i]);
            // add the variables names
            func.var_add(buf);
        }

        // add the F.O. to the model
        model.func_add(func);

        /* =========== CONSTRAINTS ============*/

        for(int i = 0; i < EQ_m.size(); i++){
            Model::cstr cstr;
            cstr.type_def("eq");
            cstr.value_add(EQ_v[i]);
            for(int j = 0; j < EQ_m[0].size(); j++){
                cstr.coef_add(EQ_m[i][j]);
            }
            // add the cstrs to the model
            model.cstr_add(cstr);

        }

        for(int i = 0; i < LEQ_m.size(); i++){
            Model::cstr cstr;
            cstr.type_def("leq");
            cstr.value_add(LEQ_v[i]);
            for(int j = 0; j < LEQ_m[0].size(); j++){
                cstr.coef_add(LEQ_m[i][j]);
            }
            model.cstr_add(cstr);
        }

        for(int i = 0; i < GEQ_m.size(); i++){
            Model::cstr cstr;
            cstr.type_def("geq");
            cstr.value_add(GEQ_v[i]);
            for(int j = 0; j < GEQ_m[0].size(); j++){
                cstr.coef_add(GEQ_m[i][j]);
            }
            model.cstr_add(cstr);
        }

        model.print_model();

        model.solve();
        model.print_solution();

        model.analyse();
        model.print_analysis();

        //model.print();

        const char * f_name = "results/example3.txt";
        std::ofstream file {f_name};

        std::ofstream o_file;
        o_file.open(f_name, std::ios::in );
        if(file.is_open()){
            o_file << model.output_get();
            o_file.close();
        }
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xfd8, %rsp            # imm = 0xFD8
callq 0xf6e6
leaq 0x870(%rsp), %rdi
movq %rax, %rsi
movl $0x2, %edx
callq 0x5014
leaq 0x388(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xdac6(%rip), %rsi      # 0x10090
leaq 0xdac2(%rip), %rdx      # 0x10093
leaq 0x378(%rsp), %rdi
callq 0x4d2a
leaq 0x870(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x5574
movq 0x378(%rsp), %rdi
cmpq %r14, %rdi
je 0x2605
callq 0x21c0
leaq 0xe8(%rsp), %rdi
movl $0x2, %esi
callq 0xd248
leaq 0xe8(%rsp), %rdi
movsd 0xd9e1(%rip), %xmm0     # 0x10008
callq 0xd2f8
leaq 0xe8(%rsp), %rdi
movsd 0xd9d4(%rip), %xmm0     # 0x10010
callq 0xd2f8
leaq 0xda4c(%rip), %rsi      # 0x10094
leaq 0xe8(%rsp), %rdi
callq 0xd25a
leaq 0xda3c(%rip), %rsi      # 0x10098
leaq 0xe8(%rsp), %rdi
callq 0xd25a
leaq 0xf0(%rsp), %rsi
movl -0x8(%rsi), %eax
leaq 0xba0(%rsp), %r14
movl %eax, -0x8(%r14)
movq %r14, %rdi
callq 0x4a60
leaq 0xbb8(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0xb98(%rsp), %rsi
callq 0x55e4
movq 0xbb8(%rsp), %rdi
testq %rdi, %rdi
je 0x26c4
callq 0x21c0
movq %r14, %rdi
callq 0x4b64
leaq 0xbe0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%rcx)
movq %rax, 0x30(%rcx)
leaq 0x368(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd99b(%rip), %rsi      # 0x1009c
leaq 0xd997(%rip), %rdx      # 0x1009f
leaq 0x358(%rsp), %rdi
callq 0x4d2a
leaq 0xbd0(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0xd3ba
movq 0x358(%rsp), %rdi
cmpq %r14, %rdi
je 0x273c
callq 0x21c0
leaq 0xbd0(%rsp), %rdi
movsd 0xd8cc(%rip), %xmm0     # 0x10018
callq 0xd488
leaq 0xbd0(%rsp), %rdi
movsd 0xd8bf(%rip), %xmm0     # 0x10020
callq 0xd488
leaq 0xbd0(%rsp), %rdi
movsd 0xd8b2(%rip), %xmm0     # 0x10028
callq 0xd4b4
leaq 0x40(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%rcx)
movq %rax, 0x30(%rcx)
leaq 0x348(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd8f4(%rip), %rsi      # 0x100a1
leaq 0xd8ef(%rip), %rdx      # 0x100a3
leaq 0x338(%rsp), %rdi
callq 0x4d2a
leaq 0x30(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0xd3ba
movq 0x338(%rsp), %rdi
cmpq %r14, %rdi
je 0x27e5
callq 0x21c0
leaq 0x30(%rsp), %rdi
movsd 0xd81e(%rip), %xmm0     # 0x10010
callq 0xd488
leaq 0x30(%rsp), %rdi
movsd 0xd80c(%rip), %xmm0     # 0x10010
callq 0xd488
leaq 0x30(%rsp), %rdi
movsd 0xd81a(%rip), %xmm0     # 0x10030
callq 0xd4b4
leaq 0x90(%rsp), %r12
movq %r12, -0x10(%r12)
xorl %eax, %eax
movq %rax, -0x8(%r12)
movb $0x0, (%r12)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%r12)
movq %rax, 0x30(%r12)
leaq 0x328(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd849(%rip), %rsi      # 0x100a0
leaq 0xd845(%rip), %rdx      # 0x100a3
leaq 0x318(%rsp), %rdi
callq 0x4d2a
leaq 0x80(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0xd3ba
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0x2892
callq 0x21c0
leaq 0x80(%rsp), %rdi
movsd 0xd796(%rip), %xmm0     # 0x10038
callq 0xd488
leaq 0x80(%rsp), %rdi
movsd 0xd751(%rip), %xmm0     # 0x10008
callq 0xd488
leaq 0x80(%rsp), %rdi
movsd 0xd764(%rip), %xmm0     # 0x10030
callq 0xd4b4
leaq 0x838(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xbd0(%rsp), %rsi
movq 0xbd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x828(%rsp), %rdi
callq 0x4c78
leaq 0xc00(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x858(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x828(%rsp), %rsi
callq 0x56a6
movq 0x858(%rsp), %rdi
testq %rdi, %rdi
je 0x2943
callq 0x21c0
movq 0x828(%rsp), %rdi
cmpq %r14, %rdi
je 0x2955
callq 0x21c0
leaq 0x7f0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x7e0(%rsp), %rdi
callq 0x4c78
leaq 0x60(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x810(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x56a6
movq 0x810(%rsp), %rdi
testq %rdi, %rdi
je 0x29be
callq 0x21c0
movq 0x7e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x29d0
callq 0x21c0
leaq 0x7a8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
leaq 0x798(%rsp), %rdi
callq 0x4c78
leaq 0xb0(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x7c8(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x798(%rsp), %rsi
callq 0x56a6
movq 0x7c8(%rsp), %rdi
testq %rdi, %rdi
je 0x2a42
callq 0x21c0
movq 0x798(%rsp), %rdi
cmpq %r14, %rdi
je 0x2a54
callq 0x21c0
leaq 0x870(%rsp), %rdi
callq 0xd198
leaq 0x870(%rsp), %rdi
callq 0xcd9a
leaq 0x870(%rsp), %rdi
callq 0xd1e0
leaq 0x870(%rsp), %rdi
callq 0x6822
leaq 0x870(%rsp), %rdi
callq 0xd214
leaq 0xd608(%rip), %rsi      # 0x100a4
leaq 0x470(%rsp), %r14
movq %r14, %rdi
movl $0x10, %edx
callq 0x2200
leaq 0xdd0(%rsp), %rdi
callq 0x2300
leaq 0xd5df(%rip), %rsi      # 0x100a4
leaq 0xdd0(%rsp), %r15
movq %r15, %rdi
movl $0x8, %edx
callq 0x2040
leaq 0x4e0(%rsp), %rdi
callq 0x2070
testb %al, %al
je 0x2b40
leaq 0x140(%rsp), %rdi
leaq 0x870(%rsp), %rsi
callq 0xcf48
movq 0x140(%rsp), %rsi
movq 0x148(%rsp), %rdx
leaq 0xdd0(%rsp), %rdi
callq 0x2220
leaq 0x150(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2b33
callq 0x21c0
leaq 0xdd0(%rsp), %rdi
callq 0x2260
movq 0x12489(%rip), %rax     # 0x14fd0
movq (%rax), %rbx
movq 0x18(%rax), %rbp
leaq 0xdd8(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %rbp, 0xdd0(%rsp,%rax)
callq 0x21a0
movl $0xf8, %r13d
addq %r13, %r15
movq %r15, %rdi
callq 0x20b0
leaq 0x478(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq %rbx, 0x138(%rsp)
movq -0x18(%rbx), %rax
movq %rbp, 0x130(%rsp)
movq %rbp, 0x470(%rsp,%rax)
callq 0x21a0
addq %r13, %r14
movq %r14, %rdi
callq 0x20b0
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x2bc6
callq 0x21c0
movq 0x80(%rsp), %rdi
movq %r12, %r15
cmpq %r12, %rdi
leaq 0x40(%rsp), %rbx
leaq 0xf0(%rsp), %r14
leaq 0xbe0(%rsp), %r12
je 0x2bf0
callq 0x21c0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x2bff
callq 0x21c0
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2c0e
callq 0x21c0
movq 0xc00(%rsp), %rdi
testq %rdi, %rdi
je 0x2c20
callq 0x21c0
movq 0xbd0(%rsp), %rdi
cmpq %r12, %rdi
je 0x2c32
callq 0x21c0
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x2c44
callq 0x21c0
movq %r14, %rdi
callq 0x4b64
leaq 0x870(%rsp), %rdi
callq 0x510c
callq 0xf6e6
leaq 0x870(%rsp), %rdi
movq %rax, %rsi
movl $0x2, %edx
callq 0x5014
leaq 0x308(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd433(%rip), %rsi      # 0x100b9
leaq 0xd42f(%rip), %rdx      # 0x100bc
leaq 0x2f8(%rsp), %rdi
callq 0x4d2a
leaq 0x870(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x5574
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2cc1
callq 0x21c0
leaq 0x188(%rsp), %rdi
movl $0x2, %esi
callq 0xd248
leaq 0x188(%rsp), %rdi
movsd 0xd35d(%rip), %xmm0     # 0x10040
callq 0xd2f8
leaq 0x188(%rsp), %rdi
movsd 0xd350(%rip), %xmm0     # 0x10048
callq 0xd2f8
leaq 0xd390(%rip), %rsi      # 0x10094
leaq 0x188(%rsp), %rdi
callq 0xd25a
leaq 0xd380(%rip), %rsi      # 0x10098
leaq 0x188(%rsp), %rdi
callq 0xd25a
leaq 0x190(%rsp), %rsi
movl -0x8(%rsi), %eax
leaq 0xb68(%rsp), %r14
movl %eax, -0x8(%r14)
movq %r14, %rdi
callq 0x4a60
leaq 0xb80(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0xb60(%rsp), %rsi
callq 0x55e4
movq 0xb80(%rsp), %rdi
testq %rdi, %rdi
je 0x2d80
callq 0x21c0
movq %r14, %rdi
callq 0x4b64
movq %rbx, 0x30(%rsp)
xorl %eax, %eax
movq %rax, 0x38(%rsp)
movb $0x0, 0x40(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x60(%rsp)
movq %rax, 0x70(%rsp)
leaq 0x2e8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd2e1(%rip), %rsi      # 0x1009c
leaq 0xd2dd(%rip), %rdx      # 0x1009f
leaq 0x2d8(%rsp), %rdi
callq 0x4d2a
leaq 0x30(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0xd3ba
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2df3
callq 0x21c0
leaq 0x30(%rsp), %rdi
movsd 0xd250(%rip), %xmm0     # 0x10050
callq 0xd488
leaq 0x30(%rsp), %rdi
xorpd %xmm0, %xmm0
callq 0xd488
leaq 0x30(%rsp), %rdi
movsd 0xd238(%rip), %xmm0     # 0x10058
callq 0xd4b4
movq %r15, 0x80(%rsp)
xorl %eax, %eax
movq %rax, 0x88(%rsp)
movb $0x0, 0x90(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0xb0(%rsp)
movq %rax, 0xc0(%rsp)
leaq 0x2c8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd235(%rip), %rsi      # 0x1009c
leaq 0xd231(%rip), %rdx      # 0x1009f
leaq 0x2b8(%rsp), %rdi
callq 0x4d2a
leaq 0x80(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0xd3ba
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2ea2
callq 0x21c0
leaq 0x80(%rsp), %rdi
xorpd %xmm0, %xmm0
callq 0xd488
leaq 0x80(%rsp), %rdi
movsd 0xd19d(%rip), %xmm0     # 0x10060
callq 0xd488
leaq 0x80(%rsp), %rdi
movsd 0xd190(%rip), %xmm0     # 0x10068
callq 0xd4b4
leaq 0xf8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%rcx)
movq %rax, 0x30(%rcx)
leaq 0x2a8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd18a(%rip), %rsi      # 0x1009c
leaq 0xd186(%rip), %rdx      # 0x1009f
leaq 0x298(%rsp), %rdi
callq 0x4d2a
leaq 0xe8(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0xd3ba
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0x2f4d
callq 0x21c0
leaq 0xe8(%rsp), %rdi
movsd 0xd0e3(%rip), %xmm0     # 0x10040
callq 0xd488
leaq 0xe8(%rsp), %rdi
movsd 0xd0ee(%rip), %xmm0     # 0x10060
callq 0xd488
leaq 0xe8(%rsp), %rdi
movsd 0xd0e9(%rip), %xmm0     # 0x10070
callq 0xd4b4
leaq 0x150(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%rcx)
movq %rax, 0x30(%rcx)
leaq 0x288(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd0db(%rip), %rsi      # 0x1009c
leaq 0xd0d7(%rip), %rdx      # 0x1009f
leaq 0x278(%rsp), %rdi
callq 0x4d2a
leaq 0x140(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0xd3ba
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0x2ffc
callq 0x21c0
leaq 0x140(%rsp), %rdi
movsd 0xd054(%rip), %xmm0     # 0x10060
callq 0xd488
leaq 0x140(%rsp), %rdi
movsd 0xd01f(%rip), %xmm0     # 0x10040
callq 0xd488
leaq 0x140(%rsp), %rdi
movsd 0xd032(%rip), %xmm0     # 0x10068
callq 0xd4b4
leaq 0x760(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x750(%rsp), %rdi
callq 0x4c78
leaq 0x60(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x780(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x750(%rsp), %rsi
callq 0x56a6
movq 0x780(%rsp), %rdi
testq %rdi, %rdi
je 0x30a4
callq 0x21c0
movq 0x750(%rsp), %rdi
cmpq %r14, %rdi
je 0x30b6
callq 0x21c0
leaq 0x718(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
leaq 0x708(%rsp), %rdi
callq 0x4c78
leaq 0xb0(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x738(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x708(%rsp), %rsi
callq 0x56a6
movq 0x738(%rsp), %rdi
testq %rdi, %rdi
je 0x3128
callq 0x21c0
movq 0x708(%rsp), %rdi
cmpq %r14, %rdi
je 0x313a
callq 0x21c0
leaq 0x6d0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x6c0(%rsp), %rdi
callq 0x4c78
leaq 0x118(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x6f0(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
callq 0x56a6
movq 0x6f0(%rsp), %rdi
testq %rdi, %rdi
je 0x31ac
callq 0x21c0
movq 0x6c0(%rsp), %rdi
cmpq %r14, %rdi
je 0x31be
callq 0x21c0
leaq 0x688(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x140(%rsp), %rsi
movq 0x148(%rsp), %rdx
addq %rsi, %rdx
leaq 0x678(%rsp), %rdi
callq 0x4c78
leaq 0x170(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x6a8(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x678(%rsp), %rsi
callq 0x5736
movq 0x6a8(%rsp), %rdi
testq %rdi, %rdi
je 0x3230
callq 0x21c0
movq 0x678(%rsp), %rdi
cmpq %r14, %rdi
je 0x3242
callq 0x21c0
leaq 0x870(%rsp), %rdi
callq 0xcd9a
movq 0x11d82(%rip), %rdi     # 0x14fd8
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq 0x11d67(%rip), %rdi     # 0x14fd8
callq 0x2030
movq %rax, %rdi
callq 0x2140
leaq 0x870(%rsp), %rdi
callq 0x6822
leaq 0x870(%rsp), %rdi
callq 0x994c
leaq 0x870(%rsp), %rdi
callq 0xd0c0
leaq 0xce11(%rip), %rsi      # 0x100bd
leaq 0x470(%rsp), %r14
movq %r14, %rdi
movl $0x10, %edx
callq 0x2200
leaq 0xce0a(%rip), %rsi      # 0x100d2
leaq 0xdd0(%rsp), %r15
movq %r15, %rdi
movl $0x10, %edx
callq 0x2200
leaq 0xbd0(%rsp), %rdi
callq 0x2300
leaq 0xcdcc(%rip), %rsi      # 0x100bd
leaq 0xbd0(%rsp), %rdi
movl $0x8, %edx
callq 0x2040
leaq 0x4e0(%rsp), %r13
movq %r13, %rdi
callq 0x2070
testb %al, %al
je 0x3360
leaq 0x10(%rsp), %rdi
leaq 0x870(%rsp), %rsi
callq 0xcf48
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0xbd0(%rsp), %rdi
callq 0x2220
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3353
callq 0x21c0
leaq 0xbd0(%rsp), %rdi
callq 0x2260
leaq 0xcd6b(%rip), %rsi      # 0x100d2
leaq 0xbd0(%rsp), %r12
movq %r12, %rdi
movl $0x8, %edx
callq 0x2040
movq %r13, %rdi
callq 0x2070
testb %al, %al
je 0x33d1
leaq 0x10(%rsp), %rdi
leaq 0x870(%rsp), %rsi
callq 0xd004
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0xbd0(%rsp), %rdi
callq 0x2220
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x33c4
callq 0x21c0
leaq 0xbd0(%rsp), %rdi
callq 0x2260
leaq 0xbd8(%rsp), %rdi
movq 0x138(%rsp), %rbx
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq 0x130(%rsp), %rbp
movq %rbp, 0xbd0(%rsp,%rax)
callq 0x21a0
movl $0xf8, %r13d
addq %r13, %r12
movq %r12, %rdi
callq 0x20b0
leaq 0xdd8(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %rbp, 0xdd0(%rsp,%rax)
callq 0x21a0
addq %r13, %r15
movq %r15, %rdi
callq 0x20b0
leaq 0x478(%rsp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %rbp, 0x470(%rsp,%rax)
callq 0x21a0
addq %r13, %r14
movq %r14, %rdi
callq 0x20b0
movq 0x170(%rsp), %rdi
testq %rdi, %rdi
je 0x3471
callq 0x21c0
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
leaq 0x40(%rsp), %rbx
leaq 0x190(%rsp), %r15
je 0x3498
callq 0x21c0
movq 0x118(%rsp), %rdi
testq %rdi, %rdi
leaq 0x90(%rsp), %r14
je 0x34b2
callq 0x21c0
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x34cc
callq 0x21c0
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x34de
callq 0x21c0
movq 0x80(%rsp), %rdi
cmpq %r14, %rdi
je 0x34f0
callq 0x21c0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x34ff
callq 0x21c0
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x350e
callq 0x21c0
movq 0x1a8(%rsp), %rdi
testq %rdi, %rdi
je 0x3520
callq 0x21c0
movq %r15, %rdi
callq 0x4b64
leaq 0x870(%rsp), %rbx
movq %rbx, %rdi
callq 0x510c
movupd 0xcc20(%rip), %xmm0     # 0x10160
movapd %xmm0, (%rbx)
movabsq $0x900000003, %rax      # imm = 0x900000003
movq %rax, 0x10(%rbx)
leaq 0xe8(%rsp), %rdi
leaq 0x870(%rsp), %rsi
leaq 0x470(%rsp), %rcx
movl $0x6, %edx
callq 0x499a
movupd 0xcbfc(%rip), %xmm0     # 0x10178
leaq 0x470(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0x870(%rsp), %r14
leaq 0x30(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x499a
leaq 0x888(%rsp), %r15
movupd 0xcbd6(%rip), %xmm0     # 0x10190
leaq 0xdd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0x80(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x8a0(%rsp), %r15
movupd 0xcbb5(%rip), %xmm0     # 0x101a8
leaq 0xbd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movabsq $0x100000001, %rax      # imm = 0x100000001
movq %rax, 0x10(%rsi)
leaq 0x188(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x140(%rsp), %rdi
leaq 0x870(%rsp), %rsi
leaq 0x10(%rsp), %rcx
movl $0x3, %edx
callq 0x49d8
movl $0x30, %ebx
movq 0x870(%rsp,%rbx), %rdi
testq %rdi, %rdi
je 0x3658
callq 0x21c0
addq $-0x18, %rbx
cmpq $-0x18, %rbx
jne 0x3646
movabsq $0x4b0000001f4, %rax    # imm = 0x4B0000001F4
leaq 0x870(%rsp), %rsi
movq %rax, (%rsi)
movl $0x708, 0x8(%rsi)       # imm = 0x708
leaq 0x188(%rsp), %rdi
leaq 0x470(%rsp), %rcx
movl $0x3, %edx
callq 0x499a
movupd 0xcbb0(%rip), %xmm0     # 0x10250
leaq 0x470(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x1, 0x10(%rsi)
leaq 0x870(%rsp), %r14
leaq 0xf(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x499a
leaq 0x888(%rsp), %r15
movupd 0xcb8a(%rip), %xmm0     # 0x10268
leaq 0xdd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movabsq $0x100000000, %rbx      # imm = 0x100000000
movq %rbx, 0x10(%rsi)
leaq 0xe(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x8a0(%rsp), %r15
movupd 0xcaa6(%rip), %xmm0     # 0x101c0
leaq 0xbd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xd(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x8b8(%rsp), %r15
movupd 0xca88(%rip), %xmm0     # 0x101d8
leaq 0x30(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xc(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x8d0(%rsp), %r15
movupd 0xca6d(%rip), %xmm0     # 0x101f0
leaq 0x80(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xb(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x8e8(%rsp), %r15
movupd 0xca4f(%rip), %xmm0     # 0x10208
leaq 0x1e0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xa(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x900(%rsp), %r15
movupd 0xca31(%rip), %xmm0     # 0x10220
leaq 0xd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x1, 0x10(%rsi)
leaq 0x9(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x918(%rsp), %r15
movupd 0xca13(%rip), %xmm0     # 0x10238
leaq 0x1c0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x8(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x499a
leaq 0x10(%rsp), %rdi
leaq 0x870(%rsp), %rsi
leaq 0x7(%rsp), %rcx
movl $0x8, %edx
callq 0x49d8
movl $0xa8, %r14d
movq 0x870(%rsp,%r14), %rdi
testq %rdi, %rdi
je 0x387b
callq 0x21c0
addq $-0x18, %r14
cmpq $-0x18, %r14
jne 0x3869
movups 0xca04(%rip), %xmm0     # 0x10290
leaq 0x870(%rsp), %rsi
movaps %xmm0, 0x10(%rsi)
movupd 0xc9e0(%rip), %xmm0     # 0x10280
movapd %xmm0, (%rsi)
leaq 0x1e0(%rsp), %rdi
leaq 0x470(%rsp), %rcx
movl $0x8, %edx
callq 0x499a
leaq 0x470(%rsp), %rsi
movupd 0xc982(%rip), %xmm0     # 0x10250
movapd %xmm0, (%rsi)
movq $0x1, 0x10(%rsi)
leaq 0x870(%rsp), %rdi
leaq 0xbd0(%rsp), %rcx
movl $0x6, %edx
callq 0x499a
leaq 0x888(%rsp), %rdi
leaq 0xdd0(%rsp), %rsi
movupd 0xc95c(%rip), %xmm0     # 0x10268
movapd %xmm0, (%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x30(%rsp), %rcx
movl $0x6, %edx
callq 0x499a
leaq 0xd0(%rsp), %rdi
leaq 0x870(%rsp), %rsi
leaq 0x80(%rsp), %rcx
movl $0x2, %edx
callq 0x49d8
movl $0x18, %ebx
movq 0x870(%rsp,%rbx), %rdi
testq %rdi, %rdi
je 0x395c
callq 0x21c0
addq $-0x18, %rbx
cmpq $-0x18, %rbx
jne 0x394a
movabsq $0x57800000578, %rax    # imm = 0x57800000578
leaq 0x870(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x1c0(%rsp), %rdi
leaq 0x470(%rsp), %rcx
movl $0x2, %edx
callq 0x499a
callq 0xf6e6
leaq 0x870(%rsp), %rdi
movq %rax, %rsi
movl $0x6, %edx
callq 0x5014
leaq 0x268(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xc6f7(%rip), %rsi      # 0x100b9
leaq 0xc6f3(%rip), %rdx      # 0x100bc
leaq 0x258(%rsp), %rdi
callq 0x4d2a
leaq 0x870(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0x5574
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0x39fd
callq 0x21c0
leaq 0x30(%rsp), %rdi
movl $0x6, %esi
callq 0xd248
leaq 0xc6d8(%rip), %rbx      # 0x100eb
leaq 0xbd0(%rsp), %r14
leaq 0x30(%rsp), %r15
xorl %r12d, %r12d
movq 0xf0(%rsp), %rax
subq 0xe8(%rsp), %rax
sarq $0x2, %rax
cmpq %r12, %rax
jbe 0x3a77
leal 0x1(%r12), %edx
movq %r14, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2060
movq 0xe8(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%r12,4), %xmm0
movq %r15, %rdi
callq 0xd2f8
incq %r12
movq %r15, %rdi
movq %r14, %rsi
callq 0xd25a
jmp 0x3a23
leaq 0x38(%rsp), %rsi
movl -0x8(%rsi), %eax
leaq 0xb30(%rsp), %r14
movl %eax, -0x8(%r14)
movq %r14, %rdi
callq 0x4a60
leaq 0xb48(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0xb28(%rsp), %rsi
callq 0x55e4
movq 0xb48(%rsp), %rdi
testq %rdi, %rdi
je 0x3acc
callq 0x21c0
movq %r14, %rdi
callq 0x4b64
movq 0x148(%rsp), %rax
cmpq 0x140(%rsp), %rax
je 0x3cc1
leaq 0x480(%rsp), %r14
leaq 0x248(%rsp), %r13
leaq 0x238(%rsp), %r12
leaq 0x470(%rsp), %rbx
xorl %ebp, %ebp
movq %r14, 0x470(%rsp)
xorl %ecx, %ecx
movq %rcx, 0x478(%rsp)
movb $0x0, 0x480(%rsp)
leaq 0x4a0(%rsp), %rax
movq %rcx, 0x10(%rax)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rax)
movq %r13, 0x238(%rsp)
movq %r12, %rdi
leaq 0xc555(%rip), %rsi      # 0x100a1
leaq 0xc550(%rip), %rdx      # 0x100a3
callq 0x4d2a
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd3ba
movq 0x238(%rsp), %rdi
cmpq %r13, %rdi
je 0x3b75
callq 0x21c0
movq 0x188(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%rbp,4), %xmm0
movq %rbx, %rdi
callq 0xd4b4
movq 0x140(%rsp), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3bdc
leaq (,%rbp,2), %r15
addq %rbp, %r15
xorl %r12d, %r12d
movq (%rax,%r15,8), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%r12,4), %xmm0
movq %rbx, %rdi
callq 0xd488
incq %r12
movq 0x140(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x3bac
leaq 0x438(%rsp), %r12
movq %r12, 0x428(%rsp)
movq 0x470(%rsp), %rsi
movq 0x478(%rsp), %rdx
addq %rsi, %rdx
leaq 0x428(%rsp), %rdi
callq 0x4c78
movupd 0x10(%r14), %xmm0
movupd %xmm0, 0x10(%r12)
leaq 0x458(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x428(%rsp), %rsi
callq 0x56a6
movq 0x458(%rsp), %rdi
testq %rdi, %rdi
je 0x3c55
callq 0x21c0
movq 0x428(%rsp), %rdi
cmpq %r12, %rdi
je 0x3c67
callq 0x21c0
movq 0x4a0(%rsp), %rdi
testq %rdi, %rdi
leaq 0x238(%rsp), %r12
je 0x3c81
callq 0x21c0
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0x3c93
callq 0x21c0
movq 0x148(%rsp), %rax
subq 0x140(%rsp), %rax
incq %rbp
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
cmpq %rbp, %rax
ja 0x3b0c
movq 0x18(%rsp), %rax
cmpq 0x10(%rsp), %rax
je 0x3e9c
leaq 0x480(%rsp), %r14
leaq 0x228(%rsp), %r13
leaq 0x218(%rsp), %r12
leaq 0x470(%rsp), %rbx
xorl %ebp, %ebp
movq %r14, 0x470(%rsp)
xorl %ecx, %ecx
movq %rcx, 0x478(%rsp)
movb $0x0, 0x480(%rsp)
leaq 0x4a0(%rsp), %rax
movq %rcx, 0x10(%rax)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rax)
movq %r13, 0x218(%rsp)
movq %r12, %rdi
leaq 0xc369(%rip), %rsi      # 0x1009c
leaq 0xc365(%rip), %rdx      # 0x1009f
callq 0x4d2a
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd3ba
movq 0x218(%rsp), %rdi
cmpq %r13, %rdi
je 0x3d5c
callq 0x21c0
movq 0x1e0(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%rbp,4), %xmm0
movq %rbx, %rdi
callq 0xd4b4
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3dbd
leaq (,%rbp,2), %r15
addq %rbp, %r15
xorl %r12d, %r12d
movq (%rax,%r15,8), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%r12,4), %xmm0
movq %rbx, %rdi
callq 0xd488
incq %r12
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x3d90
leaq 0x3f0(%rsp), %r12
movq %r12, 0x3e0(%rsp)
movq 0x470(%rsp), %rsi
movq 0x478(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3e0(%rsp), %rdi
callq 0x4c78
movupd 0x10(%r14), %xmm0
movupd %xmm0, 0x10(%r12)
leaq 0x410(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0x56a6
movq 0x410(%rsp), %rdi
testq %rdi, %rdi
je 0x3e36
callq 0x21c0
movq 0x3e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x3e48
callq 0x21c0
movq 0x4a0(%rsp), %rdi
testq %rdi, %rdi
leaq 0x218(%rsp), %r12
je 0x3e62
callq 0x21c0
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0x3e74
callq 0x21c0
movq 0x18(%rsp), %rax
subq 0x10(%rsp), %rax
incq %rbp
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
cmpq %rbp, %rax
ja 0x3cf3
movq 0xd8(%rsp), %rax
cmpq 0xd0(%rsp), %rax
je 0x4089
leaq 0x480(%rsp), %r14
leaq 0x208(%rsp), %r13
leaq 0x1f8(%rsp), %r12
leaq 0x470(%rsp), %rbx
xorl %ebp, %ebp
movq %r14, 0x470(%rsp)
xorl %ecx, %ecx
movq %rcx, 0x478(%rsp)
movb $0x0, 0x480(%rsp)
leaq 0x4a0(%rsp), %rax
movq %rcx, 0x10(%rax)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rax)
movq %r13, 0x1f8(%rsp)
movq %r12, %rdi
leaq 0xc18c(%rip), %rsi      # 0x100a0
leaq 0xc188(%rip), %rdx      # 0x100a3
callq 0x4d2a
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd3ba
movq 0x1f8(%rsp), %rdi
cmpq %r13, %rdi
je 0x3f3d
callq 0x21c0
movq 0x1c0(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%rbp,4), %xmm0
movq %rbx, %rdi
callq 0xd4b4
movq 0xd0(%rsp), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3fa4
leaq (,%rbp,2), %r15
addq %rbp, %r15
xorl %r12d, %r12d
movq (%rax,%r15,8), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%r12,4), %xmm0
movq %rbx, %rdi
callq 0xd488
incq %r12
movq 0xd0(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x3f74
leaq 0x3a8(%rsp), %r12
movq %r12, 0x398(%rsp)
movq 0x470(%rsp), %rsi
movq 0x478(%rsp), %rdx
addq %rsi, %rdx
leaq 0x398(%rsp), %rdi
callq 0x4c78
movupd 0x10(%r14), %xmm0
movupd %xmm0, 0x10(%r12)
leaq 0x3c8(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x4ae4
leaq 0x870(%rsp), %rdi
leaq 0x398(%rsp), %rsi
callq 0x56a6
movq 0x3c8(%rsp), %rdi
testq %rdi, %rdi
je 0x401d
callq 0x21c0
movq 0x398(%rsp), %rdi
cmpq %r12, %rdi
je 0x402f
callq 0x21c0
movq 0x4a0(%rsp), %rdi
testq %rdi, %rdi
leaq 0x1f8(%rsp), %r12
je 0x4049
callq 0x21c0
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0x405b
callq 0x21c0
movq 0xd8(%rsp), %rax
subq 0xd0(%rsp), %rax
incq %rbp
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
cmpq %rbp, %rax
ja 0x3ed4
leaq 0x870(%rsp), %rdi
callq 0xd198
leaq 0x90(%rsp), %r15
leaq 0x870(%rsp), %rdi
callq 0xcd9a
leaq 0x870(%rsp), %rdi
callq 0xd1e0
leaq 0x870(%rsp), %rdi
callq 0x6822
leaq 0x870(%rsp), %rdi
callq 0xd214
leaq 0xc017(%rip), %rsi      # 0x100f0
leaq 0x470(%rsp), %rbx
movq %rbx, %rdi
movl $0x10, %edx
callq 0x2200
leaq 0xdd0(%rsp), %rdi
callq 0x2300
leaq 0xbfee(%rip), %rsi      # 0x100f0
leaq 0xdd0(%rsp), %r14
movq %r14, %rdi
movl $0x8, %edx
callq 0x2040
leaq 0x4e0(%rsp), %rdi
callq 0x2070
testb %al, %al
je 0x4179
leaq 0x80(%rsp), %rdi
leaq 0x870(%rsp), %rsi
callq 0xcf48
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
leaq 0xdd0(%rsp), %rdi
callq 0x2220
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x416c
callq 0x21c0
leaq 0xdd0(%rsp), %rdi
callq 0x2260
leaq 0xdd8(%rsp), %rdi
movq 0x138(%rsp), %r12
movq %r12, -0x8(%rdi)
movq -0x18(%r12), %rax
movq 0x130(%rsp), %r13
movq %r13, 0xdd0(%rsp,%rax)
callq 0x21a0
movl $0xf8, %r15d
addq %r15, %r14
movq %r14, %rdi
callq 0x20b0
leaq 0x478(%rsp), %rdi
movq %r12, -0x8(%rdi)
movq -0x18(%r12), %rax
movq %r13, 0x470(%rsp,%rax)
callq 0x21a0
addq %r15, %rbx
movq %rbx, %rdi
callq 0x20b0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x41f0
callq 0x21c0
leaq 0x38(%rsp), %rdi
callq 0x4b64
leaq 0x870(%rsp), %rdi
callq 0x510c
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x4219
callq 0x21c0
leaq 0xd0(%rsp), %rdi
callq 0x4a1a
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x4238
callq 0x21c0
leaq 0x10(%rsp), %rdi
callq 0x4a1a
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x4254
callq 0x21c0
leaq 0x140(%rsp), %rdi
callq 0x4a1a
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x4273
callq 0x21c0
xorl %eax, %eax
addq $0xfd8, %rsp            # imm = 0xFD8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x46f9
callq 0x21c0
jmp 0x46f9
jmp 0x46f6
jmp 0x42b1
jmp 0x473f
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4742
callq 0x21c0
jmp 0x4742
jmp 0x473f
movq %rax, %rbx
leaq 0x150(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x471b
callq 0x21c0
jmp 0x471b
jmp 0x4718
movq %rax, %rbx
jmp 0x4706
jmp 0x48af
movq %rax, %rbx
leaq 0xb28(%rsp), %rdi
callq 0x4954
jmp 0x48c8
movq %rax, %rbx
movq %r14, %rdi
callq 0x4b64
jmp 0x48c8
jmp 0x434e
movq %rax, %rbx
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0x48d2
callq 0x21c0
jmp 0x48d2
movq %rax, %rbx
jmp 0x48d2
movq %rax, %rbx
jmp 0x48f1
movq %rax, %rbx
movl $0x18, %r14d
movq 0x870(%rsp,%r14), %rdi
testq %rdi, %rdi
je 0x4379
callq 0x21c0
addq $-0x18, %r14
cmpq $-0x18, %r14
jne 0x4367
jmp 0x48fe
movq %rax, %rbx
movq 0x870(%rsp), %rdi
testq %rdi, %rdi
je 0x48fe
callq 0x21c0
jmp 0x48fe
movq %rax, %rbx
jmp 0x48fe
movq %rax, %rbx
jmp 0x4910
movq %rax, %rbx
movl $0xa8, %r12d
movq 0x870(%rsp,%r12), %rdi
testq %rdi, %rdi
je 0x43d1
callq 0x21c0
addq $-0x18, %r12
cmpq $-0x18, %r12
jne 0x43bf
movb $0x1, %al
jmp 0x43f0
jmp 0x43eb
jmp 0x43eb
jmp 0x43eb
jmp 0x43eb
jmp 0x43eb
jmp 0x43eb
movq %rax, %rbx
xorl %eax, %eax
cmpq %r15, %r14
sete %cl
testb %al, %al
jne 0x491a
testb %cl, %cl
jne 0x491a
movq -0x18(%r15), %rdi
testq %rdi, %rdi
je 0x4414
callq 0x21c0
addq $-0x18, %r15
cmpq %r14, %r15
jne 0x4406
jmp 0x491a
movq %rax, %rbx
jmp 0x491a
movq %rax, %rbx
jmp 0x492c
movq %rax, %rbx
movl $0x30, %r14d
movq 0x870(%rsp,%r14), %rdi
testq %rdi, %rdi
je 0x444d
callq 0x21c0
addq $-0x18, %r14
cmpq $-0x18, %r14
jne 0x443b
jmp 0x4939
jmp 0x445e
movq %rax, %rbx
movq -0x18(%r15), %rdi
testq %rdi, %rdi
je 0x446f
callq 0x21c0
addq $-0x18, %r15
cmpq %r14, %r15
jne 0x4461
jmp 0x4939
movq %rax, %rbx
jmp 0x4939
movq %rax, %rbx
jmp 0x494b
movq %rax, %rbx
jmp 0x474f
movq %rax, %rbx
jmp 0x475c
jmp 0x47c4
movq %rax, %rbx
leaq 0x678(%rsp), %rdi
jmp 0x44fb
movq %rax, %rbx
movq 0x678(%rsp), %rdi
jmp 0x451d
movq %rax, %rbx
leaq 0x6c0(%rsp), %rdi
jmp 0x44fb
movq %rax, %rbx
movq 0x6c0(%rsp), %rdi
jmp 0x451d
movq %rax, %rbx
leaq 0x708(%rsp), %rdi
jmp 0x44fb
movq %rax, %rbx
movq 0x708(%rsp), %rdi
jmp 0x451d
movq %rax, %rbx
leaq 0x750(%rsp), %rdi
callq 0x4974
jmp 0x47c7
movq %rax, %rbx
movq 0x750(%rsp), %rdi
jmp 0x451d
movq %rax, %rbx
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0x47c7
callq 0x21c0
jmp 0x47c7
jmp 0x47c4
movq %rax, %rbx
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0x47d4
callq 0x21c0
jmp 0x47d4
jmp 0x476b
movq %rax, %rbx
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0x47e1
callq 0x21c0
jmp 0x47e1
jmp 0x4770
movq %rax, %rbx
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x47ee
callq 0x21c0
jmp 0x47ee
jmp 0x4775
movq %rax, %rbx
leaq 0xb60(%rsp), %rdi
callq 0x4954
jmp 0x47f8
movq %rax, %rbx
movq %r14, %rdi
callq 0x4b64
jmp 0x47f8
jmp 0x46ee
movq %rax, %rbx
movq 0x2f8(%rsp), %rdi
jmp 0x46db
jmp 0x46ee
movq %rax, %rbx
jmp 0x4728
jmp 0x4793
movq %rax, %rbx
leaq 0x798(%rsp), %rdi
jmp 0x4629
movq %rax, %rbx
movq 0x798(%rsp), %rdi
jmp 0x464b
movq %rax, %rbx
leaq 0x7e0(%rsp), %rdi
jmp 0x4629
movq %rax, %rbx
movq 0x7e0(%rsp), %rdi
jmp 0x464b
movq %rax, %rbx
leaq 0x828(%rsp), %rdi
callq 0x4974
jmp 0x4796
movq %rax, %rbx
movq 0x828(%rsp), %rdi
jmp 0x464b
movq %rax, %rbx
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0x4796
callq 0x21c0
jmp 0x4796
jmp 0x4793
movq %rax, %rbx
movq 0x338(%rsp), %rdi
cmpq %r14, %rdi
je 0x47a3
callq 0x21c0
jmp 0x47a3
jmp 0x477a
movq %rax, %rbx
movq 0x358(%rsp), %rdi
cmpq %r14, %rdi
je 0x47ad
callq 0x21c0
jmp 0x47ad
jmp 0x477f
movq %rax, %rbx
leaq 0xb98(%rsp), %rdi
callq 0x4954
jmp 0x47ba
movq %rax, %rbx
movq %r14, %rdi
callq 0x4b64
jmp 0x47ba
jmp 0x46ee
movq %rax, %rbx
movq 0x378(%rsp), %rdi
cmpq %r14, %rdi
je 0x4805
callq 0x21c0
jmp 0x4805
movq %rax, %rbx
jmp 0x4805
movq %rax, %rbx
leaq 0xdd0(%rsp), %rdi
callq 0x2280
leaq 0x470(%rsp), %rdi
callq 0x2280
jmp 0x48c8
movq %rax, %rbx
leaq 0xdd0(%rsp), %rdi
callq 0x2280
leaq 0x470(%rsp), %rdi
callq 0x2280
jmp 0x4796
movq %rax, %rbx
jmp 0x48df
movq %rax, %rbx
leaq 0xbd0(%rsp), %rdi
callq 0x2280
leaq 0xdd0(%rsp), %rdi
callq 0x2280
leaq 0x470(%rsp), %rdi
callq 0x2280
jmp 0x47c7
movq %rax, %rbx
jmp 0x47d4
movq %rax, %rbx
jmp 0x47e1
movq %rax, %rbx
jmp 0x47ee
movq %rax, %rbx
jmp 0x47a3
movq %rax, %rbx
jmp 0x47ad
movq %rax, %rbx
jmp 0x47f8
movq %rax, %rbx
jmp 0x47ba
jmp 0x48af
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x4974
leaq 0x30(%rsp), %rdi
callq 0x4974
leaq 0xbd0(%rsp), %rdi
callq 0x4974
leaq 0xe8(%rsp), %rdi
jmp 0x4800
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
callq 0x4974
leaq 0xe8(%rsp), %rdi
callq 0x4974
leaq 0x80(%rsp), %rdi
callq 0x4974
leaq 0x30(%rsp), %rdi
callq 0x4974
leaq 0x188(%rsp), %rdi
callq 0x4954
leaq 0x870(%rsp), %rdi
callq 0x510c
jmp 0x494b
movq %rax, %rbx
movq 0x398(%rsp), %rdi
jmp 0x4877
movq %rax, %rbx
leaq 0x398(%rsp), %rdi
jmp 0x4889
jmp 0x48b8
movq %rax, %rbx
movq 0x1f8(%rsp), %rdi
jmp 0x489d
movq %rax, %rbx
movq 0x3e0(%rsp), %rdi
jmp 0x4877
movq %rax, %rbx
leaq 0x3e0(%rsp), %rdi
jmp 0x4889
jmp 0x48b8
movq %rax, %rbx
movq 0x218(%rsp), %rdi
jmp 0x489d
movq %rax, %rbx
movq 0x428(%rsp), %rdi
cmpq %r12, %rdi
jne 0x48a2
jmp 0x48bb
movq %rax, %rbx
leaq 0x428(%rsp), %rdi
callq 0x4974
jmp 0x48bb
jmp 0x48b8
movq %rax, %rbx
movq 0x238(%rsp), %rdi
cmpq %r13, %rdi
je 0x48bb
callq 0x21c0
jmp 0x48bb
jmp 0x48b8
jmp 0x48b8
jmp 0x48b8
movq %rax, %rbx
jmp 0x48c8
jmp 0x48b8
jmp 0x48b8
movq %rax, %rbx
leaq 0x470(%rsp), %rdi
callq 0x4974
leaq 0x30(%rsp), %rdi
callq 0x4954
leaq 0x870(%rsp), %rdi
callq 0x510c
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x48f1
callq 0x21c0
leaq 0xd0(%rsp), %rdi
callq 0x4a1a
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x4910
callq 0x21c0
leaq 0x10(%rsp), %rdi
callq 0x4a1a
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x492c
callq 0x21c0
leaq 0x140(%rsp), %rdi
callq 0x4a1a
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x494b
callq 0x21c0
movq %rbx, %rdi
callq 0x2310
nop