// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/process_vcf_fst.cpp
// Function: getFstFromVCF()
void getFstFromVCF() {
    clock_t begin = clock();
    std::cerr << "Calculating Fst using variants from: " << opt::vcfFile << std::endl;
    std::cerr << "Between the two 'populations' defined in: " << opt::sampleSets << std::endl;
    if (opt::windowSize > 0) {
        std::cerr << "also using a sliding window of size: " << opt::windowSize << " variants and sliding in steps of: " << opt::windowStep << std::endl;
    }
    string fileRoot = "";
    //std::cerr << "Still alive: " << std::endl;
    // Open connection to read from the vcf file
    std::istream* vcfFile = createReader(opt::vcfFile.c_str());
    //std::cerr << "Hello: " << std::endl;
    std::ifstream* setsFile = new std::ifstream(opt::sampleSets.c_str());
    std::ifstream* annotFile;
    std::ifstream* accessibleGenomeBed;
    std::ofstream* snpCategoryFstFile;
    std::ofstream* regionsAboveFstFile; bool inRegAbove = false;
    std::ofstream* fstDxyFixedWindowFile;
    std::ifstream* ancSetsFile; std::ofstream* ancSetsOutFile;
    std::vector<string> ancSet1; std::vector<string> ancSet2;
    Annotation wgAnnotation;
    if (!opt::annotFile.empty()) {
        annotFile = new std::ifstream(opt::annotFile.c_str());
        Annotation Annot(annotFile, false); // Does not use transcripts annotated as 5' or 3' partial
        wgAnnotation = Annot;
        string snpCategoryFstFileName = opt::runName + "SNPcategory_fst.txt";
        snpCategoryFstFile = new std::ofstream(snpCategoryFstFileName.c_str());
        *snpCategoryFstFile << "SNPcategory" << "\t" << "thisSNPFst" << "\t" << "thisSNPDxy" << "\t" << "scaffold" << "\t" << "position" << std::endl;
    }
    if (!opt::ancSets.empty()) {
        ancSetsFile = new std::ifstream(opt::ancSets);
        string ancOutFileName = fileRoot + opt::runName + "ancestralSNPs_fst.txt";
        ancSetsOutFile = new std::ofstream(ancOutFileName);
        *ancSetsOutFile << "scaffold" << "\t" << "position" << "\t" << "AncAllelePopulation" << "\t" << "Fst" << "\t" << "ancSet1_segregating" << "\t" << "ancSet2_segregating" << std::endl;
        string ancSet1String; string ancSet2String;
        getline(*ancSetsFile, ancSet1String);
        getline(*ancSetsFile, ancSet2String);
        ancSet1 = split(ancSet1String, ','); ancSet2 = split(ancSet2String, ',');
        std::sort(ancSet1.begin(),ancSet1.end()); std::sort(ancSet2.begin(),ancSet2.end());
    }
    AccessibleGenome* ag;
    if (!opt::accesibleGenBedFile.empty()) {
        accessibleGenomeBed = new std::ifstream(opt::accesibleGenBedFile);
        std::cerr << "Loading the accessible genome annotation" << std::endl;
        ag = new AccessibleGenome(accessibleGenomeBed);
        std::cerr << "Done" << std::endl;
    }
    
    if (opt::regAbove > 0) {
        string regionsAboveFstFileName = fileRoot + opt::runName + "_w_" + numToString(opt::windowSize) + "_fst_above" + numToString(opt::regAbove) + ".txt";
        regionsAboveFstFile = new std::ofstream(regionsAboveFstFileName.c_str());
    }
    
    string FstResultsFileName = fileRoot + opt::runName + "_w_" + numToString(opt::windowSize) + "_fst.txt";
    std::ofstream* pFst = new std::ofstream(FstResultsFileName.c_str());
    string fstDxyFixedWindowFileName = fileRoot + opt::runName + "_w_" + numToString(opt::physicalWindowSize) + "_fixedWindowStats.txt";
    fstDxyFixedWindowFile = new std::ofstream(fstDxyFixedWindowFileName.c_str());
    string heterozygositySetsFileName = fileRoot + opt::runName + "_w_" + numToString(opt::windowSize) + "_heterozygosity.txt";
    if (opt::accesibleGenBedFile.empty()) {
        *fstDxyFixedWindowFile << "scaffold" << "\t" << "Start" << "\t" << "End" << "\t" << "Fst" << "\t" << "Dxy" << "\t" << "Set1_pi" << "\t" << "Set2_pi" << "\t" << "Accessible_bp" << "\t" << "Set1_VariantDensity" << "\t" << "Set2_VariantDensity" << std::endl;
    } else {
        *fstDxyFixedWindowFile << "scaffold" << "\t" << "Start" << "\t" << "End" << "\t" << "Fst" << "\t" << "Dxy" << "\t" << "Set1_pi" << "\t" << "Set2_pi" << "\t" << "Accessible_bp" << "\t" << "Set1_VariantDensity" << "\t" << "Set2_VariantDensity" << std::endl;
    }
    std::ofstream* pHetSets = new std::ofstream(heterozygositySetsFileName.c_str());
    //std::cerr << "Still alive: " << std::endl;
    
    string set1String; string set2String;
    getline(*setsFile, set1String);
    getline(*setsFile, set2String);
    std::vector<string> set1 = split(set1String, ',');
    std::vector<string> set2 = split(set2String, ',');
    std::sort(set1.begin(),set1.end());
    std::sort(set2.begin(),set2.end());
    
    int numChromosomes;
    int totalVariantNumber = 0;
    int countedVariantNumber = 0;
    string windowMiddleVariant = "first\tWindow";
    string windowStartEnd = "scaffold_0\t0";
    int windowStart = 0; int windowEnd;
    int fixedWindowStart = 0; std::vector<double> fixedWindowDxyVector; std::vector<double> fixedWindowFstNumVector; std::vector<double> fixedWindowFstDenomVector;
    std::vector<double> fixedWindowHet1Vector; std::vector<double> fixedWindowHet2Vector; std::vector<double> fixedWindowPi1Vector; std::vector<double> fixedWindowPi2Vector;
    std::vector<string> sampleNames;
    std::vector<string> fields;
    std::vector<size_t> set1Loci; std::vector<size_t> set2Loci;
    std::vector<size_t> ancSet1Loci; std::vector<size_t> ancSet2Loci;
    short n1; short n2; short n1anc; short n2anc;
    string line;
    std::map<std::string, double> loc_pval;
    std::vector<double> fstNumerators; fstNumerators.reserve(30000000);
    std::vector<double> fstDenominators; fstDenominators.reserve(30000000);
    std::vector<double> DxyVector; DxyVector.reserve(30000000);
    std::vector<std::vector<double> > heterozygositiesVector; heterozygositiesVector.reserve(30000000);
    std::vector<double> set1heterozygositiesSimple; set1heterozygositiesSimple.reserve(30000000);
    std::vector<double> set2heterozygositiesSimple; set2heterozygositiesSimple.reserve(30000000);
    std::vector<double> set1heterozygositiesNei; set1heterozygositiesNei.reserve(30000000);
    std::vector<double> set2heterozygositiesNei; set2heterozygositiesNei.reserve(30000000);
    std::vector<double> set1heterozygositiesPi; set1heterozygositiesPi.reserve(30000000);
    std::vector<double> set2heterozygositiesPi; set2heterozygositiesPi.reserve(30000000);
    while (getline(*vcfFile, line)) {
        if (line[0] == '#' && line[1] == '#') {
            
        } else if (line[0] == '#' && line[1] == 'C') {
            std::vector<std::string> fields = split(line, '\t');
            const std::vector<std::string>::size_type numSamples = fields.size() - NUM_NON_GENOTYPE_COLUMNS;
            numChromosomes = (int)numSamples * 2;
            // std::cerr << "Number of chromosomes: " << numChromosomes << std::endl;
            
            if (opt::sampleNameFile.empty()) {
                for (std::vector<std::string>::size_type i = NUM_NON_GENOTYPE_COLUMNS; i != fields.size(); i++) {
                    sampleNames.push_back(fields[i]);
                }
            } else {
                sampleNames = readSampleNamesFromTextFile(opt::sampleNameFile);
            }
            set1Loci = locateSet(sampleNames, set1);
            set2Loci = locateSet(sampleNames, set2);
            n1 = set1Loci.size()*2; n2 = set2Loci.size()*2;
            std::cerr << "Set1 loci: " << std::endl;
            print_vector(set1Loci, std::cerr);
            std::cerr << "Set2 loci: " << std::endl;
            print_vector(set2Loci, std::cerr);
            
            if (!opt::ancSets.empty()) {
                ancSet1Loci = locateSet(sampleNames, ancSet1);
                ancSet2Loci = locateSet(sampleNames, ancSet2);
                std::cerr << "Ancestral Set1 loci: " << std::endl;
                print_vector(ancSet1Loci, std::cerr);
                std::cerr << "Ancestral Set2 loci: " << std::endl;
                print_vector(ancSet2Loci, std::cerr);
                n1anc = ancSet1Loci.size() * 2; n2anc = ancSet2Loci.size() * 2;
            }
            
            if (opt::windowSize > 0) {
                if (opt::windowSize == opt::windowStep) {
                    if (opt::windowSize == 1) {
                        *pFst << "var_num" << "\t" << "scaffold" << "\t" << "Position" << "\t" << "Fst" << "\t" << "Dxy_thisVariant" << std::endl;
                    } else {
                        *pHetSets << "scaffold" << "\t" << "Start" << "\t" << "End" << "\t" << "Set1_heterozygosity" << "\t" << "Set2_heterozygosity" << "\t" << "Set1_heterozygosity_Nei" << "\t" << "Set2_heterozygosity_Nei" << "\t" << "Set1_nucleotideDiversity_pi" << "\t" << "Set2_nucleotideDiversity_pi" << std::endl;
                        *pFst << "var_num" << "\t" << "scaffold" << "\t" << "Start" << "\t" << "End" << "\t" << "Fst" << "\t" << "Dxy_onlyVariants" << "\t" << "Dxy_AllSites" << "\t" << "windowSize" << std::endl;
                    }
                    if (opt::regAbove > 0) *regionsAboveFstFile << "scaffold" << "\t" << "Start" << "\t" << "End" << std::endl;
                } else {
                    *pHetSets << "Middle_SNP_position" << "\t" << "Set1_heterozygosity" << "\t" << "Set2_heterozygosity" << "\t" << "Set1_heterozygosity_Nei" << "\t" << "Set2_heterozygosity_Nei" << "\t" << "Set1_nucleotideDiversity_pi" << "\t" << "Set2_nucleotideDiversity_pi" << std::endl;
                    *pFst << "var_num" << "\t" << "scaffold" << "\t" << "Start" << "\t" << "End" << "\t" << "Fst" << "\t" << "Dxy_onlyVariants" << "\t" << "Dxy_AllSites" << "\t" << "windowSize" << std::endl;
                }
            }
        } else {
            totalVariantNumber++;
            //std::cerr << "Variant N:" << totalVariantNumber << std::endl;
            std::vector<std::string> fields = split(line, '\t');
            string scaffold = fields[0]; string loc = fields[1]; // Scaffold
            std::vector<std::string> info = split(fields[7], ';');
            SetCounts* counts = new SetCounts();
            // Only consider biallelic SNPs
            string refAllele = fields[3];
            if (refAllele.length() > 1) { counts->bIndel = true;
                refAllele.clear(); refAllele.shrink_to_fit(); continue;
            }

            
            getVariantCountsForFst(fields,counts,set1Loci,set2Loci);
           // std::cerr << "Got counts for variant N:" << totalVariantNumber << std::endl;
            //std::cerr << "Still here: " << counts.set1HaplotypeVariant.size() << "\t" << counts.set1individualsWithVariant.size() << "\t" << n1 << std::endl;
            //std::cerr << "Still here: " << counts.set2HaplotypeVariant.size() << "\t" << counts.set2individualsWithVariant.size() << "\t" << n2 << std::endl;
            //print_vector(counts.set1HaplotypeVariant, std::cerr);
            //print_vector(counts.set1individualsWithVariant, std::cerr);
            //print_vector(counts.set2HaplotypeVariant, std::cerr);
            
            if (counts->n_alt_alleles == 1 && counts->bIndel == false && (counts->set1Count > 0 || counts->set2Count > 0)
                && (counts->set1Count < counts->set1_n_withoutMissing || counts->set2Count < counts->set2_n_withoutMissing)) {
                countedVariantNumber++; counts->calculateAlleleFrequencies();
                double FstNumerator = calculateFstNumerator(counts->p1, counts->p2, counts->set1_n_withoutMissing, counts->set2_n_withoutMissing);
                fstNumerators.push_back(FstNumerator); fixedWindowFstNumVector.push_back(FstNumerator);
                double FstDenominator = calculateFstDenominator(counts->p1, counts->p2);
                fstDenominators.push_back(FstDenominator); fixedWindowFstDenomVector.push_back(FstDenominator);
                assert(FstDenominator != 0);
                double thisSNPDxy = calculateDxy(*counts, n1, n2); DxyVector.push_back(thisSNPDxy); fixedWindowDxyVector.push_back(thisSNPDxy);
                std::vector<double> thisSNPhet = getSetHeterozygozities(*counts, n1, n2); heterozygositiesVector.push_back(thisSNPhet);
                std::vector<double> thisSNPpis = calculatePiTwoSets(*counts, n1, n2); fixedWindowPi1Vector.push_back(thisSNPpis[0]); fixedWindowPi2Vector.push_back(thisSNPpis[1]);
                set1heterozygositiesPi.push_back(thisSNPpis[0]); set2heterozygositiesPi.push_back(thisSNPpis[1]);
               // std::cerr << "Still here: " << thisSNPpis[0] << std::endl;
                set1heterozygositiesSimple.push_back(thisSNPhet[0]); set2heterozygositiesSimple.push_back(thisSNPhet[1]); fixedWindowHet1Vector.push_back(thisSNPhet[0]);
                set1heterozygositiesNei.push_back(thisSNPhet[2]); set2heterozygositiesNei.push_back(thisSNPhet[3]); fixedWindowHet2Vector.push_back(thisSNPhet[1]);
                if (!opt::annotFile.empty()) {
                    string SNPcategory = wgAnnotation.getCategoryOfSNP(scaffold, loc);
                    double thisSNPFst = FstNumerator/FstDenominator;
                    *snpCategoryFstFile << SNPcategory << "\t" << thisSNPFst << "\t" << thisSNPDxy << "\t" << scaffold << "\t" << loc << std::endl;
                }
                if (!opt::ancSets.empty()) {
                    double thisSNPFst = FstNumerator/FstDenominator;
                    if (thisSNPFst < 0) { thisSNPFst = 0; }
                    string AA = split(info[info.size()-1],'=')[1];
                    //std::cerr << "AA=" << " " << AA << std::endl;
                    FourSetCounts c;
                    if (AA == fields[3]) {
                        c = getFourSetVariantCounts(fields,set1Loci,set2Loci,ancSet1Loci,ancSet2Loci,"ref");
                        *ancSetsOutFile << scaffold << "\t" << fields[1] << "\t" << c.set1daAF-c.set2daAF << "\t" << thisSNPFst << "\t";
                        if (c.set3daAF > 0 & c.set3daAF < 1) { *ancSetsOutFile << "1" << "\t"; } else { *ancSetsOutFile << "0" << "\t"; }
                        if (c.set4daAF > 0 & c.set4daAF < 1) { *ancSetsOutFile << "1" << std::endl; } else { *ancSetsOutFile << "0" << std::endl; }
                    } else if (AA == fields[4]) {
                        c = getFourSetVariantCounts(fields,set1Loci,set2Loci,ancSet1Loci,ancSet2Loci,"alt");
                        *ancSetsOutFile << scaffold << "\t" << fields[1] << "\t" << c.set1daAF-c.set2daAF << "\t" << thisSNPFst << "\t";
                        if (c.set3daAF > 0 & c.set3daAF < 1) { *ancSetsOutFile << "1" << "\t"; } else { *ancSetsOutFile << "0" << "\t"; }
                        if (c.set4daAF > 0 & c.set4daAF < 1) { *ancSetsOutFile << "1" << std::endl; } else { *ancSetsOutFile << "0" << std::endl; }
                        // std::cerr << "AA=alt" << " " << c.set1daAF << " " << c.set2daAF << std::endl;
                    } else {
                        c = getFourSetVariantCounts(fields,set1Loci,set2Loci,ancSet1Loci,ancSet2Loci,"N");
                        *ancSetsOutFile << scaffold << "\t" << fields[1] << "\t" << "-888" << "\t" << thisSNPFst << "\t";
                        if (c.set3AltAF > 0 & c.set3AltAF < 1) { *ancSetsOutFile << "1" << "\t"; } else { *ancSetsOutFile << "0" << "\t"; }
                        if (c.set4AltAF > 0 & c.set4AltAF < 1) { *ancSetsOutFile << "1" << std::endl; } else { *ancSetsOutFile << "0" << std::endl; }
                    }
                    
                    
                }
                std::vector<string> s = split(windowStartEnd, '\t');
                if (s[0] == scaffold) {
                    if (atoi(fields[1].c_str()) > (fixedWindowStart+opt::physicalWindowSize)) {
                        int accessibleInThisWindow = opt::physicalWindowSize;
                        if (!opt::accesibleGenBedFile.empty()) {
                            accessibleInThisWindow = ag->getAccessibleBPinRegion(scaffold, fixedWindowStart, fixedWindowStart+opt::physicalWindowSize);
                        }
                        double thisFixedWindowDxy = vector_average_withRegion(fixedWindowDxyVector, accessibleInThisWindow);
                        double thisFixedWindowFst = calculateFst(fixedWindowFstNumVector, fixedWindowFstDenomVector);
                        //double thisFixedWindowHet1 = vector_average_withRegion(fixedWindowHet1Vector, 10000);
                        //double thisFixedWindowHet2 = vector_average_withRegion(fixedWindowHet2Vector, 10000);
                        double thisFixedWindowPi1 = vector_average_withRegion(fixedWindowPi1Vector, accessibleInThisWindow);
                        double thisFixedWindowPi2 = vector_average_withRegion(fixedWindowPi2Vector, accessibleInThisWindow);
                        int Pi1NumZeros = (int)std::count(fixedWindowPi1Vector.begin(), fixedWindowPi1Vector.end(), 0);
                        int numVariantsInThisFixedWindow1 = (int)fixedWindowPi1Vector.size() - Pi1NumZeros;
                        int Pi2NumZeros = (int)std::count(fixedWindowPi2Vector.begin(), fixedWindowPi2Vector.end(), 0);
                        int numVariantsInThisFixedWindow2 = (int)fixedWindowPi2Vector.size() - Pi2NumZeros;
                        *fstDxyFixedWindowFile << scaffold << "\t" << fixedWindowStart << "\t" << fixedWindowStart+opt::physicalWindowSize << "\t" << thisFixedWindowFst << "\t" << thisFixedWindowDxy << "\t" << thisFixedWindowPi1 << "\t" << thisFixedWindowPi2 << "\t" << accessibleInThisWindow << "\t" <<  (double)numVariantsInThisFixedWindow1/accessibleInThisWindow << "\t" << (double)numVariantsInThisFixedWindow2/accessibleInThisWindow << std::endl;
                        fixedWindowDxyVector.clear(); fixedWindowFstNumVector.clear(); fixedWindowFstDenomVector.clear();
                        fixedWindowHet1Vector.clear(); fixedWindowHet2Vector.clear(); fixedWindowPi1Vector.clear(); fixedWindowPi2Vector.clear();
                        // Handle fixed windows that do not contain any variants
                        int fixedWindowsWithoutAnyVariants = 0;
                        while (atoi(fields[1].c_str()) > (fixedWindowStart+opt::physicalWindowSize)) {
                            if (fixedWindowsWithoutAnyVariants > 0) {
                                int accessibleInThisWindow = opt::physicalWindowSize;
                                if (!opt::accesibleGenBedFile.empty()) {
                                    accessibleInThisWindow = ag->getAccessibleBPinRegion(scaffold, fixedWindowStart, fixedWindowStart+opt::physicalWindowSize);
                                }
                                *fstDxyFixedWindowFile << scaffold << "\t" << fixedWindowStart << "\t" << fixedWindowStart+opt::physicalWindowSize << "\t" << "NA" << "\t" << 0 << "\t" << 0 << "\t" << 0 << "\t" << accessibleInThisWindow << "\t" << 0 << "\t" << 0 << std::endl;
                            }
                            fixedWindowStart= fixedWindowStart+opt::physicalWindowSize;
                            fixedWindowsWithoutAnyVariants++;
                        }
                    }
                } else { // Beginning of a new chromosomes
                    fixedWindowStart = 0;
                    fixedWindowDxyVector.clear(); fixedWindowFstNumVector.clear(); fixedWindowFstDenomVector.clear();
                    fixedWindowHet1Vector.clear(); fixedWindowHet2Vector.clear();
                    fixedWindowPi1Vector.clear(); fixedWindowPi2Vector.clear();
                    
                }
                
                
                
                if (opt::windowSize == 1) {
                    double Fst = FstNumerator/FstDenominator;
                    if (Fst < 0) Fst = 0;
                    *pFst << countedVariantNumber << "\t" << scaffold + "\t" + fields[1] << "\t" << Fst << "\t" << thisSNPDxy << std::endl;
                    
                } else if ((opt::windowSize > 0) && (countedVariantNumber % opt::windowStep == 0) && countedVariantNumber >= opt::windowSize) {
                    std::vector<double> windowFstNumerators(fstNumerators.end()-opt::windowSize, fstNumerators.end());
                    std::vector<double> windowFstDenominators(fstDenominators.end()-opt::windowSize, fstDenominators.end());
                    double windowFst = calculateFst(windowFstNumerators, windowFstDenominators); if (windowFst < 0) windowFst = 0;
                    std::vector<double> windowDxyVec(DxyVector.end()-opt::windowSize, DxyVector.end());
                    double windowDxy = vector_average(windowDxyVec);
                    if (opt::windowSize == opt::windowStep) {
                        std::vector<string> s = split(windowStartEnd, '\t');
                        if (s[0] == scaffold) {
                            windowStartEnd = windowStartEnd + "\t" + fields[1];
                            windowEnd = atoi(fields[1].c_str());
                            double windowDxyIncNonSeg = vector_average_withRegion(windowDxyVec, windowEnd-windowStart);
                            *pFst << countedVariantNumber-opt::windowSize+1 << "\t" << windowStartEnd << "\t" << windowFst << "\t" << windowDxy << "\t" << windowDxyIncNonSeg << "\t" << windowFstDenominators.size() << std::endl;
                            if (opt::regAbove > 0) {
                                if (windowFst >= opt::regAbove && !inRegAbove) {
                                    inRegAbove = true;
                                    *regionsAboveFstFile << s[0] << "\t" << s[1] << "\t";
                                } else if (windowFst < opt::regAbove && inRegAbove) {
                                    inRegAbove = false;
                                    *regionsAboveFstFile << s[1] << std::endl;
                                }
                            }
                        }
                    } else {
                        *pFst << countedVariantNumber-opt::windowSize+1 << "\t" << windowMiddleVariant << "\t" << windowFst << "\t" << windowDxy << "\t" << windowFstDenominators.size() << std::endl;
                    }
                    // Now calculate and output expected heterozygosities for this window
                    std::vector<double> windowHetS1Vec(set1heterozygositiesSimple.end()-opt::windowSize, set1heterozygositiesSimple.end());
                    double windowHetS1 = vector_average(windowHetS1Vec);
                    std::vector<double> windowHetS2Vec(set2heterozygositiesSimple.end()-opt::windowSize, set2heterozygositiesSimple.end());
                    double windowHetS2 = vector_average(windowHetS2Vec);
                    std::vector<double> windowHetNei1Vec(set1heterozygositiesNei.end()-opt::windowSize, set1heterozygositiesNei.end());
                    double windowHetNei1 = vector_average(windowHetNei1Vec);
                    std::vector<double> windowHetNei2Vec(set2heterozygositiesNei.end()-opt::windowSize, set2heterozygositiesNei.end());
                    double windowHetNei2 = vector_average(windowHetNei2Vec);
                    std::vector<double> windowHetPi1Vec(set1heterozygositiesPi.end()-opt::windowSize, set1heterozygositiesPi.end());
                    double windowHetPi1 = vector_average_withRegion(windowHetPi1Vec, windowEnd-windowStart);
                    std::vector<double> windowHetPi2Vec(set2heterozygositiesPi.end()-opt::windowSize, set2heterozygositiesPi.end());
                    double windowHetPi2 = vector_average_withRegion(windowHetPi2Vec, windowEnd-windowStart);
                    
                    if (opt::windowSize == opt::windowStep) {
                        std::vector<string> s = split(windowStartEnd, '\t');
                        if (s[0] == scaffold) {
                            *pHetSets << windowStartEnd << "\t" << windowHetS1 << "\t" << windowHetS2 << "\t" << windowHetNei1 << "\t" << windowHetNei2 << "\t" << windowHetPi1 << "\t" << windowHetPi2 << std::endl;
                            windowStartEnd = scaffold + "\t" + fields[1];
                            windowStart = atoi(fields[1].c_str());
                        } else {
                            windowStartEnd = scaffold + "\t0";
                            windowStart = 0;
                        }
                    } else {
                        *pHetSets << windowMiddleVariant << "\t" << windowHetS1 << "\t" << windowHetS2 << "\t" << windowHetNei1 << "\t" << windowHetNei2 << std::endl;
                        windowMiddleVariant = scaffold + "\t" + fields[1];     // works only if STEP is half SIZE for the window
                    }
                }
                delete counts;
            }
            if (totalVariantNumber % 100000 == 0) {
                double Fst = calculateFst(fstNumerators, fstDenominators);
                std::cerr << totalVariantNumber << " variants processed... Fst: " << Fst << std::endl;
            }
        }
    }
    double Fst = calculateFst(fstNumerators, fstDenominators);
    double overallHetS1 = vector_average(set1heterozygositiesSimple);
    double overallHetS2 = vector_average(set2heterozygositiesSimple);
    double overallHetNei1 = vector_average(set1heterozygositiesNei);
    double overallHetNei2 = vector_average(set2heterozygositiesNei);
    
    std::cerr << "Fst: " << Fst << std::endl;
    std::cerr << "Heterozygosities: " << "\tS1:" << overallHetS1 << "\tS2:" << overallHetS2 << "\tNei1:" << overallHetNei1 << "\tNei2" << overallHetNei2 << std::endl;
    *pHetSets << "#Heterozygosities: " << "\tS1:" << overallHetS1 << "\tS2:" << overallHetS2 << "\tNei1:" << overallHetNei1 << "\tNei2" << overallHetNei2 << std::endl;
    clock_t end = clock();
    double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
    std::cerr << "Time taken: " << elapsed_secs << std::endl;

    fstDxyFixedWindowFile->close();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb68, %rsp            # imm = 0xB68
callq 0x8310
movq %rax, %r14
movq 0x71aec(%rip), %rbx     # 0xdcfe8
leaq 0x3fddd(%rip), %rsi     # 0xab2e0
movq %rbx, %rdi
callq 0x8480
leaq 0x734b6(%rip), %rsi     # 0xde9c8
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
leaq 0x3fddd(%rip), %rsi     # 0xab306
movq %rbx, %rdi
callq 0x8480
leaq 0x734b0(%rip), %rsi     # 0xde9e8
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
cmpl $0x0, 0x73599(%rip)     # 0xdeae8
jle 0x6b597
movq 0x71a90(%rip), %rdi     # 0xdcfe8
leaq 0x3fdd2(%rip), %rsi     # 0xab331
callq 0x8480
movl 0x7357e(%rip), %esi     # 0xdeae8
movq %rax, %rdi
callq 0x8840
leaq 0x3fdde(%rip), %rsi     # 0xab357
movq %rax, %rdi
callq 0x8480
movl 0x73565(%rip), %esi     # 0xdeaec
movq %rax, %rdi
callq 0x8840
movq %rax, %rdi
callq 0x8230
leaq 0x2e881(%rip), %rsi     # 0x99e1f
leaq 0x5e0(%rsp), %rdi
leaq 0x350(%rsp), %rdx
callq 0x21904
movq 0x7340e(%rip), %rsi     # 0xde9c8
leaq 0x350(%rsp), %rdi
leaq 0x6c0(%rsp), %rdx
callq 0x21904
leaq 0x350(%rsp), %rdi
pushq $0x8
popq %rsi
callq 0x42587
movq %rax, 0xd0(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x8978
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %rbx
movq 0x733e0(%rip), %rsi     # 0xde9e8
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8890
xorpd %xmm0, %xmm0
andq $0x0, 0x480(%rsp)
movapd %xmm0, 0x470(%rsp)
andq $0x0, 0x460(%rsp)
leaq 0xab0(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0xae0(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0xb10(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0xb40(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movapd %xmm0, 0x450(%rsp)
xorl %eax, %eax
cmpq %rax, 0x733b8(%rip)     # 0xdea70
je 0x6b7f2
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r15
movq 0x73396(%rip), %rsi     # 0xdea68
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8890
leaq 0x938(%rsp), %rsi
movq %r15, (%rsi)
leaq 0x350(%rsp), %rdi
xorl %edx, %edx
callq 0x32000
leaq 0xaa8(%rsp), %rdi
leaq 0x350(%rsp), %rsi
callq 0x70d3a
leaq 0x733b5(%rip), %rsi     # 0xdeac8
leaq 0x3fc61(%rip), %rdx     # 0xab37b
leaq 0x6c0(%rsp), %rdi
callq 0x28806
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %r13
movq 0x6c0(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
leaq 0x3fc41(%rip), %rsi     # 0xab38f
movq %r13, %rdi
callq 0x8480
leaq 0x2e6c1(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3fc2f(%rip), %rsi     # 0xab39b
movq %rax, %rdi
callq 0x8480
leaq 0x2e6a3(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3fc1c(%rip), %rsi     # 0xab3a6
movq %rax, %rdi
callq 0x8480
leaq 0x2e685(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3811c(%rip), %rsi     # 0xa38c4
movq %rax, %rdi
callq 0x8480
leaq 0x2e667(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x38cd4(%rip), %rsi     # 0xa449a
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x6c0(%rsp), %rdi
callq 0x8978
leaq 0x350(%rsp), %rdi
callq 0x32212
jmp 0x6b7f2
cmpq $0x0, 0x73216(%rip)     # 0xdea10
movq %r14, 0x598(%rsp)
je 0x6ba4a
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r15
leaq 0x731ec(%rip), %rsi     # 0xdea08
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8760
leaq 0x7329a(%rip), %rdx     # 0xdeac8
leaq 0x6c0(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
callq 0x28b6d
leaq 0x3fb67(%rip), %rdx     # 0xab3b1
leaq 0x350(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
callq 0x28a29
leaq 0x6c0(%rsp), %rdi
callq 0x8978
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %r14
leaq 0x350(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x8900
leaq 0x38031(%rip), %rsi     # 0xa38c4
movq %r14, %rdi
callq 0x8480
leaq 0x2e57c(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x38be9(%rip), %rsi     # 0xa449a
movq %rax, %rdi
callq 0x8480
leaq 0x2e55e(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3faf8(%rip), %rsi     # 0xab3c7
movq %rax, %rdi
callq 0x8480
leaq 0x2e540(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3fab5(%rip), %rsi     # 0xab3a2
movq %rax, %rdi
callq 0x8480
leaq 0x2e522(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3fad0(%rip), %rsi     # 0xab3db
movq %rax, %rdi
callq 0x8480
leaq 0x2e504(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3fac6(%rip), %rsi     # 0xab3ef
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x6d0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x1c8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
leaq 0x6c0(%rsp), %rsi
movq %r15, %rdi
callq 0x80a0
leaq 0x1b8(%rsp), %rsi
movq %r15, %rdi
callq 0x80a0
movq %r14, %r15
leaq 0x330(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
pushq $0x2c
popq %rdx
callq 0x40349
leaq 0x470(%rsp), %rdi
leaq 0x330(%rsp), %r14
movq %r14, %rsi
callq 0x2f6c0
movq %r14, %rdi
callq 0x28a08
leaq 0x330(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
pushq $0x2c
popq %rdx
callq 0x40349
leaq 0x450(%rsp), %rdi
leaq 0x330(%rsp), %r14
movq %r14, %rsi
callq 0x2f6c0
movq %r14, %rdi
callq 0x28a08
movq 0x470(%rsp), %rdi
movq 0x478(%rsp), %rsi
callq 0x4c811
movq %r15, %r14
movq 0x450(%rsp), %rdi
movq 0x458(%rsp), %rsi
callq 0x4c811
leaq 0x1b8(%rsp), %rdi
callq 0x8978
leaq 0x6c0(%rsp), %rdi
callq 0x8978
leaq 0x350(%rsp), %rdi
callq 0x8978
jmp 0x6ba4a
cmpq $0x0, 0x72ffe(%rip)     # 0xdea50
je 0x6badc
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r15
leaq 0x72fdc(%rip), %rsi     # 0xdea48
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8760
movq %r15, 0x5d8(%rsp)
movq 0x71562(%rip), %rdi     # 0xdcfe8
leaq 0x34a55(%rip), %rsi     # 0xa04e2
callq 0x8480
movq %rax, %rdi
callq 0x8230
pushq $0x38
popq %rdi
callq 0x8490
movq %rax, 0xc8(%rsp)
leaq 0x5d8(%rsp), %rsi
movq 0xc8(%rsp), %rdi
callq 0x3a63a
movq 0x71522(%rip), %rdi     # 0xdcfe8
leaq 0x2a71a(%rip), %rsi     # 0x961e7
callq 0x8480
movq %rax, %rdi
callq 0x8230
jmp 0x6badc
movsd 0x7300c(%rip), %xmm0    # 0xdeaf0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x6bc51
leaq 0x72fcf(%rip), %rdx     # 0xdeac8
leaq 0x2f0(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
callq 0x28b6d
leaq 0x3f8ee(%rip), %rdx     # 0xab403
leaq 0x310(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0x28a29
movl 0x72fb8(%rip), %esi     # 0xdeae8
leaq 0x260(%rsp), %rdi
callq 0x28ad3
leaq 0x330(%rsp), %rdi
leaq 0x310(%rsp), %rsi
leaq 0x260(%rsp), %rdx
callq 0x28a48
leaq 0x3f8a6(%rip), %rdx     # 0xab407
leaq 0x1b8(%rsp), %rdi
leaq 0x330(%rsp), %rsi
callq 0x28a29
movsd 0x72f72(%rip), %xmm0    # 0xdeaf0
leaq 0x500(%rsp), %rdi
callq 0x37bd4
leaq 0x6c0(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
leaq 0x500(%rsp), %rdx
callq 0x28a48
leaq 0x41276(%rip), %rdx     # 0xace25
leaq 0x350(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
callq 0x28a29
leaq 0x6c0(%rsp), %rdi
callq 0x8978
leaq 0x500(%rsp), %rdi
callq 0x8978
leaq 0x1b8(%rsp), %rdi
callq 0x8978
leaq 0x330(%rsp), %rdi
callq 0x8978
leaq 0x260(%rsp), %rdi
callq 0x8978
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x2f0(%rsp), %rdi
callq 0x8978
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq 0x350(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, 0xb8(%rsp)
movq %rax, %rdi
callq 0x84e0
leaq 0x350(%rsp), %rdi
callq 0x8978
leaq 0x72e70(%rip), %rdx     # 0xdeac8
leaq 0x1b8(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
callq 0x28b6d
leaq 0x3f78f(%rip), %rdx     # 0xab403
leaq 0x6c0(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x28a29
movl 0x72e59(%rip), %esi     # 0xdeae8
leaq 0x310(%rsp), %rdi
callq 0x28ad3
leaq 0x350(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
leaq 0x310(%rsp), %rdx
callq 0x28a48
leaq 0x3f6fe(%rip), %rdx     # 0xab3be
leaq 0x330(%rsp), %rdi
leaq 0x350(%rsp), %rsi
callq 0x28a29
leaq 0x350(%rsp), %rdi
callq 0x8978
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x6c0(%rsp), %rdi
callq 0x8978
leaq 0x1b8(%rsp), %rdi
callq 0x8978
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %r15
movq 0x330(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
leaq 0x72d98(%rip), %rdx     # 0xdeac8
leaq 0x1b8(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
callq 0x28b6d
leaq 0x3f6b7(%rip), %rdx     # 0xab403
leaq 0x6c0(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x28a29
movl 0x71869(%rip), %esi     # 0xdd5d0
leaq 0x2f0(%rsp), %rdi
callq 0x28ad3
leaq 0x350(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x28a48
leaq 0x3f67a(%rip), %rdx     # 0xab412
leaq 0x310(%rsp), %rdi
leaq 0x350(%rsp), %rsi
callq 0x28a29
leaq 0x350(%rsp), %rdi
callq 0x8978
leaq 0x2f0(%rsp), %rdi
callq 0x8978
leaq 0x6c0(%rsp), %rdi
callq 0x8978
leaq 0x1b8(%rsp), %rdi
callq 0x8978
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq 0x310(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, 0x68(%rsp)
movq %rax, %rdi
callq 0x84e0
leaq 0x72cbe(%rip), %rdx     # 0xdeac8
leaq 0x1b8(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
callq 0x28b6d
leaq 0x3f5dd(%rip), %rdx     # 0xab403
leaq 0x6c0(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x28a29
movl 0x72ca7(%rip), %esi     # 0xdeae8
leaq 0x260(%rsp), %rdi
callq 0x28ad3
leaq 0x350(%rsp), %rdi
leaq 0x6c0(%rsp), %rsi
leaq 0x260(%rsp), %rdx
callq 0x28a48
leaq 0x3f5b6(%rip), %rdx     # 0xab428
leaq 0x2f0(%rsp), %rdi
leaq 0x350(%rsp), %rsi
callq 0x28a29
leaq 0x350(%rsp), %rdi
callq 0x8978
leaq 0x260(%rsp), %rdi
callq 0x8978
leaq 0x6c0(%rsp), %rdi
callq 0x8978
leaq 0x1b8(%rsp), %rdi
callq 0x8978
leaq 0x37a02(%rip), %rsi     # 0xa38c4
movq 0x68(%rsp), %rdi
callq 0x8480
leaq 0x2df4b(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f55a(%rip), %rsi     # 0xab43c
movq %rax, %rdi
callq 0x8480
leaq 0x2df2d(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f542(%rip), %rsi     # 0xab442
movq %rax, %rdi
callq 0x8480
leaq 0x2df0f(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f484(%rip), %rsi     # 0xab3a2
movq %rax, %rdi
callq 0x8480
leaq 0x2def1(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f471(%rip), %rsi     # 0xab3ad
movq %rax, %rdi
callq 0x8480
leaq 0x2ded3(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f4ec(%rip), %rsi     # 0xab446
movq %rax, %rdi
callq 0x8480
leaq 0x2deb5(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f4d6(%rip), %rsi     # 0xab44e
movq %rax, %rdi
callq 0x8480
leaq 0x2de97(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f4c0(%rip), %rsi     # 0xab456
movq %rax, %rdi
callq 0x8480
leaq 0x2de79(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f4b0(%rip), %rsi     # 0xab464
movq %rax, %rdi
callq 0x8480
leaq 0x2de5b(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x3f4a6(%rip), %rsi     # 0xab478
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
callq 0x8230
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %rbp
movq 0x2f0(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
leaq 0x270(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x510(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
leaq 0x260(%rsp), %rsi
movq %rbx, %rdi
callq 0x80a0
leaq 0x500(%rsp), %rsi
movq %rbx, %rdi
callq 0x80a0
leaq 0x5c0(%rsp), %rdi
leaq 0x260(%rsp), %rsi
pushq $0x2c
popq %rdx
callq 0x40349
leaq 0x5a8(%rsp), %rdi
leaq 0x500(%rsp), %rsi
pushq $0x2c
popq %rdx
callq 0x40349
movq 0x5c0(%rsp), %rdi
movq 0x5c8(%rsp), %rsi
callq 0x4c811
movq 0x5a8(%rsp), %rdi
movq 0x5b0(%rsp), %rsi
callq 0x4c811
leaq 0x3f3e1(%rip), %rsi     # 0xab48c
leaq 0x7a0(%rsp), %rdi
leaq 0x350(%rsp), %rdx
callq 0x21904
leaq 0x2b553(%rip), %rsi     # 0x9761a
leaq 0x2d0(%rsp), %rdi
leaq 0x350(%rsp), %rdx
callq 0x21904
andq $0x0, 0x190(%rsp)
andq $0x0, 0x170(%rsp)
andq $0x0, 0x150(%rsp)
andq $0x0, 0x220(%rsp)
xorpd %xmm0, %xmm0
andq $0x0, 0x200(%rsp)
movapd %xmm0, 0x180(%rsp)
andq $0x0, 0xb0(%rsp)
movapd %xmm0, 0x160(%rsp)
andq $0x0, 0x90(%rsp)
movapd %xmm0, 0x140(%rsp)
andq $0x0, 0x440(%rsp)
movapd %xmm0, 0x210(%rsp)
andq $0x0, 0x7f0(%rsp)
movapd %xmm0, 0x1f0(%rsp)
andq $0x0, 0x130(%rsp)
movapd %xmm0, 0xa0(%rsp)
andq $0x0, 0x110(%rsp)
movapd %xmm0, 0x80(%rsp)
andq $0x0, 0x2b0(%rsp)
movapd %xmm0, 0x430(%rsp)
andq $0x0, 0x290(%rsp)
movapd %xmm0, 0x7e0(%rsp)
movapd %xmm0, 0x120(%rsp)
leaq 0x650(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x1c0(%rsp), %rax
andl $0x0, (%rax)
movapd %xmm0, 0x100(%rsp)
andq $0x0, 0x8(%rax)
movapd %xmm0, 0x2a0(%rsp)
movapd %xmm0, 0x280(%rsp)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x4d0(%rsp), %rdi
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
leaq 0x4b0(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
xorpd %xmm0, %xmm0
leaq 0x6a0(%rsp), %rdi
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
leaq 0x7c0(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70e16
xorpd %xmm0, %xmm0
leaq 0x580(%rsp), %rdi
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
leaq 0x560(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
xorpd %xmm0, %xmm0
leaq 0x540(%rsp), %rdi
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
leaq 0x520(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
xorpd %xmm0, %xmm0
leaq 0x680(%rsp), %rdi
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
movq %rbp, 0x1a8(%rsp)
movq %r15, 0x48(%rsp)
movq %r14, 0x58(%rsp)
movq %r13, 0x5a0(%rsp)
leaq 0x660(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movl $0x1c9c380, %esi        # imm = 0x1C9C380
callq 0x70d80
xorl %ebx, %ebx
xorl %r13d, %r13d
movq $0x0, 0x10(%rsp)
movl $0x0, 0x1c(%rsp)
xorl %r14d, %r14d
movl $0x0, 0x50(%rsp)
movl $0x0, 0x18(%rsp)
movswl %r13w, %eax
movl %eax, 0x1ec(%rsp)
movswl %bx, %eax
movl %eax, 0x60(%rsp)
movl %r14d, %ebp
movl %ebp, %r14d
movq 0xd0(%rsp), %rdi
leaq 0x640(%rsp), %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
movq 0x1a8(%rsp), %rbp
jne 0x6e5d1
movq 0x640(%rsp), %rax
cmpb $0x23, (%rax)
jne 0x6c3d6
movzbl 0x1(%rax), %eax
cmpl $0x23, %eax
je 0x6c382
cmpl $0x43, %eax
je 0x6de1c
leaq 0x28(%rsp), %rdi
leaq 0x640(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x40349
movq 0x28(%rsp), %rsi
leaq 0xe0(%rsp), %rdi
callq 0x8600
movq 0x28(%rsp), %rsi
addq $0x20, %rsi
leaq 0x840(%rsp), %rdi
callq 0x8600
movq 0x28(%rsp), %rsi
movl $0xe0, %eax
addq %rax, %rsi
leaq 0x828(%rsp), %rdi
pushq $0x3b
popq %rdx
callq 0x40349
movl $0xf8, %edi
callq 0x8490
movq %rax, %r15
movq %rax, %rdi
callq 0x70eb8
movq 0x28(%rsp), %rsi
addq $0x60, %rsi
leaq 0x620(%rsp), %rdi
callq 0x8600
incl 0x50(%rsp)
movq 0x628(%rsp), %r13
cmpq $0x2, %r13
jae 0x6c50b
leaq 0x28(%rsp), %rdi
movq %r15, %rsi
leaq 0x120(%rsp), %rdx
leaq 0x100(%rsp), %rcx
callq 0x6accc
cmpl $0x1, 0xd0(%r15)
jne 0x6c4a6
cmpb $0x0, 0xd4(%r15)
je 0x6c587
movl %r14d, %ebp
movl 0x50(%rsp), %eax
cltd
movl $0x186a0, %ecx          # imm = 0x186A0
idivl %ecx
testl %edx, %edx
jne 0x6c537
leaq 0x4d0(%rsp), %rdi
leaq 0x4b0(%rsp), %rsi
callq 0x6b356
movsd %xmm0, 0x8(%rsp)
movq 0x70b0d(%rip), %rdi     # 0xdcfe8
movl 0x50(%rsp), %esi
callq 0x8840
movq %rax, %rdi
leaq 0x3f107(%rip), %rsi     # 0xab5f5
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
callq 0x8230
jmp 0x6c537
andq $0x0, 0x628(%rsp)
movb $0x1, 0xd4(%r15)
movq 0x620(%rsp), %rax
movb $0x0, (%rax)
leaq 0x620(%rsp), %rdi
callq 0x8930
movl %r14d, %ebp
leaq 0x620(%rsp), %rdi
callq 0x8978
leaq 0x828(%rsp), %rdi
callq 0x28a08
leaq 0x840(%rsp), %rdi
callq 0x8978
leaq 0xe0(%rsp), %rdi
callq 0x8978
leaq 0x28(%rsp), %rdi
callq 0x28a08
movl %ebp, %r14d
cmpq $0x2, %r13
jae 0x6c388
jmp 0x6c385
movl 0xc0(%r15), %eax
testl %eax, %eax
jg 0x6c5a0
cmpl $0x0, 0xc4(%r15)
jle 0x6c4a6
cmpl 0xc8(%r15), %eax
jl 0x6c5bd
movl 0xc4(%r15), %eax
cmpl 0xcc(%r15), %eax
jge 0x6c4a6
movq %r15, %rdi
callq 0x70f06
movsd 0xe8(%r15), %xmm0
movsd 0xf0(%r15), %xmm1
movl 0xc8(%r15), %edi
movl 0xcc(%r15), %esi
callq 0x70f23
movsd %xmm0, 0xd8(%rsp)
leaq 0x4d0(%rsp), %rdi
leaq 0xd8(%rsp), %rbx
movq %rbx, %rsi
callq 0x5a406
leaq 0x160(%rsp), %rdi
movq %rbx, %rsi
callq 0x5a406
movsd 0xe8(%r15), %xmm0
movsd 0xf0(%r15), %xmm1
movsd 0x2afbb(%rip), %xmm3    # 0x975f0
movapd %xmm3, %xmm2
subsd %xmm1, %xmm2
subsd %xmm0, %xmm3
mulsd %xmm1, %xmm3
mulsd %xmm0, %xmm2
addsd %xmm3, %xmm2
movsd %xmm2, 0x70(%rsp)
leaq 0x4b0(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0x5a406
movl 0x1ec(%rsp), %ebp
leaq 0x140(%rsp), %rdi
movq %rbx, %rsi
callq 0x5a406
movsd 0x70(%rsp), %xmm0
ucomisd 0x29b0b(%rip), %xmm0    # 0x96198
jne 0x6c695
jnp 0x6ea51
movq %r15, %rdi
movl %ebp, %esi
movl 0x60(%rsp), %edx
callq 0x6b149
movsd %xmm0, 0x1b0(%rsp)
leaq 0x6a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rbx
movq %rbx, %rsi
callq 0x5a406
leaq 0x180(%rsp), %rdi
movq %rbx, %rsi
callq 0x5a406
leaq 0x2b8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl %ebp, %edx
movl 0x60(%rsp), %ecx
callq 0x6b3c8
leaq 0x7c0(%rsp), %rdi
movq %rbx, %rsi
callq 0x43874
leaq 0x4e8(%rsp), %rdi
movq %r15, %rsi
movl %ebp, %edx
movl 0x60(%rsp), %ecx
callq 0x6b1fe
movq 0x4e8(%rsp), %rsi
leaq 0xa0(%rsp), %rdi
callq 0x5a406
movq 0x4e8(%rsp), %rsi
addq $0x8, %rsi
leaq 0x80(%rsp), %rdi
callq 0x5a406
movq 0x4e8(%rsp), %rsi
leaq 0x680(%rsp), %rdi
callq 0x5a406
movq 0x4e8(%rsp), %rsi
addq $0x8, %rsi
leaq 0x660(%rsp), %rdi
callq 0x5a406
movq 0x2b8(%rsp), %rsi
leaq 0x580(%rsp), %rdi
callq 0x5a406
movq 0x2b8(%rsp), %rsi
addq $0x8, %rsi
leaq 0x560(%rsp), %rdi
callq 0x5a406
movq 0x2b8(%rsp), %rsi
leaq 0x210(%rsp), %rdi
callq 0x5a406
movq 0x2b8(%rsp), %rsi
addq $0x10, %rsi
leaq 0x540(%rsp), %rdi
callq 0x5a406
movq 0x2b8(%rsp), %rsi
addq $0x18, %rsi
leaq 0x520(%rsp), %rdi
callq 0x5a406
movq 0x2b8(%rsp), %rsi
addq $0x8, %rsi
leaq 0x1f0(%rsp), %rdi
callq 0x5a406
cmpq $0x0, 0x7226b(%rip)     # 0xdea70
je 0x6c8e8
leaq 0x350(%rsp), %r12
movq %r12, %rdi
leaq 0xaa8(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
leaq 0x840(%rsp), %rcx
callq 0x70f70
movsd 0xd8(%rsp), %xmm0
divsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x5a0(%rsp), %rdi
movq %r12, %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2d5bc(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2d59f(%rip), %rsi     # 0x99e1e
callq 0x8480
movsd 0x1b0(%rsp), %xmm0
movq %rax, %rdi
callq 0x8750
movq %rax, %rdi
leaq 0x2d57f(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0xe0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2d560(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x840(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
callq 0x8230
leaq 0x350(%rsp), %rdi
callq 0x8978
cmpq $0x0, 0x72120(%rip)     # 0xdea10
je 0x6cd6b
movsd 0xd8(%rsp), %xmm0
divsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x830(%rsp), %rsi
addq $-0x20, %rsi
leaq 0x350(%rsp), %rdi
pushq $0x3d
popq %rdx
callq 0x40349
movq 0x350(%rsp), %rsi
addq $0x20, %rsi
leaq 0x600(%rsp), %rbx
movq %rbx, %rdi
callq 0x8600
xorpd %xmm0, %xmm0
maxsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x28a08
xorpd %xmm0, %xmm0
movapd %xmm0, 0x360(%rsp)
movapd %xmm0, 0x350(%rsp)
andl $0x0, 0x370(%rsp)
movapd 0x2ac2a(%rip), %xmm1    # 0x975b0
movupd %xmm1, 0x378(%rsp)
movupd %xmm1, 0x388(%rsp)
movupd %xmm1, 0x398(%rsp)
movupd %xmm1, 0x3a8(%rsp)
leaq 0x390(%rsp), %rax
movupd %xmm0, 0x88(%rax)
movupd %xmm0, 0x78(%rax)
movupd %xmm0, 0x68(%rax)
movupd %xmm0, 0x58(%rax)
movupd %xmm0, 0x48(%rax)
andq $0x0, 0x98(%rax)
movupd %xmm0, 0x38(%rax)
movupd %xmm0, 0x28(%rax)
movq 0x28(%rsp), %rsi
addq $0x60, %rsi
movq %rbx, %rdi
callq 0x26b06
testb %al, %al
je 0x6ca4f
leaq 0x490(%rsp), %rbx
movq %rbx, %rdi
leaq 0x2acb9(%rip), %rsi     # 0x976c0
leaq 0x248(%rsp), %rdx
callq 0x21904
movq %rbx, (%rsp)
leaq 0x6c0(%rsp), %r12
movq %r12, %rdi
leaq 0x28(%rsp), %rsi
leaq 0x120(%rsp), %rdx
leaq 0x100(%rsp), %rcx
leaq 0x2a0(%rsp), %r8
leaq 0x280(%rsp), %r9
callq 0x416d4
jmp 0x6cac0
movq 0x28(%rsp), %rsi
subq $-0x80, %rsi
movq %rbx, %rdi
callq 0x26b06
testb %al, %al
je 0x6cbc3
leaq 0x490(%rsp), %rbx
movq %rbx, %rdi
leaq 0x4374d(%rip), %rsi     # 0xb01c7
leaq 0x248(%rsp), %rdx
callq 0x21904
movq %rbx, (%rsp)
leaq 0x6c0(%rsp), %r12
movq %r12, %rdi
leaq 0x28(%rsp), %rsi
leaq 0x120(%rsp), %rdx
leaq 0x100(%rsp), %rcx
leaq 0x2a0(%rsp), %r8
leaq 0x280(%rsp), %r9
callq 0x416d4
leaq 0x350(%rsp), %rdi
movq %r12, %rsi
callq 0x2f332
movq %r12, %rdi
callq 0x2f3a2
movq %rbx, %rdi
callq 0x8978
movq 0x58(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2d322(%rip), %rsi     # 0x99e1e
callq 0x8480
movq 0x28(%rsp), %rsi
addq $0x20, %rsi
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
leaq 0x2d302(%rip), %rsi     # 0x99e1e
callq 0x8480
movsd 0x398(%rsp), %xmm0
subsd 0x3a0(%rsp), %xmm0
movq %rax, %rdi
callq 0x8750
movq %rax, %rdi
leaq 0x2d2d9(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2d2bc(%rip), %rsi     # 0x99e1e
callq 0x8480
movsd 0x3a8(%rsp), %xmm0
movsd 0x2aa78(%rip), %xmm1    # 0x975f0
ucomisd %xmm0, %xmm1
leaq 0x2aaa2(%rip), %rcx     # 0x97625
movq %rcx, %rsi
leaq 0x450f7(%rip), %rax     # 0xb1c84
cmovaq %rax, %rsi
ucomisd 0x295ff(%rip), %xmm0    # 0x96198
cmovbeq %rcx, %rsi
movq 0x58(%rsp), %rdi
callq 0x8480
movq %rax, %rdi
leaq 0x2d26d(%rip), %rsi     # 0x99e1e
callq 0x8480
leaq 0x3b0(%rsp), %rax
jmp 0x6cd0e
leaq 0x490(%rsp), %rbx
movq %rbx, %rdi
leaq 0x4024a(%rip), %rsi     # 0xace1f
leaq 0x248(%rsp), %rdx
callq 0x21904
movq %rbx, (%rsp)
leaq 0x6c0(%rsp), %r12
movq %r12, %rdi
leaq 0x28(%rsp), %rsi
leaq 0x120(%rsp), %rdx
leaq 0x100(%rsp), %rcx
leaq 0x2a0(%rsp), %r8
leaq 0x280(%rsp), %r9
callq 0x416d4
leaq 0x350(%rsp), %rdi
movq %r12, %rsi
callq 0x2f332
movq %r12, %rdi
callq 0x2f3a2
movq %rbx, %rdi
callq 0x8978
movq 0x58(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2d1c7(%rip), %rsi     # 0x99e1e
callq 0x8480
movq 0x28(%rsp), %rsi
addq $0x20, %rsi
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
leaq 0x2d1a7(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3e96a(%rip), %rsi     # 0xab5f0
callq 0x8480
movq %rax, %rdi
leaq 0x2d189(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2d16c(%rip), %rsi     # 0x99e1e
callq 0x8480
movsd 0x388(%rsp), %xmm0
movsd 0x2a928(%rip), %xmm1    # 0x975f0
ucomisd %xmm0, %xmm1
leaq 0x2a952(%rip), %rcx     # 0x97625
movq %rcx, %rsi
leaq 0x44fa7(%rip), %rax     # 0xb1c84
cmovaq %rax, %rsi
ucomisd 0x294af(%rip), %xmm0    # 0x96198
cmovbeq %rcx, %rsi
movq 0x58(%rsp), %rdi
callq 0x8480
movq %rax, %rdi
leaq 0x2d11d(%rip), %rsi     # 0x99e1e
callq 0x8480
leaq 0x390(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x2a8d6(%rip), %xmm1    # 0x975f0
ucomisd %xmm0, %xmm1
leaq 0x2a900(%rip), %rcx     # 0x97625
movq %rcx, %rsi
leaq 0x44f55(%rip), %rax     # 0xb1c84
cmovaq %rax, %rsi
ucomisd 0x2945d(%rip), %xmm0    # 0x96198
cmovbeq %rcx, %rsi
movq 0x58(%rsp), %rdi
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x350(%rsp), %rdi
callq 0x2f3a2
leaq 0x600(%rsp), %rdi
callq 0x8978
leaq 0x600(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x40349
movq 0x600(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x26b06
testb %al, %al
je 0x6d297
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86f0
movl 0x7081b(%rip), %r12d    # 0xdd5d0
movq 0x10(%rsp), %rcx
addl %r12d, %ecx
cmpl %ecx, %eax
jle 0x6d356
cmpq $0x0, 0x71c83(%rip)     # 0xdea50
je 0x6cdec
movq 0xc8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x3ace4
movl %eax, %r12d
leaq 0xa90(%rsp), %rbx
movq %rbx, %rdi
leaq 0x180(%rsp), %rsi
callq 0x2f816
movq %rbx, %rdi
movl %r12d, %esi
callq 0x71255
movsd %xmm0, 0x40(%rsp)
movq %rbx, %rdi
callq 0x2b43c
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x6b356
movsd %xmm0, 0x20(%rsp)
leaq 0xa78(%rsp), %rbx
movq %rbx, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x2f816
movq %rbx, %rdi
movl %r12d, %esi
callq 0x71255
movsd %xmm0, 0xc0(%rsp)
movq %rbx, %rdi
callq 0x2b43c
leaq 0xa60(%rsp), %rbx
movq %rbx, %rdi
leaq 0x80(%rsp), %rsi
callq 0x2f816
movq %rbx, %rdi
movq %r12, 0x8(%rsp)
movl %r12d, %esi
callq 0x71255
movsd %xmm0, 0x1a0(%rsp)
movq %rbx, %rdi
callq 0x2b43c
movq 0xa0(%rsp), %rdi
movq 0xa8(%rsp), %rsi
andl $0x0, 0x350(%rsp)
leaq 0x350(%rsp), %r12
movq %r12, %rdx
callq 0x72477
movq %rax, 0x198(%rsp)
movq 0xa8(%rsp), %rbp
subq 0xa0(%rsp), %rbp
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rsi
andl $0x0, 0x350(%rsp)
movq %r12, %rdx
callq 0x72477
movq %rax, %rbx
movq 0x88(%rsp), %r12
subq 0x80(%rsp), %r12
movq 0x68(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2ceea(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x8840
movq %rax, %rdi
leaq 0x2cece(%rip), %rsi     # 0x99e1e
callq 0x8480
movl 0x70675(%rip), %esi     # 0xdd5d0
addl 0x10(%rsp), %esi
movq %rax, %rdi
callq 0x8840
movq %rax, %rdi
leaq 0x2cead(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2ce90(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x40(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2ce73(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0xc0(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2ce53(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x1a0(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2ce33(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x8840
movq %rax, %rdi
leaq 0x2ce17(%rip), %rsi     # 0x99e1e
callq 0x8480
shrq $0x3, %rbp
subl 0x198(%rsp), %ebp
cvtsi2sd %ebp, %xmm0
cvtsi2sdl 0x8(%rsp), %xmm1
movsd %xmm1, 0x8(%rsp)
divsd %xmm1, %xmm0
movq %rax, %rdi
callq 0x8750
movq %rax, %rdi
leaq 0x2cde1(%rip), %rsi     # 0x99e1e
callq 0x8480
shrq $0x3, %r12
subl %ebx, %r12d
cvtsi2sd %r12d, %xmm0
divsd 0x8(%rsp), %xmm0
movq %rax, %rdi
callq 0x8750
movq %rax, %rdi
callq 0x8230
movq 0x180(%rsp), %rax
cmpq %rax, 0x188(%rsp)
je 0x6d07e
movq %rax, 0x188(%rsp)
movq 0x160(%rsp), %rax
cmpq %rax, 0x168(%rsp)
je 0x6d098
movq %rax, 0x168(%rsp)
movq 0x140(%rsp), %rax
cmpq %rax, 0x148(%rsp)
je 0x6d0b2
movq %rax, 0x148(%rsp)
movq 0x210(%rsp), %rax
cmpq %rax, 0x218(%rsp)
je 0x6d0cc
movq %rax, 0x218(%rsp)
movq 0x1f0(%rsp), %rax
cmpq %rax, 0x1f8(%rsp)
je 0x6d0e6
movq %rax, 0x1f8(%rsp)
movq 0xa0(%rsp), %rax
cmpq %rax, 0xa8(%rsp)
je 0x6d100
movq %rax, 0xa8(%rsp)
movq 0x80(%rsp), %rax
cmpq %rax, 0x88(%rsp)
je 0x6d11a
movq %rax, 0x88(%rsp)
xorl %r12d, %r12d
movl 0x704ad(%rip), %ebp     # 0xdd5d0
movq 0x10(%rsp), %rbx
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86f0
movq %rbx, 0x10(%rsp)
leal (%rbx,%rbp), %ecx
cmpl %ecx, %eax
jle 0x6d356
subl $0x1, %r12d
jb 0x6d290
cmpq $0x0, 0x718f8(%rip)     # 0xdea50
je 0x6d176
movq 0xc8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x3ace4
movl %eax, %ebp
movq 0x68(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2cc8c(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x8840
movq %rax, %rdi
leaq 0x2cc70(%rip), %rsi     # 0x99e1e
callq 0x8480
movl 0x70417(%rip), %esi     # 0xdd5d0
addl 0x10(%rsp), %esi
movq %rax, %rdi
callq 0x8840
movq %rax, %rdi
leaq 0x2cc4f(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x25566(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x2cc31(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
xorl %esi, %esi
callq 0x8840
movq %rax, %rdi
leaq 0x2cc18(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
xorl %esi, %esi
callq 0x8840
movq %rax, %rdi
leaq 0x2cbff(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
xorl %esi, %esi
callq 0x8840
movq %rax, %rdi
leaq 0x2cbe6(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movl %ebp, %esi
callq 0x8840
movq %rax, %rdi
leaq 0x2cbcd(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
xorl %esi, %esi
callq 0x8840
movq %rax, %rdi
leaq 0x2cbb4(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
xorl %esi, %esi
callq 0x8840
movq %rax, %rdi
callq 0x8230
movl 0x70349(%rip), %ebp     # 0xdd5d0
movq 0x10(%rsp), %rax
addl %ebp, %eax
movl %eax, %ecx
movl %ecx, %ebx
jmp 0x6d128
movq 0x180(%rsp), %rax
cmpq %rax, 0x188(%rsp)
je 0x6d2b1
movq %rax, 0x188(%rsp)
movq 0x160(%rsp), %rax
cmpq %rax, 0x168(%rsp)
je 0x6d2cb
movq %rax, 0x168(%rsp)
movq 0x140(%rsp), %rax
cmpq %rax, 0x148(%rsp)
je 0x6d2e5
movq %rax, 0x148(%rsp)
movq 0x210(%rsp), %rax
cmpq %rax, 0x218(%rsp)
je 0x6d2ff
movq %rax, 0x218(%rsp)
movq 0x1f0(%rsp), %rax
cmpq %rax, 0x1f8(%rsp)
je 0x6d319
movq %rax, 0x1f8(%rsp)
movq 0xa0(%rsp), %rax
cmpq %rax, 0xa8(%rsp)
je 0x6d333
movq %rax, 0xa8(%rsp)
movq 0x80(%rsp), %rax
movq $0x0, 0x10(%rsp)
cmpq %rax, 0x88(%rsp)
je 0x6d356
movq %rax, 0x88(%rsp)
leal 0x1(%r14), %ebp
movl 0x71788(%rip), %ecx     # 0xdeae8
cmpq $0x1, %rcx
jne 0x6d44a
movsd 0xd8(%rsp), %xmm0
divsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48(%rsp), %rdi
movl %ebp, %esi
callq 0x8840
leaq 0x2ca8c(%rip), %r12     # 0x99e1e
movq %rax, %rdi
movq %r12, %rsi
callq 0x8480
movq %rax, %r14
leaq 0x6c0(%rsp), %rbx
movq %rbx, %rdi
leaq 0xe0(%rsp), %rsi
movq %r12, %rdx
callq 0x28806
movq 0x28(%rsp), %rdx
addq $0x20, %rdx
leaq 0x350(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x287e7
movq %r14, %rdi
movq %r12, %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2ca32(%rip), %rsi     # 0x99e1e
callq 0x8480
xorpd %xmm0, %xmm0
maxsd 0x8(%rsp), %xmm0
movq %rax, %rdi
callq 0x8750
movq %rax, %rdi
leaq 0x2ca11(%rip), %rsi     # 0x99e1e
callq 0x8480
movsd 0x1b0(%rsp), %xmm0
movq %rax, %rdi
callq 0x8750
movq %rax, %rdi
callq 0x8230
leaq 0x350(%rsp), %rdi
callq 0x8978
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6dddb
testl %ecx, %ecx
jle 0x6dddb
movl %ebp, %eax
cltd
idivl 0x71691(%rip)           # 0xdeaec
cmpl %ecx, %ebp
jl 0x6dddb
testl %edx, %edx
jne 0x6dddb
movq 0x4d8(%rsp), %rdx
shlq $0x3, %rcx
movq %rdx, %rsi
subq %rcx, %rsi
leaq 0x490(%rsp), %rdi
leaq 0x350(%rsp), %r12
movq %r12, %rcx
callq 0x71282
movq 0x4b8(%rsp), %rdx
movslq 0x71644(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x248(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rcx
callq 0x71282
leaq 0x490(%rsp), %rdi
movq %rbx, %rsi
callq 0x6b356
movsd %xmm0, 0x8(%rsp)
movq 0x6a8(%rsp), %rdx
movslq 0x71602(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x810(%rsp), %rbx
movq %rbx, %rdi
leaq 0x350(%rsp), %rcx
callq 0x71282
leaq 0x9d0(%rsp), %rdi
movq %rbx, %rsi
callq 0x2f816
xorpd %xmm0, %xmm0
maxsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
leaq 0x9d0(%rsp), %rbx
movq %rbx, %rdi
callq 0x2f7e9
movsd %xmm0, 0x20(%rsp)
movq %rbx, %rdi
callq 0x2b43c
movl 0x7159c(%rip), %eax     # 0xdeae8
cmpl 0x7159a(%rip), %eax     # 0xdeaec
jne 0x6d768
leaq 0x230(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x40349
movq 0x230(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x26b06
testb %al, %al
je 0x6d857
leaq 0x6c0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x2d0(%rsp), %rsi
leaq 0x2c877(%rip), %rdx     # 0x99e1e
callq 0x28806
movq 0x28(%rsp), %rdx
addq $0x20, %rdx
leaq 0x350(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x287e7
leaq 0x2d0(%rsp), %rdi
movq %r12, %rsi
callq 0x8550
movq %r12, %rdi
callq 0x8978
movq %rbx, %rdi
callq 0x8978
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86f0
movl %eax, 0x7c(%rsp)
leaq 0x9b8(%rsp), %rdi
leaq 0x810(%rsp), %rsi
callq 0x2f816
movl 0x7c(%rsp), %esi
subl 0x1c(%rsp), %esi
leaq 0x9b8(%rsp), %rbx
movq %rbx, %rdi
callq 0x71255
movsd %xmm0, 0x40(%rsp)
movq %rbx, %rdi
callq 0x2b43c
subl 0x714ac(%rip), %r14d    # 0xdeae8
addl $0x2, %r14d
movq 0x48(%rsp), %rdi
movl %r14d, %esi
callq 0x8840
movq %rax, %rdi
leaq 0x2c7c7(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2c7a8(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c78b(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c76e(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x40(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c751(%rip), %rsi     # 0x99e1e
callq 0x8480
movq 0x250(%rsp), %rsi
subq 0x248(%rsp), %rsi
sarq $0x3, %rsi
movq %rax, %rdi
callq 0x8320
movq %rax, %rdi
callq 0x8230
movsd 0x713f2(%rip), %xmm0    # 0xdeaf0
ucomisd 0x28a92(%rip), %xmm0    # 0x96198
jbe 0x6d857
movsd 0x8(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jb 0x6d723
testb $0x1, 0x18(%rsp)
je 0x6d80a
ucomisd 0x8(%rsp), %xmm0
jbe 0x6d857
testb $0x1, 0x18(%rsp)
je 0x6d857
movq 0x230(%rsp), %rsi
addq $0x20, %rsi
movq 0xb8(%rsp), %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
movl $0x0, 0x18(%rsp)
jmp 0x6d857
subl %eax, %r14d
addl $0x2, %r14d
movq 0x48(%rsp), %rdi
movl %r14d, %esi
callq 0x8840
movq %rax, %rdi
leaq 0x2c698(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x7a0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2c679(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c65c(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c63f(%rip), %rsi     # 0x99e1e
callq 0x8480
movq 0x250(%rsp), %rsi
subq 0x248(%rsp), %rsi
sarq $0x3, %rsi
movq %rax, %rdi
callq 0x8320
movq %rax, %rdi
callq 0x8230
jmp 0x6d864
movq 0x230(%rsp), %rsi
movq 0xb8(%rsp), %rdi
callq 0x8430
movq %rax, %rdi
leaq 0x2c5f5(%rip), %rsi     # 0x99e1e
callq 0x8480
movq 0x230(%rsp), %rsi
addq $0x20, %rsi
movq %rax, %rdi
callq 0x8430
movb $0x1, %cl
movl %ecx, 0x18(%rsp)
movq %rax, %rdi
leaq 0x2c5cc(%rip), %rsi     # 0x99e1e
callq 0x8480
leaq 0x230(%rsp), %rdi
callq 0x28a08
movq 0x588(%rsp), %rdx
movslq 0x71275(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x230(%rsp), %rbx
movq %rbx, %rdi
leaq 0x350(%rsp), %rcx
callq 0x71282
leaq 0xa48(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2f816
movq %r14, %rdi
callq 0x2f7e9
movsd %xmm0, 0x8(%rsp)
movq %r14, %rdi
callq 0x2b43c
movq 0x568(%rsp), %rdx
movslq 0x7121b(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x8c0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x350(%rsp), %rcx
callq 0x71282
leaq 0xa30(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2f816
movq %r14, %rdi
callq 0x2f7e9
movsd %xmm0, 0x20(%rsp)
movq %r14, %rdi
callq 0x2b43c
movq 0x548(%rsp), %rdx
movslq 0x711c1(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x8a8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x350(%rsp), %rcx
callq 0x71282
leaq 0xa18(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2f816
movq %r14, %rdi
callq 0x2f7e9
movsd %xmm0, 0x40(%rsp)
movq %r14, %rdi
callq 0x2b43c
movq 0x528(%rsp), %rdx
movslq 0x71167(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x890(%rsp), %rbx
movq %rbx, %rdi
leaq 0x350(%rsp), %rcx
callq 0x71282
leaq 0xa00(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2f816
movq %r14, %rdi
callq 0x2f7e9
movsd %xmm0, 0xc0(%rsp)
movq %r14, %rdi
callq 0x2b43c
movq 0x688(%rsp), %rdx
movslq 0x7110a(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x878(%rsp), %rbx
movq %rbx, %rdi
leaq 0x350(%rsp), %rcx
callq 0x71282
leaq 0x9e8(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x2f816
movl 0x7c(%rsp), %r14d
subl 0x1c(%rsp), %r14d
movq %r12, %rdi
movl %r14d, %esi
callq 0x71255
movsd %xmm0, 0x1a0(%rsp)
movq %r12, %rdi
callq 0x2b43c
movq 0x668(%rsp), %rdx
movslq 0x710a0(%rip), %rax     # 0xdeae8
shlq $0x3, %rax
movq %rdx, %rsi
subq %rax, %rsi
leaq 0x860(%rsp), %rbx
movq %rbx, %rdi
leaq 0x350(%rsp), %rcx
callq 0x71282
leaq 0x9a0(%rsp), %rdi
movq %rbx, %rsi
callq 0x2f816
leaq 0x9a0(%rsp), %rbx
movq %rbx, %rdi
movl %r14d, %esi
callq 0x71255
movsd %xmm0, 0x198(%rsp)
movq %rbx, %rdi
callq 0x2b43c
movl 0x71044(%rip), %eax     # 0xdeae8
cmpl 0x71042(%rip), %eax     # 0xdeaec
jne 0x6dc2e
leaq 0x7f8(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x40349
movq 0x7f8(%rsp), %rdi
leaq 0xe0(%rsp), %rbx
movq %rbx, %rsi
callq 0x26b06
testb %al, %al
je 0x6dd1f
movq 0x1a8(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2c317(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c2fa(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c2dd(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x40(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c2c0(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0xc0(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c2a0(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x1a0(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c280(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x198(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
callq 0x8230
leaq 0x6c0(%rsp), %r12
movq %r12, %rdi
leaq 0xe0(%rsp), %rsi
leaq 0x2c248(%rip), %rdx     # 0x99e1e
callq 0x28806
movq 0x28(%rsp), %rdx
addq $0x20, %rdx
leaq 0x350(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x287e7
leaq 0x2d0(%rsp), %rdi
movq %r14, %rsi
callq 0x8550
movq %r14, %rdi
callq 0x8978
movq %r12, %rdi
callq 0x8978
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86f0
movl %eax, 0x1c(%rsp)
jmp 0x6dd59
movq 0x1a8(%rsp), %rdi
leaq 0x7a0(%rsp), %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x2c1d1(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c1b4(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x20(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c197(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x40(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x2c17a(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0xc0(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
callq 0x8230
leaq 0x6c0(%rsp), %r12
movq %r12, %rdi
leaq 0xe0(%rsp), %rsi
leaq 0x2c142(%rip), %rdx     # 0x99e1e
callq 0x28806
movq 0x28(%rsp), %rdx
addq $0x20, %rdx
leaq 0x350(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x287e7
leaq 0x7a0(%rsp), %rdi
movq %r14, %rsi
callq 0x8550
movq %r14, %rdi
callq 0x8978
movq %r12, %rdi
callq 0x8978
jmp 0x6dd66
leaq 0x350(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x298f0(%rip), %rdx     # 0x97624
callq 0x28806
leaq 0x2d0(%rsp), %rdi
movq %r14, %rsi
callq 0x8550
movq %r14, %rdi
callq 0x8978
movl $0x0, 0x1c(%rsp)
leaq 0x7f8(%rsp), %rdi
callq 0x28a08
leaq 0x860(%rsp), %rdi
callq 0x2b43c
leaq 0x878(%rsp), %rdi
callq 0x2b43c
leaq 0x890(%rsp), %rdi
callq 0x2b43c
leaq 0x8a8(%rsp), %rdi
callq 0x2b43c
leaq 0x8c0(%rsp), %rdi
callq 0x2b43c
leaq 0x230(%rsp), %rdi
callq 0x2b43c
leaq 0x810(%rsp), %rdi
callq 0x2b43c
leaq 0x248(%rsp), %rdi
callq 0x2b43c
leaq 0x490(%rsp), %rdi
callq 0x2b43c
movq %r15, %rdi
callq 0x712b4
movl $0xf8, %esi
movq %r15, %rdi
callq 0x84a0
leaq 0x600(%rsp), %rdi
callq 0x28a08
leaq 0x4e8(%rsp), %rdi
callq 0x2b43c
leaq 0x2b8(%rsp), %rdi
callq 0x2b43c
jmp 0x6c4a9
leaq 0x350(%rsp), %rdi
leaq 0x640(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x40349
cmpq $0x0, 0x70bf4(%rip)     # 0xdea30
je 0x6e166
leaq 0x6c0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x70bd4(%rip), %rsi     # 0xdea28
callq 0x4237c
leaq 0x430(%rsp), %rdi
movq %rbx, %rsi
callq 0x2f6c0
movq %rbx, %rdi
callq 0x28a08
leaq 0x6c0(%rsp), %r12
movq %r12, %rdi
leaq 0x430(%rsp), %r15
movq %r15, %rsi
leaq 0x5c0(%rsp), %rdx
callq 0x427bd
leaq 0x120(%rsp), %rdi
movq %r12, %rsi
callq 0x2f712
movq %r12, %rdi
callq 0x2f68c
movq %r12, %rdi
movq %r15, %rsi
leaq 0x5a8(%rsp), %rdx
callq 0x427bd
leaq 0x100(%rsp), %rdi
movq %r12, %rsi
callq 0x2f712
movq %r12, %rdi
callq 0x2f68c
movq 0x128(%rsp), %r13
subq 0x120(%rsp), %r13
movq 0x108(%rsp), %rbx
subq 0x100(%rsp), %rbx
movq 0x6f0ea(%rip), %rdi     # 0xdcfe8
leaq 0x3d59e(%rip), %rsi     # 0xab4a3
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x920(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x54f90
leaq 0x920(%rsp), %r12
movq %r12, %rdi
movq 0x6f0af(%rip), %r15     # 0xdcfe8
movq %r15, %rsi
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x54fdd
movq %r12, %rdi
callq 0x2f68c
movq %r15, %rdi
leaq 0x3d560(%rip), %rsi     # 0xab4b9
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x908(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x54f90
leaq 0x908(%rsp), %r15
movq %r15, %rdi
movq 0x6f05b(%rip), %rsi     # 0xdcfe8
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x54fdd
movq %r15, %rdi
callq 0x2f68c
cmpq $0x0, 0x70a68(%rip)     # 0xdea10
je 0x6e0bd
leaq 0x6c0(%rsp), %r15
movq %r15, %rdi
leaq 0x430(%rsp), %r12
movq %r12, %rsi
leaq 0x470(%rsp), %rdx
callq 0x427bd
leaq 0x2a0(%rsp), %rdi
movq %r15, %rsi
callq 0x2f712
movq %r15, %rdi
callq 0x2f68c
movq %r15, %rdi
movq %r12, %rsi
leaq 0x450(%rsp), %rdx
callq 0x427bd
leaq 0x280(%rsp), %rdi
movq %r15, %rsi
callq 0x2f712
movq %r15, %rdi
callq 0x2f68c
movq 0x6efcd(%rip), %rdi     # 0xdcfe8
leaq 0x3d477(%rip), %rsi     # 0xab499
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x8f0(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
callq 0x54f90
leaq 0x8f0(%rsp), %r12
movq %r12, %rdi
movq 0x6ef92(%rip), %r15     # 0xdcfe8
movq %r15, %rsi
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x54fdd
movq %r12, %rdi
callq 0x2f68c
movq %r15, %rdi
leaq 0x3d439(%rip), %rsi     # 0xab4af
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x8d8(%rsp), %rdi
leaq 0x280(%rsp), %rsi
callq 0x54f90
leaq 0x8d8(%rsp), %r15
movq %r15, %rdi
movq 0x6ef3e(%rip), %rsi     # 0xdcfe8
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x54fdd
movq %r15, %rdi
callq 0x2f68c
movl 0x70a25(%rip), %eax     # 0xdeae8
testl %eax, %eax
jle 0x6e5b0
cmpl 0x70a1b(%rip), %eax     # 0xdeaec
jne 0x6e1a9
cmpl $0x1, %eax
jne 0x6e354
movq 0x48(%rsp), %rdi
leaq 0x3d3d9(%rip), %rsi     # 0xab4c5
callq 0x8480
movq %rax, %rdi
leaq 0x2bd23(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x357ba(%rip), %rsi     # 0xa38c4
callq 0x8480
movq %rax, %rdi
leaq 0x2bd05(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d3a5(%rip), %rsi     # 0xab4cd
callq 0x8480
movq %rax, %rdi
leaq 0x2bce7(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d25c(%rip), %rsi     # 0xab3a2
callq 0x8480
movq %rax, %rdi
leaq 0x2bcc9(%rip), %rsi     # 0x99e1e
callq 0x8480
leaq 0x3d375(%rip), %rsi     # 0xab4d6
jmp 0x6e536
movl $0x120, %r15d           # imm = 0x120
pushq $0x9
popq %r12
movq 0x350(%rsp), %rsi
movq 0x358(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rax, %r12
je 0x6de71
addq %r15, %rsi
leaq 0x430(%rsp), %rdi
callq 0x2b0a4
incq %r12
addq $0x20, %r15
jmp 0x6e170
movq %rbp, %rdi
leaq 0x3d3ec(%rip), %rsi     # 0xab59f
callq 0x8480
movq %rax, %rdi
leaq 0x2bc5c(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d315(%rip), %rsi     # 0xab4e6
callq 0x8480
movq %rax, %rdi
leaq 0x2bc3e(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d30b(%rip), %rsi     # 0xab4fa
callq 0x8480
movq %rax, %rdi
leaq 0x2bc20(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d301(%rip), %rsi     # 0xab50e
callq 0x8480
movq %rax, %rdi
leaq 0x2bc02(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d2fb(%rip), %rsi     # 0xab526
callq 0x8480
movq %rax, %rdi
leaq 0x2bbe4(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d2f5(%rip), %rsi     # 0xab53e
callq 0x8480
movq %rax, %rdi
leaq 0x2bbc6(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d2f3(%rip), %rsi     # 0xab55a
callq 0x8480
movq %rax, %rdi
callq 0x8230
movq 0x48(%rsp), %rdi
leaq 0x3d245(%rip), %rsi     # 0xab4c5
callq 0x8480
movq %rax, %rdi
leaq 0x2bb8f(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x35626(%rip), %rsi     # 0xa38c4
callq 0x8480
movq %rax, %rdi
leaq 0x2bb71(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d180(%rip), %rsi     # 0xab43c
callq 0x8480
movq %rax, %rdi
leaq 0x2bb53(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d168(%rip), %rsi     # 0xab442
callq 0x8480
movq %rax, %rdi
leaq 0x2bb35(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d0aa(%rip), %rsi     # 0xab3a2
callq 0x8480
movq %rax, %rdi
leaq 0x2bb17(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d260(%rip), %rsi     # 0xab576
callq 0x8480
movq %rax, %rdi
leaq 0x2baf9(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d253(%rip), %rsi     # 0xab587
callq 0x8480
movq %rax, %rdi
leaq 0x2badb(%rip), %rsi     # 0x99e1e
callq 0x8480
leaq 0x3d245(%rip), %rsi     # 0xab594
jmp 0x6e5a0
movq %rbp, %rdi
leaq 0x35566(%rip), %rsi     # 0xa38c4
callq 0x8480
movq %rax, %rdi
leaq 0x2bab1(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d0c0(%rip), %rsi     # 0xab43c
callq 0x8480
movq %rax, %rdi
leaq 0x2ba93(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d0a8(%rip), %rsi     # 0xab442
callq 0x8480
movq %rax, %rdi
leaq 0x2ba75(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d12e(%rip), %rsi     # 0xab4e6
callq 0x8480
movq %rax, %rdi
leaq 0x2ba57(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d124(%rip), %rsi     # 0xab4fa
callq 0x8480
movq %rax, %rdi
leaq 0x2ba39(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d11a(%rip), %rsi     # 0xab50e
callq 0x8480
movq %rax, %rdi
leaq 0x2ba1b(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d114(%rip), %rsi     # 0xab526
callq 0x8480
movq %rax, %rdi
leaq 0x2b9fd(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d10e(%rip), %rsi     # 0xab53e
callq 0x8480
movq %rax, %rdi
leaq 0x2b9df(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d10c(%rip), %rsi     # 0xab55a
callq 0x8480
movq %rax, %rdi
callq 0x8230
movq 0x48(%rsp), %rdi
leaq 0x3d05e(%rip), %rsi     # 0xab4c5
callq 0x8480
movq %rax, %rdi
leaq 0x2b9a8(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3543f(%rip), %rsi     # 0xa38c4
callq 0x8480
movq %rax, %rdi
leaq 0x2b98a(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3cf99(%rip), %rsi     # 0xab43c
callq 0x8480
movq %rax, %rdi
leaq 0x2b96c(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3cf81(%rip), %rsi     # 0xab442
callq 0x8480
movq %rax, %rdi
leaq 0x2b94e(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3cec3(%rip), %rsi     # 0xab3a2
callq 0x8480
movq %rax, %rdi
leaq 0x2b930(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d079(%rip), %rsi     # 0xab576
callq 0x8480
movq %rax, %rdi
leaq 0x2b912(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3d06c(%rip), %rsi     # 0xab587
callq 0x8480
movq %rax, %rdi
leaq 0x2b8f4(%rip), %rsi     # 0x99e1e
callq 0x8480
leaq 0x3d05e(%rip), %rsi     # 0xab594
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
callq 0x8230
movsd 0x705a2(%rip), %xmm0    # 0xdeaf0
ucomisd 0x27c42(%rip), %xmm0    # 0x96198
jbe 0x6e5b0
movq 0xb8(%rsp), %rdi
leaq 0x3535d(%rip), %rsi     # 0xa38c4
callq 0x8480
movq %rax, %rdi
leaq 0x2b8a8(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x3ceb7(%rip), %rsi     # 0xab43c
callq 0x8480
movq %rax, %rdi
leaq 0x2b88a(%rip), %rsi     # 0x99e1e
callq 0x8480
leaq 0x3cea2(%rip), %rsi     # 0xab442
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
callq 0x8230
shrq $0x2, %r13
andl $-0x2, %r13d
shrq $0x2, %rbx
andl $-0x2, %ebx
leaq 0x350(%rsp), %rdi
callq 0x28a08
jmp 0x6c370
leaq 0x4d0(%rsp), %rdi
leaq 0x4b0(%rsp), %rsi
callq 0x6b356
movsd %xmm0, 0x60(%rsp)
leaq 0x988(%rsp), %rdi
leaq 0x580(%rsp), %rsi
callq 0x2f816
movq 0x68(%rsp), %r14
leaq 0x988(%rsp), %rbx
movq %rbx, %rdi
callq 0x2f7e9
movsd %xmm0, 0x50(%rsp)
movq %rbx, %rdi
callq 0x2b43c
leaq 0x970(%rsp), %rdi
leaq 0x560(%rsp), %rsi
callq 0x2f816
leaq 0x970(%rsp), %rbx
movq %rbx, %rdi
callq 0x2f7e9
movsd %xmm0, 0x10(%rsp)
movq %rbx, %rdi
callq 0x2b43c
leaq 0x958(%rsp), %rdi
leaq 0x540(%rsp), %rsi
callq 0x2f816
leaq 0x958(%rsp), %rbx
movq %rbx, %rdi
callq 0x2f7e9
movsd %xmm0, 0xd0(%rsp)
movq %rbx, %rdi
callq 0x2b43c
leaq 0x940(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x2f816
leaq 0x940(%rsp), %rbx
movq %rbx, %rdi
callq 0x2f7e9
movsd %xmm0, 0x8(%rsp)
movq %rbx, %rdi
callq 0x2b43c
movq 0x6e921(%rip), %rdi     # 0xdcfe8
leaq 0x3cf3e(%rip), %rsi     # 0xab60c
callq 0x8480
movq %rax, %rdi
movsd 0x60(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
callq 0x8230
movq 0x6e8f8(%rip), %rdi     # 0xdcfe8
leaq 0x3cf33(%rip), %rsi     # 0xab62a
callq 0x8480
leaq 0x3cf0f(%rip), %rsi     # 0xab612
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0x50(%rsp), %xmm0
callq 0x8750
leaq 0x3cef7(%rip), %rsi     # 0xab617
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0x10(%rsp), %xmm0
callq 0x8750
leaq 0x3cedf(%rip), %rsi     # 0xab61c
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0xd0(%rsp), %xmm0
callq 0x8750
leaq 0x3cec6(%rip), %rsi     # 0xab623
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
callq 0x8230
leaq 0x3cea7(%rip), %rsi     # 0xab629
movq %rbp, %rdi
callq 0x8480
leaq 0x3ce81(%rip), %rsi     # 0xab612
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0x50(%rsp), %xmm0
callq 0x8750
leaq 0x3ce69(%rip), %rsi     # 0xab617
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0x10(%rsp), %xmm0
callq 0x8750
leaq 0x3ce51(%rip), %rsi     # 0xab61c
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0xd0(%rsp), %xmm0
callq 0x8750
leaq 0x3ce38(%rip), %rsi     # 0xab623
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
callq 0x8230
callq 0x8310
movq %rax, %rbx
movq 0x6e7d0(%rip), %rdi     # 0xdcfe8
leaq 0x3ce1e(%rip), %rsi     # 0xab63d
callq 0x8480
subq 0x598(%rsp), %rbx
cvtsi2sd %rbx, %xmm0
divsd 0x2eb4f(%rip), %xmm0    # 0x9d388
movq %rax, %rdi
callq 0x8750
movq %rax, %rdi
callq 0x8230
movq %r14, %rdi
callq 0x8620
leaq 0x660(%rsp), %rdi
callq 0x2b43c
leaq 0x680(%rsp), %rdi
callq 0x2b43c
leaq 0x520(%rsp), %rdi
callq 0x2b43c
leaq 0x540(%rsp), %rdi
callq 0x2b43c
leaq 0x560(%rsp), %rdi
callq 0x2b43c
leaq 0x580(%rsp), %rdi
callq 0x2b43c
leaq 0x7c0(%rsp), %rdi
callq 0x37c74
leaq 0x6a0(%rsp), %rdi
callq 0x2b43c
leaq 0x4b0(%rsp), %rdi
callq 0x2b43c
leaq 0x4d0(%rsp), %rdi
callq 0x2b43c
leaq 0x1b8(%rsp), %rdi
callq 0x61a0c
leaq 0x640(%rsp), %rdi
callq 0x8978
leaq 0x280(%rsp), %rdi
callq 0x2f68c
leaq 0x2a0(%rsp), %rdi
callq 0x2f68c
leaq 0x100(%rsp), %rdi
callq 0x2f68c
leaq 0x120(%rsp), %rdi
callq 0x2f68c
leaq 0x7e0(%rsp), %rdi
callq 0x28a08
leaq 0x430(%rsp), %rdi
callq 0x28a08
leaq 0x80(%rsp), %rdi
callq 0x2b43c
leaq 0xa0(%rsp), %rdi
callq 0x2b43c
leaq 0x1f0(%rsp), %rdi
callq 0x2b43c
leaq 0x210(%rsp), %rdi
callq 0x2b43c
leaq 0x140(%rsp), %rdi
callq 0x2b43c
leaq 0x160(%rsp), %rdi
callq 0x2b43c
leaq 0x180(%rsp), %rdi
callq 0x2b43c
leaq 0x2d0(%rsp), %rdi
callq 0x8978
leaq 0x7a0(%rsp), %rdi
callq 0x8978
leaq 0x5a8(%rsp), %rdi
callq 0x28a08
leaq 0x5c0(%rsp), %rdi
callq 0x28a08
leaq 0x500(%rsp), %rdi
callq 0x8978
leaq 0x260(%rsp), %rdi
callq 0x8978
leaq 0x2f0(%rsp), %rdi
callq 0x8978
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x330(%rsp), %rdi
callq 0x8978
leaq 0xaa8(%rsp), %rdi
callq 0x32212
leaq 0x450(%rsp), %rdi
callq 0x28a08
leaq 0x470(%rsp), %rdi
callq 0x28a08
leaq 0x5e0(%rsp), %rdi
callq 0x8978
addq $0xb68, %rsp            # imm = 0xB68
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3cb5b(%rip), %rdi     # 0xab5b3
leaq 0x3cb68(%rip), %rsi     # 0xab5c7
leaq 0x3cb75(%rip), %rcx     # 0xab5db
movl $0x226, %edx            # imm = 0x226
callq 0x82f0
jmp 0x6ed04
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6ed07
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6ecf2
jmp 0x6ed04
jmp 0x6ecef
jmp 0x6ef6b
jmp 0x6ef18
jmp 0x6ef18
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6ef1b
jmp 0x6f073
jmp 0x6ead4
movq %rax, %r14
jmp 0x6ef4f
jmp 0x6eb05
jmp 0x6eafd
jmp 0x6eb1a
jmp 0x6eae9
jmp 0x6ec47
movq %rax, %r14
jmp 0x6ef42
jmp 0x6eb2c
jmp 0x6f0c5
jmp 0x6ef6b
movq %rax, %r14
jmp 0x6ef7b
movq %rax, %r14
jmp 0x6ef5c
movq %rax, %r14
jmp 0x6ef88
jmp 0x6f0c5
movq %rax, %r14
jmp 0x6ef28
jmp 0x6f073
jmp 0x6ec47
movq %rax, %r14
jmp 0x6ef35
movq %rax, %r14
leaq 0x8d8(%rsp), %rdi
jmp 0x6eb9d
movq %rax, %r14
leaq 0x8f0(%rsp), %rdi
jmp 0x6eb9d
jmp 0x6f063
jmp 0x6f063
jmp 0x6f063
jmp 0x6f0c5
jmp 0x6f0c5
jmp 0x6f0c5
jmp 0x6f0c5
jmp 0x6f0c5
jmp 0x6f0c5
jmp 0x6f063
movq %rax, %r14
leaq 0x920(%rsp), %rdi
jmp 0x6eb9d
jmp 0x6f0c0
movq %rax, %r14
leaq 0x908(%rsp), %rdi
callq 0x2f68c
jmp 0x6f066
jmp 0x6f063
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
movq 0xb8(%rsp), %rdi
jmp 0x6ec88
jmp 0x6f044
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6ebdb
movq %rax, %r14
leaq 0x500(%rsp), %rdi
callq 0x8978
jmp 0x6ebed
movq %rax, %r14
leaq 0x1b8(%rsp), %rdi
callq 0x8978
jmp 0x6ebff
movq %rax, %r14
leaq 0x330(%rsp), %rdi
callq 0x8978
jmp 0x6ec11
movq %rax, %r14
leaq 0x260(%rsp), %rdi
callq 0x8978
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x2f0(%rsp), %rdi
jmp 0x6f2e2
movq %rax, %r14
jmp 0x6ec1e
movq %rax, %r14
jmp 0x6ec2b
jmp 0x6eff1
movq %rax, %r14
leaq 0x490(%rsp), %rdi
callq 0x8978
jmp 0x6f076
jmp 0x6f073
jmp 0x6efc3
movq %rax, %r14
pushq $0x38
popq %rsi
movq 0xc8(%rsp), %rdi
jmp 0x6ecd8
jmp 0x6efc3
jmp 0x6eccd
movq %r14, %rdi
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
callq 0x84a0
jmp 0x6f047
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
jmp 0x6f2e2
jmp 0x6eff1
jmp 0x6eccd
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
movq %r13, %rdi
callq 0x84a0
jmp 0x6f025
jmp 0x6ecc0
movq %rax, %r14
jmp 0x6f032
jmp 0x6eff1
movq %rax, %r14
movl $0x208, %esi            # imm = 0x208
movq %r15, %rdi
callq 0x84a0
jmp 0x6f2e7
movq %rax, %r14
jmp 0x6f00e
jmp 0x6f0c5
movq %rax, %r14
leaq 0x230(%rsp), %rdi
callq 0x28a08
jmp 0x6ef6e
movq %rax, %r14
leaq 0x7f8(%rsp), %rdi
callq 0x28a08
jmp 0x6ef1b
jmp 0x6f0c0
jmp 0x6f0c0
jmp 0x6f0c0
jmp 0x6f0c0
jmp 0x6f0c0
movq %rax, %r14
jmp 0x6f13a
movq %rax, %r14
jmp 0x6f147
movq %rax, %r14
jmp 0x6f154
movq %rax, %r14
jmp 0x6f161
movq %rax, %r14
jmp 0x6f16e
movq %rax, %r14
jmp 0x6f17b
movq %rax, %r14
jmp 0x6f188
movq %rax, %r14
jmp 0x6f195
movq %rax, %r14
jmp 0x6f1a2
movq %rax, %r14
jmp 0x6f27f
jmp 0x6efb3
movq %rax, %r14
jmp 0x6f299
jmp 0x6efbb
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
movq %rbp, %rdi
callq 0x84a0
jmp 0x6f2c0
jmp 0x6f099
movq %rax, %r14
leaq 0x350(%rsp), %rdi
callq 0x8978
jmp 0x6edc3
movq %rax, %r14
leaq 0x260(%rsp), %rdi
callq 0x8978
jmp 0x6edd5
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6ede7
movq %rax, %r14
leaq 0x1b8(%rsp), %rdi
jmp 0x6f2c8
jmp 0x6ee0d
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
movq 0x68(%rsp), %rdi
callq 0x84a0
jmp 0x6f2cd
movq %rax, %r14
jmp 0x6f2cd
movq %rax, %r14
leaq 0x350(%rsp), %rdi
callq 0x8978
jmp 0x6ee2a
movq %rax, %r14
leaq 0x2f0(%rsp), %rdi
callq 0x8978
jmp 0x6ee3c
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6ee4e
movq %rax, %r14
leaq 0x1b8(%rsp), %rdi
jmp 0x6f2d5
jmp 0x6ee72
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
movq %r15, %rdi
callq 0x84a0
jmp 0x6f2da
movq %rax, %r14
jmp 0x6f2da
movq %rax, %r14
leaq 0x350(%rsp), %rdi
callq 0x8978
jmp 0x6ee8f
movq %rax, %r14
leaq 0x310(%rsp), %rdi
callq 0x8978
jmp 0x6eea1
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6eeb3
movq %rax, %r14
leaq 0x1b8(%rsp), %rdi
jmp 0x6f2e2
jmp 0x6eff1
movq %rax, %r14
movl $0x208, %esi            # imm = 0x208
movq %rbx, %rdi
callq 0x84a0
jmp 0x6f30e
jmp 0x6eef1
movq %rax, %r14
leaq 0x350(%rsp), %rdi
callq 0x8978
jmp 0x6f30e
movq %rax, %r14
jmp 0x6f30e
movq %rax, %r14
leaq 0x350(%rsp), %rdi
jmp 0x6f0d0
jmp 0x6f094
jmp 0x6f094
jmp 0x6eff1
movq %rax, %r14
leaq 0x860(%rsp), %rdi
callq 0x2b43c
leaq 0x878(%rsp), %rdi
callq 0x2b43c
leaq 0x890(%rsp), %rdi
callq 0x2b43c
leaq 0x8a8(%rsp), %rdi
callq 0x2b43c
leaq 0x8c0(%rsp), %rdi
callq 0x2b43c
leaq 0x230(%rsp), %rdi
callq 0x2b43c
jmp 0x6ef6e
movq %rax, %r14
leaq 0x810(%rsp), %rdi
callq 0x2b43c
leaq 0x248(%rsp), %rdi
callq 0x2b43c
leaq 0x490(%rsp), %rdi
callq 0x2b43c
jmp 0x6f0c8
jmp 0x6f0a3
jmp 0x6f094
jmp 0x6f0c5
jmp 0x6efab
movq %rax, %r14
jmp 0x6f0e2
movq %rax, %r14
jmp 0x6f28c
movq %rax, %r14
jmp 0x6f2a6
movq %rax, %r14
leaq 0x1b8(%rsp), %rdi
callq 0x8978
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6f047
jmp 0x6f0a3
jmp 0x6f0a3
jmp 0x6f0a3
movq %rax, %r14
jmp 0x6f2e7
jmp 0x6f0c0
movq %rax, %r14
leaq 0x350(%rsp), %rdi
callq 0x8978
leaq 0x6c0(%rsp), %rdi
callq 0x8978
jmp 0x6f0c8
jmp 0x6f063
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
callq 0x8978
leaq 0x350(%rsp), %rdi
callq 0x32212
jmp 0x6f2e7
movq %rax, %r14
leaq 0x350(%rsp), %rdi
jmp 0x6f2e2
jmp 0x6f0c5
movq %rax, %r14
leaq 0x350(%rsp), %rdi
jmp 0x6f08b
movq %rax, %r14
leaq 0x350(%rsp), %rdi
jmp 0x6f128
movq %rax, %r14
leaq 0x350(%rsp), %rdi
callq 0x2f3a2
leaq 0x600(%rsp), %rdi
callq 0x8978
jmp 0x6f0d5
jmp 0x6f0a3
movq %rax, %r14
jmp 0x6f0d5
movq %rax, %r14
jmp 0x6f2c0
jmp 0x6f0c0
movq %rax, %r14
jmp 0x6f0ef
movq %rax, %r14
jmp 0x6f109
movq %rax, %r14
jmp 0x6f116
jmp 0x6f0bb
movq %rax, %r14
jmp 0x6f123
jmp 0x6f0c0
movq %rax, %r14
jmp 0x6f0fc
movq %rax, %r14
jmp 0x6f12d
movq %rax, %r14
leaq 0x600(%rsp), %rdi
callq 0x28a08
leaq 0x4e8(%rsp), %rdi
callq 0x2b43c
leaq 0x2b8(%rsp), %rdi
callq 0x2b43c
leaq 0x620(%rsp), %rdi
callq 0x8978
leaq 0x828(%rsp), %rdi
callq 0x28a08
leaq 0x840(%rsp), %rdi
callq 0x8978
leaq 0xe0(%rsp), %rdi
callq 0x8978
leaq 0x28(%rsp), %rdi
callq 0x28a08
leaq 0x660(%rsp), %rdi
callq 0x2b43c
leaq 0x680(%rsp), %rdi
callq 0x2b43c
leaq 0x520(%rsp), %rdi
callq 0x2b43c
leaq 0x540(%rsp), %rdi
callq 0x2b43c
leaq 0x560(%rsp), %rdi
callq 0x2b43c
leaq 0x580(%rsp), %rdi
callq 0x2b43c
leaq 0x7c0(%rsp), %rdi
callq 0x37c74
leaq 0x6a0(%rsp), %rdi
callq 0x2b43c
leaq 0x4b0(%rsp), %rdi
callq 0x2b43c
leaq 0x4d0(%rsp), %rdi
callq 0x2b43c
leaq 0x1b8(%rsp), %rdi
callq 0x61a0c
leaq 0x640(%rsp), %rdi
callq 0x8978
leaq 0x280(%rsp), %rdi
callq 0x2f68c
leaq 0x2a0(%rsp), %rdi
callq 0x2f68c
leaq 0x100(%rsp), %rdi
callq 0x2f68c
leaq 0x120(%rsp), %rdi
callq 0x2f68c
leaq 0x7e0(%rsp), %rdi
callq 0x28a08
leaq 0x430(%rsp), %rdi
callq 0x28a08
leaq 0x80(%rsp), %rdi
callq 0x2b43c
leaq 0xa0(%rsp), %rdi
callq 0x2b43c
leaq 0x1f0(%rsp), %rdi
callq 0x2b43c
leaq 0x210(%rsp), %rdi
callq 0x2b43c
leaq 0x140(%rsp), %rdi
callq 0x2b43c
leaq 0x160(%rsp), %rdi
callq 0x2b43c
leaq 0x180(%rsp), %rdi
callq 0x2b43c
leaq 0x2d0(%rsp), %rdi
callq 0x8978
leaq 0x7a0(%rsp), %rdi
callq 0x8978
leaq 0x5a8(%rsp), %rdi
callq 0x28a08
leaq 0x5c0(%rsp), %rdi
callq 0x28a08
leaq 0x500(%rsp), %rdi
callq 0x8978
leaq 0x260(%rsp), %rdi
callq 0x8978
leaq 0x2f0(%rsp), %rdi
callq 0x8978
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x330(%rsp), %rdi
callq 0x8978
leaq 0xaa8(%rsp), %rdi
callq 0x32212
leaq 0x450(%rsp), %rdi
callq 0x28a08
leaq 0x470(%rsp), %rdi
callq 0x28a08
leaq 0x5e0(%rsp), %rdi
callq 0x8978
movq %r14, %rdi
callq 0x8870