// File: millanek[P]evo/evo_Dmin_combine.cpp
// Function: DminCombineMain(int, char**)
int DminCombineMain(int argc, char** argv) {
    parseDminCombineOptions(argc, argv);
    string line; // for reading the input files
    
    
    std::vector<std::istream*> dminstdErrFiles; std::vector<std::istream*> dminBBAAscoreFiles;
    for (int i = 0; i < opt::dminFiles.size(); i++) {
        std::istream* dminBBAAscoreFile;
        if (file_exists(opt::dminFiles[i] + "_combine.txt")) {
            dminBBAAscoreFile = createReader((opt::dminFiles[i] + "_combine.txt").c_str());
        } else if(file_exists(opt::dminFiles[i] + "_combine.txt.gz")) {
            dminBBAAscoreFile = createReader((opt::dminFiles[i] + "_combine.txt.gz").c_str());
        } else {
            std::cerr << "Can't fine the file: " << opt::dminFiles[i] + "_combine.txt" << " or " << opt::dminFiles[i] + "_combine.txt.gz" << std::endl;
        }
        dminBBAAscoreFiles.push_back(dminBBAAscoreFile);
        std::istream* dminstdErrFile;
        if (file_exists(opt::dminFiles[i] + "_combine_stderr.txt")) {
            dminstdErrFile = createReader((opt::dminFiles[i] + "_combine_stderr.txt").c_str());
        } else if(file_exists(opt::dminFiles[i] + "_combine_stderr.txt.gz")) {
            dminstdErrFile = createReader((opt::dminFiles[i] + "_combine_stderr.txt.gz").c_str());
        } else {
            std::cerr << "Can't fine the file: " << opt::dminFiles[i] + "_combine_stderr.txt" << " or " << opt::dminFiles[i] + "_combine_stderr.txt.gz" << std::endl;
        }
        dminstdErrFiles.push_back(dminstdErrFile);
        std::cerr << "Reading file " << opt::dminFiles[i] << std::endl;
    }
    
    
    // Now get the standard error values
    std::ofstream* outFileBBAA = new std::ofstream(opt::runName + "_BBAA.txt"); std::ofstream* outFileDmin = new std::ofstream(opt::runName + "_Dmin.txt");
    std::vector<double> BBAA_local_Ds; std::vector<double> ABBA_local_Ds; std::vector<double> BABA_local_Ds;
    string s1; string s2; string s3;
    double BBAAtotal = 0; double ABBAtotal = 0; double BABAtotal = 0;
    bool allDone = false;
    int processedTriosNumber = 0;
    do {
        processedTriosNumber++;
        if (processedTriosNumber % 10000 == 0) {
            //durationOverall = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
            std::cerr << "Processed " << processedTriosNumber << " trios" << std::endl;
            //std::cerr << "GettingCounts " << durationGettingCounts << " calculation " << durationCalculation << "secs" << std::endl;
        }
        if (opt::subsetStart != -1) {
            if (processedTriosNumber < opt::subsetStart) {
                for (int i = 0; i < dminBBAAscoreFiles.size(); i++) { getline(*dminBBAAscoreFiles[i], line); }
                for (int i = 0; i < dminstdErrFiles.size(); i++) { getline(*dminstdErrFiles[i], line); }
                continue;
            }
            if (processedTriosNumber > (opt::subsetStart+opt::subsetLength)) {
                std::cerr << "DONE" << std::endl; break;
            }
        }
        for (int i = 0; i < dminBBAAscoreFiles.size(); i++) {
            if (getline(*dminBBAAscoreFiles[i], line)) {
                std::vector<string> patternCounts = split(line, '\t');
                assert(patternCounts.size() == 6);
                if (i == 0) {
                    s1 = patternCounts[0];
                    s2 = patternCounts[1];
                    s3 = patternCounts[2];
                } else {
                    assert(s1 == patternCounts[0]); assert(s2 == patternCounts[1]); assert(s3 == patternCounts[2]);
                }
                double BBAA = stringToDouble(patternCounts[3]);
                double BABA = stringToDouble(patternCounts[4]);
                double ABBA = stringToDouble(patternCounts[5]);
                BBAAtotal += BBAA; ABBAtotal += ABBA; BABAtotal += BABA;
            }
        }
        //std::cerr << "ABBAtotal = " << ABBAtotal << std::endl;
        //std::cerr << "BABAtotal = " << BABAtotal << std::endl;
        double Dnum1 = ABBAtotal - BABAtotal; // assert(Dnum1 == Dnums[i][0]);
        double Dnum2 = ABBAtotal - BBAAtotal; // assert(Dnum2 == Dnums[i][1]);
        double Dnum3 = BBAAtotal - BABAtotal; // assert(Dnum3 == Dnums[i][2]);
        double Ddenom1 = ABBAtotal + BABAtotal; // assert(Ddenom1 == Ddenoms[i][0]);
        double Ddenom2 = ABBAtotal + BBAAtotal; // assert(Ddenom2 == Ddenoms[i][1]);
        double Ddenom3 = BBAAtotal + BABAtotal; // assert(Ddenom3 == Ddenoms[i][2]);
        //std::cerr << "Dnum1 = " << Dnum1 << std::endl;
        //std::cerr << "Ddenom1 = " << Ddenom1 << std::endl;
        double D1 = Dnum1/Ddenom1; double D2 = Dnum2/Ddenom2; double D3 = Dnum3/Ddenom3;
        //std::cerr << "D1 = " << D1 << std::endl;
        for (int i = 0; i < dminstdErrFiles.size(); i++) {
            if (getline(*dminstdErrFiles[i], line)) {
                std::vector<string> localDs = split(line, '\t');
                //assert(localDs.size() == 3 || localDs.size() == 0);
                if (localDs.size() == 3) {
                    std::vector<string> BBAA_D_strings = split(localDs[0], ',');
                    std::vector<string> BABA_D_strings = split(localDs[1], ',');
                    std::vector<string> ABBA_D_strings = split(localDs[2], ',');
                    for (int j = 0; j < BBAA_D_strings.size(); j++) {
                        //std::cerr << "BBAA_D_strings[j] = " << BBAA_D_strings[j] << std::endl;
                        double thisBBAA_localD = stringToDouble(BBAA_D_strings[j]);
                        if (!std::isnan(thisBBAA_localD)) BBAA_local_Ds.push_back(thisBBAA_localD);
                       // std::cerr << "BABA_D_strings[j] = " << BABA_D_strings[j] << std::endl;
                        double thisBABA_localD = stringToDouble(BABA_D_strings[j]);
                        if (!std::isnan(thisBABA_localD)) BABA_local_Ds.push_back(thisBABA_localD);
                        //std::cerr << "ABBA_D_strings[j] = " << ABBA_D_strings[j] << std::endl;
                        double thisABBA_localD = stringToDouble(ABBA_D_strings[j]);
                        if (!std::isnan(thisABBA_localD)) ABBA_local_Ds.push_back(thisABBA_localD);
                    }
                } else {
                    print_vector(localDs,std::cerr);
                }
            }
        }
        if (BBAA_local_Ds.size() == 0 || BABA_local_Ds.size() == 0 || ABBA_local_Ds.size() == 0) { // no info to estimate the standard error; probably all lines have been processed
            allDone = true; break;
        }
       // std::cerr << "D1 = " << D1 << std::endl;
        //print_vector(BBAA_local_Ds, std::cerr);
        double BBAAstdErr = jackknive_std_err(BBAA_local_Ds);
        //print_vector(BABA_local_Ds, std::cerr);
        double BABAstdErr = jackknive_std_err(BABA_local_Ds);
        //print_vector(ABBA_local_Ds, std::cerr);
        //std::cerr << "D1 = " << D1 << std::endl;
        double ABBAstdErr = jackknive_std_err(ABBA_local_Ds);
        //std::cerr << "D1 = " << D1 << std::endl;
        //std::cerr << "BBAAstdErr" << BBAAstdErr << std::endl;
        double D1_Z = fabs(D1)/BBAAstdErr; double D2_Z = fabs(D2)/BABAstdErr;
        double D3_Z = fabs(D3)/ABBAstdErr;
        //std::cerr << "D1_Z = " << D1_Z << std::endl;
        if (s1 == "Altcal" && s2 == "Altshe" && s3 == "Asplep") {
            std::cerr << "D1_Z = " << D1_Z << std::endl;
            std::cerr << "BBAAstdErr = " << BBAAstdErr << std::endl;
            print_vector(BBAA_local_Ds, std::cerr);
            std::cerr << "ABBAstdErr = " << ABBAstdErr << std::endl;
            std::cerr << "BABAstdErr = " << BABAstdErr << std::endl;
            std::cerr << "ABBAtotal = " << ABBAtotal << std::endl;
            std::cerr << "BABAtotal = " << BABAtotal << std::endl;
            std::cerr << "BBAAtotal = " << BBAAtotal << std::endl;
        }

        
        // Find which topology is in agreement with the counts of the BBAA, BABA, and ABBA patterns
        if (BBAAtotal >= BABAtotal && BBAAtotal >= ABBAtotal) {
            if (D1 >= 0)
                *outFileBBAA << s1 << "\t" << s2 << "\t" << s3;
            else
                *outFileBBAA << s2 << "\t" << s1 << "\t" << s3;
            *outFileBBAA << "\t" << fabs(D1) << "\t" << D1_Z << "\t";
            *outFileBBAA << BBAAtotal << "\t" << BABAtotal << "\t" << ABBAtotal << std::endl;
        } else if (BABAtotal >= BBAAtotal && BABAtotal >= ABBAtotal) {
            if (D2 >= 0)
                *outFileBBAA << s1 << "\t" << s3 << "\t" << s2;
            else
                *outFileBBAA << s3 << "\t" << s1 << "\t" << s2;
            *outFileBBAA << "\t" << fabs(D2) << "\t" << D2_Z << "\t";
            *outFileBBAA << BABAtotal << "\t" << BBAAtotal << "\t" << ABBAtotal << std::endl;
        } else if (ABBAtotal >= BBAAtotal && ABBAtotal >= BABAtotal) {
            if (D3 >= 0)
                *outFileBBAA << s3 << "\t" << s2 << "\t" << s1;
            else
                *outFileBBAA << s2 << "\t" << s3 << "\t" << s1;
            *outFileBBAA << "\t" << fabs(D3) << "\t" << D3_Z << "\t";
            *outFileBBAA << ABBAtotal << "\t" << BABAtotal << "\t" << BBAAtotal << std::endl;
        }
        
        // Find Dmin:
        if (fabs(D1) <= fabs(D2) && fabs(D1) <= fabs(D3)) { // (P3 == S3)
            if (D1 >= 0)
                *outFileDmin << s1 << "\t" << s2 << "\t" << s3 << "\t" << D1 << "\t" << D1_Z << "\t" << std::endl;
            else
                *outFileDmin << s1 << "\t" << s2 << "\t" << s3 << "\t" << fabs(D1) << "\t" << D1_Z << "\t"<< std::endl;
        } else if (fabs(D2) <= fabs(D1) && fabs(D2) <= fabs(D3)) { // (P3 == S2)
            if (D2 >= 0)
                *outFileDmin << s1 << "\t" << s3 << "\t" << s2 << "\t" << D2 << "\t" << D2_Z << "\t"<< std::endl;
            else
                *outFileDmin << s3 << "\t" << s1 << "\t" << s2 << "\t" << fabs(D2) << "\t" << D2_Z << "\t"<< std::endl;
        } else if (fabs(D3) <= fabs(D1) && fabs(D3) <= fabs(D2)) { // (P3 == S1)
            if (D3 >= 0)
                *outFileDmin << s3 << "\t" << s2 << "\t" << s1 << "\t" << D3 << "\t" << D3_Z << "\t"<< std::endl;
            else
                *outFileDmin << s2 << "\t" << s3 << "\t" << s1 << "\t" << fabs(D3) << "\t" << D3_Z << "\t" << std::endl;;
        }
        
        BBAA_local_Ds.clear(); ABBA_local_Ds.clear(); BABA_local_Ds.clear();
        BBAAtotal = 0; ABBAtotal = 0; BABAtotal = 0;
    } while(!allDone);
  
    
    
    /*
    for (int i = 0; i != trios.size(); i++) { //
        // Get the standard error values:
        double D1stdErr = jackknive_std_err(regionDs[i][0]); double D2stdErr = jackknive_std_err(regionDs[i][1]);
        double D3stdErr = jackknive_std_err(regionDs[i][2]);
        // Get the D values
        //Dnums[i][0] = ABBAtotals[i] - BABAtotals[i]; Dnums[i][1] = ABBAtotals[i] - BBAAtotals[i]; Dnums[i][2] = BBAAtotals[i] - BABAtotals[i];
        double Dnum1 = ABBAtotals[i] - BABAtotals[i]; // assert(Dnum1 == Dnums[i][0]);
        double Dnum2 = ABBAtotals[i] - BBAAtotals[i]; // assert(Dnum2 == Dnums[i][1]);
        double Dnum3 = BBAAtotals[i] - BABAtotals[i]; // assert(Dnum3 == Dnums[i][2]);
        // Ddenoms[i][0] = ABBAtotals[i] + BABAtotals[i]; Ddenoms[i][1] = ABBAtotals[i] + BBAAtotals[i]; Ddenoms[i][2] = BBAAtotals[i] + BABAtotals[i];
        double Ddenom1 = ABBAtotals[i] + BABAtotals[i]; // assert(Ddenom1 == Ddenoms[i][0]);
        double Ddenom2 = ABBAtotals[i] + BBAAtotals[i]; // assert(Ddenom2 == Ddenoms[i][1]);
        double Ddenom3 = BBAAtotals[i] + BABAtotals[i]; // assert(Ddenom3 == Ddenoms[i][2]);
        double D1 = Dnum1/Ddenom1; double D2 = Dnum2/Ddenom2; double D3 = Dnum3/Ddenom3;
        // Get the Z-scores
        double D1_Z = abs(D1)/D1stdErr; double D2_Z = abs(D2)/D2stdErr;
        double D3_Z = abs(D3)/D3stdErr;
        
        
        // Find which topology is in agreement with the counts of the BBAA, BABA, and ABBA patterns
        if (BBAAtotals[i] >= BABAtotals[i] && BBAAtotals[i] >= ABBAtotals[i]) {
            if (D1 >= 0)
                *outFileBBAA << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2];
            else
                *outFileBBAA << trios[i][1] << "\t" << trios[i][0] << "\t" << trios[i][2];
            *outFileBBAA << "\t" << abs(D1) << "\t" << D1_Z << "\t";
            *outFileBBAA << BBAAtotals[i] << "\t" << BABAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
        } else if (BABAtotals[i] >= BBAAtotals[i] && BABAtotals[i] >= ABBAtotals[i]) {
            if (D2 >= 0)
                *outFileBBAA << trios[i][0] << "\t" << trios[i][2] << "\t" << trios[i][1];
            else
                *outFileBBAA << trios[i][2] << "\t" << trios[i][0] << "\t" << trios[i][1];
            *outFileBBAA << "\t" << abs(D2) << "\t" << D2_Z << "\t";
            *outFileBBAA << BABAtotals[i] << "\t" << BBAAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
        } else if (ABBAtotals[i] >= BBAAtotals[i] && ABBAtotals[i] >= BABAtotals[i]) {
            if (D3 >= 0)
                *outFileBBAA << trios[i][2] << "\t" << trios[i][1] << "\t" << trios[i][0];
            else
                *outFileBBAA << trios[i][1] << "\t" << trios[i][2] << "\t" << trios[i][0];
            *outFileBBAA << "\t" << abs(D3) << "\t" << D3_Z << "\t";
            *outFileBBAA << ABBAtotals[i] << "\t" << BABAtotals[i] << "\t" << BBAAtotals[i] << std::endl;
        }
        
        // Find Dmin:
        if (abs(D1) <= abs(D2) && abs(D1) <= abs(D3)) { // (P3 == S3)
            if (D1 >= 0)
                *outFileDmin << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2] << "\t" << D1 << "\t" << D1_Z << "\t" << std::endl;
            else
                *outFileDmin << trios[i][1] << "\t" << trios[i][0] << "\t" << trios[i][2] << "\t" << abs(D1) << "\t" << D1_Z << "\t"<< std::endl;
            // if (BBAAtotals[i] < BABAtotals[i] || BBAAtotals[i] < ABBAtotals[i])
            //     std::cerr << "\t" << "WARNING: Dmin tree different from DAF tree" << std::endl;
        } else if (abs(D2) <= abs(D1) && abs(D2) <= abs(D3)) { // (P3 == S2)
            if (D2 >= 0)
                *outFileDmin << trios[i][0] << "\t" << trios[i][2] << "\t" << trios[i][1] << "\t" << D2 << "\t" << D2_Z << "\t"<< std::endl;
            else
                *outFileDmin << trios[i][2] << "\t" << trios[i][0] << "\t" << trios[i][1] << "\t" << abs(D2) << "\t" << D2_Z << "\t"<< std::endl;
            // if (BABAtotals[i] < BBAAtotals[i] || BABAtotals[i] < ABBAtotals[i])
            //     std::cerr << "\t" << "WARNING: Dmin tree different from DAF tree" << std::endl;
        } else if (abs(D3) <= abs(D1) && abs(D3) <= abs(D2)) { // (P3 == S1)
            if (D3 >= 0)
                *outFileDmin << trios[i][2] << "\t" << trios[i][1] << "\t" << trios[i][0] << "\t" << D3 << "\t" << D3_Z << "\t"<< std::endl;
            else
                *outFileDmin << trios[i][1] << "\t" << trios[i][2] << "\t" << trios[i][0] << "\t" << abs(D3) << "\t" << D3_Z << "\t" << std::endl;;
            // if (ABBAtotals[i] < BBAAtotals[i] || ABBAtotals[i] < BABAtotals[i])
            //     std::cerr << "\t" << "WARNING: Dmin tree different from DAF tree" << std::endl;
        }
        
        // Output a simple file that can be used for combining multiple local runs:
        *outFileCombine << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2] << "\t" << BBAAtotals[i] << "\t" << BABAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
        print_vector(regionDs[i][0], *outFileCombineStdErr, ',', false); *outFileCombineStdErr << "\t"; print_vector(regionDs[i][1], *outFileCombineStdErr, ',', false); *outFileCombineStdErr << "\t";
        print_vector(regionDs[i][2], *outFileCombineStdErr, ',',false); *outFileCombineStdErr << std::endl;
        
        //std::cerr << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2] << "\t" << D1 << "\t" << D2 << "\t" << D3 << "\t" << BBAAtotals[i] << "\t" << BABAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
    }
     */
    return 0;
    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xba0, %rsp            # imm = 0xBA0
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0xf9970
leaq -0x30(%rbp), %rdi
callq 0xa820
leaq -0x48(%rbp), %rdi
callq 0xf9e40
leaq -0x60(%rbp), %rdi
callq 0xf9e40
movl $0x0, -0x64(%rbp)
movslq -0x64(%rbp), %rax
movq %rax, -0x608(%rbp)
leaq 0xa455e(%rip), %rdi     # 0x19b250
callq 0x3ffd0
movq %rax, %rcx
movq -0x608(%rbp), %rax
cmpq %rcx, %rax
jae 0xf761d
movslq -0x64(%rbp), %rsi
leaq 0xa453b(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x53070(%rip), %rdx     # 0x149d94
leaq -0x90(%rbp), %rdi
callq 0x3da80
jmp 0xf6d32
leaq -0x90(%rbp), %rdi
callq 0xf9e60
movb %al, -0x609(%rbp)
jmp 0xf6d46
leaq -0x90(%rbp), %rdi
callq 0xac88
movb -0x609(%rbp), %al
testb $0x1, %al
jne 0xf6d61
jmp 0xf6ea2
movslq -0x64(%rbp), %rsi
leaq 0xa44e4(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x53019(%rip), %rdx     # 0x149d94
leaq -0xe0(%rbp), %rdi
callq 0x3da80
jmp 0xf6d89
leaq -0xe0(%rbp), %rdi
callq 0xa220
movq %rax, -0x620(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x618(%rbp)
callq 0xab60
movq -0x620(%rbp), %rsi
movq -0x618(%rbp), %rdx
leaq -0xc0(%rbp), %rdi
callq 0x2d6c0
jmp 0xf6dcb
leaq -0xc0(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x628(%rbp)
jmp 0xf6de5
movq -0x628(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xac88
leaq -0xe1(%rbp), %rdi
callq 0xa640
leaq -0xe0(%rbp), %rdi
callq 0xac88
jmp 0xf7157
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf993d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf6e85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xac88
leaq -0xe1(%rbp), %rdi
callq 0xa640
leaq -0xe0(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movslq -0x64(%rbp), %rsi
leaq 0xa43a3(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x53e6d(%rip), %rdx     # 0x14ad29
leaq -0x108(%rbp), %rdi
callq 0x3da80
jmp 0xf6eca
leaq -0x108(%rbp), %rdi
callq 0xf9e60
movb %al, -0x629(%rbp)
jmp 0xf6ede
leaq -0x108(%rbp), %rdi
callq 0xac88
movb -0x629(%rbp), %al
testb $0x1, %al
jne 0xf6ef9
jmp 0xf7023
movslq -0x64(%rbp), %rsi
leaq 0xa434c(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x53e16(%rip), %rdx     # 0x14ad29
leaq -0x148(%rbp), %rdi
callq 0x3da80
jmp 0xf6f21
leaq -0x148(%rbp), %rdi
callq 0xa220
movq %rax, -0x640(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x638(%rbp)
callq 0xab60
movq -0x640(%rbp), %rsi
movq -0x638(%rbp), %rdx
leaq -0x128(%rbp), %rdi
callq 0x2d6c0
jmp 0xf6f63
leaq -0x128(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x648(%rbp)
jmp 0xf6f7d
movq -0x648(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xac88
leaq -0x149(%rbp), %rdi
callq 0xa640
leaq -0x148(%rbp), %rdi
callq 0xac88
jmp 0xf7155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf7006
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xac88
leaq -0x149(%rbp), %rdi
callq 0xa640
leaq -0x148(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movq 0xa1fc6(%rip), %rdi     # 0x198ff0
leaq 0x53d08(%rip), %rsi     # 0x14ad39
callq 0xa5c0
movq %rax, -0x650(%rbp)
jmp 0xf703f
movslq -0x64(%rbp), %rsi
leaq 0xa4206(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x52d3b(%rip), %rdx     # 0x149d94
leaq -0x170(%rbp), %rdi
callq 0x3da80
jmp 0xf7067
movq -0x650(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xa520
movq %rax, -0x658(%rbp)
jmp 0xf7083
movq -0x658(%rbp), %rdi
leaq 0x53cbe(%rip), %rsi     # 0x14ad4f
callq 0xa5c0
movq %rax, -0x660(%rbp)
jmp 0xf709f
movslq -0x64(%rbp), %rsi
leaq 0xa41a6(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x53c70(%rip), %rdx     # 0x14ad29
leaq -0x190(%rbp), %rdi
callq 0x3da80
jmp 0xf70c7
movq -0x660(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xa520
movq %rax, -0x668(%rbp)
jmp 0xf70e3
movq -0x668(%rbp), %rdi
movq 0xa1e97(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf70f8
leaq -0x190(%rbp), %rdi
callq 0xac88
leaq -0x170(%rbp), %rdi
callq 0xac88
jmp 0xf7155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf7144
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0xac88
leaq -0x170(%rbp), %rdi
callq 0xac88
jmp 0xf993d
jmp 0xf7157
leaq -0x60(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xf9f00
jmp 0xf7166
movslq -0x64(%rbp), %rsi
leaq 0xa40df(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x52c21(%rip), %rdx     # 0x149da1
leaq -0x1b8(%rbp), %rdi
callq 0x3da80
jmp 0xf718e
leaq -0x1b8(%rbp), %rdi
callq 0xf9e60
movb %al, -0x669(%rbp)
jmp 0xf71a2
leaq -0x1b8(%rbp), %rdi
callq 0xac88
movb -0x669(%rbp), %al
testb $0x1, %al
jne 0xf71bd
jmp 0xf72ea
movslq -0x64(%rbp), %rsi
leaq 0xa4088(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x52bca(%rip), %rdx     # 0x149da1
leaq -0x1f8(%rbp), %rdi
callq 0x3da80
jmp 0xf71e5
leaq -0x1f8(%rbp), %rdi
callq 0xa220
movq %rax, -0x680(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0xab60
movq -0x680(%rbp), %rsi
movq -0x678(%rbp), %rdx
leaq -0x1d8(%rbp), %rdi
callq 0x2d6c0
jmp 0xf7227
leaq -0x1d8(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x688(%rbp)
jmp 0xf7241
movq -0x688(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xac88
leaq -0x1f9(%rbp), %rdi
callq 0xa640
leaq -0x1f8(%rbp), %rdi
callq 0xac88
jmp 0xf75a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf72cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xac88
leaq -0x1f9(%rbp), %rdi
callq 0xa640
leaq -0x1f8(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movslq -0x64(%rbp), %rsi
leaq 0xa3f5b(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x53a50(%rip), %rdx     # 0x14ad54
leaq -0x220(%rbp), %rdi
callq 0x3da80
jmp 0xf7312
leaq -0x220(%rbp), %rdi
callq 0xf9e60
movb %al, -0x689(%rbp)
jmp 0xf7326
leaq -0x220(%rbp), %rdi
callq 0xac88
movb -0x689(%rbp), %al
testb $0x1, %al
jne 0xf7341
jmp 0xf746e
movslq -0x64(%rbp), %rsi
leaq 0xa3f04(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x539f9(%rip), %rdx     # 0x14ad54
leaq -0x260(%rbp), %rdi
callq 0x3da80
jmp 0xf7369
leaq -0x260(%rbp), %rdi
callq 0xa220
movq %rax, -0x6a0(%rbp)
leaq -0x261(%rbp), %rdi
movq %rdi, -0x698(%rbp)
callq 0xab60
movq -0x6a0(%rbp), %rsi
movq -0x698(%rbp), %rdx
leaq -0x240(%rbp), %rdi
callq 0x2d6c0
jmp 0xf73ab
leaq -0x240(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x6a8(%rbp)
jmp 0xf73c5
movq -0x6a8(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xac88
leaq -0x261(%rbp), %rdi
callq 0xa640
leaq -0x260(%rbp), %rdi
callq 0xac88
jmp 0xf75a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf7451
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xac88
leaq -0x261(%rbp), %rdi
callq 0xa640
leaq -0x260(%rbp), %rdi
callq 0xac88
jmp 0xf993d
movq 0xa1b7b(%rip), %rdi     # 0x198ff0
leaq 0x538bd(%rip), %rsi     # 0x14ad39
callq 0xa5c0
movq %rax, -0x6b0(%rbp)
jmp 0xf748a
movslq -0x64(%rbp), %rsi
leaq 0xa3dbb(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x528fd(%rip), %rdx     # 0x149da1
leaq -0x288(%rbp), %rdi
callq 0x3da80
jmp 0xf74b2
movq -0x6b0(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xa520
movq %rax, -0x6b8(%rbp)
jmp 0xf74ce
movq -0x6b8(%rbp), %rdi
leaq 0x53873(%rip), %rsi     # 0x14ad4f
callq 0xa5c0
movq %rax, -0x6c0(%rbp)
jmp 0xf74ea
movslq -0x64(%rbp), %rsi
leaq 0xa3d5b(%rip), %rdi     # 0x19b250
callq 0x3d940
movq %rax, %rsi
leaq 0x53850(%rip), %rdx     # 0x14ad54
leaq -0x2a8(%rbp), %rdi
callq 0x3da80
jmp 0xf7512
movq -0x6c0(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0xa520
movq %rax, -0x6c8(%rbp)
jmp 0xf752e
movq -0x6c8(%rbp), %rdi
movq 0xa1a4c(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf7543
leaq -0x2a8(%rbp), %rdi
callq 0xac88
leaq -0x288(%rbp), %rdi
callq 0xac88
jmp 0xf75a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf758f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0xac88
leaq -0x288(%rbp), %rdi
callq 0xac88
jmp 0xf993d
jmp 0xf75a2
leaq -0x48(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xf9f00
jmp 0xf75b4
movq 0xa1a35(%rip), %rdi     # 0x198ff0
leaq 0x537a9(%rip), %rsi     # 0x14ad6b
callq 0xa5c0
movq %rax, -0x6d0(%rbp)
jmp 0xf75d0
movslq -0x64(%rbp), %rsi
leaq 0xa3c75(%rip), %rdi     # 0x19b250
callq 0x3d940
movq -0x6d0(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0x6d8(%rbp)
jmp 0xf75f8
movq -0x6d8(%rbp), %rdi
movq 0xa1982(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf760d
jmp 0xf760f
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0xf6ce0
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x6e0(%rbp)
jmp 0xf7630
movb $0x1, -0x2d1(%rbp)
leaq 0xa3c2a(%rip), %rsi     # 0x19b268
leaq 0x5273b(%rip), %rdx     # 0x149d80
leaq -0x2d0(%rbp), %rdi
callq 0x3da80
jmp 0xf7653
movq -0x6e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
movl $0x10, %edx
callq 0xac00
jmp 0xf766d
movb $0x0, -0x2d1(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0xac88
movq -0x6e0(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x6e8(%rbp)
jmp 0xf76a1
movb $0x1, -0x301(%rbp)
leaq 0xa3bb9(%rip), %rsi     # 0x19b268
leaq 0x526d4(%rip), %rdx     # 0x149d8a
leaq -0x300(%rbp), %rdi
callq 0x3da80
jmp 0xf76c4
movq -0x6e8(%rbp), %rdi
leaq -0x300(%rbp), %rsi
movl $0x10, %edx
callq 0xac00
jmp 0xf76de
movb $0x0, -0x301(%rbp)
leaq -0x300(%rbp), %rdi
callq 0xac88
movq -0x6e8(%rbp), %rax
movq %rax, -0x2e0(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x48410
leaq -0x338(%rbp), %rdi
callq 0x48410
leaq -0x350(%rbp), %rdi
callq 0x48410
leaq -0x370(%rbp), %rdi
callq 0xa820
leaq -0x390(%rbp), %rdi
callq 0xa820
leaq -0x3b0(%rbp), %rdi
callq 0xa820
xorps %xmm0, %xmm0
movsd %xmm0, -0x3b8(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x3c0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x3c8(%rbp)
movb $0x0, -0x3c9(%rbp)
movl $0x0, -0x3d0(%rbp)
movl -0x3d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3d0(%rbp)
movl -0x3d0(%rbp), %eax
movl $0x2710, %ecx           # imm = 0x2710
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0xf78c9
movq 0xa184a(%rip), %rdi     # 0x198ff0
leaq 0x45199(%rip), %rsi     # 0x13c946
callq 0xa5c0
movq %rax, -0x6f0(%rbp)
jmp 0xf77bb
movq -0x6f0(%rbp), %rdi
movl -0x3d0(%rbp), %esi
callq 0xab20
movq %rax, -0x6f8(%rbp)
jmp 0xf77d6
movq -0x6f8(%rbp), %rdi
leaq 0x53595(%rip), %rsi     # 0x14ad79
callq 0xa5c0
movq %rax, -0x700(%rbp)
jmp 0xf77f2
movq -0x700(%rbp), %rdi
movq 0xa1788(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf7807
jmp 0xf78c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf783e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0xac88
testb $0x1, -0x2d1(%rbp)
jne 0xf7849
jmp 0xf785a
movq -0x6e0(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xf993d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf7891
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x300(%rbp), %rdi
callq 0xac88
testb $0x1, -0x301(%rbp)
jne 0xf789c
jmp 0xf78ad
movq -0x6e8(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xf993d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf98f5
cmpl $-0x1, 0xa20f0(%rip)    # 0x1999c0
je 0xf79fd
movl -0x3d0(%rbp), %eax
cmpl 0xa20de(%rip), %eax     # 0x1999c0
jge 0xf79af
movl $0x0, -0x3d4(%rbp)
movslq -0x3d4(%rbp), %rax
movq %rax, -0x708(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xf9f70
movq %rax, %rcx
movq -0x708(%rbp), %rax
cmpq %rcx, %rax
jae 0xf7949
movslq -0x3d4(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0xf9f90
movq (%rax), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa0d0
jmp 0xf7936
jmp 0xf7938
movl -0x3d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3d4(%rbp)
jmp 0xf78f2
movl $0x0, -0x3d8(%rbp)
movslq -0x3d8(%rbp), %rax
movq %rax, -0x710(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xf9f70
movq %rax, %rcx
movq -0x710(%rbp), %rax
cmpq %rcx, %rax
jae 0xf79aa
movslq -0x3d8(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0xf9f90
movq (%rax), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa0d0
jmp 0xf7997
jmp 0xf7999
movl -0x3d8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3d8(%rbp)
jmp 0xf7953
jmp 0xf9877
movl -0x3d0(%rbp), %eax
movl 0xa2005(%rip), %ecx     # 0x1999c0
addl 0xa2003(%rip), %ecx     # 0x1999c4
cmpl %ecx, %eax
jle 0xf79fb
movq 0xa1624(%rip), %rdi     # 0x198ff0
leaq 0x52468(%rip), %rsi     # 0x149e3b
callq 0xa5c0
movq %rax, -0x718(%rbp)
jmp 0xf79e1
movq -0x718(%rbp), %rdi
movq 0xa1599(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf79f6
jmp 0xf9887
jmp 0xf79fd
movl $0x0, -0x3dc(%rbp)
movslq -0x3dc(%rbp), %rax
movq %rax, -0x720(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xf9f70
movq %rax, %rcx
movq -0x720(%rbp), %rax
cmpq %rcx, %rax
jae 0xf7e08
movslq -0x3dc(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0xf9f90
movq (%rax), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa0d0
movq %rax, -0x728(%rbp)
jmp 0xf7a56
movq -0x728(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa740
movb %al, -0x729(%rbp)
jmp 0xf7a74
movb -0x729(%rbp), %al
testb $0x1, %al
jne 0xf7a83
jmp 0xf7df2
leaq -0x3f8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0xf7a9a
leaq -0x3f8(%rbp), %rdi
callq 0x3ffd0
cmpq $0x6, %rax
jne 0xf7aae
jmp 0xf7acd
leaq 0x532cb(%rip), %rdi     # 0x14ad80
leaq 0x532de(%rip), %rsi     # 0x14ad9a
movl $0x68, %edx
leaq 0x532e7(%rip), %rcx     # 0x14adaf
callq 0xa390
cmpl $0x0, -0x3dc(%rbp)
jne 0xf7b5b
xorl %eax, %eax
movl %eax, %esi
leaq -0x3f8(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x370(%rbp), %rdi
callq 0xa060
jmp 0xf7afb
leaq -0x3f8(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x390(%rbp), %rdi
callq 0xa060
jmp 0xf7b1d
leaq -0x3f8(%rbp), %rdi
movl $0x2, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x3b0(%rbp), %rdi
callq 0xa060
jmp 0xf7b3f
jmp 0xf7c31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf7de1
leaq -0x3f8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x370(%rbp), %rdi
callq 0x39210
testb $0x1, %al
jne 0xf7b80
jmp 0xf7b82
jmp 0xf7ba1
leaq 0x53248(%rip), %rdi     # 0x14add1
leaq 0x5320a(%rip), %rsi     # 0x14ad9a
movl $0x6e, %edx
leaq 0x53213(%rip), %rcx     # 0x14adaf
callq 0xa390
leaq -0x3f8(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x390(%rbp), %rdi
callq 0x39210
testb $0x1, %al
jne 0xf7bc7
jmp 0xf7bc9
jmp 0xf7be8
leaq 0x53218(%rip), %rdi     # 0x14ade8
leaq 0x531c3(%rip), %rsi     # 0x14ad9a
movl $0x6e, %edx
leaq 0x531cc(%rip), %rcx     # 0x14adaf
callq 0xa390
leaq -0x3f8(%rbp), %rdi
movl $0x2, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x3b0(%rbp), %rdi
callq 0x39210
testb $0x1, %al
jne 0xf7c0e
jmp 0xf7c10
jmp 0xf7c2f
leaq 0x531e8(%rip), %rdi     # 0x14adff
leaq 0x5317c(%rip), %rsi     # 0x14ad9a
movl $0x6e, %edx
leaq 0x53185(%rip), %rcx     # 0x14adaf
callq 0xa390
jmp 0xf7c31
leaq -0x3f8(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x420(%rbp), %rdi
callq 0xa250
jmp 0xf7c53
leaq -0x420(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x738(%rbp)
jmp 0xf7c69
leaq -0x420(%rbp), %rdi
callq 0xac88
movsd -0x738(%rbp), %xmm0
movsd %xmm0, -0x400(%rbp)
leaq -0x3f8(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x448(%rbp), %rdi
callq 0xa250
jmp 0xf7ca7
leaq -0x448(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x740(%rbp)
jmp 0xf7cbd
leaq -0x448(%rbp), %rdi
callq 0xac88
movsd -0x740(%rbp), %xmm0
movsd %xmm0, -0x428(%rbp)
leaq -0x3f8(%rbp), %rdi
movl $0x5, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x470(%rbp), %rdi
callq 0xa250
jmp 0xf7cfb
leaq -0x470(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x748(%rbp)
jmp 0xf7d11
leaq -0x470(%rbp), %rdi
callq 0xac88
movsd -0x748(%rbp), %xmm0
movsd %xmm0, -0x450(%rbp)
movsd -0x400(%rbp), %xmm0
addsd -0x3b8(%rbp), %xmm0
movsd %xmm0, -0x3b8(%rbp)
movsd -0x450(%rbp), %xmm0
addsd -0x3c0(%rbp), %xmm0
movsd %xmm0, -0x3c0(%rbp)
movsd -0x428(%rbp), %xmm0
addsd -0x3c8(%rbp), %xmm0
movsd %xmm0, -0x3c8(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x3dfa0
jmp 0xf7df2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x420(%rbp), %rdi
callq 0xac88
jmp 0xf7de1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x448(%rbp), %rdi
callq 0xac88
jmp 0xf7de1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x470(%rbp), %rdi
callq 0xac88
leaq -0x3f8(%rbp), %rdi
callq 0x3dfa0
jmp 0xf98f5
jmp 0xf7df4
movl -0x3dc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3dc(%rbp)
jmp 0xf7a07
movsd -0x3c0(%rbp), %xmm0
subsd -0x3c8(%rbp), %xmm0
movsd %xmm0, -0x478(%rbp)
movsd -0x3c0(%rbp), %xmm0
subsd -0x3b8(%rbp), %xmm0
movsd %xmm0, -0x480(%rbp)
movsd -0x3b8(%rbp), %xmm0
subsd -0x3c8(%rbp), %xmm0
movsd %xmm0, -0x488(%rbp)
movsd -0x3c0(%rbp), %xmm0
addsd -0x3c8(%rbp), %xmm0
movsd %xmm0, -0x490(%rbp)
movsd -0x3c0(%rbp), %xmm0
addsd -0x3b8(%rbp), %xmm0
movsd %xmm0, -0x498(%rbp)
movsd -0x3b8(%rbp), %xmm0
addsd -0x3c8(%rbp), %xmm0
movsd %xmm0, -0x4a0(%rbp)
movsd -0x478(%rbp), %xmm0
divsd -0x490(%rbp), %xmm0
movsd %xmm0, -0x4a8(%rbp)
movsd -0x480(%rbp), %xmm0
divsd -0x498(%rbp), %xmm0
movsd %xmm0, -0x4b0(%rbp)
movsd -0x488(%rbp), %xmm0
divsd -0x4a0(%rbp), %xmm0
movsd %xmm0, -0x4b8(%rbp)
movl $0x0, -0x4bc(%rbp)
movslq -0x4bc(%rbp), %rax
movq %rax, -0x750(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xf9f70
movq %rax, %rcx
movq -0x750(%rbp), %rax
cmpq %rcx, %rax
jae 0xf83aa
movslq -0x4bc(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0xf9f90
movq (%rax), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa0d0
movq %rax, -0x758(%rbp)
jmp 0xf7f39
movq -0x758(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa740
movb %al, -0x759(%rbp)
jmp 0xf7f57
movb -0x759(%rbp), %al
testb $0x1, %al
jne 0xf7f66
jmp 0xf8394
leaq -0x4d8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0xf7f7d
leaq -0x4d8(%rbp), %rdi
callq 0x3ffd0
cmpq $0x3, %rax
jne 0xf8313
xorl %eax, %eax
movl %eax, %esi
leaq -0x4d8(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x4f0(%rbp), %rdi
movl $0x2c, %edx
callq 0x7bbe0
jmp 0xf7fb9
leaq -0x4d8(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x508(%rbp), %rdi
movl $0x2c, %edx
callq 0x7bbe0
jmp 0xf7fe0
leaq -0x4d8(%rbp), %rdi
movl $0x2, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x520(%rbp), %rdi
movl $0x2c, %edx
callq 0x7bbe0
jmp 0xf8007
movl $0x0, -0x524(%rbp)
movslq -0x524(%rbp), %rax
movq %rax, -0x768(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rcx
movq -0x768(%rbp), %rax
cmpq %rcx, %rax
jae 0xf82c4
movslq -0x524(%rbp), %rsi
leaq -0x4f0(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x550(%rbp), %rdi
callq 0xa250
jmp 0xf8062
leaq -0x550(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x770(%rbp)
jmp 0xf8078
leaq -0x550(%rbp), %rdi
callq 0xac88
movsd -0x770(%rbp), %xmm0
movsd %xmm0, -0x530(%rbp)
movsd -0x530(%rbp), %xmm0
callq 0xb90e0
movb %al, -0x771(%rbp)
jmp 0xf80a9
movb -0x771(%rbp), %al
testb $0x1, %al
jne 0xf814f
jmp 0xf80b9
leaq -0x320(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0xb77b0
jmp 0xf80ce
jmp 0xf814f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf8383
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf8305
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf82f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0xf82ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x550(%rbp), %rdi
callq 0xac88
jmp 0xf82ed
movslq -0x524(%rbp), %rsi
leaq -0x508(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x578(%rbp), %rdi
callq 0xa250
jmp 0xf8173
leaq -0x578(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x780(%rbp)
jmp 0xf8189
leaq -0x578(%rbp), %rdi
callq 0xac88
movsd -0x780(%rbp), %xmm0
movsd %xmm0, -0x558(%rbp)
movsd -0x558(%rbp), %xmm0
callq 0xb90e0
movb %al, -0x781(%rbp)
jmp 0xf81ba
movb -0x781(%rbp), %al
testb $0x1, %al
jne 0xf8200
jmp 0xf81c6
leaq -0x350(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0xb77b0
jmp 0xf81db
jmp 0xf8200
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x578(%rbp), %rdi
callq 0xac88
jmp 0xf82ed
movslq -0x524(%rbp), %rsi
leaq -0x520(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x5a0(%rbp), %rdi
callq 0xa250
jmp 0xf8224
leaq -0x5a0(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x790(%rbp)
jmp 0xf823a
leaq -0x5a0(%rbp), %rdi
callq 0xac88
movsd -0x790(%rbp), %xmm0
movsd %xmm0, -0x580(%rbp)
movsd -0x580(%rbp), %xmm0
callq 0xb90e0
movb %al, -0x791(%rbp)
jmp 0xf826b
movb -0x791(%rbp), %al
testb $0x1, %al
jne 0xf82ae
jmp 0xf8277
leaq -0x338(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0xb77b0
jmp 0xf828c
jmp 0xf82ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x5a0(%rbp), %rdi
callq 0xac88
jmp 0xf82ed
jmp 0xf82b0
movl -0x524(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x524(%rbp)
jmp 0xf8011
leaq -0x520(%rbp), %rdi
callq 0x3dfa0
leaq -0x508(%rbp), %rdi
callq 0x3dfa0
leaq -0x4f0(%rbp), %rdi
callq 0x3dfa0
jmp 0xf8375
leaq -0x520(%rbp), %rdi
callq 0x3dfa0
leaq -0x508(%rbp), %rdi
callq 0x3dfa0
leaq -0x4f0(%rbp), %rdi
callq 0x3dfa0
jmp 0xf8383
leaq -0x5b8(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x3fee0
jmp 0xf8328
movq 0xa0cc1(%rip), %rsi     # 0x198ff0
leaq -0x5b8(%rbp), %rdi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x50da0
jmp 0xf8347
leaq -0x5b8(%rbp), %rdi
callq 0x3dfa0
jmp 0xf8375
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x3dfa0
jmp 0xf8383
leaq -0x4d8(%rbp), %rdi
callq 0x3dfa0
jmp 0xf8394
leaq -0x4d8(%rbp), %rdi
callq 0x3dfa0
jmp 0xf98f5
jmp 0xf8396
movl -0x4bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4bc(%rbp)
jmp 0xf7eea
leaq -0x320(%rbp), %rdi
callq 0x3ebf0
cmpq $0x0, %rax
je 0xf83e0
leaq -0x350(%rbp), %rdi
callq 0x3ebf0
cmpq $0x0, %rax
je 0xf83e0
leaq -0x338(%rbp), %rdi
callq 0x3ebf0
cmpq $0x0, %rax
jne 0xf83ec
movb $0x1, -0x3c9(%rbp)
jmp 0xf9887
leaq -0x320(%rbp), %rdi
callq 0x52290
movsd %xmm0, -0x7a0(%rbp)
jmp 0xf8402
movsd -0x7a0(%rbp), %xmm0
movsd %xmm0, -0x5c0(%rbp)
leaq -0x350(%rbp), %rdi
callq 0x52290
movsd %xmm0, -0x7a8(%rbp)
jmp 0xf8428
movsd -0x7a8(%rbp), %xmm0
movsd %xmm0, -0x5c8(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x52290
movsd %xmm0, -0x7b0(%rbp)
jmp 0xf844e
movsd -0x7b0(%rbp), %xmm0
movsd %xmm0, -0x5d0(%rbp)
movsd -0x4a8(%rbp), %xmm0
movapd 0x51902(%rip), %xmm1    # 0x149d70
pand %xmm1, %xmm0
movsd -0x5c0(%rbp), %xmm2
divsd %xmm2, %xmm0
movsd %xmm0, -0x5d8(%rbp)
movsd -0x4b0(%rbp), %xmm0
pand %xmm1, %xmm0
movsd -0x5c8(%rbp), %xmm2
divsd %xmm2, %xmm0
movsd %xmm0, -0x5e0(%rbp)
movsd -0x4b8(%rbp), %xmm0
pand %xmm1, %xmm0
movsd -0x5d0(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x5e8(%rbp)
leaq 0x52949(%rip), %rsi     # 0x14ae16
leaq -0x370(%rbp), %rdi
callq 0x2d770
movb %al, -0x7b1(%rbp)
jmp 0xf84e1
movb -0x7b1(%rbp), %al
testb $0x1, %al
jne 0xf84f0
jmp 0xf87cb
leaq 0x52926(%rip), %rsi     # 0x14ae1d
leaq -0x390(%rbp), %rdi
callq 0x2d770
movb %al, -0x7b2(%rbp)
jmp 0xf850b
movb -0x7b2(%rbp), %al
testb $0x1, %al
jne 0xf851a
jmp 0xf87cb
leaq 0x52903(%rip), %rsi     # 0x14ae24
leaq -0x3b0(%rbp), %rdi
callq 0x2d770
movb %al, -0x7b3(%rbp)
jmp 0xf8535
movb -0x7b3(%rbp), %al
testb $0x1, %al
jne 0xf8544
jmp 0xf87cb
movq 0xa0aa5(%rip), %rdi     # 0x198ff0
leaq 0x528d9(%rip), %rsi     # 0x14ae2b
callq 0xa5c0
movq %rax, -0x7c0(%rbp)
jmp 0xf8560
movq -0x7c0(%rbp), %rdi
movsd -0x5d8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x7c8(%rbp)
jmp 0xf857d
movq -0x7c8(%rbp), %rdi
movq 0xa09fd(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf8592
movq 0xa0a57(%rip), %rdi     # 0x198ff0
leaq 0x52893(%rip), %rsi     # 0x14ae33
callq 0xa5c0
movq %rax, -0x7d0(%rbp)
jmp 0xf85ae
movq -0x7d0(%rbp), %rdi
movsd -0x5c0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x7d8(%rbp)
jmp 0xf85cb
movq -0x7d8(%rbp), %rdi
movq 0xa09af(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf85e0
leaq -0x600(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x53120
jmp 0xf85f5
movq 0xa09f4(%rip), %rsi     # 0x198ff0
leaq -0x600(%rbp), %rdi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x92580
jmp 0xf8614
leaq -0x600(%rbp), %rdi
callq 0x3ecb0
movq 0xa09c9(%rip), %rdi     # 0x198ff0
leaq 0x52813(%rip), %rsi     # 0x14ae41
callq 0xa5c0
movq %rax, -0x7e0(%rbp)
jmp 0xf863c
movq -0x7e0(%rbp), %rdi
movsd -0x5d0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x7e8(%rbp)
jmp 0xf8659
movq -0x7e8(%rbp), %rdi
movq 0xa0921(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf866e
movq 0xa097b(%rip), %rdi     # 0x198ff0
leaq 0x527d3(%rip), %rsi     # 0x14ae4f
callq 0xa5c0
movq %rax, -0x7f0(%rbp)
jmp 0xf868a
movq -0x7f0(%rbp), %rdi
movsd -0x5c8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x7f8(%rbp)
jmp 0xf86a7
movq -0x7f8(%rbp), %rdi
movq 0xa08d3(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf86bc
movq 0xa092d(%rip), %rdi     # 0x198ff0
leaq 0x52793(%rip), %rsi     # 0x14ae5d
callq 0xa5c0
movq %rax, -0x800(%rbp)
jmp 0xf86d8
movq -0x800(%rbp), %rdi
movsd -0x3c0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x808(%rbp)
jmp 0xf86f5
movq -0x808(%rbp), %rdi
movq 0xa0885(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf870a
movq 0xa08df(%rip), %rdi     # 0x198ff0
leaq 0x52752(%rip), %rsi     # 0x14ae6a
callq 0xa5c0
movq %rax, -0x810(%rbp)
jmp 0xf8726
movq -0x810(%rbp), %rdi
movsd -0x3c8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x818(%rbp)
jmp 0xf8743
movq -0x818(%rbp), %rdi
movq 0xa0837(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf8758
movq 0xa0891(%rip), %rdi     # 0x198ff0
leaq 0x52711(%rip), %rsi     # 0x14ae77
callq 0xa5c0
movq %rax, -0x820(%rbp)
jmp 0xf8774
movq -0x820(%rbp), %rdi
movsd -0x3b8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x828(%rbp)
jmp 0xf8791
movq -0x828(%rbp), %rdi
movq 0xa07e9(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf87a6
jmp 0xf87cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x600(%rbp), %rdi
callq 0x3ecb0
jmp 0xf98f5
movsd -0x3b8(%rbp), %xmm0
ucomisd -0x3c8(%rbp), %xmm0
jb 0xf8a58
movsd -0x3b8(%rbp), %xmm0
ucomisd -0x3c0(%rbp), %xmm0
jb 0xf8a58
movsd -0x4a8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xf8896
movq -0x2b0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0x830(%rbp)
jmp 0xf8828
movq -0x830(%rbp), %rdi
leaq 0x3d6a8(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x838(%rbp)
jmp 0xf8844
movq -0x838(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0x840(%rbp)
jmp 0xf8860
movq -0x840(%rbp), %rdi
leaq 0x3d670(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x848(%rbp)
jmp 0xf887c
movq -0x848(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
jmp 0xf8891
jmp 0xf891d
movq -0x2b0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0x850(%rbp)
jmp 0xf88b2
movq -0x850(%rbp), %rdi
leaq 0x3d61e(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x858(%rbp)
jmp 0xf88ce
movq -0x858(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0x860(%rbp)
jmp 0xf88ea
movq -0x860(%rbp), %rdi
leaq 0x3d5e6(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x868(%rbp)
jmp 0xf8906
movq -0x868(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
jmp 0xf891b
jmp 0xf891d
movq -0x2b0(%rbp), %rdi
leaq 0x3d5b3(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x870(%rbp)
jmp 0xf8939
movq -0x870(%rbp), %rdi
movaps 0x51429(%rip), %xmm1    # 0x149d70
movsd -0x4a8(%rbp), %xmm0
pand %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x878(%rbp)
jmp 0xf8961
movq -0x878(%rbp), %rdi
leaq 0x3d56f(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x880(%rbp)
jmp 0xf897d
movq -0x880(%rbp), %rdi
movsd -0x5d8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x888(%rbp)
jmp 0xf899a
movq -0x888(%rbp), %rdi
leaq 0x3d536(%rip), %rsi     # 0x135ede
callq 0xa5c0
jmp 0xf89af
movq -0x2b0(%rbp), %rdi
movsd -0x3b8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x890(%rbp)
jmp 0xf89cc
movq -0x890(%rbp), %rdi
leaq 0x3d504(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x898(%rbp)
jmp 0xf89e8
movq -0x898(%rbp), %rdi
movsd -0x3c8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x8a0(%rbp)
jmp 0xf8a05
movq -0x8a0(%rbp), %rdi
leaq 0x3d4cb(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8a8(%rbp)
jmp 0xf8a21
movq -0x8a8(%rbp), %rdi
movsd -0x3c0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x8b0(%rbp)
jmp 0xf8a3e
movq -0x8b0(%rbp), %rdi
movq 0xa053c(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf8a53
jmp 0xf8f73
movsd -0x3c8(%rbp), %xmm0
ucomisd -0x3b8(%rbp), %xmm0
jb 0xf8ce5
movsd -0x3c8(%rbp), %xmm0
ucomisd -0x3c0(%rbp), %xmm0
jb 0xf8ce5
movsd -0x4b0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xf8b23
movq -0x2b0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0x8b8(%rbp)
jmp 0xf8ab5
movq -0x8b8(%rbp), %rdi
leaq 0x3d41b(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8c0(%rbp)
jmp 0xf8ad1
movq -0x8c0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0x8c8(%rbp)
jmp 0xf8aed
movq -0x8c8(%rbp), %rdi
leaq 0x3d3e3(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8d0(%rbp)
jmp 0xf8b09
movq -0x8d0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
jmp 0xf8b1e
jmp 0xf8baa
movq -0x2b0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0x8d8(%rbp)
jmp 0xf8b3f
movq -0x8d8(%rbp), %rdi
leaq 0x3d391(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8e0(%rbp)
jmp 0xf8b5b
movq -0x8e0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0x8e8(%rbp)
jmp 0xf8b77
movq -0x8e8(%rbp), %rdi
leaq 0x3d359(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8f0(%rbp)
jmp 0xf8b93
movq -0x8f0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
jmp 0xf8ba8
jmp 0xf8baa
movq -0x2b0(%rbp), %rdi
leaq 0x3d326(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8f8(%rbp)
jmp 0xf8bc6
movq -0x8f8(%rbp), %rdi
movaps 0x5119c(%rip), %xmm1    # 0x149d70
movsd -0x4b0(%rbp), %xmm0
pand %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x900(%rbp)
jmp 0xf8bee
movq -0x900(%rbp), %rdi
leaq 0x3d2e2(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x908(%rbp)
jmp 0xf8c0a
movq -0x908(%rbp), %rdi
movsd -0x5e0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x910(%rbp)
jmp 0xf8c27
movq -0x910(%rbp), %rdi
leaq 0x3d2a9(%rip), %rsi     # 0x135ede
callq 0xa5c0
jmp 0xf8c3c
movq -0x2b0(%rbp), %rdi
movsd -0x3c8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x918(%rbp)
jmp 0xf8c59
movq -0x918(%rbp), %rdi
leaq 0x3d277(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x920(%rbp)
jmp 0xf8c75
movq -0x920(%rbp), %rdi
movsd -0x3b8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x928(%rbp)
jmp 0xf8c92
movq -0x928(%rbp), %rdi
leaq 0x3d23e(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x930(%rbp)
jmp 0xf8cae
movq -0x930(%rbp), %rdi
movsd -0x3c0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x938(%rbp)
jmp 0xf8ccb
movq -0x938(%rbp), %rdi
movq 0xa02af(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf8ce0
jmp 0xf8f71
movsd -0x3c0(%rbp), %xmm0
ucomisd -0x3b8(%rbp), %xmm0
jb 0xf8f6f
movsd -0x3c0(%rbp), %xmm0
ucomisd -0x3c8(%rbp), %xmm0
jb 0xf8f6f
movsd -0x4b8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xf8db0
movq -0x2b0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0x940(%rbp)
jmp 0xf8d42
movq -0x940(%rbp), %rdi
leaq 0x3d18e(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x948(%rbp)
jmp 0xf8d5e
movq -0x948(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0x950(%rbp)
jmp 0xf8d7a
movq -0x950(%rbp), %rdi
leaq 0x3d156(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x958(%rbp)
jmp 0xf8d96
movq -0x958(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
jmp 0xf8dab
jmp 0xf8e37
movq -0x2b0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0x960(%rbp)
jmp 0xf8dcc
movq -0x960(%rbp), %rdi
leaq 0x3d104(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x968(%rbp)
jmp 0xf8de8
movq -0x968(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0x970(%rbp)
jmp 0xf8e04
movq -0x970(%rbp), %rdi
leaq 0x3d0cc(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x978(%rbp)
jmp 0xf8e20
movq -0x978(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
jmp 0xf8e35
jmp 0xf8e37
movq -0x2b0(%rbp), %rdi
leaq 0x3d099(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x980(%rbp)
jmp 0xf8e53
movq -0x980(%rbp), %rdi
movaps 0x50f0f(%rip), %xmm1    # 0x149d70
movsd -0x4b8(%rbp), %xmm0
pand %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x988(%rbp)
jmp 0xf8e7b
movq -0x988(%rbp), %rdi
leaq 0x3d055(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x990(%rbp)
jmp 0xf8e97
movq -0x990(%rbp), %rdi
movsd -0x5e8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x998(%rbp)
jmp 0xf8eb4
movq -0x998(%rbp), %rdi
leaq 0x3d01c(%rip), %rsi     # 0x135ede
callq 0xa5c0
jmp 0xf8ec9
movq -0x2b0(%rbp), %rdi
movsd -0x3c0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x9a0(%rbp)
jmp 0xf8ee6
movq -0x9a0(%rbp), %rdi
leaq 0x3cfea(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x9a8(%rbp)
jmp 0xf8f02
movq -0x9a8(%rbp), %rdi
movsd -0x3c8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x9b0(%rbp)
jmp 0xf8f1f
movq -0x9b0(%rbp), %rdi
leaq 0x3cfb1(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x9b8(%rbp)
jmp 0xf8f3b
movq -0x9b8(%rbp), %rdi
movsd -0x3b8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x9c0(%rbp)
jmp 0xf8f58
movq -0x9c0(%rbp), %rdi
movq 0xa0022(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf8f6d
jmp 0xf8f6f
jmp 0xf8f71
jmp 0xf8f73
movsd -0x4a8(%rbp), %xmm1
movaps 0x50dee(%rip), %xmm0    # 0x149d70
pand %xmm0, %xmm1
movsd -0x4b0(%rbp), %xmm0
movaps 0x50ddb(%rip), %xmm2    # 0x149d70
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0xf925d
movsd -0x4a8(%rbp), %xmm1
movaps 0x50dbe(%rip), %xmm0    # 0x149d70
pand %xmm0, %xmm1
movsd -0x4b8(%rbp), %xmm0
movaps 0x50dab(%rip), %xmm2    # 0x149d70
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0xf925d
movsd -0x4a8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xf911c
movq -0x2e0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0x9c8(%rbp)
jmp 0xf9004
movq -0x9c8(%rbp), %rdi
leaq 0x3cecc(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x9d0(%rbp)
jmp 0xf9020
movq -0x9d0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0x9d8(%rbp)
jmp 0xf903c
movq -0x9d8(%rbp), %rdi
leaq 0x3ce94(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x9e0(%rbp)
jmp 0xf9058
movq -0x9e0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0x9e8(%rbp)
jmp 0xf9074
movq -0x9e8(%rbp), %rdi
leaq 0x3ce5c(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x9f0(%rbp)
jmp 0xf9090
movq -0x9f0(%rbp), %rdi
movsd -0x4a8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x9f8(%rbp)
jmp 0xf90ad
movq -0x9f8(%rbp), %rdi
leaq 0x3ce23(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa00(%rbp)
jmp 0xf90c9
movq -0xa00(%rbp), %rdi
movsd -0x5d8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xa08(%rbp)
jmp 0xf90e6
movq -0xa08(%rbp), %rdi
leaq 0x3cdea(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa10(%rbp)
jmp 0xf9102
movq -0xa10(%rbp), %rdi
movq 0x9fe78(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf9117
jmp 0xf9258
movq -0x2e0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0xa18(%rbp)
jmp 0xf9138
movq -0xa18(%rbp), %rdi
leaq 0x3cd98(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa20(%rbp)
jmp 0xf9154
movq -0xa20(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0xa28(%rbp)
jmp 0xf9170
movq -0xa28(%rbp), %rdi
leaq 0x3cd60(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa30(%rbp)
jmp 0xf918c
movq -0xa30(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0xa38(%rbp)
jmp 0xf91a8
movq -0xa38(%rbp), %rdi
leaq 0x3cd28(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa40(%rbp)
jmp 0xf91c4
movq -0xa40(%rbp), %rdi
movaps 0x50b9e(%rip), %xmm1    # 0x149d70
movsd -0x4a8(%rbp), %xmm0
pand %xmm1, %xmm0
callq 0xabd0
movq %rax, -0xa48(%rbp)
jmp 0xf91ec
movq -0xa48(%rbp), %rdi
leaq 0x3cce4(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa50(%rbp)
jmp 0xf9208
movq -0xa50(%rbp), %rdi
movsd -0x5d8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xa58(%rbp)
jmp 0xf9225
movq -0xa58(%rbp), %rdi
leaq 0x3ccab(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa60(%rbp)
jmp 0xf9241
movq -0xa60(%rbp), %rdi
movq 0x9fd39(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf9256
jmp 0xf9258
jmp 0xf9832
movsd -0x4b0(%rbp), %xmm1
movaps 0x50b04(%rip), %xmm0    # 0x149d70
pand %xmm0, %xmm1
movsd -0x4a8(%rbp), %xmm0
movaps 0x50af1(%rip), %xmm2    # 0x149d70
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0xf9547
movsd -0x4b0(%rbp), %xmm1
movaps 0x50ad4(%rip), %xmm0    # 0x149d70
pand %xmm0, %xmm1
movsd -0x4b8(%rbp), %xmm0
movaps 0x50ac1(%rip), %xmm2    # 0x149d70
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0xf9547
movsd -0x4b0(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xf9406
movq -0x2e0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0xa68(%rbp)
jmp 0xf92ee
movq -0xa68(%rbp), %rdi
leaq 0x3cbe2(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa70(%rbp)
jmp 0xf930a
movq -0xa70(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0xa78(%rbp)
jmp 0xf9326
movq -0xa78(%rbp), %rdi
leaq 0x3cbaa(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa80(%rbp)
jmp 0xf9342
movq -0xa80(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0xa88(%rbp)
jmp 0xf935e
movq -0xa88(%rbp), %rdi
leaq 0x3cb72(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xa90(%rbp)
jmp 0xf937a
movq -0xa90(%rbp), %rdi
movsd -0x4b0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xa98(%rbp)
jmp 0xf9397
movq -0xa98(%rbp), %rdi
leaq 0x3cb39(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xaa0(%rbp)
jmp 0xf93b3
movq -0xaa0(%rbp), %rdi
movsd -0x5e0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xaa8(%rbp)
jmp 0xf93d0
movq -0xaa8(%rbp), %rdi
leaq 0x3cb00(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xab0(%rbp)
jmp 0xf93ec
movq -0xab0(%rbp), %rdi
movq 0x9fb8e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf9401
jmp 0xf9542
movq -0x2e0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0xab8(%rbp)
jmp 0xf9422
movq -0xab8(%rbp), %rdi
leaq 0x3caae(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xac0(%rbp)
jmp 0xf943e
movq -0xac0(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0xac8(%rbp)
jmp 0xf945a
movq -0xac8(%rbp), %rdi
leaq 0x3ca76(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xad0(%rbp)
jmp 0xf9476
movq -0xad0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0xad8(%rbp)
jmp 0xf9492
movq -0xad8(%rbp), %rdi
leaq 0x3ca3e(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xae0(%rbp)
jmp 0xf94ae
movq -0xae0(%rbp), %rdi
movaps 0x508b4(%rip), %xmm1    # 0x149d70
movsd -0x4b0(%rbp), %xmm0
pand %xmm1, %xmm0
callq 0xabd0
movq %rax, -0xae8(%rbp)
jmp 0xf94d6
movq -0xae8(%rbp), %rdi
leaq 0x3c9fa(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xaf0(%rbp)
jmp 0xf94f2
movq -0xaf0(%rbp), %rdi
movsd -0x5e0(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xaf8(%rbp)
jmp 0xf950f
movq -0xaf8(%rbp), %rdi
leaq 0x3c9c1(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb00(%rbp)
jmp 0xf952b
movq -0xb00(%rbp), %rdi
movq 0x9fa4f(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf9540
jmp 0xf9542
jmp 0xf9830
movsd -0x4b8(%rbp), %xmm1
movaps 0x5081a(%rip), %xmm0    # 0x149d70
pand %xmm0, %xmm1
movsd -0x4a8(%rbp), %xmm0
movaps 0x50807(%rip), %xmm2    # 0x149d70
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0xf982e
movsd -0x4b8(%rbp), %xmm1
movaps 0x507ea(%rip), %xmm0    # 0x149d70
pand %xmm0, %xmm1
movsd -0x4b0(%rbp), %xmm0
movaps 0x507d7(%rip), %xmm2    # 0x149d70
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jb 0xf982e
movsd -0x4b8(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xf96f0
movq -0x2e0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0xb08(%rbp)
jmp 0xf95d8
movq -0xb08(%rbp), %rdi
leaq 0x3c8f8(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb10(%rbp)
jmp 0xf95f4
movq -0xb10(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0xb18(%rbp)
jmp 0xf9610
movq -0xb18(%rbp), %rdi
leaq 0x3c8c0(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb20(%rbp)
jmp 0xf962c
movq -0xb20(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0xb28(%rbp)
jmp 0xf9648
movq -0xb28(%rbp), %rdi
leaq 0x3c888(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb30(%rbp)
jmp 0xf9664
movq -0xb30(%rbp), %rdi
movsd -0x4b8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xb38(%rbp)
jmp 0xf9681
movq -0xb38(%rbp), %rdi
leaq 0x3c84f(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb40(%rbp)
jmp 0xf969d
movq -0xb40(%rbp), %rdi
movsd -0x5e8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xb48(%rbp)
jmp 0xf96ba
movq -0xb48(%rbp), %rdi
leaq 0x3c816(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb50(%rbp)
jmp 0xf96d6
movq -0xb50(%rbp), %rdi
movq 0x9f8a4(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf96eb
jmp 0xf982c
movq -0x2e0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xa520
movq %rax, -0xb58(%rbp)
jmp 0xf970c
movq -0xb58(%rbp), %rdi
leaq 0x3c7c4(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb60(%rbp)
jmp 0xf9728
movq -0xb60(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa520
movq %rax, -0xb68(%rbp)
jmp 0xf9744
movq -0xb68(%rbp), %rdi
leaq 0x3c78c(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb70(%rbp)
jmp 0xf9760
movq -0xb70(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xa520
movq %rax, -0xb78(%rbp)
jmp 0xf977c
movq -0xb78(%rbp), %rdi
leaq 0x3c754(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb80(%rbp)
jmp 0xf9798
movq -0xb80(%rbp), %rdi
movaps 0x505ca(%rip), %xmm1    # 0x149d70
movsd -0x4b8(%rbp), %xmm0
pand %xmm1, %xmm0
callq 0xabd0
movq %rax, -0xb88(%rbp)
jmp 0xf97c0
movq -0xb88(%rbp), %rdi
leaq 0x3c710(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xb90(%rbp)
jmp 0xf97dc
movq -0xb90(%rbp), %rdi
movsd -0x5e8(%rbp), %xmm0
callq 0xabd0
movq %rax, -0xb98(%rbp)
jmp 0xf97f9
movq -0xb98(%rbp), %rdi
leaq 0x3c6d7(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0xba0(%rbp)
jmp 0xf9815
movq -0xba0(%rbp), %rdi
movq 0x9f765(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xf982a
jmp 0xf982c
jmp 0xf982e
jmp 0xf9830
jmp 0xf9832
leaq -0x320(%rbp), %rdi
callq 0x53210
leaq -0x338(%rbp), %rdi
callq 0x53210
leaq -0x350(%rbp), %rdi
callq 0x53210
xorps %xmm0, %xmm0
movsd %xmm0, -0x3b8(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x3c0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x3c8(%rbp)
movb -0x3c9(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xf7779
leaq -0x3b0(%rbp), %rdi
callq 0xac88
leaq -0x390(%rbp), %rdi
callq 0xac88
leaq -0x370(%rbp), %rdi
callq 0xac88
leaq -0x350(%rbp), %rdi
callq 0x3ecb0
leaq -0x338(%rbp), %rdi
callq 0x3ecb0
leaq -0x320(%rbp), %rdi
callq 0x3ecb0
leaq -0x60(%rbp), %rdi
callq 0xf9fb0
leaq -0x48(%rbp), %rdi
callq 0xf9fb0
leaq -0x30(%rbp), %rdi
callq 0xac88
xorl %eax, %eax
addq $0xba0, %rsp            # imm = 0xBA0
popq %rbp
retq
leaq -0x3b0(%rbp), %rdi
callq 0xac88
leaq -0x390(%rbp), %rdi
callq 0xac88
leaq -0x370(%rbp), %rdi
callq 0xac88
leaq -0x350(%rbp), %rdi
callq 0x3ecb0
leaq -0x338(%rbp), %rdi
callq 0x3ecb0
leaq -0x320(%rbp), %rdi
callq 0x3ecb0
leaq -0x60(%rbp), %rdi
callq 0xf9fb0
leaq -0x48(%rbp), %rdi
callq 0xf9fb0
leaq -0x30(%rbp), %rdi
callq 0xac88
movq -0x98(%rbp), %rdi
callq 0xab50
nopw %cs:(%rax,%rax)