// File: /workspace/github_cpp_makefile_star2_O1/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 0xf55e
leaq 0x870(%rsp), %rdi
movq %rax, %rsi
movl $0x2, %edx
callq 0x5048
leaq 0x388(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xdac6(%rip), %rsi      # 0x10090
leaq 0xdac2(%rip), %rdx      # 0x10093
leaq 0x378(%rsp), %rdi
callq 0x4d5a
leaq 0x870(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x55a8
movq 0x378(%rsp), %rdi
cmpq %r14, %rdi
je 0x2605
callq 0x21c0
leaq 0xe8(%rsp), %rdi
movl $0x2, %esi
callq 0xd0cc
leaq 0xe8(%rsp), %rdi
movsd 0xd9e1(%rip), %xmm0     # 0x10008
callq 0xd17c
leaq 0xe8(%rsp), %rdi
movsd 0xd9d4(%rip), %xmm0     # 0x10010
callq 0xd17c
leaq 0xda4c(%rip), %rsi      # 0x10094
leaq 0xe8(%rsp), %rdi
callq 0xd0de
leaq 0xda3c(%rip), %rsi      # 0x10098
leaq 0xe8(%rsp), %rdi
callq 0xd0de
leaq 0xf0(%rsp), %rsi
movl -0x8(%rsi), %eax
leaq 0xba0(%rsp), %r14
movl %eax, -0x8(%r14)
movq %r14, %rdi
callq 0x4a9c
leaq 0xbb8(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0xb98(%rsp), %rsi
callq 0x5618
movq 0xbb8(%rsp), %rdi
testq %rdi, %rdi
je 0x26c4
callq 0x21c0
movq %r14, %rdi
callq 0x4ba0
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 0x4d5a
leaq 0xbd0(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0xd23e
movq 0x358(%rsp), %rdi
cmpq %r14, %rdi
je 0x273c
callq 0x21c0
leaq 0xbd0(%rsp), %rdi
movsd 0xd8cc(%rip), %xmm0     # 0x10018
callq 0xd30c
leaq 0xbd0(%rsp), %rdi
movsd 0xd8bf(%rip), %xmm0     # 0x10020
callq 0xd30c
leaq 0xbd0(%rsp), %rdi
movsd 0xd8b2(%rip), %xmm0     # 0x10028
callq 0xd338
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 0x4d5a
leaq 0x30(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0xd23e
movq 0x338(%rsp), %rdi
cmpq %r14, %rdi
je 0x27e5
callq 0x21c0
leaq 0x30(%rsp), %rdi
movsd 0xd81e(%rip), %xmm0     # 0x10010
callq 0xd30c
leaq 0x30(%rsp), %rdi
movsd 0xd80c(%rip), %xmm0     # 0x10010
callq 0xd30c
leaq 0x30(%rsp), %rdi
movsd 0xd81a(%rip), %xmm0     # 0x10030
callq 0xd338
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 0x4d5a
leaq 0x80(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0xd23e
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0x2892
callq 0x21c0
leaq 0x80(%rsp), %rdi
movsd 0xd796(%rip), %xmm0     # 0x10038
callq 0xd30c
leaq 0x80(%rsp), %rdi
movsd 0xd751(%rip), %xmm0     # 0x10008
callq 0xd30c
leaq 0x80(%rsp), %rdi
movsd 0xd764(%rip), %xmm0     # 0x10030
callq 0xd338
leaq 0x838(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xbd0(%rsp), %rsi
movq 0xbd8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x828(%rsp), %rdi
callq 0x4cae
leaq 0xc00(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x858(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x828(%rsp), %rsi
callq 0x56d0
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 0x4cae
leaq 0x60(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x810(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x7e0(%rsp), %rsi
callq 0x56d0
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 0x4cae
leaq 0xb0(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x7c8(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x798(%rsp), %rsi
callq 0x56d0
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 0xd01c
leaq 0x870(%rsp), %rdi
callq 0xcc1a
leaq 0x870(%rsp), %rdi
callq 0xd064
leaq 0x870(%rsp), %rdi
callq 0x686a
leaq 0x870(%rsp), %rdi
callq 0xd098
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 0xcdcc
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 0x4ba0
leaq 0x870(%rsp), %rdi
callq 0x5140
callq 0xf55e
leaq 0x870(%rsp), %rdi
movq %rax, %rsi
movl $0x2, %edx
callq 0x5048
leaq 0x308(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xd433(%rip), %rsi      # 0x100b9
leaq 0xd42f(%rip), %rdx      # 0x100bc
leaq 0x2f8(%rsp), %rdi
callq 0x4d5a
leaq 0x870(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
callq 0x55a8
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2cc1
callq 0x21c0
leaq 0x188(%rsp), %rdi
movl $0x2, %esi
callq 0xd0cc
leaq 0x188(%rsp), %rdi
movsd 0xd35d(%rip), %xmm0     # 0x10040
callq 0xd17c
leaq 0x188(%rsp), %rdi
movsd 0xd350(%rip), %xmm0     # 0x10048
callq 0xd17c
leaq 0xd390(%rip), %rsi      # 0x10094
leaq 0x188(%rsp), %rdi
callq 0xd0de
leaq 0xd380(%rip), %rsi      # 0x10098
leaq 0x188(%rsp), %rdi
callq 0xd0de
leaq 0x190(%rsp), %rsi
movl -0x8(%rsi), %eax
leaq 0xb68(%rsp), %r14
movl %eax, -0x8(%r14)
movq %r14, %rdi
callq 0x4a9c
leaq 0xb80(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0xb60(%rsp), %rsi
callq 0x5618
movq 0xb80(%rsp), %rdi
testq %rdi, %rdi
je 0x2d80
callq 0x21c0
movq %r14, %rdi
callq 0x4ba0
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 0x4d5a
leaq 0x30(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0xd23e
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2df3
callq 0x21c0
leaq 0x30(%rsp), %rdi
movsd 0xd250(%rip), %xmm0     # 0x10050
callq 0xd30c
leaq 0x30(%rsp), %rdi
xorpd %xmm0, %xmm0
callq 0xd30c
leaq 0x30(%rsp), %rdi
movsd 0xd238(%rip), %xmm0     # 0x10058
callq 0xd338
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 0x4d5a
leaq 0x80(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0xd23e
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2ea2
callq 0x21c0
leaq 0x80(%rsp), %rdi
xorpd %xmm0, %xmm0
callq 0xd30c
leaq 0x80(%rsp), %rdi
movsd 0xd19d(%rip), %xmm0     # 0x10060
callq 0xd30c
leaq 0x80(%rsp), %rdi
movsd 0xd190(%rip), %xmm0     # 0x10068
callq 0xd338
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 0x4d5a
leaq 0xe8(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0xd23e
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0x2f4d
callq 0x21c0
leaq 0xe8(%rsp), %rdi
movsd 0xd0e3(%rip), %xmm0     # 0x10040
callq 0xd30c
leaq 0xe8(%rsp), %rdi
movsd 0xd0ee(%rip), %xmm0     # 0x10060
callq 0xd30c
leaq 0xe8(%rsp), %rdi
movsd 0xd0e9(%rip), %xmm0     # 0x10070
callq 0xd338
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 0x4d5a
leaq 0x140(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0xd23e
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0x2ffc
callq 0x21c0
leaq 0x140(%rsp), %rdi
movsd 0xd054(%rip), %xmm0     # 0x10060
callq 0xd30c
leaq 0x140(%rsp), %rdi
movsd 0xd01f(%rip), %xmm0     # 0x10040
callq 0xd30c
leaq 0x140(%rsp), %rdi
movsd 0xd032(%rip), %xmm0     # 0x10068
callq 0xd338
leaq 0x760(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
leaq 0x750(%rsp), %rdi
callq 0x4cae
leaq 0x60(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x780(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x750(%rsp), %rsi
callq 0x56d0
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 0x4cae
leaq 0xb0(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x738(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x708(%rsp), %rsi
callq 0x56d0
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 0x4cae
leaq 0x118(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x6f0(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
callq 0x56d0
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 0x4cae
leaq 0x170(%rsp), %rsi
movupd -0x10(%rsi), %xmm0
leaq 0x6a8(%rsp), %rdi
movupd %xmm0, -0x10(%rdi)
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x678(%rsp), %rsi
callq 0x5760
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 0xcc1a
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 0x686a
leaq 0x870(%rsp), %rdi
callq 0x9862
leaq 0x870(%rsp), %rdi
callq 0xcf44
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 0xcdcc
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 0xce88
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 0x4ba0
leaq 0x870(%rsp), %rbx
movq %rbx, %rdi
callq 0x5140
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 0x49dc
movupd 0xcbfc(%rip), %xmm0     # 0x10178
leaq 0x470(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0x870(%rsp), %r15
leaq 0x30(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x49dc
leaq 0x888(%rsp), %r14
movupd 0xcbd6(%rip), %xmm0     # 0x10190
leaq 0xdd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0x80(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0x8a0(%rsp), %r14
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 %r14, %rdi
callq 0x49dc
leaq 0x140(%rsp), %rdi
leaq 0x870(%rsp), %rsi
leaq 0x10(%rsp), %rcx
movl $0x3, %edx
callq 0x4a1a
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 0x49dc
movupd 0xcbb0(%rip), %xmm0     # 0x10250
leaq 0x470(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x1, 0x10(%rsi)
leaq 0x870(%rsp), %r15
leaq 0xf(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x49dc
leaq 0x888(%rsp), %r14
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 %r14, %rdi
callq 0x49dc
leaq 0x8a0(%rsp), %r14
movupd 0xcaa6(%rip), %xmm0     # 0x101c0
leaq 0xbd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xd(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0x8b8(%rsp), %r14
movupd 0xca88(%rip), %xmm0     # 0x101d8
leaq 0x30(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xc(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0x8d0(%rsp), %r14
movupd 0xca6d(%rip), %xmm0     # 0x101f0
leaq 0x80(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xb(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0x8e8(%rsp), %r14
movupd 0xca4f(%rip), %xmm0     # 0x10208
leaq 0x1e0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x0, 0x10(%rsi)
leaq 0xa(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0x900(%rsp), %r14
movupd 0xca31(%rip), %xmm0     # 0x10220
leaq 0xd0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq $0x1, 0x10(%rsi)
leaq 0x9(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0x918(%rsp), %r14
movupd 0xca13(%rip), %xmm0     # 0x10238
leaq 0x1c0(%rsp), %rsi
movapd %xmm0, (%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x8(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0x10(%rsp), %rdi
leaq 0x870(%rsp), %rsi
leaq 0x7(%rsp), %rcx
movl $0x8, %edx
callq 0x4a1a
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 0x49dc
leaq 0x470(%rsp), %rsi
movupd 0xc982(%rip), %xmm0     # 0x10250
movapd %xmm0, (%rsi)
movq $0x1, 0x10(%rsi)
leaq 0x870(%rsp), %r15
leaq 0xbd0(%rsp), %rcx
movl $0x6, %edx
movq %r15, %rdi
callq 0x49dc
leaq 0x888(%rsp), %r14
leaq 0xdd0(%rsp), %rsi
movupd 0xc959(%rip), %xmm0     # 0x10268
movapd %xmm0, (%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x30(%rsp), %rcx
movl $0x6, %edx
movq %r14, %rdi
callq 0x49dc
leaq 0xd0(%rsp), %rdi
leaq 0x870(%rsp), %rsi
leaq 0x80(%rsp), %rcx
movl $0x2, %edx
callq 0x4a1a
movl $0x18, %ebx
movq 0x870(%rsp,%rbx), %rdi
testq %rdi, %rdi
je 0x3962
callq 0x21c0
addq $-0x18, %rbx
cmpq $-0x18, %rbx
jne 0x3950
movabsq $0x57800000578, %rax    # imm = 0x57800000578
leaq 0x870(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x1c0(%rsp), %rdi
leaq 0x470(%rsp), %rcx
movl $0x2, %edx
callq 0x49dc
callq 0xf55e
leaq 0x870(%rsp), %rdi
movq %rax, %rsi
movl $0x6, %edx
callq 0x5048
leaq 0x268(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xc6f1(%rip), %rsi      # 0x100b9
leaq 0xc6ed(%rip), %rdx      # 0x100bc
leaq 0x258(%rsp), %rdi
callq 0x4d5a
leaq 0x870(%rsp), %rdi
leaq 0x258(%rsp), %rsi
callq 0x55a8
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0x3a03
callq 0x21c0
leaq 0x30(%rsp), %rdi
movl $0x6, %esi
callq 0xd0cc
leaq 0xc6d2(%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 0x3a7d
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 0xd17c
incq %r12
movq %r15, %rdi
movq %r14, %rsi
callq 0xd0de
jmp 0x3a29
leaq 0x38(%rsp), %rsi
movl -0x8(%rsi), %eax
leaq 0xb30(%rsp), %r14
movl %eax, -0x8(%r14)
movq %r14, %rdi
callq 0x4a9c
leaq 0xb48(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0xb28(%rsp), %rsi
callq 0x5618
movq 0xb48(%rsp), %rdi
testq %rdi, %rdi
je 0x3ad2
callq 0x21c0
movq %r14, %rdi
callq 0x4ba0
movq 0x148(%rsp), %rax
cmpq 0x140(%rsp), %rax
je 0x3cc7
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 0xc54f(%rip), %rsi      # 0x100a1
leaq 0xc54a(%rip), %rdx      # 0x100a3
callq 0x4d5a
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd23e
movq 0x238(%rsp), %rdi
cmpq %r13, %rdi
je 0x3b7b
callq 0x21c0
movq 0x188(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%rbp,4), %xmm0
movq %rbx, %rdi
callq 0xd338
movq 0x140(%rsp), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3be2
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 0xd30c
incq %r12
movq 0x140(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x3bb2
leaq 0x438(%rsp), %r12
movq %r12, 0x428(%rsp)
movq 0x470(%rsp), %rsi
movq 0x478(%rsp), %rdx
addq %rsi, %rdx
leaq 0x428(%rsp), %rdi
callq 0x4cae
movupd 0x10(%r14), %xmm0
movupd %xmm0, 0x10(%r12)
leaq 0x458(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x428(%rsp), %rsi
callq 0x56d0
movq 0x458(%rsp), %rdi
testq %rdi, %rdi
je 0x3c5b
callq 0x21c0
movq 0x428(%rsp), %rdi
cmpq %r12, %rdi
je 0x3c6d
callq 0x21c0
movq 0x4a0(%rsp), %rdi
testq %rdi, %rdi
leaq 0x238(%rsp), %r12
je 0x3c87
callq 0x21c0
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0x3c99
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 0x3b12
movq 0x18(%rsp), %rax
cmpq 0x10(%rsp), %rax
je 0x3ea2
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 0xc363(%rip), %rsi      # 0x1009c
leaq 0xc35f(%rip), %rdx      # 0x1009f
callq 0x4d5a
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd23e
movq 0x218(%rsp), %rdi
cmpq %r13, %rdi
je 0x3d62
callq 0x21c0
movq 0x1e0(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%rbp,4), %xmm0
movq %rbx, %rdi
callq 0xd338
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3dc3
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 0xd30c
incq %r12
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x3d96
leaq 0x3f0(%rsp), %r12
movq %r12, 0x3e0(%rsp)
movq 0x470(%rsp), %rsi
movq 0x478(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3e0(%rsp), %rdi
callq 0x4cae
movupd 0x10(%r14), %xmm0
movupd %xmm0, 0x10(%r12)
leaq 0x410(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0x56d0
movq 0x410(%rsp), %rdi
testq %rdi, %rdi
je 0x3e3c
callq 0x21c0
movq 0x3e0(%rsp), %rdi
cmpq %r12, %rdi
je 0x3e4e
callq 0x21c0
movq 0x4a0(%rsp), %rdi
testq %rdi, %rdi
leaq 0x218(%rsp), %r12
je 0x3e68
callq 0x21c0
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0x3e7a
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 0x3cf9
movq 0xd8(%rsp), %rax
cmpq 0xd0(%rsp), %rax
je 0x408f
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 0xc186(%rip), %rsi      # 0x100a0
leaq 0xc182(%rip), %rdx      # 0x100a3
callq 0x4d5a
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd23e
movq 0x1f8(%rsp), %rdi
cmpq %r13, %rdi
je 0x3f43
callq 0x21c0
movq 0x1c0(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%rbp,4), %xmm0
movq %rbx, %rdi
callq 0xd338
movq 0xd0(%rsp), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x3faa
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 0xd30c
incq %r12
movq 0xd0(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x3f7a
leaq 0x3a8(%rsp), %r12
movq %r12, 0x398(%rsp)
movq 0x470(%rsp), %rsi
movq 0x478(%rsp), %rdx
addq %rsi, %rdx
leaq 0x398(%rsp), %rdi
callq 0x4cae
movupd 0x10(%r14), %xmm0
movupd %xmm0, 0x10(%r12)
leaq 0x3c8(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x4b20
leaq 0x870(%rsp), %rdi
leaq 0x398(%rsp), %rsi
callq 0x56d0
movq 0x3c8(%rsp), %rdi
testq %rdi, %rdi
je 0x4023
callq 0x21c0
movq 0x398(%rsp), %rdi
cmpq %r12, %rdi
je 0x4035
callq 0x21c0
movq 0x4a0(%rsp), %rdi
testq %rdi, %rdi
leaq 0x1f8(%rsp), %r12
je 0x404f
callq 0x21c0
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0x4061
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 0x3eda
leaq 0x870(%rsp), %rdi
callq 0xd01c
leaq 0x90(%rsp), %r15
leaq 0x870(%rsp), %rdi
callq 0xcc1a
leaq 0x870(%rsp), %rdi
callq 0xd064
leaq 0x870(%rsp), %rdi
callq 0x686a
leaq 0x870(%rsp), %rdi
callq 0xd098
leaq 0xc011(%rip), %rsi      # 0x100f0
leaq 0x470(%rsp), %rbx
movq %rbx, %rdi
movl $0x10, %edx
callq 0x2200
leaq 0xdd0(%rsp), %rdi
callq 0x2300
leaq 0xbfe8(%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 0x417f
leaq 0x80(%rsp), %rdi
leaq 0x870(%rsp), %rsi
callq 0xcdcc
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
leaq 0xdd0(%rsp), %rdi
callq 0x2220
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x4172
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 0x41f6
callq 0x21c0
leaq 0x38(%rsp), %rdi
callq 0x4ba0
leaq 0x870(%rsp), %rdi
callq 0x5140
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x421f
callq 0x21c0
leaq 0xd0(%rsp), %rdi
callq 0x4a5c
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x423e
callq 0x21c0
leaq 0x10(%rsp), %rdi
callq 0x4a5c
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x425a
callq 0x21c0
leaq 0x140(%rsp), %rdi
callq 0x4a5c
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x4279
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 0x473c
callq 0x21c0
jmp 0x473c
jmp 0x4739
jmp 0x42b7
jmp 0x4782
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4785
callq 0x21c0
jmp 0x4785
jmp 0x4782
movq %rax, %rbx
leaq 0x150(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x475e
callq 0x21c0
jmp 0x475e
jmp 0x475b
movq %rax, %rbx
jmp 0x4749
jmp 0x48f2
movq %rax, %rbx
leaq 0xb28(%rsp), %rdi
callq 0x4996
jmp 0x490b
movq %rax, %rbx
movq %r14, %rdi
callq 0x4ba0
jmp 0x490b
jmp 0x4354
movq %rax, %rbx
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0x4915
callq 0x21c0
jmp 0x4915
movq %rax, %rbx
jmp 0x4915
movq %rax, %rbx
jmp 0x4934
movq %rax, %rbx
movl $0x18, %r12d
movq 0x870(%rsp,%r12), %rdi
testq %rdi, %rdi
je 0x437f
callq 0x21c0
addq $-0x18, %r12
cmpq $-0x18, %r12
jne 0x436d
movb $0x1, %al
jmp 0x439c
movq %rax, %rbx
xorl %eax, %eax
jmp 0x439c
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %r14
cmpq %r14, %r15
sete %cl
orb %al, %cl
jne 0x4941
leaq 0x870(%rsp), %r15
movq -0x18(%r14), %rdi
testq %rdi, %rdi
je 0x43c0
callq 0x21c0
addq $-0x18, %r14
cmpq %r15, %r14
jne 0x43b2
jmp 0x4941
movq %rax, %rbx
jmp 0x4953
movq %rax, %rbx
movl $0xa8, %r12d
movq 0x870(%rsp,%r12), %rdi
testq %rdi, %rdi
je 0x43f1
callq 0x21c0
addq $-0x18, %r12
cmpq $-0x18, %r12
jne 0x43df
movb $0x1, %al
jmp 0x4410
jmp 0x440b
jmp 0x440b
jmp 0x440b
jmp 0x440b
jmp 0x440b
jmp 0x440b
movq %rax, %rbx
xorl %eax, %eax
cmpq %r14, %r15
sete %cl
testb %al, %al
jne 0x495d
testb %cl, %cl
jne 0x495d
leaq 0x870(%rsp), %r15
movq -0x18(%r14), %rdi
testq %rdi, %rdi
je 0x443c
callq 0x21c0
addq $-0x18, %r14
cmpq %r15, %r14
jne 0x442e
jmp 0x495d
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %r14
jmp 0x4410
movq %rax, %rbx
jmp 0x496f
movq %rax, %rbx
movl $0x30, %r12d
movq 0x870(%rsp,%r12), %rdi
testq %rdi, %rdi
je 0x4477
callq 0x21c0
addq $-0x18, %r12
cmpq $-0x18, %r12
jne 0x4465
movb $0x1, %al
jmp 0x4496
jmp 0x4487
movq %rax, %rbx
xorl %eax, %eax
jmp 0x4496
movq %rax, %rbx
xorl %eax, %eax
movq %r15, %r14
cmpq %r14, %r15
sete %cl
orb %al, %cl
jne 0x497c
leaq 0x870(%rsp), %r15
movq -0x18(%r14), %rdi
testq %rdi, %rdi
je 0x44ba
callq 0x21c0
addq $-0x18, %r14
cmpq %r15, %r14
jne 0x44ac
jmp 0x497c
movq %rax, %rbx
jmp 0x498e
movq %rax, %rbx
jmp 0x4792
movq %rax, %rbx
jmp 0x479f
jmp 0x4807
movq %rax, %rbx
leaq 0x678(%rsp), %rdi
jmp 0x453e
movq %rax, %rbx
movq 0x678(%rsp), %rdi
jmp 0x4560
movq %rax, %rbx
leaq 0x6c0(%rsp), %rdi
jmp 0x453e
movq %rax, %rbx
movq 0x6c0(%rsp), %rdi
jmp 0x4560
movq %rax, %rbx
leaq 0x708(%rsp), %rdi
jmp 0x453e
movq %rax, %rbx
movq 0x708(%rsp), %rdi
jmp 0x4560
movq %rax, %rbx
leaq 0x750(%rsp), %rdi
callq 0x49b6
jmp 0x480a
movq %rax, %rbx
movq 0x750(%rsp), %rdi
jmp 0x4560
movq %rax, %rbx
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0x480a
callq 0x21c0
jmp 0x480a
jmp 0x4807
movq %rax, %rbx
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0x4817
callq 0x21c0
jmp 0x4817
jmp 0x47ae
movq %rax, %rbx
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4824
callq 0x21c0
jmp 0x4824
jmp 0x47b3
movq %rax, %rbx
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4831
callq 0x21c0
jmp 0x4831
jmp 0x47b8
movq %rax, %rbx
leaq 0xb60(%rsp), %rdi
callq 0x4996
jmp 0x483b
movq %rax, %rbx
movq %r14, %rdi
callq 0x4ba0
jmp 0x483b
jmp 0x4731
movq %rax, %rbx
movq 0x2f8(%rsp), %rdi
jmp 0x471e
jmp 0x4731
movq %rax, %rbx
jmp 0x476b
jmp 0x47d6
movq %rax, %rbx
leaq 0x798(%rsp), %rdi
jmp 0x466c
movq %rax, %rbx
movq 0x798(%rsp), %rdi
jmp 0x468e
movq %rax, %rbx
leaq 0x7e0(%rsp), %rdi
jmp 0x466c
movq %rax, %rbx
movq 0x7e0(%rsp), %rdi
jmp 0x468e
movq %rax, %rbx
leaq 0x828(%rsp), %rdi
callq 0x49b6
jmp 0x47d9
movq %rax, %rbx
movq 0x828(%rsp), %rdi
jmp 0x468e
movq %rax, %rbx
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0x47d9
callq 0x21c0
jmp 0x47d9
jmp 0x47d6
movq %rax, %rbx
movq 0x338(%rsp), %rdi
cmpq %r14, %rdi
je 0x47e6
callq 0x21c0
jmp 0x47e6
jmp 0x47bd
movq %rax, %rbx
movq 0x358(%rsp), %rdi
cmpq %r14, %rdi
je 0x47f0
callq 0x21c0
jmp 0x47f0
jmp 0x47c2
movq %rax, %rbx
leaq 0xb98(%rsp), %rdi
callq 0x4996
jmp 0x47fd
movq %rax, %rbx
movq %r14, %rdi
callq 0x4ba0
jmp 0x47fd
jmp 0x4731
movq %rax, %rbx
movq 0x378(%rsp), %rdi
cmpq %r14, %rdi
je 0x4848
callq 0x21c0
jmp 0x4848
movq %rax, %rbx
jmp 0x4848
movq %rax, %rbx
leaq 0xdd0(%rsp), %rdi
callq 0x2280
leaq 0x470(%rsp), %rdi
callq 0x2280
jmp 0x490b
movq %rax, %rbx
leaq 0xdd0(%rsp), %rdi
callq 0x2280
leaq 0x470(%rsp), %rdi
callq 0x2280
jmp 0x47d9
movq %rax, %rbx
jmp 0x4922
movq %rax, %rbx
leaq 0xbd0(%rsp), %rdi
callq 0x2280
leaq 0xdd0(%rsp), %rdi
callq 0x2280
leaq 0x470(%rsp), %rdi
callq 0x2280
jmp 0x480a
movq %rax, %rbx
jmp 0x4817
movq %rax, %rbx
jmp 0x4824
movq %rax, %rbx
jmp 0x4831
movq %rax, %rbx
jmp 0x47e6
movq %rax, %rbx
jmp 0x47f0
movq %rax, %rbx
jmp 0x483b
movq %rax, %rbx
jmp 0x47fd
jmp 0x48f2
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x49b6
leaq 0x30(%rsp), %rdi
callq 0x49b6
leaq 0xbd0(%rsp), %rdi
callq 0x49b6
leaq 0xe8(%rsp), %rdi
jmp 0x4843
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
callq 0x49b6
leaq 0xe8(%rsp), %rdi
callq 0x49b6
leaq 0x80(%rsp), %rdi
callq 0x49b6
leaq 0x30(%rsp), %rdi
callq 0x49b6
leaq 0x188(%rsp), %rdi
callq 0x4996
leaq 0x870(%rsp), %rdi
callq 0x5140
jmp 0x498e
movq %rax, %rbx
movq 0x398(%rsp), %rdi
jmp 0x48ba
movq %rax, %rbx
leaq 0x398(%rsp), %rdi
jmp 0x48cc
jmp 0x48fb
movq %rax, %rbx
movq 0x1f8(%rsp), %rdi
jmp 0x48e0
movq %rax, %rbx
movq 0x3e0(%rsp), %rdi
jmp 0x48ba
movq %rax, %rbx
leaq 0x3e0(%rsp), %rdi
jmp 0x48cc
jmp 0x48fb
movq %rax, %rbx
movq 0x218(%rsp), %rdi
jmp 0x48e0
movq %rax, %rbx
movq 0x428(%rsp), %rdi
cmpq %r12, %rdi
jne 0x48e5
jmp 0x48fe
movq %rax, %rbx
leaq 0x428(%rsp), %rdi
callq 0x49b6
jmp 0x48fe
jmp 0x48fb
movq %rax, %rbx
movq 0x238(%rsp), %rdi
cmpq %r13, %rdi
je 0x48fe
callq 0x21c0
jmp 0x48fe
jmp 0x48fb
jmp 0x48fb
jmp 0x48fb
movq %rax, %rbx
jmp 0x490b
jmp 0x48fb
jmp 0x48fb
movq %rax, %rbx
leaq 0x470(%rsp), %rdi
callq 0x49b6
leaq 0x30(%rsp), %rdi
callq 0x4996
leaq 0x870(%rsp), %rdi
callq 0x5140
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x4934
callq 0x21c0
leaq 0xd0(%rsp), %rdi
callq 0x4a5c
movq 0x1e0(%rsp), %rdi
testq %rdi, %rdi
je 0x4953
callq 0x21c0
leaq 0x10(%rsp), %rdi
callq 0x4a5c
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x496f
callq 0x21c0
leaq 0x140(%rsp), %rdi
callq 0x4a5c
movq 0xe8(%rsp), %rdi
testq %rdi, %rdi
je 0x498e
callq 0x21c0
movq %rbx, %rdi
callq 0x2310