// File: /workspace/github_cpp_makefile_star2_O2/WShabti-Team[P]WShabtiPict/main/WShabtiPict.cpp
// Function: main
int main(int argc, char** argv)
{
    bool is_interactive = true;
    string source_code_path = "";

    if(argc != 1)   {  is_interactive = false; }
//----------------------------------------------------------------------------------------------------------------------------------------------------

    if(is_interactive)
    {
        //TAKE SOURCECODE PATH
        cout << "SourceCode Path: ";
        cin >> source_code_path;
    

    //TAKE PROTOTYPE FORM SOURCECODE
    ofstream parameter_file;
    vector<string> prototypes = get_prototypes(source_code_path);
    vector<string> prototypes_tested;
    string possible_values_of_parameter = "";

    //TAKE CLASS NAME FORM PROTOTYPE
    string class_name = get_class_name(source_code_path);

    //CREATE DIRECTORY FOR CONTAINING FINAL FILES (.java class and .csv files)
    filesystem::create_directory("./JUnitTests/"+class_name);

//----------------------------------------------------------------------------------------------------------------------------------------------------

    //CREATE ALL TEST 
    for(auto prototype : prototypes)
    {
        //GET ALL POSSIBILE VALUES FOR PARAMETERS

        vector<string> method_and_values = get_method_and_values_name(prototype);
        string method_name = method_and_values[0];
        method_and_values.erase(method_and_values.begin()); //method name is saved in the variable so we can erase it from the vector and leave only parameters

        cout<<"\n-----METHOD: "<<prototype<<"-----"<<endl;
        cout<<"#Do you want skip this method? (y/n)"<<endl;
        string skip_choice = "n";
        do
        {

            cout<<"Please specify your choice: ";
            cin>>skip_choice;

        } while (skip_choice.compare("y") != 0 && skip_choice.compare("n")!= 0);

        //IF METHOD ISN'T SKIPPED
        if(skip_choice.compare("n")==0)
        {

            cout<<endl<<"#Do you want specify input file source? (y/n)"<<endl;
            string input_source = "n";
            do
            {

                cout<<"Please specify your choice: ";
                cin>>input_source;

            } while (input_source.compare("y") != 0 && input_source.compare("n")!= 0);

            parameter_file.open(PARAMETER_FILE, ios_base::out);
            prototypes_tested.push_back(prototype); //Method is added to the prototypes to test because it wasn't skipped

            //IF TERMINAL INPUT MODE IS CHOSEN
            if(input_source.compare("n") == 0)
            {
                for(auto parameter : method_and_values)
                {
                    cout<<endl<<"Please specify, separated by a comma, all possible values of \""<<parameter<<"\""<<endl ;
                    cout<<"For a range of numbers you can use the syntax \"start:stop:step\": ";
                    cin>>possible_values_of_parameter;

                    //IF LAST LINE
                    if(parameter.compare(method_and_values.back()) != 0)
                    {
                        parameter_file<<parameter<<":"<<possible_values_of_parameter<<endl;
                    }  
                    else
                    {
                        parameter_file<<parameter<<":"<<possible_values_of_parameter;
                    }
                }

                cout<<endl<<"#Do you want specify Exclusive Constraints? (y/n)"<<endl;
                string constraints_choice = "n";
                do
                {
                    cout<<"Please specify your choice: ";
                    cin>>constraints_choice;
                } while (constraints_choice.compare("y") != 0 && constraints_choice.compare("n")!= 0);
                
                //IF CONSTRAINTS ARE DESIRED
                if(constraints_choice.compare("y") == 0)   
                {  
                    parameter_file<<endl<<"#CONSTRAINTS";
                    cout<<endl<<"To specify a combination to exclude, use the syntax \"value1,value2,...\"."<<endl;
                    cout<<"Use \"*\" if you don't care about a parameter."<<endl;
                }

                string input_constraint = "";
                
                while(constraints_choice.compare("y") == 0)
                {
                    
                    cout<<endl<<"Please specify a combination to exclude or \"stop\" to terminate: ";
                    cin>>input_constraint;
                    //IF STRING "stop" is NOT used DURING CONSTRAINT SPECIFICATION
                    if(input_constraint.compare("stop") != 0)
                    {
                        parameter_file << endl << input_constraint;
                    }
                    else
                    {
                        break; //exit from while if word "stop" is used
                    }
                }
                parameter_file.close();
            }
            //IF FILE INPUT MODE IS CHOSEN
            else
            {
                cout<<"Please specify the parameter file path: ";
                string parameter_input_file_path = "";
                cin>>parameter_input_file_path;
                //---------COPY INPUT FILE IN THE OUTPUT DIRECTORY---------// 
                ifstream source(parameter_input_file_path, ios::binary);
                ofstream dest(PARAMETER_FILE, ios::binary);

                istreambuf_iterator<char> begin_source(source);
                istreambuf_iterator<char> end_source;
                ostreambuf_iterator<char> begin_dest(dest);

                copy(begin_source, end_source, begin_dest);

                source.close();
                dest.close();
                //---------COPY INPUT FILE IN THE OUTPUT DIRECTORY---------// 
            }

//----------------------------------------------------------------------------------------------------------------------------------------------------
            
            //GENERATE TEST CASES
            cout<<"\nPlease specify the order of combinations for \""<<method_name<<"\": ";
            int k_degree = 0;
            cin>>k_degree;

            bool is_k_degree_out_of_bound = ((k_degree) > 0) && ((k_degree) <= method_and_values.size());
            assert(("K_DEGREE IS INCORRECT!",is_k_degree_out_of_bound));

            test_generator(k_degree, PARAMETER_FILE, TEST_CASE_FILE);

//----------------------------------------------------------------------------------------------------------------------------------------------------

            //GET ALL POSSIBILE ORACLES
            ifstream test_case_input_file;
            test_case_input_file.open(TEST_CASE_FILE, std::ios_base::in);
            vector<string> oracle;
            string test_case = "";
            string test_case_oracle = "";

            cout<<"\n-----ORACLE: "<<prototype<<"-----"<<endl;
            cout<<"Please specify the oracle for the following possible combinations"<<endl;
            cout<<"For a range of numbers you can use the syntax \"expected_value:delta\""<<endl;

            while(!test_case_input_file.eof())
            {
                getline(test_case_input_file, test_case);
                cout<<method_name<<"("<<test_case<<"): ";
                cin>>test_case_oracle;
                oracle.push_back(test_case_oracle);
            }

            append_oracle_to_csv(oracle, TEST_CASE_FILE,"./JUnitTests/"+class_name+"/"+method_name+"_test.csv");
        }
    }

//----------------------------------------------------------------------------------------------------------------------------------------------------
    
    //CREATE JAVA TEST CLASS
    test_source_code_generate(source_code_path, "./JUnitTests/"+class_name+"/", class_name, prototypes_tested);

//----------------------------------------------------------------------------------------------------------------------------------------------------

    //CONCLUSION
    cout<<endl<<"Your tests have been generated, please check JUnitTests/"+class_name+"/"<<endl;
    cout<<"WARNING: Default constructor is used for class "<<class_name<<". If needed, complete it in the code."<<endl;

//----------------------------------------------------------------------------------------------------------------------------------------------------
    }

    else
    {
        string mode = "";

        mode = MODE;
        source_code_path = SOURCE;

        //TAKE PROTOTYPE FORM SOURCECODE
        vector<string> all_prototypes = get_prototypes(source_code_path);
        string prototype;

        bool is_out_of_bound = ((stoi(PARAMETER)) > 0) && ((stoi(PARAMETER)) <= all_prototypes.size());
        assert(("INDEX OF METHOD TO TEST IS INCORRECT!",is_out_of_bound));

        //TAKE THE METHOD TO TEST
        prototype = all_prototypes[stoi(PARAMETER)-1];

        //GET CLASS NAME
        string class_name = get_class_name(source_code_path);

        if(mode.compare(TEST_CASE_MODE) == 0)
        {
            string parameter_input_file_path = "";

            //CREATE DIRECTORY FOR CONTAINING FINAL FILES (.java class and .csv files)
            filesystem::create_directory("./JUnitTests/"+class_name);
 
            parameter_input_file_path = INPUT_FILE;

            //---------COPY INPUT FILE IN THE OUTPUT DIRECTORY---------// 
                ifstream source(parameter_input_file_path, ios::binary);
                ofstream dest(PARAMETER_FILE, ios::binary);

                istreambuf_iterator<char> begin_source(source);
                istreambuf_iterator<char> end_source;
                ostreambuf_iterator<char> begin_dest(dest);

                copy(begin_source, end_source, begin_dest);

                source.close();
                dest.close();
            //---------COPY INPUT FILE IN THE OUTPUT DIRECTORY---------//

            bool is_k_degree_out_of_bound = (stoi(K_DEGREE) > 0) && (stoi(K_DEGREE) <= (get_method_and_values_name(prototype).size()-1));
            assert(("K_DEGREE IS INCORRECT!",is_k_degree_out_of_bound));

            test_generator(stoi(K_DEGREE), PARAMETER_FILE, TEST_CASE_FILE);
            cout<<"Your test cases for \""<<prototype<<"\" have been generated, please check tmp/test_case.csv"<<endl;
        }
        
        else if(mode.compare(ORACLE_GENERATION_MODE) == 0)
        {
            vector<string> method_and_values = get_method_and_values_name(prototype);
            string method_name = method_and_values[0];
        
            //GET ALL POSSIBILE ORACLES
            ifstream test_case_input_file;
            
            test_case_input_file.open(INPUT_FILE, std::ios_base::in);
            vector<string> oracle;
            string test_case = "";
            string test_case_oracle = "";

            cout<<"\n-----ORACLE: "<<prototype<<"-----"<<endl;
            cout<<"Please specify the oracle for the following possible combinations"<<endl;
            cout<<"For a range of numbers you can use the syntax \"expected_value:delta\""<<endl;

            while(!test_case_input_file.eof())
            {
                getline(test_case_input_file, test_case);
                cout<<method_name<<"("<<test_case<<"): ";
                cin>>test_case_oracle;
                oracle.push_back(test_case_oracle);
            }

            append_oracle_to_csv(oracle, TEST_CASE_FILE,"./JUnitTests/"+class_name+"/"+method_name+"_test.csv");
            cout<<endl<<"Your CSV with Oracles has been generated, please check JUnitTests/"+class_name+"/"+method_name+"_test.csv"<<endl;
        }
    
        else if(mode.compare(JUNIT_TEST_CLASS_GENERATION_MODE) == 0)
        {
            vector<string> prototype_tested;
            prototype_tested.push_back(prototype);
            test_source_code_generate(source_code_path, "./JUnitTests/"+class_name+"/", class_name, prototype_tested);
            cout<<"Your test has been generated, please check JUnitTests/"+class_name+"/"<<endl;
            cout<<"WARNING: Default constructor is used for class "<<class_name<<". If needed, complete it in the code."<<endl;
        }
    }
    
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xaf8, %rsp            # imm = 0xAF8
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x44dd(%rip), %rsi      # 0x23b9a
leaq 0x120(%rsp), %rdi
leaq 0x450(%rsp), %rdx
callq 0x7f56
cmpl $0x1, %ebp
jne 0x20107
movq 0x158be(%rip), %rdi     # 0x34fa0
leaq 0x461d(%rip), %rsi      # 0x23d06
callq 0x6430
movq 0x158e3(%rip), %rdi     # 0x34fd8
leaq 0x120(%rsp), %rsi
callq 0x6560
leaq 0x898(%rsp), %rdi
callq 0x66b0
leaq 0x430(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x65b0
leaq 0xf0(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x124c5
leaq 0x430(%rsp), %rdi
callq 0x61e0
xorps %xmm0, %xmm0
movaps %xmm0, 0x1a0(%rsp)
andq $0x0, 0x1b0(%rsp)
leaq 0x4439(%rip), %rsi      # 0x23b9a
leaq 0xd0(%rsp), %rdi
leaq 0x450(%rsp), %rdx
callq 0x7f56
leaq 0x410(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x65b0
leaq 0x50(%rsp), %rdi
leaq 0x410(%rsp), %rsi
callq 0x122d0
leaq 0x410(%rsp), %rdi
callq 0x61e0
leaq 0x4567(%rip), %rsi      # 0x23d18
leaq 0x698(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x450(%rsp), %rdi
leaq 0x698(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x2144e
leaq 0x450(%rsp), %rdi
callq 0x61b0
leaq 0x450(%rsp), %rbx
movq %rbx, %rdi
callq 0x21496
leaq 0x698(%rsp), %rdi
callq 0x61e0
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rax
movq %rax, 0x1c0(%rsp)
movq 0x1577c(%rip), %rbp     # 0x34fa0
leaq 0xb0(%rsp), %r15
cmpq 0x1c0(%rsp), %rsi
je 0x204a2
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %rsi, 0x1c8(%rsp)
callq 0x65b0
leaq 0xad8(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x65b0
leaq 0x108(%rsp), %rdi
movq %r12, %rsi
callq 0x126f4
movq %r12, %rdi
callq 0x61e0
movq 0x108(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x65b0
movq 0x108(%rsp), %rsi
leaq 0x108(%rsp), %rdi
callq 0x214ac
movq %rbp, %rdi
leaq 0x447b(%rip), %rsi      # 0x23d26
callq 0x6430
movq %rax, %rdi
leaq 0x10(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x446e(%rip), %rsi      # 0x23d35
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq %rbp, %rdi
leaq 0x445d(%rip), %rsi      # 0x23d3b
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq %r15, %rdi
leaq 0x3aa2(%rip), %rsi      # 0x23397
movq %rbx, %rdx
callq 0x7f56
movq %rbp, %rdi
leaq 0x4459(%rip), %rsi      # 0x23d60
callq 0x6430
movq 0x156c5(%rip), %rdi     # 0x34fd8
movq %r15, %rsi
callq 0x6560
movq %r15, %rdi
leaq 0x3b76(%rip), %rsi      # 0x2349b
callq 0x6140
testl %eax, %eax
je 0x1f941
movq %r15, %rdi
leaq 0x3a5f(%rip), %rsi      # 0x23397
callq 0x6140
testl %eax, %eax
jne 0x1f8fd
movq %r15, %rdi
leaq 0x3a4c(%rip), %rsi      # 0x23397
callq 0x6140
testl %eax, %eax
jne 0x200cd
movq %rbp, %rdi
callq 0x6210
movq %rax, %rdi
leaq 0x4413(%rip), %rsi      # 0x23d7d
callq 0x6430
movq %rax, %rdi
callq 0x6210
leaq 0x90(%rsp), %rdi
leaq 0x3a11(%rip), %rsi      # 0x23397
movq %rbx, %rdx
callq 0x7f56
leaq 0x90(%rsp), %r14
movq %rbp, %rdi
leaq 0x43c0(%rip), %rsi      # 0x23d60
callq 0x6430
movq 0x1562c(%rip), %rdi     # 0x34fd8
movq %r14, %rsi
callq 0x6560
movq %r14, %rdi
leaq 0x3add(%rip), %rsi      # 0x2349b
callq 0x6140
testl %eax, %eax
je 0x1f9da
movq %r14, %rdi
leaq 0x39c6(%rip), %rsi      # 0x23397
callq 0x6140
testl %eax, %eax
jne 0x1f996
leaq 0x898(%rsp), %rdi
leaq 0x43c2(%rip), %rsi      # 0x23dab
pushq $0x10
popq %rdx
callq 0x6060
leaq 0x1a0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x11228
leaq 0x90(%rsp), %rdi
leaq 0x3985(%rip), %rsi      # 0x23397
callq 0x6140
testl %eax, %eax
je 0x1faef
movq %rbp, %rdi
leaq 0x450e(%rip), %rsi      # 0x23f37
callq 0x6430
leaq 0x70(%rsp), %r14
movq %r14, %rdi
leaq 0x415d(%rip), %rsi      # 0x23b9a
movq %rbx, %rdx
callq 0x7f56
movq 0x1558c(%rip), %rdi     # 0x34fd8
movq %r14, %rsi
callq 0x6560
movq %rbx, %rdi
movq %r14, %rsi
pushq $0x4
popq %r14
movl %r14d, %edx
callq 0x6660
leaq 0x698(%rsp), %rdi
leaq 0x4336(%rip), %rsi      # 0x23dab
movl %r14d, %edx
callq 0x64b0
movq 0x450(%rsp), %rax
movq -0x18(%rax), %rax
movq 0x538(%rsp,%rax), %rdi
movq 0x698(%rsp), %rax
movq -0x18(%rax), %rax
movq 0x780(%rsp,%rax), %r8
xorl %r9d, %r9d
testq %r8, %r8
sete %r9b
pushq $-0x1
popq %rcx
movl %ecx, %esi
xorl %edx, %edx
callq 0x214b1
movq %rbx, %rdi
callq 0x60d0
leaq 0x698(%rsp), %rdi
callq 0x65e0
leaq 0x698(%rsp), %rdi
callq 0x6610
movq %rbx, %rdi
callq 0x60f0
leaq 0x70(%rsp), %rdi
jmp 0x1fd8a
movq 0x108(%rsp), %r12
movq 0x110(%rsp), %r14
cmpq %r14, %r12
je 0x1fc00
movq %rbx, %rdi
movq %r12, %rsi
callq 0x65b0
movq %rbp, %rdi
callq 0x6210
movq %rax, %rdi
leaq 0x4296(%rip), %rsi      # 0x23dbb
callq 0x6430
movq %rax, %rdi
movq %rbx, %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x40e7(%rip), %rsi      # 0x23c26
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq %rbp, %rdi
leaq 0x42a4(%rip), %rsi      # 0x23dfa
callq 0x6430
movq 0x15476(%rip), %rdi     # 0x34fd8
leaq 0xd0(%rsp), %rsi
callq 0x6560
movq 0x110(%rsp), %rsi
addq $-0x20, %rsi
movq %rbx, %rdi
callq 0x6040
testl %eax, %eax
je 0x1fbc0
leaq 0x898(%rsp), %rdi
movq %rbx, %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x2f73(%rip), %rsi      # 0x22b14
callq 0x6430
movq %rax, %rdi
leaq 0xd0(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
callq 0x6210
jmp 0x1fbef
leaq 0x898(%rsp), %rdi
movq %rbx, %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x2f3a(%rip), %rsi      # 0x22b14
callq 0x6430
movq %rax, %rdi
leaq 0xd0(%rsp), %rsi
callq 0x63d0
movq %rbx, %rdi
callq 0x61e0
addq $0x20, %r12
jmp 0x1faff
movq %rbp, %rdi
callq 0x6210
movq %rax, %rdi
leaq 0x422a(%rip), %rsi      # 0x23e3c
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq %rbx, %rdi
leaq 0x376e(%rip), %rsi      # 0x23397
leaq 0x698(%rsp), %rdx
callq 0x7f56
movq %rbp, %rdi
leaq 0x4120(%rip), %rsi      # 0x23d60
callq 0x6430
movq 0x1538c(%rip), %rdi     # 0x34fd8
movq %rbx, %rsi
callq 0x6560
movq %rbx, %rdi
leaq 0x383d(%rip), %rsi      # 0x2349b
callq 0x6140
testl %eax, %eax
je 0x1fc7a
movq %rbx, %rdi
leaq 0x3726(%rip), %rsi      # 0x23397
callq 0x6140
testl %eax, %eax
jne 0x1fc36
movq %rbx, %rdi
leaq 0x3817(%rip), %rsi      # 0x2349b
callq 0x6140
testl %eax, %eax
jne 0x1fcdf
leaq 0x898(%rsp), %rdi
callq 0x6210
movq %rax, %rdi
leaq 0x41ca(%rip), %rsi      # 0x23e6e
callq 0x6430
movq %rbp, %rdi
callq 0x6210
movq %rax, %rdi
leaq 0x41c0(%rip), %rsi      # 0x23e7b
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq %rbp, %rdi
leaq 0x41f2(%rip), %rsi      # 0x23ec4
callq 0x6430
movq %rax, %rdi
callq 0x6210
leaq 0x698(%rsp), %rdi
leaq 0x3eac(%rip), %rsi      # 0x23b9a
leaq 0x70(%rsp), %rdx
callq 0x7f56
movq %rbx, %rdi
leaq 0x3799(%rip), %rsi      # 0x2349b
callq 0x6140
testl %eax, %eax
jne 0x1fd6d
movq %rbp, %rdi
callq 0x6210
movq %rax, %rdi
leaq 0x41d4(%rip), %rsi      # 0x23ef1
callq 0x6430
movq 0x152af(%rip), %rdi     # 0x34fd8
leaq 0x698(%rsp), %rsi
callq 0x6560
leaq 0x698(%rsp), %rdi
leaq 0x41ed(%rip), %rsi      # 0x23f32
callq 0x6140
testl %eax, %eax
je 0x1fd6d
leaq 0x898(%rsp), %rdi
callq 0x6210
movq %rax, %rdi
leaq 0x698(%rsp), %rsi
callq 0x63d0
jmp 0x1fcf8
leaq 0x898(%rsp), %rdi
callq 0x65e0
leaq 0x698(%rsp), %rdi
callq 0x61e0
movq %rbx, %rdi
callq 0x61e0
movq %rbp, %rdi
leaq 0x41c7(%rip), %rsi      # 0x23f60
callq 0x6430
movq %rax, %rdi
leaq 0x30(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x4083(%rip), %rsi      # 0x23e38
callq 0x6430
andl $0x0, 0xc(%rsp)
movq 0x15212(%rip), %rdi     # 0x34fd8
leaq 0xc(%rsp), %rsi
callq 0x62b0
movslq 0xc(%rsp), %r12
testq %r12, %r12
jle 0x20d47
movq 0x110(%rsp), %rax
subq 0x108(%rsp), %rax
sarq $0x5, %rax
cmpq %r12, %rax
jb 0x20d47
leaq 0x678(%rsp), %rdi
leaq 0x3fa1(%rip), %rsi      # 0x23dab
movq %rbx, %rdx
callq 0x7f56
leaq 0xab8(%rsp), %r13
movq %r13, %rdi
leaq 0x41cc(%rip), %rsi      # 0x23ff0
leaq 0x698(%rsp), %rdx
callq 0x7f56
movl %r12d, %edi
leaq 0x678(%rsp), %r14
movq %r14, %rsi
movq %r13, %rdx
callq 0x1f1a0
movq %r13, %rdi
callq 0x61e0
movq %r14, %rdi
callq 0x61e0
movq %rbx, %rdi
callq 0x64e0
movq %rbx, %rdi
leaq 0x4187(%rip), %rsi      # 0x23ff0
pushq $0x8
popq %rdx
callq 0x62e0
xorps %xmm0, %xmm0
movaps %xmm0, 0x180(%rsp)
andq $0x0, 0x190(%rsp)
leaq 0x698(%rsp), %rdi
leaq 0x3d06(%rip), %r14      # 0x23b9a
movq %r14, %rsi
leaq 0x70(%rsp), %r12
movq %r12, %rdx
callq 0x7f56
movq %r12, %rdi
movq %r14, %rsi
leaq 0x140(%rsp), %rdx
callq 0x7f56
movq %rbp, %rdi
leaq 0x4143(%rip), %rsi      # 0x24004
callq 0x6430
movq %rax, %rdi
leaq 0x10(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x3e58(%rip), %rsi      # 0x23d35
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq %rbp, %rdi
leaq 0x411f(%rip), %rsi      # 0x24013
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq %rbp, %rdi
leaq 0x414a(%rip), %rsi      # 0x24055
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq 0x450(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x470(%rsp,%rax)
jne 0x1ffa1
movq %rbx, %rdi
leaq 0x698(%rsp), %rsi
callq 0x60b0
movq %rbp, %rdi
leaq 0x30(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x3cc3(%rip), %rsi      # 0x23c18
callq 0x6430
movq %rax, %rdi
leaq 0x698(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
leaq 0x4126(%rip), %rsi      # 0x2409a
callq 0x6430
movq 0x15058(%rip), %rdi     # 0x34fd8
leaq 0x70(%rsp), %rsi
callq 0x6560
leaq 0x180(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x11228
jmp 0x1ff18
leaq 0x3f8(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x178b6
leaq 0x658(%rsp), %rdi
leaq 0x402b(%rip), %rsi      # 0x23ff0
leaq 0xb(%rsp), %rdx
callq 0x7f56
leaq 0x1d0(%rsp), %r14
movq %r14, %rdi
leaq 0x3d37(%rip), %rsi      # 0x23d18
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x160(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
leaq 0x3b76(%rip), %rdx      # 0x23b76
callq 0x1ec6e
leaq 0x140(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
leaq 0x30(%rsp), %rdx
callq 0x1ec8d
leaq 0xa98(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
leaq 0x3b06(%rip), %rdx      # 0x23b38
callq 0x1ec6e
leaq 0x3f8(%rsp), %r14
movq %r14, %rdi
leaq 0x658(%rsp), %r12
movq %r12, %rsi
movq %r13, %rdx
callq 0x1ee98
movq %r13, %rdi
callq 0x61e0
leaq 0x140(%rsp), %rdi
callq 0x61e0
leaq 0x160(%rsp), %rdi
callq 0x61e0
leaq 0x1d0(%rsp), %rdi
callq 0x61e0
movq %r12, %rdi
callq 0x61e0
movq %r14, %rdi
callq 0x11254
leaq 0x70(%rsp), %rdi
callq 0x61e0
leaq 0x698(%rsp), %rdi
callq 0x61e0
leaq 0x180(%rsp), %rdi
callq 0x11254
movq %rbx, %rdi
callq 0x60f0
leaq 0x90(%rsp), %rdi
callq 0x61e0
movq %r15, %rdi
callq 0x61e0
leaq 0x30(%rsp), %rdi
callq 0x61e0
leaq 0x108(%rsp), %rdi
callq 0x11254
leaq 0x10(%rsp), %rdi
callq 0x61e0
movq 0x1c8(%rsp), %rsi
addq $0x20, %rsi
jmp 0x1f82c
leaq 0x3a8c(%rip), %rsi      # 0x23b9a
leaq 0x698(%rsp), %rdi
leaq 0x450(%rsp), %rdx
callq 0x7f56
movq 0x8(%rbx), %rsi
leaq 0x698(%rsp), %rdi
callq 0x6760
movq 0x10(%rbx), %rsi
leaq 0x120(%rsp), %rdi
callq 0x6760
leaq 0x378(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x65b0
leaq 0x160(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x124c5
leaq 0x378(%rsp), %rdi
callq 0x61e0
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x18(%rbx), %rsi
leaq 0x450(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x7f56
leaq 0x450(%rsp), %rdi
pushq $0xa
popq %rdx
xorl %esi, %esi
callq 0x11c9a
testl %eax, %eax
jle 0x20d66
movq 0x18(%rbx), %rsi
leaq 0x898(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x7f56
leaq 0x898(%rsp), %rdi
pushq $0xa
popq %rdx
xorl %esi, %esi
callq 0x11c9a
movslq %eax, %r14
movq 0x168(%rsp), %r15
subq 0x160(%rsp), %r15
sarq $0x5, %r15
leaq 0x898(%rsp), %rdi
callq 0x61e0
leaq 0x450(%rsp), %rdi
callq 0x61e0
cmpq %r14, %r15
jb 0x20d73
movq 0x18(%rbx), %rsi
leaq 0x450(%rsp), %rdi
leaq 0x898(%rsp), %rdx
callq 0x7f56
leaq 0x450(%rsp), %rdi
pushq $0xa
popq %rdx
xorl %esi, %esi
callq 0x11c9a
movq 0x160(%rsp), %rcx
cltq
shlq $0x5, %rax
leaq (%rcx,%rax), %rsi
addq $-0x20, %rsi
leaq 0xd0(%rsp), %rdi
callq 0x6250
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x358(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x65b0
leaq 0x50(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0x122d0
leaq 0x358(%rsp), %rdi
callq 0x61e0
leaq 0x3eaf(%rip), %rsi      # 0x24167
leaq 0x698(%rsp), %rdi
callq 0x6140
testl %eax, %eax
je 0x20669
leaq 0x3ee2(%rip), %rsi      # 0x241b6
leaq 0x698(%rsp), %rdi
callq 0x6140
testl %eax, %eax
je 0x20932
leaq 0x3f0c(%rip), %rsi      # 0x241fc
leaq 0x698(%rsp), %rdi
callq 0x6140
testl %eax, %eax
jne 0x20cf5
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
leaq 0xd0(%rsp), %rsi
callq 0x11228
leaq 0x278(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x65b0
leaq 0x39da(%rip), %rsi      # 0x23d18
leaq 0x450(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x381f(%rip), %rdx      # 0x23b76
leaq 0x258(%rsp), %rdi
leaq 0x450(%rsp), %rsi
callq 0x1ec6e
leaq 0x238(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x65b0
leaq 0x1f0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x178b6
leaq 0x278(%rsp), %rdi
leaq 0x258(%rsp), %rsi
leaq 0x238(%rsp), %rdx
leaq 0x1f0(%rsp), %rcx
callq 0x1e89d
leaq 0x1f0(%rsp), %rdi
callq 0x11254
leaq 0x238(%rsp), %rdi
callq 0x61e0
leaq 0x258(%rsp), %rdi
callq 0x61e0
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x278(%rsp), %rdi
callq 0x61e0
leaq 0x3e02(%rip), %rsi      # 0x241ff
leaq 0x898(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x3760(%rip), %rdx      # 0x23b76
leaq 0x450(%rsp), %rdi
leaq 0x898(%rsp), %rsi
callq 0x1ec6e
movq 0x14b6e(%rip), %rdi     # 0x34fa0
leaq 0x450(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
callq 0x6210
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x898(%rsp), %rdi
callq 0x61e0
movq 0x14b38(%rip), %rdi     # 0x34fa0
leaq 0x3c68(%rip), %rsi      # 0x240d7
callq 0x6430
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
callq 0x63d0
leaq 0x3c7f(%rip), %rsi      # 0x24107
movq %rax, %rdi
callq 0x6430
movq %rax, %rdi
callq 0x6210
leaq 0x10(%rsp), %rdi
jmp 0x20cf0
leaq 0x3d8(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x65b0
leaq 0x385a(%rip), %rsi      # 0x23d18
leaq 0x450(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x369f(%rip), %rdx      # 0x23b76
leaq 0x3b8(%rsp), %rdi
leaq 0x450(%rsp), %rsi
callq 0x1ec6e
leaq 0x398(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x65b0
leaq 0x220(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x178b6
leaq 0x3d8(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
leaq 0x398(%rsp), %rdx
leaq 0x220(%rsp), %rcx
callq 0x1e89d
leaq 0x220(%rsp), %rdi
callq 0x11254
leaq 0x398(%rsp), %rdi
callq 0x61e0
leaq 0x3b8(%rsp), %rdi
callq 0x61e0
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x3d8(%rsp), %rdi
callq 0x61e0
movq 0x14a20(%rip), %rdi     # 0x34fa0
callq 0x6210
movq %rax, %rbx
leaq 0x3b0f(%rip), %rsi      # 0x2409e
leaq 0x698(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x35ce(%rip), %rdx      # 0x23b76
leaq 0x450(%rsp), %rdi
leaq 0x698(%rsp), %rsi
callq 0x1ec6e
leaq 0x450(%rsp), %rsi
movq %rbx, %rdi
callq 0x63d0
movq %rax, %rdi
callq 0x6210
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x698(%rsp), %rdi
callq 0x61e0
movq 0x149aa(%rip), %rdi     # 0x34fa0
leaq 0x3ada(%rip), %rsi      # 0x240d7
callq 0x6430
leaq 0x50(%rsp), %rsi
movq %rax, %rdi
callq 0x63d0
leaq 0x3af1(%rip), %rsi      # 0x24107
movq %rax, %rdi
callq 0x6430
movq %rax, %rdi
callq 0x6210
leaq 0x50(%rsp), %rdi
callq 0x61e0
leaq 0xd0(%rsp), %rdi
callq 0x61e0
leaq 0x1a0(%rsp), %rdi
callq 0x11254
leaq 0xf0(%rsp), %rdi
callq 0x11254
leaq 0x898(%rsp), %rdi
callq 0x6610
jmp 0x20d26
leaq 0x352a(%rip), %rsi      # 0x23b9a
leaq 0x10(%rsp), %rdi
leaq 0x450(%rsp), %rdx
callq 0x7f56
leaq 0x368f(%rip), %rsi      # 0x23d18
leaq 0x898(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x450(%rsp), %rdi
leaq 0x898(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x2144e
leaq 0x450(%rsp), %rdi
callq 0x61b0
leaq 0x450(%rsp), %rdi
callq 0x21496
leaq 0x898(%rsp), %rdi
callq 0x61e0
movq 0x20(%rbx), %rsi
leaq 0x10(%rsp), %rdi
callq 0x6760
leaq 0x450(%rsp), %rdi
leaq 0x10(%rsp), %rsi
pushq $0x4
popq %rdx
callq 0x6660
leaq 0x36a7(%rip), %rsi      # 0x23dab
leaq 0x898(%rsp), %rdi
pushq $0x4
popq %rdx
callq 0x64b0
movq 0x450(%rsp), %rax
movq -0x18(%rax), %rax
movq 0x538(%rsp,%rax), %rdi
movq 0x898(%rsp), %rax
movq -0x18(%rax), %rax
movq 0x980(%rsp,%rax), %r8
xorl %r9d, %r9d
testq %r8, %r8
sete %r9b
pushq $-0x1
popq %rcx
movl %ecx, %esi
xorl %edx, %edx
callq 0x214b1
leaq 0x450(%rsp), %rdi
callq 0x60d0
leaq 0x898(%rsp), %rdi
callq 0x65e0
movq 0x28(%rbx), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x7f56
leaq 0x30(%rsp), %rdi
pushq $0xa
popq %rdx
xorl %esi, %esi
callq 0x11c9a
testl %eax, %eax
jle 0x20d92
movq 0x28(%rbx), %rsi
leaq 0xb0(%rsp), %rdi
leaq 0x140(%rsp), %rdx
callq 0x7f56
leaq 0xb0(%rsp), %rdi
pushq $0xa
popq %rdx
xorl %esi, %esi
callq 0x11c9a
movl %eax, %ebp
leaq 0x338(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x65b0
leaq 0x90(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x126f4
movslq %ebp, %r14
leaq 0x90(%rsp), %rdi
movq 0x8(%rdi), %r15
subq (%rdi), %r15
sarq $0x5, %r15
decq %r15
callq 0x11254
leaq 0x338(%rsp), %rdi
callq 0x61e0
leaq 0xb0(%rsp), %rdi
callq 0x61e0
leaq 0x30(%rsp), %rdi
callq 0x61e0
cmpq %r14, %r15
jb 0x20d9c
movq 0x28(%rbx), %rsi
leaq 0x30(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x7f56
leaq 0x30(%rsp), %rdi
pushq $0xa
popq %rdx
xorl %esi, %esi
callq 0x11c9a
movl %eax, %ebx
leaq 0x3545(%rip), %rsi      # 0x23dab
leaq 0x318(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0x7f56
leaq 0x376e(%rip), %rsi      # 0x23ff0
leaq 0x2f8(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x7f56
leaq 0x318(%rsp), %rsi
leaq 0x2f8(%rsp), %rdx
movl %ebx, %edi
callq 0x1f1a0
leaq 0x2f8(%rsp), %rdi
callq 0x61e0
leaq 0x318(%rsp), %rdi
callq 0x61e0
leaq 0x30(%rsp), %rdi
callq 0x61e0
movq 0x146ca(%rip), %rdi     # 0x34fa0
leaq 0x388d(%rip), %rsi      # 0x2416a
callq 0x6430
leaq 0xd0(%rsp), %rsi
movq %rax, %rdi
callq 0x63d0
leaq 0x3887(%rip), %rsi      # 0x24180
movq %rax, %rdi
callq 0x6430
movq %rax, %rdi
callq 0x6210
leaq 0x898(%rsp), %rdi
callq 0x6610
leaq 0x450(%rsp), %rdi
callq 0x60f0
leaq 0x10(%rsp), %rdi
callq 0x61e0
jmp 0x20cf5
leaq 0x2d8(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x65b0
leaq 0x1d0(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
callq 0x126f4
leaq 0x2d8(%rsp), %rdi
callq 0x61e0
movq 0x1d0(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x65b0
leaq 0x450(%rsp), %rdi
callq 0x64e0
movq 0x20(%rbx), %rsi
leaq 0x450(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x62e0
xorps %xmm0, %xmm0
movaps %xmm0, 0xf0(%rsp)
andq $0x0, 0x100(%rsp)
leaq 0x31e0(%rip), %rsi      # 0x23b9a
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x7f56
leaq 0x31ca(%rip), %rsi      # 0x23b9a
leaq 0x30(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x7f56
movq 0x145b7(%rip), %rdi     # 0x34fa0
leaq 0x3614(%rip), %rsi      # 0x24004
callq 0x6430
leaq 0xd0(%rsp), %rsi
movq %rax, %rdi
callq 0x63d0
leaq 0x3329(%rip), %rsi      # 0x23d35
movq %rax, %rdi
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq 0x1457d(%rip), %rdi     # 0x34fa0
leaq 0x35e9(%rip), %rsi      # 0x24013
callq 0x6430
movq %rax, %rdi
callq 0x6210
movq 0x14562(%rip), %rdi     # 0x34fa0
leaq 0x3610(%rip), %rsi      # 0x24055
callq 0x6430
movq %rax, %rdi
callq 0x6210
leaq 0x10(%rsp), %r14
leaq 0x31ba(%rip), %r13      # 0x23c18
leaq 0x3635(%rip), %rbp      # 0x2409a
movq 0x1456c(%rip), %rbx     # 0x34fd8
leaq 0x30(%rsp), %r15
leaq 0xf0(%rsp), %r12
movq 0x450(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x470(%rsp,%rax)
jne 0x20aec
leaq 0x450(%rsp), %rdi
movq %r14, %rsi
callq 0x60b0
movq 0x144fa(%rip), %rdi     # 0x34fa0
leaq 0x898(%rsp), %rsi
callq 0x63d0
movq %rax, %rdi
movq %r13, %rsi
callq 0x6430
movq %rax, %rdi
movq %r14, %rsi
callq 0x63d0
movq %rax, %rdi
movq %rbp, %rsi
callq 0x6430
movq %rbx, %rdi
movq %r15, %rsi
callq 0x6560
movq %r12, %rdi
movq %r15, %rsi
callq 0x11228
jmp 0x20a79
leaq 0x208(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x178b6
leaq 0x34e8(%rip), %rsi      # 0x23ff0
leaq 0x2b8(%rsp), %rdi
leaq 0x140(%rsp), %rdx
callq 0x7f56
leaq 0x31f4(%rip), %rsi      # 0x23d18
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x303c(%rip), %rdx      # 0x23b76
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x1ec6e
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x898(%rsp), %rdx
callq 0x1ec8d
leaq 0x2fc8(%rip), %rdx      # 0x23b38
leaq 0x298(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x1ec6e
leaq 0x208(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
leaq 0x298(%rsp), %rdx
callq 0x1ee98
leaq 0x298(%rsp), %rdi
callq 0x61e0
leaq 0xb0(%rsp), %rdi
callq 0x61e0
leaq 0x90(%rsp), %rdi
callq 0x61e0
leaq 0x70(%rsp), %rdi
callq 0x61e0
leaq 0x2b8(%rsp), %rdi
callq 0x61e0
leaq 0x208(%rsp), %rdi
callq 0x11254
movq 0x143ac(%rip), %rdi     # 0x34fa0
callq 0x6210
movq %rax, %rbx
leaq 0x35b6(%rip), %rsi      # 0x241b9
leaq 0x140(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x1ed4b
leaq 0x2f5a(%rip), %rdx      # 0x23b76
leaq 0x70(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x1ec6e
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x898(%rsp), %rdx
callq 0x1ec8d
leaq 0x2ee9(%rip), %rdx      # 0x23b38
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x1ec6e
leaq 0xb0(%rsp), %rsi
movq %rbx, %rdi
callq 0x63d0
movq %rax, %rdi
callq 0x6210
leaq 0xb0(%rsp), %rdi
callq 0x61e0
leaq 0x90(%rsp), %rdi
callq 0x61e0
leaq 0x70(%rsp), %rdi
callq 0x61e0
leaq 0x140(%rsp), %rdi
callq 0x61e0
leaq 0x30(%rsp), %rdi
callq 0x61e0
leaq 0x10(%rsp), %rdi
callq 0x61e0
leaq 0xf0(%rsp), %rdi
callq 0x11254
leaq 0x450(%rsp), %rdi
callq 0x60f0
leaq 0x898(%rsp), %rdi
callq 0x61e0
leaq 0x1d0(%rsp), %rdi
callq 0x11254
leaq 0x50(%rsp), %rdi
callq 0x61e0
leaq 0xd0(%rsp), %rdi
callq 0x61e0
leaq 0x160(%rsp), %rdi
callq 0x11254
leaq 0x698(%rsp), %rdi
callq 0x61e0
leaq 0x120(%rsp), %rdi
callq 0x61e0
xorl %eax, %eax
addq $0xaf8, %rsp            # imm = 0xAF8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3242(%rip), %rdi      # 0x23f90
leaq 0x326f(%rip), %rsi      # 0x23fc4
leaq 0x327d(%rip), %rcx      # 0x23fd9
movl $0xb4, %edx
callq 0x6310
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x33b3(%rip), %rdi      # 0x2412d
leaq 0x3243(%rip), %rsi      # 0x23fc4
leaq 0x3251(%rip), %rcx      # 0x23fd9
movl $0xeb, %edx
callq 0x6310
leaq 0x30(%rsp), %rdi
callq 0x61e0
leaq 0x31ed(%rip), %rdi      # 0x23f90
leaq 0x321a(%rip), %rsi      # 0x23fc4
leaq 0x3228(%rip), %rcx      # 0x23fd9
movl $0x10b, %edx            # imm = 0x10B
callq 0x6310
movq %rax, %rbx
jmp 0x20ef6
jmp 0x20feb
movq %rax, %rbx
leaq 0x1f0(%rsp), %rdi
callq 0x11254
jmp 0x20ddd
movq %rax, %rbx
leaq 0x238(%rsp), %rdi
callq 0x61e0
jmp 0x20def
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x61e0
jmp 0x20e01
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x61e0
jmp 0x20e13
movq %rax, %rbx
leaq 0x278(%rsp), %rdi
jmp 0x20efe
movq %rax, %rbx
jmp 0x20fc2
movq %rax, %rbx
jmp 0x20fcf
movq %rax, %rbx
jmp 0x20fd9
jmp 0x212cf
movq %rax, %rbx
leaq 0x298(%rsp), %rdi
callq 0x61e0
jmp 0x20e52
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x61e0
jmp 0x20e64
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x61e0
jmp 0x20e76
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x61e0
jmp 0x20e85
movq %rax, %rbx
leaq 0x2b8(%rsp), %rdi
callq 0x61e0
leaq 0x208(%rsp), %rdi
callq 0x11254
jmp 0x212d2
movq %rax, %rbx
jmp 0x20e92
movq %rax, %rbx
jmp 0x212dc
movq %rax, %rbx
jmp 0x212e6
movq %rax, %rbx
jmp 0x212f3
movq %rax, %rbx
jmp 0x21300
movq %rax, %rbx
jmp 0x2130d
movq %rax, %rbx
leaq 0x2d8(%rsp), %rdi
jmp 0x21133
jmp 0x20faa
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x898(%rsp), %rdi
callq 0x61e0
jmp 0x20fee
movq %rax, %rbx
leaq 0x2f8(%rsp), %rdi
callq 0x61e0
jmp 0x20f1d
movq %rax, %rbx
leaq 0x318(%rsp), %rdi
jmp 0x20f4f
jmp 0x20f58
jmp 0x20f58
jmp 0x21111
movq %rax, %rbx
leaq 0x338(%rsp), %rdi
callq 0x61e0
jmp 0x20f47
jmp 0x20f44
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x61e0
jmp 0x20f5b
jmp 0x20f58
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x61e0
jmp 0x21114
jmp 0x21111
movq %rax, %rbx
jmp 0x21121
jmp 0x20fa2
jmp 0x20fa2
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x21496
jmp 0x20f90
movq %rax, %rbx
leaq 0x898(%rsp), %rdi
callq 0x61e0
jmp 0x2112e
movq %rax, %rbx
jmp 0x2112e
movq %rax, %rbx
jmp 0x2131a
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x61e0
leaq 0x90(%rsp), %rdi
callq 0x61e0
leaq 0x70(%rsp), %rdi
callq 0x61e0
leaq 0x140(%rsp), %rdi
callq 0x61e0
jmp 0x212d2
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x21315
jmp 0x21098
jmp 0x212c2
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x11254
jmp 0x21017
movq %rax, %rbx
leaq 0x398(%rsp), %rdi
callq 0x61e0
jmp 0x21029
movq %rax, %rbx
leaq 0x3b8(%rsp), %rdi
callq 0x61e0
jmp 0x2103b
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x61e0
jmp 0x2104d
movq %rax, %rbx
leaq 0x3d8(%rsp), %rdi
jmp 0x213f5
movq %rax, %rbx
leaq 0x358(%rsp), %rdi
jmp 0x2131f
jmp 0x210c7
jmp 0x210c7
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x21496
jmp 0x2114d
movq %rax, %rbx
leaq 0x898(%rsp), %rdi
callq 0x61e0
jmp 0x2115d
movq %rax, %rbx
jmp 0x2114d
jmp 0x2115a
jmp 0x212c2
movq %rax, %rbx
leaq 0x410(%rsp), %rdi
jmp 0x213ff
jmp 0x2115a
movq %rax, %rbx
jmp 0x21404
movq %rax, %rbx
jmp 0x21324
movq %rax, %rbx
jmp 0x21411
movq %rax, %rbx
leaq 0x378(%rsp), %rdi
callq 0x61e0
jmp 0x2133e
movq %rax, %rbx
leaq 0x430(%rsp), %rdi
callq 0x61e0
jmp 0x2142b
jmp 0x2116a
movq %rax, %rbx
jmp 0x2142b
jmp 0x21172
jmp 0x21172
jmp 0x21111
movq %rax, %rbx
leaq 0x898(%rsp), %rdi
callq 0x6610
leaq 0x450(%rsp), %rdi
callq 0x60f0
leaq 0x10(%rsp), %rdi
callq 0x61e0
jmp 0x2131a
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x61e0
leaq 0x698(%rsp), %rdi
jmp 0x213f5
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
jmp 0x2131f
movq %rax, %rbx
jmp 0x2133e
movq %rax, %rbx
jmp 0x21438
jmp 0x212cf
jmp 0x2135d
jmp 0x2136f
jmp 0x21379
jmp 0x212c2
jmp 0x21195
movq %rax, %rbx
jmp 0x21289
jmp 0x2136f
movq %rax, %rbx
jmp 0x2127c
jmp 0x21379
movq %rax, %rbx
jmp 0x211f2
movq %rax, %rbx
leaq 0xa98(%rsp), %rdi
callq 0x61e0
jmp 0x211ce
movq %rax, %rbx
jmp 0x211ff
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
callq 0x61e0
jmp 0x211e5
movq %rax, %rbx
jmp 0x2120c
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x61e0
leaq 0x1d0(%rsp), %rdi
callq 0x61e0
leaq 0x658(%rsp), %rdi
callq 0x61e0
leaq 0x3f8(%rsp), %rdi
callq 0x11254
jmp 0x2138e
jmp 0x2136f
jmp 0x2136f
movq %rax, %rbx
jmp 0x21398
movq %rax, %rbx
leaq 0xab8(%rsp), %rdi
callq 0x61e0
jmp 0x2124d
movq %rax, %rbx
jmp 0x213a5
movq %rax, %rbx
leaq 0x678(%rsp), %rdi
jmp 0x21384
movq %rax, %rbx
jmp 0x213b2
jmp 0x2136f
jmp 0x21374
movq %rax, %rbx
leaq 0x698(%rsp), %rdi
callq 0x6610
leaq 0x450(%rsp), %rdi
callq 0x60f0
leaq 0x70(%rsp), %rdi
jmp 0x21384
movq %rax, %rbx
jmp 0x213f0
movq %rax, %rbx
leaq 0xad8(%rsp), %rdi
callq 0x61e0
jmp 0x213f0
movq %rax, %rbx
jmp 0x213e3
jmp 0x21358
jmp 0x21358
movq %rax, %rbx
jmp 0x213fa
jmp 0x21374
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x61e0
leaq 0x10(%rsp), %rdi
callq 0x61e0
leaq 0xf0(%rsp), %rdi
callq 0x11254
leaq 0x450(%rsp), %rdi
callq 0x60f0
leaq 0x898(%rsp), %rdi
callq 0x61e0
leaq 0x1d0(%rsp), %rdi
callq 0x11254
leaq 0x50(%rsp), %rdi
callq 0x61e0
leaq 0xd0(%rsp), %rdi
callq 0x61e0
leaq 0x160(%rsp), %rdi
callq 0x11254
leaq 0x698(%rsp), %rdi
callq 0x61e0
jmp 0x21438
jmp 0x2136f
jmp 0x2138b
jmp 0x2136f
jmp 0x21379
movq %rax, %rbx
jmp 0x213d9
movq %rax, %rbx
leaq 0x698(%rsp), %rdi
callq 0x61e0
jmp 0x2137c
movq %rax, %rbx
jmp 0x213bf
movq %rax, %rbx
jmp 0x213cc
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x61e0
jmp 0x213bf
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x61e0
leaq 0x698(%rsp), %rdi
callq 0x61e0
leaq 0x180(%rsp), %rdi
callq 0x11254
leaq 0x450(%rsp), %rdi
callq 0x60f0
leaq 0x90(%rsp), %rdi
callq 0x61e0
leaq 0xb0(%rsp), %rdi
callq 0x61e0
leaq 0x30(%rsp), %rdi
callq 0x61e0
leaq 0x108(%rsp), %rdi
callq 0x11254
leaq 0x10(%rsp), %rdi
callq 0x61e0
leaq 0x50(%rsp), %rdi
callq 0x61e0
leaq 0xd0(%rsp), %rdi
callq 0x61e0
leaq 0x1a0(%rsp), %rdi
callq 0x11254
leaq 0xf0(%rsp), %rdi
callq 0x11254
leaq 0x898(%rsp), %rdi
callq 0x6610
leaq 0x120(%rsp), %rdi
callq 0x61e0
movq %rbx, %rdi
callq 0x66e0
nop