// File: /workspace/github_cpp_makefile_star2_O1/millanek[P]evo/evo_FstAgainstAll.cpp
// Function: FstGlobalMain(int, char**)
int FstGlobalMain(int argc, char** argv) {
    parseFstGlobaloptions(argc, argv);
    string line; // for reading the input files
    
    // Load up the annotation file
    Annotation wgAnnotation; std::ifstream* annotFile;
    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;
    }
    
    std::istream* vcfFile = createReader(opt::vcfFile.c_str());
    std::ifstream* setsFile = new std::ifstream(opt::setsFile.c_str());
    
    std::map<string, std::vector<string>> popToIDsMap;
    std::map<string, string> IDsToPopMap;
    std::map<string, std::vector<size_t>> popToPosMap;
    std::map<size_t, string> posToPopMap;
    
    // Get the sample sets
    while (getline(*setsFile, line)) {
        // std::cerr << line << std::endl;
        std::vector<string> ID_Pop = split(line, '\t');
        popToIDsMap[ID_Pop[1]].push_back(ID_Pop[0]);
        IDsToPopMap[ID_Pop[0]] = ID_Pop[1];
        //std::cerr << ID_Species[1] << "\t" << ID_Species[0] << std::endl;
    }
    // Get a vector of set names (usually populations/species)
    std::vector<string> populations; std::vector<string> populationsToUse;
    for(std::map<string,std::vector<string>>::iterator it = popToIDsMap.begin(); it != popToIDsMap.end(); ++it) {
        populations.push_back(it->first);
        if (it->first != "Outgroup" && it->first != "xxx") {
            populationsToUse.push_back(it->first);
        }
        // std::cerr << it->first << std::endl;
    } std::cerr << "There are " << populations.size() << " populations " << std::endl;
    
    std::ofstream* outFile = new std::ofstream(opt::runName + "_FstGlobal_" + numToString(opt::windowSize) + "_" + numToString(opt::windowStep) + ".txt");
    *outFile << "chr\tpos1\tpos2\tFstGlobal"; for (int i = 0; i < populationsToUse.size(); i++) { *outFile << "\t" << populationsToUse[i];}
    *outFile << std::endl;
    std::ofstream* outFileFixedWindow = new std::ofstream(opt::runName + "_FstGlobal_FW" + numToString(opt::fixedWindowSize) + ".txt");
    *outFileFixedWindow << "chr\tpos1\tpos2\tnSNPs"; for (int i = 0; i < populationsToUse.size(); i++) { *outFile << "\t" << populationsToUse[i];}
    *outFileFixedWindow << std::endl;
    
    std::ofstream* outFileGenes; if (!opt::annotFile.empty()) {
        outFileGenes = new std::ofstream(opt::runName + "_FstGlobalGenes_" + opt::runName + "_" + numToString(opt::windowSize) + "_" + numToString(opt::windowStep) + ".txt");
        // *outFileGenes << "gene\t" << "numSNPsExons\t" << "numSNPsWithIntrons\t" << "numSNPsWith3kbUpstr\t" << threePops[0] << "_exons\t" << threePops[1] << "_exons\t" << threePops[2] << "_exons\t" << threePops[0] << "_wIntrons\t" << threePops[1] << "_wIntrons\t" << threePops[2] << "_wIntrons\t" << threePops[0] << "_w3kbUpstr\t" << threePops[1] << "_w3kbUpstr\t" << threePops[2] << "_w3kbUpstr" << std::endl;
        *outFileGenes << "gene\t" << "numSNPsExons\tnumSNPsIntrons\tnumSNPs3kbPromoter";
        for (int i = 0; i < populationsToUse.size(); i++) {
            *outFileGenes << "\t" << populationsToUse[i] << "_exons";
            *outFileGenes << "\t" << populationsToUse[i] << "_wIntrons";
            *outFileGenes << "\t" << populationsToUse[i] << "_promoter";
        } *outFileGenes << std::endl;
    }
    
    // And need to prepare the vectors to hold the Fst values and the coordinates:
    std::deque<double> initFst(opt::windowSize,0.0); // deque to initialise per-site PBS values
    std::vector<std::deque<double>> FstNumDeques(populationsToUse.size()+1,initFst); // Fst numerators for each population, and one for the global Fst
    std::vector<std::deque<double>> FstDenomDeques(populationsToUse.size()+1,initFst); // Fst denominators for each population, and one for the global Fst
    std::deque<string> coordDeque(opt::windowSize,"0");
    // Fixed window size vectors:

    std::vector<std::vector<double>> FstFixedWindowNums(populationsToUse.size());
    std::vector<std::vector<double>> FstFixedWindowDenoms(populationsToUse.size());
    int currentWindowStart = 0; int currentWindowEnd = currentWindowStart + opt::fixedWindowSize;
    
    // if (!opt::annotFile.empty()) {
    std::vector<std::vector<double>> initFstVectors(3);
    std::vector<std::vector<std::vector<double>>> FstGeneNumVectors(populationsToUse.size(),initFstVectors); // For the nine PBS columns in the _PBSGenes_ files
    std::vector<std::vector<std::vector<double>>> FstGeneDenumVectors(populationsToUse.size(),initFstVectors); // For the nine PBS columns in the _PBSGenes_ files
    std::string currentGene = ""; std::string previousGene = "";
    //}
    //std::deque<std::vector<double>> regionPBSnums; regionPBSnums.assign(opt::windowSize,init);
    //std::deque<std::vector<double>> regionPBSdenoms; regionPBSdenoms.assign(opt::windowSize,init);
    //std::vector<double> allPs(populations.size(),0.0);
    int totalVariantNumber = 0; int usedVariantNumber = 0; double coordDouble = 0;
    //std::vector<int> usedVars(PBStrios.size(),0); // Will count the number of used variants for each trio
    std::vector<string> sampleNames; std::vector<std::string> fields;
    int reportProgressEvery = 10000; string chr; string coord;
    std::clock_t start; std::clock_t startGettingCounts; std::clock_t startCalculation;
    double durationOverall; double durationGettingCounts; double durationCalculation;
    
    while (getline(*vcfFile, line)) {
        line.erase(std::remove(line.begin(), line.end(), '\r'), line.end()); // Deal with any left over \r from files prepared on Windows
        if (line[0] == '#' && line[1] == '#')
            continue;
        else if (line[0] == '#' && line[1] == 'C') {
            fields = split(line, '\t');
            std::vector<std::string> sampleNames(fields.begin()+NUM_NON_GENOTYPE_COLUMNS,fields.end());
            // print_vector_stream(sampleNames, std::cerr);
            for (std::vector<std::string>::size_type i = 0; i != sampleNames.size(); i++) {
                posToPopMap[i] = IDsToPopMap[sampleNames[i]];
            }
            // Iterate over all the keys in the map to find the samples in the VCF:
            // Give an error if no sample is found for a species:
            for(std::map<string, std::vector<string>>::iterator it = popToIDsMap.begin(); it != popToIDsMap.end(); ++it) {
                string sp =  it->first;
                //std::cerr << "sp " << sp << std::endl;
                std::vector<string> IDs = it->second;
                std::vector<size_t> spPos = locateSet(sampleNames, IDs);
                if (spPos.empty()) {
                    std::cerr << "Did not find any samples in the VCF for \"" << sp << "\"" << std::endl;
                    assert(!spPos.empty());
                }
                popToPosMap[sp] = spPos;
            }
            start = std::clock();
            //  std::cerr << " " << std::endl;
            //  std::cerr << "Outgroup at pos: "; print_vector_stream(speciesToPosMap["Outgroup"], std::cerr);
            //  std::cerr << "telvit at pos: "; print_vector_stream(speciesToPosMap["telvit"], std::cerr);
        } else {
            totalVariantNumber++;
            if (totalVariantNumber % reportProgressEvery == 0) {
                durationOverall = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
                std::cerr << "Processed " << totalVariantNumber << " variants in " << durationOverall << "secs" << std::endl;
                std::cerr << "GettingCounts " << durationGettingCounts << " calculation " << durationCalculation << "secs" << std::endl;
            }
            fields = split(line, '\t'); chr = fields[0]; coord = fields[1]; coordDouble = stringToDouble(coord);
            std::vector<std::string> genotypes(fields.begin()+NUM_NON_GENOTYPE_COLUMNS,fields.end());
            //std::vector<std::string> info = split(fields[7], ';');
            // Only consider biallelic SNPs
            string refAllele = fields[3]; string altAllele = fields[4];
            if (refAllele.length() > 1 || altAllele.length() > 1 || altAllele == "*") {
                refAllele.clear(); refAllele.shrink_to_fit(); altAllele.clear(); altAllele.shrink_to_fit();
                genotypes.clear(); genotypes.shrink_to_fit(); continue;
            }
            usedVariantNumber++;
            startGettingCounts = std::clock();
            GeneralSetCountsWithComplements* c = new GeneralSetCountsWithComplements(popToPosMap, (int)genotypes.size());
            c->getSetVariantCountsSimple(genotypes, posToPopMap);
            c->getComplementCounts(populationsToUse);
            genotypes.clear(); genotypes.shrink_to_fit();
            durationGettingCounts = ( std::clock() - startGettingCounts ) / (double) CLOCKS_PER_SEC;
            
            // if this site is not variable in the populations of interest then just move to the next one
            if (c->setAAFs.at(populationsToUse[0]) == 0 && c->setAAFsComplement.at(populationsToUse[0]) == 0) {
                delete c; continue;
            }
            if (c->setAAFs.at(populationsToUse[0]) == 1 && c->setAAFsComplement.at(populationsToUse[0]) == 1) {
                delete c; continue;
            }
            // std::cerr << "Here:" << totalVariantNumber << std::endl;
            
            startCalculation = std::clock();
            
            
            // for (std::vector<std::string>::size_type i = 0; i != populations.size(); i++) {
            //     allPs[i] = c->setAAFs.at(populations[i]);
            // }
            // durationFirstLoop = ( std::clock() - startCalculation ) / (double) CLOCKS_PER_SEC;
            
            // find if we are in a gene:
            std::vector<string> SNPgeneDetails = wgAnnotation.getSNPgeneDetails(chr, atoi(coord.c_str()));
            if (SNPgeneDetails[0] != "") {
                currentGene = SNPgeneDetails[0];
                if (previousGene == "") previousGene = currentGene;
            }
            
            // Check if we are still in the same physical window...
            if (coordDouble > currentWindowEnd || coordDouble < currentWindowStart) {
                int wSNP1 = (int)FstFixedWindowNums[0].size();
                *outFileFixedWindow << chr << "\t" << currentWindowStart << "\t" << currentWindowEnd << "\t" << wSNP1;
                for (int i = 0; i != populationsToUse.size(); i++) {
                    double FstFW = 0; if (wSNP1 > 0) { FstFW = vector_average(FstFixedWindowNums[i])/vector_average(FstFixedWindowDenoms[i]); }
                    *outFileFixedWindow << "\t" << FstFW;
                    FstFixedWindowNums[i].clear(); FstFixedWindowDenoms[i].clear();
                } *outFileFixedWindow << std::endl;
                if (coordDouble > currentWindowEnd) {
                    currentWindowStart = currentWindowStart + opt::fixedWindowSize; currentWindowEnd = currentWindowEnd + opt::fixedWindowSize;
                } else if (coordDouble < currentWindowStart) {
                    currentWindowStart = 0; currentWindowEnd = 0 + opt::fixedWindowSize;
                }
            }
            
            coordDeque.push_back(coord); coordDeque.pop_front();
            if ((usedVariantNumber > opt::windowSize || opt::windowSize == opt::windowStep) && (usedVariantNumber % opt::windowStep == 0)) {
                *outFile << chr << "\t" << coordDeque[0] << "\t" << coord << "\t" << "N";
            }
            
            // Now calculate the Fst stats:
            double p1; double p2; int n1; int n2; double Fst;
            for (int i = 0; i != populationsToUse.size(); i++) {
                p1 = c->setAAFs.at(populationsToUse[i]); //assert(p_S1 == pS1test);
                p2 = c->setAAFsComplement.at(populationsToUse[i]);
                n1 = c->setAlleleCounts.at(populationsToUse[i]);
                n2 = c->setAlleleCountsComplement.at(populationsToUse[i]);
                // std::cerr << p1 << "\t" << p2 << "\t" << n1 << "\t" << n2 << std::endl;
                
                // Maximum missing data in the population is 20%, otherwise Fst is set to 0
                double FstNum; double FstDenom;
                if (n1 >= c->setSizes[i]*0.8) {
                    FstNum = calculateFstNumerator(p1, p2, n1, n2);
                    FstNumDeques[i].push_back(FstNum); FstNumDeques[i].pop_front();
                    FstDenom = calculateFstDenominator(p1, p2);
                    FstDenomDeques[i].push_back(FstDenom); FstDenomDeques[i].pop_front();
                } else {
                    FstNum = 0; FstNumDeques[i].push_back(FstNum); FstNumDeques[i].pop_front();
                    FstDenom = 0; FstDenomDeques[i].push_back(FstDenom); FstDenomDeques[i].pop_front();
                }
                    
               /* if (calculateFstNumerator(p1, p2, n1, n2)/calculateFstDenominator(p1, p2) > 1) {
                    std::cerr << chr << "\t" << coord << "\t" << p1 << "\t" << p2 << "\t" << n1 << "\t" << n2 << std::endl;
                } */
                
                if (!opt::annotFile.empty()) { if (SNPgeneDetails[0] != "") {
                    if (SNPgeneDetails[1] == "exon") {
                        FstGeneNumVectors[i][0].push_back(FstNum); FstGeneDenumVectors[i][0].push_back(FstDenom);
                    } else if (SNPgeneDetails[1] == "intron") {
                        FstGeneNumVectors[i][1].push_back(FstNum); FstGeneDenumVectors[i][1].push_back(FstDenom);
                    } else if (SNPgeneDetails[1] == "promoter") {
                        FstGeneNumVectors[i][2].push_back(FstNum); FstGeneDenumVectors[i][2].push_back(FstDenom);
                    }
                }}
                if ((usedVariantNumber > opt::windowSize || opt::windowSize == opt::windowStep) && (usedVariantNumber % opt::windowStep == 0)) {
                    // std::cerr << PBSresults[i][0][0] << std::endl;
                    Fst = vector_average(FstNumDeques[i])/vector_average(FstDenomDeques[i]); if (Fst < 0 || vector_average(FstDenomDeques[i]) == 0) { Fst = 0; }
                    *outFile << "\t" << Fst;
                }
                // }
            }
            if (!opt::annotFile.empty()) { if (previousGene != "" && currentGene != previousGene) {
                int nExonSNPs = (int)FstGeneNumVectors[0][0].size(); int nIntronSNPs = (int)FstGeneNumVectors[0][1].size(); int nPromoterSNPs = (int)FstGeneNumVectors[0][2].size();
                *outFileGenes << previousGene << "\t" << nExonSNPs << "\t" << nIntronSNPs << "\t" << nPromoterSNPs;
                double FstExons; double FstIntrons; double FstPromoters;
                for (int i = 0; i < populationsToUse.size(); i++) {
                    if (nExonSNPs > 0) { FstExons = vector_average(FstGeneNumVectors[i][0])/vector_average(FstGeneDenumVectors[i][0]); } else { FstExons = 0; }
                    if (nIntronSNPs > 0) { FstIntrons = vector_average(FstGeneNumVectors[i][1])/vector_average(FstGeneDenumVectors[i][1]); } else { FstIntrons = 0; }
                    if (nPromoterSNPs > 0) { FstPromoters = vector_average(FstGeneNumVectors[i][2])/vector_average(FstGeneDenumVectors[i][2]); } else { FstPromoters = 0; }
                    if (FstExons < 0) FstExons = 0; if (FstIntrons < 0) FstIntrons = 0; if (FstPromoters < 0) FstPromoters = 0;
                    *outFileGenes << "\t" << FstExons << "\t" << FstIntrons << "\t" << FstPromoters;
                    FstGeneNumVectors[i][0].clear(); FstGeneNumVectors[i][1].clear(); FstGeneNumVectors[i][2].clear();
                    FstGeneDenumVectors[i][0].clear(); FstGeneDenumVectors[i][1].clear(); FstGeneDenumVectors[i][2].clear();
                } *outFileGenes << std::endl;
                previousGene = currentGene;
            }}
            if ((usedVariantNumber > opt::windowSize || opt::windowSize == opt::windowStep) && (usedVariantNumber % opt::windowStep == 0)) {
                *outFile << std::endl;
            }
            durationCalculation = ( std::clock() - startCalculation ) / (double) CLOCKS_PER_SEC;
            delete c;
        }
    }
    
    return 0;
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x798, %rsp            # imm = 0x798
callq 0xb3458
leaq 0x238(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
leaq 0x5f0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x620(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x650(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x680(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
cmpq %rax, 0x5d586(%rip)     # 0x10ceb0
je 0xaf9f1
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r14
movq 0x5d564(%rip), %rsi     # 0x10cea8
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
leaq 0x550(%rsp), %rsi
movq %r14, (%rsi)
leaq 0x370(%rsp), %rdi
xorl %edx, %edx
callq 0x3e250
leaq 0x5e8(%rsp), %r15
leaq 0x370(%rsp), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x99438
leaq 0x618(%rsp), %rdi
leaq 0x3a0(%rsp), %r14
movq %r14, %rsi
callq 0x9979c
leaq 0x648(%rsp), %rdi
leaq 0x3d0(%rsp), %r12
movq %r12, %rsi
callq 0x58eba
movl $0x90, %eax
addq %rax, %r15
addq %rax, %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x99acc
movq %rbx, %rdi
callq 0x3f49e
movq %r12, %rdi
callq 0x3f522
movq %r14, %rdi
callq 0x3f5a6
leaq 0x370(%rsp), %rdi
callq 0x33302
movq 0x5d450(%rip), %rsi     # 0x10ce48
leaq 0x370(%rsp), %rdi
leaq 0x1c0(%rsp), %rdx
callq 0x286de
leaq 0x370(%rsp), %rdi
movl $0x8, %esi
callq 0x53224
movq %rax, 0x468(%rsp)
leaq 0x380(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xafa48
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r14
movq 0x5d40c(%rip), %rsi     # 0x10ce68
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
leaq 0x4a8(%rsp), %rcx
xorl %eax, %eax
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x5c0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x590(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x560(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x228(%rsp), %r15
leaq 0x370(%rsp), %r12
leaq 0x4a0(%rsp), %r13
leaq 0x5b8(%rsp), %rbp
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xafb86
movq %r12, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x50624
movq 0x370(%rsp), %rsi
addq $0x20, %rsi
movq %r13, %rdi
callq 0x49f44
movq 0x370(%rsp), %rsi
movq %rax, %rdi
callq 0x33db0
movq 0x370(%rsp), %rbx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x3e394
addq $0x20, %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8270
movq %r12, %rdi
callq 0x3123c
jmp 0xafaf3
xorpd %xmm0, %xmm0
movapd %xmm0, 0x2f0(%rsp)
xorl %eax, %eax
movq %rax, 0x300(%rsp)
movq %rax, 0x40(%rsp)
movapd %xmm0, 0x30(%rsp)
movq 0x4b8(%rsp), %r14
leaq 0x4a8(%rsp), %rax
cmpq %rax, %r14
je 0xafc28
leaq 0x2f0(%rsp), %r15
leaq 0x2739e(%rip), %r12     # 0xd6f6a
leaq 0x2867d(%rip), %r13     # 0xd8250
leaq 0x30(%rsp), %rbp
leaq 0x20(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x33db0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x8160
testl %eax, %eax
je 0xafc10
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8160
testl %eax, %eax
je 0xafc10
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x33db0
movq %r14, %rdi
callq 0x8310
movq %rax, %r14
leaq 0x4a8(%rsp), %rax
cmpq %rax, %r14
jne 0xafbd8
movq 0x5b3b9(%rip), %rdi     # 0x10afe8
leaq 0x3a2bb(%rip), %rsi     # 0xe9ef1
movl $0xa, %edx
callq 0x84e0
movq 0x2f8(%rsp), %rsi
subq 0x2f0(%rsp), %rsi
sarq $0x5, %rsi
movq 0x5b38d(%rip), %rdi     # 0x10afe8
callq 0x82f0
movq %rax, %r14
leaq 0x285ea(%rip), %rsi     # 0xd8254
movl $0xd, %edx
movq %rax, %rdi
callq 0x84e0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0xa0(%rsp)
leaq 0xb8(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x5d205(%rip), %rsi     # 0x10cec8
movq 0x5d206(%rip), %rdx     # 0x10ced0
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x2e45c
leaq 0x37c1a(%rip), %rsi     # 0xe78fb
leaq 0xa8(%rsp), %rdi
callq 0x88c0
movl 0x5b8d8(%rip), %esi     # 0x10b5cc
leaq 0x110(%rsp), %rdi
callq 0x31297
movq 0xa8(%rsp), %rcx
movq 0xb0(%rsp), %r8
movq 0x118(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0xb8(%rsp), %rdi
cmpq %rdi, %rcx
je 0xafd37
movq 0xb8(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xafd5c
leaq 0x120(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0xafd57
movq 0x120(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xafd73
movq 0x110(%rsp), %rsi
leaq 0xa8(%rsp), %rdi
callq 0x8180
jmp 0xafd84
leaq 0x110(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x84d0
leaq 0x90(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0xafdb1
movq %rsi, 0x80(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x90(%rsp)
jmp 0xafdb9
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x88(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x2b75c(%rip), %rsi     # 0xdb53c
leaq 0x80(%rsp), %rdi
callq 0x88c0
leaq 0x20(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xafe14
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0xafe1c
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x5b796(%rip), %esi     # 0x10b5d0
leaq 0x50(%rsp), %rdi
callq 0x31297
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %r8
movq 0x58(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0x20(%rsp), %rdi
cmpq %rdi, %rcx
je 0xafe6b
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xafe8a
leaq 0x60(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0xafe85
movq 0x60(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xafe9b
movq 0x50(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x8180
jmp 0xafea9
leaq 0x50(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x84d0
leaq 0x1d0(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0xafed6
movq %rsi, 0x1c0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1d0(%rsp)
jmp 0xafede
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x1c8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x34c50(%rip), %rsi     # 0xe4b55
leaq 0x1c0(%rsp), %rdi
callq 0x88c0
leaq 0x380(%rsp), %rsi
movq %rsi, 0x370(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xaff46
movq %rdx, 0x370(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x380(%rsp)
jmp 0xaff4e
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0xa0(%rsp), %rdi
movq 0x8(%rax), %rdx
leaq 0x370(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x10, %edx
callq 0x88d0
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xaffa4
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1d0(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0xaffc5
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xaffe0
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xafffc
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb001d
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x120(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb003e
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xb0063
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x3789d(%rip), %rsi     # 0xe7907
movl $0x17, %edx
movq 0xa0(%rsp), %rdi
callq 0x84e0
movq 0x38(%rsp), %rax
cmpq 0x30(%rsp), %rax
movq 0xa0(%rsp), %r13
je 0xb00df
movl $0x8, %ebx
xorl %r12d, %r12d
leaq 0x21bdf(%rip), %r14     # 0xd1c7e
movl $0x1, %edx
movq %r13, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x30(%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq %r13, %rdi
callq 0x84e0
movq 0x38(%rsp), %rax
subq 0x30(%rsp), %rax
incq %r12
sarq $0x5, %rax
addq $0x20, %rbx
cmpq %r12, %rax
ja 0xb009f
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0xa0(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0xd0(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
movq %rax, (%rdi)
movq 0x5cd96(%rip), %rsi     # 0x10cec8
movq 0x5cd97(%rip), %rdx     # 0x10ced0
addq %rsi, %rdx
callq 0x2e45c
leaq 0x377d7(%rip), %rsi     # 0xe791f
leaq 0x10(%rsp), %rdi
callq 0x88c0
movl 0x5b47c(%rip), %esi     # 0x10b5d4
leaq 0x80(%rsp), %rdi
callq 0x31297
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %r8
movq 0x88(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0x20(%rsp), %rdi
cmpq %rdi, %rcx
je 0xb018f
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xb01b8
movl $0xf, %esi
leaq 0x90(%rsp), %rdi
cmpq %rdi, 0x80(%rsp)
je 0xb01b3
movq 0x90(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xb01cc
movq 0x80(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x8180
jmp 0xb01dd
leaq 0x80(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x84d0
movq %r15, 0x1c0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xb0206
movq %rdx, 0x1c0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1d0(%rsp)
jmp 0xb020f
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x1c8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x3491f(%rip), %rsi     # 0xe4b55
leaq 0x1c0(%rsp), %rdi
callq 0x88c0
leaq 0x380(%rsp), %rsi
movq %rsi, 0x370(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xb0277
movq %rdx, 0x370(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x380(%rsp)
jmp 0xb027f
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq 0x370(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0xd0(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xb02d5
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x1c0(%rsp), %rdi
cmpq %r15, %rdi
je 0xb02f2
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xb0317
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb0333
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x375f3(%rip), %rsi     # 0xe792d
movl $0x13, %edx
movq 0xd0(%rsp), %rdi
callq 0x84e0
movq 0x38(%rsp), %rax
cmpq 0x30(%rsp), %rax
movq 0xa0(%rsp), %r13
je 0xb03af
movl $0x8, %ebx
xorl %r12d, %r12d
leaq 0x2190f(%rip), %r14     # 0xd1c7e
movl $0x1, %edx
movq %r13, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x30(%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq %r13, %rdi
callq 0x84e0
movq 0x38(%rsp), %rax
subq 0x30(%rsp), %rax
incq %r12
sarq $0x5, %rax
addq $0x20, %rbx
cmpq %r12, %rax
ja 0xb036f
movq 0xd0(%rsp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0xd0(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
cmpq $0x0, 0x5cac5(%rip)     # 0x10ceb0
je 0xb0480
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x48(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
movq %rax, (%rdi)
movq 0x5cab4(%rip), %rsi     # 0x10cec8
movq 0x5cab5(%rip), %rdx     # 0x10ced0
addq %rsi, %rdx
callq 0x2e45c
leaq 0x37517(%rip), %rsi     # 0xe7941
leaq 0x50(%rsp), %rdi
callq 0x88c0
movq 0x5ca8d(%rip), %rsi     # 0x10cec8
movq 0x5ca8e(%rip), %rdx     # 0x10ced0
leaq 0x50(%rsp), %rdi
callq 0x8180
leaq 0x120(%rsp), %rsi
movq %rsi, 0x110(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xb0485
movq %rdx, 0x110(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x120(%rsp)
jmp 0xb048d
jmp 0xb0a36
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq 0x110(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x2b089(%rip), %rsi     # 0xdb53c
callq 0x88c0
leaq 0xb8(%rsp), %rsi
movq %rsi, 0xa8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xb04ec
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
jmp 0xb04f4
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0xb0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x5b0b7(%rip), %esi     # 0x10b5cc
leaq 0xe8(%rsp), %rdi
callq 0x31297
movq 0xa8(%rsp), %rcx
movq 0xb0(%rsp), %r8
movq 0xf0(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0xb8(%rsp), %rdi
cmpq %rdi, %rcx
je 0xb0558
movq 0xb8(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xb057d
leaq 0xf8(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0xb0578
movq 0xf8(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xb0594
movq 0xe8(%rsp), %rsi
leaq 0xa8(%rsp), %rdi
callq 0x8180
jmp 0xb05a5
leaq 0xe8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x84d0
leaq 0x90(%rsp), %rsi
movq %rsi, 0x80(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xb05d6
movq %rdx, 0x80(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x90(%rsp)
jmp 0xb05de
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x88(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x2af37(%rip), %rsi     # 0xdb53c
leaq 0x80(%rsp), %rdi
callq 0x88c0
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xb063a
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0xb0642
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x5af70(%rip), %esi     # 0x10b5d0
leaq 0x248(%rsp), %rdi
callq 0x31297
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %r8
movq 0x250(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0x20(%rsp), %rdi
cmpq %rdi, %rcx
je 0xb0697
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xb06bc
leaq 0x258(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0xb06b7
movq 0x258(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xb06d0
movq 0x248(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x8180
jmp 0xb06e1
leaq 0x248(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x84d0
movq %r15, 0x1c0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xb070a
movq %rdx, 0x1c0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1d0(%rsp)
jmp 0xb0713
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x1c8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x3441b(%rip), %rsi     # 0xe4b55
leaq 0x1c0(%rsp), %rdi
callq 0x88c0
leaq 0x380(%rsp), %rsi
movq %rsi, 0x370(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xb077b
movq %rdx, 0x370(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x380(%rsp)
jmp 0xb0783
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
leaq 0x370(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x48(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xb07d6
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x1c0(%rsp), %rdi
cmpq %r15, %rdi
je 0xb07f3
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x258(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb0814
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb0830
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xb0855
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb0876
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xb089b
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xb08c0
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xb08dc
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x368ca(%rip), %rsi     # 0xe71ad
movl $0x5, %edx
movq 0x48(%rsp), %rdi
callq 0x84e0
leaq 0x37059(%rip), %rsi     # 0xe7952
movl $0x2e, %edx
movq 0x48(%rsp), %rdi
callq 0x84e0
movq 0x38(%rsp), %rax
cmpq 0x30(%rsp), %rax
je 0xb0a08
movl $0x8, %ebx
xorl %r12d, %r12d
leaq 0x21357(%rip), %r15     # 0xd1c7e
leaq 0x37053(%rip), %r13     # 0xe7981
leaq 0x37053(%rip), %rbp     # 0xe7988
leaq 0x368c5(%rip), %r14     # 0xe7201
movl $0x1, %edx
movq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x84e0
movq 0x30(%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq 0x48(%rsp), %rdi
callq 0x84e0
movl $0x6, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x84e0
movl $0x1, %edx
movq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x84e0
movq 0x30(%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq 0x48(%rsp), %rdi
callq 0x84e0
movl $0x9, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
movl $0x1, %edx
movq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x84e0
movq 0x30(%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq 0x48(%rsp), %rdi
callq 0x84e0
movl $0x9, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x38(%rsp), %rax
subq 0x30(%rsp), %rax
incq %r12
sarq $0x5, %rax
addq $0x20, %rbx
cmpq %r12, %rax
ja 0xb093c
movq 0x48(%rsp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x48(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movslq 0x5ab8f(%rip), %rsi     # 0x10b5cc
leaq 0x1c0(%rsp), %rdx
movq $0x0, (%rdx)
leaq 0x370(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0xae494
movq 0x38(%rsp), %rsi
subq 0x30(%rsp), %rsi
sarq $0x5, %rsi
incq %rsi
leaq 0x248(%rsp), %rdi
leaq 0x370(%rsp), %rdx
leaq 0x1c0(%rsp), %rcx
callq 0xae4f4
movq 0x38(%rsp), %rsi
subq 0x30(%rsp), %rsi
sarq $0x5, %rsi
incq %rsi
leaq 0x2b8(%rsp), %rdi
leaq 0x370(%rsp), %rdx
leaq 0x1c0(%rsp), %rcx
callq 0xae4f4
movslq 0x5ab0b(%rip), %rbx     # 0x10b5cc
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1e9b8(%rip), %rsi     # 0xcf48d
leaq 0x1e9b2(%rip), %rdx     # 0xcf48e
callq 0x28952
leaq 0x1c0(%rsp), %rdi
leaq 0x10(%rsp), %rdx
leaq 0x80(%rsp), %rcx
movq %rbx, %rsi
callq 0xb38c4
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb0b1a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x38(%rsp), %rsi
subq 0x30(%rsp), %rsi
sarq $0x5, %rsi
leaq 0x470(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xb3924
movq 0x38(%rsp), %rsi
subq 0x30(%rsp), %rsi
sarq $0x5, %rsi
leaq 0x488(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0xb3924
movl 0x5aa74(%rip), %ebx     # 0x10b5d4
xorpd %xmm0, %xmm0
movapd %xmm0, 0x430(%rsp)
movq $0x0, 0x440(%rsp)
movl $0x48, %edi
callq 0x8470
leaq 0x430(%rsp), %rdx
movq %rax, (%rdx)
movq %rax, 0x8(%rdx)
movq %rax, %rcx
addq $0x48, %rcx
movq %rcx, 0x10(%rdx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x30(%rax)
movupd %xmm0, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
movupd %xmm0, (%rax)
movq $0x0, 0x40(%rax)
movq %rcx, 0x8(%rdx)
movq 0x38(%rsp), %rsi
subq 0x30(%rsp), %rsi
sarq $0x5, %rsi
leaq 0x270(%rsp), %rdi
leaq 0x10(%rsp), %rcx
callq 0xa5f2a
movq 0x38(%rsp), %rsi
subq 0x30(%rsp), %rsi
sarq $0x5, %rsi
leaq 0x288(%rsp), %rdi
leaq 0x430(%rsp), %rdx
leaq 0x10(%rsp), %rcx
callq 0xa5f2a
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
movq %rax, (%rdi)
leaq 0x21063(%rip), %rdx     # 0xd1c7f
movq %rdx, %rsi
callq 0x28952
movl %ebx, 0xe4(%rsp)
leaq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
movq %rax, (%rdi)
leaq 0x2103a(%rip), %rdx     # 0xd1c7f
movq %rdx, %rsi
callq 0x28952
xorpd %xmm0, %xmm0
movapd %xmm0, 0x4d0(%rsp)
xorl %edx, %edx
movq %rdx, 0x4e0(%rsp)
movq %rdx, 0x160(%rsp)
movapd %xmm0, 0x150(%rsp)
leaq 0xa8(%rsp), %rcx
leaq 0xb8(%rsp), %rax
movq %rax, (%rcx)
movq %rdx, 0x8(%rcx)
movb %dl, 0x10(%rcx)
leaq 0x110(%rsp), %rcx
leaq 0x120(%rsp), %rax
movq %rax, (%rcx)
movq %rdx, 0x8(%rcx)
movb %dl, 0x10(%rcx)
leaq 0x228(%rsp), %r15
leaq 0x20fc6(%rip), %r12     # 0xd1c7e
leaq 0x1c0(%rsp), %r13
xorl %ebp, %ebp
movl $0x0, 0xe0(%rsp)
movl %edx, 0x7c(%rsp)
movl 0x7c(%rsp), %eax
movq %rax, 0x108(%rsp)
movq 0x468(%rsp), %rbx
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb2a52
movq 0x228(%rsp), %rdi
movq 0x230(%rsp), %rsi
addq %rdi, %rsi
movb $0xd, 0x50(%rsp)
leaq 0x50(%rsp), %rdx
callq 0x80103
movq %rax, %rcx
subq 0x228(%rsp), %rcx
movq %rcx, 0x230(%rsp)
movb $0x0, (%rax)
movq 0x228(%rsp), %rax
movb (%rax), %cl
cmpb $0x23, %cl
jne 0xb0d79
cmpb $0x23, 0x1(%rax)
je 0xb0cdd
cmpb $0x23, %cl
jne 0xb0d79
cmpb $0x43, 0x1(%rax)
je 0xb2786
imull $0x3afb7e91, %ebp, %eax # imm = 0x3AFB7E91
incl %ebp
addl $0x3b2fec51, %eax       # imm = 0x3B2FEC51
rorl $0x4, %eax
cmpl $0x68db8, %eax          # imm = 0x68DB8
ja 0xb0ed3
callq 0x82e0
subq 0x458(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x24437(%rip), %xmm0    # 0xd51e8
movsd %xmm0, 0x8(%rsp)
movl $0xa, %edx
movq 0x5a225(%rip), %rdi     # 0x10afe8
leaq 0x2765c(%rip), %rsi     # 0xd8426
callq 0x84e0
movq 0x5a212(%rip), %rdi     # 0x10afe8
movl %ebp, %esi
callq 0x8810
movq %rax, %rbx
movl $0xd, %edx
movq %rax, %rdi
leaq 0x2a53f(%rip), %rsi     # 0xdb32e
callq 0x84e0
movq %rbx, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8730
movq %rax, %r14
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2d55a(%rip), %rsi     # 0xde36e
callq 0x84e0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0xe, %edx
movq 0x5a19c(%rip), %rdi     # 0x10afe8
leaq 0x3457c(%rip), %rsi     # 0xe53cf
callq 0x84e0
movq 0x5a189(%rip), %rdi     # 0x10afe8
movsd 0x460(%rsp), %xmm0
callq 0x8730
movq %rax, %rbx
movl $0xd, %edx
movq %rax, %rdi
leaq 0x3455f(%rip), %rsi     # 0xe53de
callq 0x84e0
movq %rbx, %rdi
movsd 0x190(%rsp), %xmm0
callq 0x8730
movq %rax, %r14
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2d4c7(%rip), %rsi     # 0xde36e
callq 0x84e0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0xe8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x50624
xorpd %xmm0, %xmm0
movapd %xmm0, 0x50(%rsp)
movapd 0x150(%rsp), %xmm0
movq 0x160(%rsp), %rax
movups 0xe8(%rsp), %xmm1
movaps %xmm1, 0x150(%rsp)
movq 0xf8(%rsp), %rcx
movq %rcx, 0x160(%rsp)
movapd 0x50(%rsp), %xmm1
movapd %xmm0, 0x50(%rsp)
movq %rax, 0x60(%rsp)
movupd %xmm1, 0xe8(%rsp)
movq $0x0, 0xf8(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x3123c
movq %rbx, %rdi
callq 0x3123c
movq 0x150(%rsp), %rsi
leaq 0xa8(%rsp), %rdi
callq 0x8270
movq 0x150(%rsp), %rsi
addq $0x20, %rsi
leaq 0x110(%rsp), %rdi
callq 0x8270
leaq 0x2e0(%rsp), %rax
movq %rax, 0x2d0(%rsp)
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2d0(%rsp), %rdi
callq 0x2e45c
leaq 0x2d0(%rsp), %rdi
callq 0x5054c
movsd %xmm0, 0x1b0(%rsp)
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
leaq 0xe8(%rsp), %r14
je 0xb0fff
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x150(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x158(%rsp), %rdx
leaq 0x138(%rsp), %rdi
leaq 0x50(%rsp), %rbx
movq %rbx, %rcx
callq 0x7fa48
movq 0x150(%rsp), %rax
leaq 0x60(%rsp), %rcx
movq %rcx, 0x50(%rsp)
movq 0x60(%rax), %rsi
movq 0x68(%rax), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq 0x150(%rsp), %rax
leaq 0xf8(%rsp), %rcx
movq %rcx, 0xe8(%rsp)
movq 0x80(%rax), %rsi
movq 0x88(%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x2e45c
cmpq $0x1, 0x58(%rsp)
ja 0xb12db
cmpq $0x1, 0xf0(%rsp)
ja 0xb12db
movq %r14, %rdi
leaq 0x3862f(%rip), %rsi     # 0xe96d6
callq 0x8160
testl %eax, %eax
je 0xb12db
callq 0x82e0
movq %rax, %r14
movl $0x2d0, %edi            # imm = 0x2D0
callq 0x8470
movq %rax, 0xc8(%rsp)
movq 0x140(%rsp), %rdx
subq 0x138(%rsp), %rdx
shrq $0x5, %rdx
movq 0xc8(%rsp), %r15
movq %r15, %rdi
leaq 0x588(%rsp), %rsi
callq 0xb39ac
movq %r15, %rdi
leaq 0x138(%rsp), %rsi
leaq 0x558(%rsp), %rdx
callq 0x500d0
movq 0xc8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x5017e
movq 0x138(%rsp), %rbx
movq 0x140(%rsp), %r15
cmpq %rbx, %r15
movl %ebp, 0x1ac(%rsp)
je 0xb1186
movq %r13, %rbp
movq %r12, %r13
leaq 0x10(%rbx), %r12
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0xb1160
movq (%r12), %rsi
incq %rsi
callq 0x8480
leaq 0x20(%r12), %rax
addq $0x10, %r12
cmpq %r15, %r12
movq %rax, %r12
jne 0xb114a
movq %rbx, 0x140(%rsp)
movq %r13, %r12
movq %rbp, %r13
movl 0x1ac(%rsp), %ebp
movq 0x148(%rsp), %rax
cmpq 0x140(%rsp), %rax
je 0xb11a5
leaq 0x138(%rsp), %rdi
callq 0x8024a
callq 0x82e0
subq %r14, %rax
cvtsi2sd %rax, %xmm0
divsd 0x2402e(%rip), %xmm0    # 0xd51e8
movsd %xmm0, 0x460(%rsp)
movq 0xc8(%rsp), %rax
leaq 0xe0(%rax), %rdi
movq 0x30(%rsp), %rsi
movq %rdi, 0x180(%rsp)
callq 0x551e8
leaq 0x228(%rsp), %r15
movq 0x108(%rsp), %rcx
incl %ecx
movl %ecx, 0x7c(%rsp)
movsd (%rax), %xmm0
ucomisd 0x1ce22(%rip), %xmm0    # 0xce028
jne 0xb1236
jp 0xb1236
movq 0xc8(%rsp), %rax
leaq 0x240(%rax), %rbx
movq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x551e8
movsd (%rax), %xmm0
ucomisd 0x1cdf6(%rip), %xmm0    # 0xce028
jne 0xb1236
jnp 0xb1294
movq 0x30(%rsp), %rsi
movq 0x180(%rsp), %rdi
callq 0x551e8
movsd (%rax), %xmm0
ucomisd 0x1e1ec(%rip), %xmm0    # 0xcf440
jne 0xb13e4
jp 0xb13e4
movq 0xc8(%rsp), %rax
leaq 0x240(%rax), %rbx
movq 0x30(%rsp), %rsi
movq %rbx, %rdi
callq 0x551e8
movsd (%rax), %xmm0
ucomisd 0x1e1b8(%rip), %xmm0    # 0xcf440
jne 0xb13e4
jp 0xb13e4
movq 0xc8(%rsp), %r14
leaq 0x2a0(%r14), %rdi
callq 0x3f5a6
movq %r14, %rdi
addq $0x270, %rdi            # imm = 0x270
callq 0x800b6
movq %rbx, %rdi
callq 0x800b6
movq %r14, %rdi
callq 0x7fed0
movl $0x2d0, %esi            # imm = 0x2D0
movq %r14, %rdi
callq 0x8480
xorl %ebx, %ebx
jmp 0xb138f
movq $0x0, 0x58(%rsp)
movq 0x50(%rsp), %rax
movb $0x0, (%rax)
leaq 0x50(%rsp), %rdi
callq 0x8290
movq $0x0, 0xf0(%rsp)
movq 0xe8(%rsp), %rax
movb $0x0, (%rax)
movq %r14, %rdi
callq 0x8290
movq 0x138(%rsp), %rbx
movq 0x140(%rsp), %r14
cmpq %rbx, %r14
je 0xb135a
leaq 0x10(%rbx), %r15
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0xb1342
movq (%r15), %rsi
incq %rsi
callq 0x8480
leaq 0x20(%r15), %rax
addq $0x10, %r15
cmpq %r14, %r15
movq %rax, %r15
jne 0xb132e
movq %rbx, 0x140(%rsp)
movq 0x148(%rsp), %rax
cmpq 0x140(%rsp), %rax
je 0xb1379
leaq 0x138(%rsp), %rdi
callq 0x8024a
xorl %ebx, %ebx
movq 0x108(%rsp), %rax
movl %eax, 0x7c(%rsp)
leaq 0x228(%rsp), %r15
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0xb13b4
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xb13d0
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x138(%rsp), %rdi
callq 0x3123c
testb %bl, %bl
jmp 0xb0cd1
callq 0x82e0
movq %rax, 0x450(%rsp)
movq 0x110(%rsp), %rdi
callq 0x86e0
leaq 0x168(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
movl %eax, %ecx
callq 0x58050
movq 0x168(%rsp), %rdi
leaq 0x20853(%rip), %rsi     # 0xd1c7f
callq 0x8160
testl %eax, %eax
movl 0xe4(%rsp), %r15d
je 0xb1479
movq 0x168(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x8270
leaq 0x80(%rsp), %rdi
leaq 0x20821(%rip), %rsi     # 0xd1c7f
callq 0x8160
testl %eax, %eax
jne 0xb1479
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x8270
cvtsi2sd %r15d, %xmm1
movsd 0x1b0(%rsp), %xmm0
movsd %xmm1, 0x2a0(%rsp)
ucomisd %xmm1, %xmm0
xorps %xmm1, %xmm1
cvtsi2sdl 0xe0(%rsp), %xmm1
ja 0xb14ac
ucomisd %xmm0, %xmm1
jbe 0xb17f8
movsd %xmm1, 0x268(%rsp)
movq %r13, %rbp
movq 0x470(%rsp), %rax
movq 0x8(%rax), %r15
subq (%rax), %r15
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0xd0(%rsp), %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq %rbx, %rdi
movl 0xe0(%rsp), %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq %rbx, %rdi
movl 0xe4(%rsp), %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
shrq $0x3, %r15
movq %rbx, %rdi
movl %r15d, %esi
callq 0x8810
movq 0x38(%rsp), %rax
cmpq 0x30(%rsp), %rax
je 0xb1772
xorl %ebx, %ebx
leaq (%rbx,%rbx,2), %r13
testl %r15d, %r15d
jle 0xb15c4
leaq (,%r13,8), %r14
movq 0x470(%rsp), %rsi
addq %r14, %rsi
leaq 0x358(%rsp), %rdi
callq 0x3a864
movq 0x358(%rsp), %rcx
movq 0x360(%rsp), %rdx
movq %rdx, %rax
subq %rcx, %rax
sarq $0x3, %rax
cmpq %rcx, %rdx
je 0xb15d3
cmpq $0x1, %rax
movq %rax, %rdx
adcq $0x0, %rdx
xorpd %xmm0, %xmm0
xorl %esi, %esi
addsd (%rcx,%rsi,8), %xmm0
incq %rsi
cmpq %rsi, %rdx
jne 0xb15b5
jmp 0xb15d7
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
jmp 0xb16fa
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
movq %rax, %xmm0
punpckldq 0x18bb6(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x18bbe(%rip), %xmm0    # 0xca1b0
movapd %xmm0, 0x190(%rsp)
addq 0x488(%rsp), %r14
leaq 0x538(%rsp), %rdi
movq %r14, %rsi
callq 0x3a864
movq 0x538(%rsp), %rdi
movq 0x540(%rsp), %rcx
movq %rcx, %rax
subq %rdi, %rax
sarq $0x3, %rax
cmpq %rdi, %rcx
je 0xb1652
cmpq $0x1, %rax
movq %rax, %rcx
adcq $0x0, %rcx
xorpd %xmm2, %xmm2
xorl %edx, %edx
addsd (%rdi,%rdx,8), %xmm2
incq %rdx
cmpq %rdx, %rcx
jne 0xb1643
jmp 0xb1656
xorpd %xmm2, %xmm2
movq %rax, %xmm3
punpckldq 0x18b3d(%rip), %xmm3 # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1]
subpd 0x18b45(%rip), %xmm3    # 0xca1b0
testq %rdi, %rdi
je 0xb16a4
movq 0x548(%rsp), %rsi
subq %rdi, %rsi
movsd %xmm2, 0x1a0(%rsp)
movapd %xmm3, 0x210(%rsp)
callq 0x8480
movapd 0x210(%rsp), %xmm3
movsd 0x1a0(%rsp), %xmm2
movapd 0x190(%rsp), %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x8(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
unpckhpd %xmm3, %xmm0            # xmm0 = xmm0[1],xmm3[1]
addsd %xmm3, %xmm0
divsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, 0x8(%rsp)
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0xb16fa
movq 0x368(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movl $0x1, %edx
movq 0xd0(%rsp), %rdi
movq %r12, %rsi
callq 0x84e0
movq 0xd0(%rsp), %rdi
movsd 0x8(%rsp), %xmm0
callq 0x8730
movq 0x470(%rsp), %rcx
movq (%rcx,%r13,8), %rax
cmpq %rax, 0x8(%rcx,%r13,8)
je 0xb173d
leaq (%rcx,%r13,8), %rcx
movq %rax, 0x8(%rcx)
movq 0x488(%rsp), %rcx
movq (%rcx,%r13,8), %rax
cmpq %rax, 0x8(%rcx,%r13,8)
je 0xb1758
leaq (%rcx,%r13,8), %rcx
movq %rax, 0x8(%rcx)
incq %rbx
movq 0x38(%rsp), %rax
subq 0x30(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
jne 0xb155c
movq 0xd0(%rsp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movl 0xe4(%rsp), %r15d
movsbl %al, %esi
movq 0xd0(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movsd 0x1b0(%rsp), %xmm0
ucomisd 0x2a0(%rsp), %xmm0
movq %rbp, %r13
movsd 0x268(%rsp), %xmm1
jbe 0xb17e0
movl 0x59e00(%rip), %eax     # 0x10b5d4
addl %eax, 0xe0(%rsp)
addl %eax, %r15d
jmp 0xb17f8
ucomisd %xmm0, %xmm1
jbe 0xb17f8
movl $0x0, 0xe0(%rsp)
movl 0x59ddc(%rip), %r15d    # 0x10b5d4
movq %r13, %rdi
leaq 0x110(%rsp), %rsi
callq 0xb3afe
movq %r13, %rdi
callq 0xb3b3c
movl 0x59db6(%rip), %eax     # 0x10b5cc
cmpl %eax, 0x108(%rsp)
setge %dl
movl 0x59daa(%rip), %ecx     # 0x10b5d0
cmpl %ecx, %eax
sete %al
orb %dl, %al
cmpb $0x1, %al
jne 0xb192a
movl 0x7c(%rsp), %eax
cltd
idivl %ecx
testl %edx, %edx
jne 0xb192a
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0xa0(%rsp), %rdi
callq 0x84e0
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq 0x1d0(%rsp), %rcx
movq %rcx, %rax
subq 0x1d8(%rsp), %rax
sarq $0x5, %rax
cmpq $0x10, %rax
jb 0xb18c9
movq %rax, %rcx
shrq $0x4, %rcx
movabsq $-0x1000000000000000, %rdx # imm = 0xF000000000000000
addq %rcx, %rdx
testq %rax, %rax
cmovgq %rcx, %rdx
movq 0x1e8(%rsp), %rcx
movq %rdx, %rsi
shlq $0x4, %rsi
subq %rsi, %rax
shlq $0x5, %rax
addq (%rcx,%rdx,8), %rax
movq %rax, %rcx
movq (%rcx), %rsi
movq 0x8(%rcx), %rdx
movq %r14, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x3322a(%rip), %rsi     # 0xe4b4f
callq 0x84e0
movl %r15d, 0xe4(%rsp)
movq 0x30(%rsp), %rsi
cmpq %rsi, 0x38(%rsp)
movq 0x108(%rsp), %rbp
je 0xb1f41
movq 0xc8(%rsp), %rax
leaq 0x240(%rax), %rcx
movq %rcx, 0x1b0(%rsp)
leaq 0x68(%rax), %rcx
movq %rcx, 0x1a0(%rsp)
addq $0x2a0, %rax            # imm = 0x2A0
movq %rax, 0x210(%rsp)
xorl %ebx, %ebx
xorl %r14d, %r14d
xorl %r15d, %r15d
xorl %r13d, %r13d
addq %rbx, %rsi
movq 0x180(%rsp), %rdi
callq 0x551e8
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x30(%rsp), %rsi
addq %rbx, %rsi
movq 0x1b0(%rsp), %rdi
callq 0x551e8
movsd (%rax), %xmm0
movsd %xmm0, 0x190(%rsp)
movq 0x30(%rsp), %rsi
addq %rbx, %rsi
movq 0x1a0(%rsp), %rdi
callq 0x54a86
movl (%rax), %r12d
movq 0x30(%rsp), %rsi
addq %rbx, %rsi
movq 0x210(%rsp), %rdi
callq 0x54a86
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
movq 0xc8(%rsp), %rcx
movq 0xc8(%rcx), %rcx
movsd (%rcx,%r13,8), %xmm1
unpcklps 0x1878d(%rip), %xmm1    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x18795(%rip), %xmm1    # 0xca1b0
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
mulsd 0x29729(%rip), %xmm2    # 0xdb158
ucomisd %xmm2, %xmm0
jae 0xb1a78
movq $0x0, 0xd8(%rsp)
movq 0x248(%rsp), %rcx
leaq (%rcx,%r15), %rdi
movq 0x30(%rcx,%r15), %rax
movq 0x40(%rcx,%r15), %rcx
addq $-0x8, %rcx
cmpq %rcx, %rax
je 0xb1b25
movq $0x0, (%rax)
addq $0x8, %rax
movq %rax, 0x30(%rdi)
jmp 0xb1b32
movl (%rax), %eax
movsd 0x8(%rsp), %xmm2
movapd %xmm2, %xmm0
movsd 0x190(%rsp), %xmm4
subsd %xmm4, %xmm0
mulsd %xmm0, %xmm0
movsd 0x1d9a3(%rip), %xmm3    # 0xcf440
movapd %xmm3, %xmm5
subsd %xmm2, %xmm5
movapd %xmm2, %xmm1
movsd %xmm5, 0x2a0(%rsp)
mulsd %xmm5, %xmm1
decl %r12d
xorps %xmm2, %xmm2
cvtsi2sd %r12d, %xmm2
divsd %xmm2, %xmm1
subsd %xmm1, %xmm0
subsd %xmm4, %xmm3
movapd %xmm4, %xmm1
movsd %xmm3, 0x268(%rsp)
mulsd %xmm3, %xmm1
decl %eax
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
divsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0xd8(%rsp)
movq 0x248(%rsp), %rcx
leaq (%rcx,%r15), %rdi
movq 0x30(%rcx,%r15), %rax
movq 0x40(%rcx,%r15), %rcx
addq $-0x8, %rcx
cmpq %rcx, %rax
je 0xb1b7a
movsd %xmm0, (%rax)
addq $0x8, %rax
movq %rax, 0x30(%rdi)
jmp 0xb1b87
leaq 0xd8(%rsp), %rsi
callq 0xaf222
movq 0x248(%rsp), %rdi
addq %r15, %rdi
callq 0xae9f2
movq $0x0, 0x130(%rsp)
movq 0x2b8(%rsp), %rcx
leaq (%rcx,%r15), %rdi
movq 0x30(%rcx,%r15), %rax
movq 0x40(%rcx,%r15), %rcx
addq $-0x8, %rcx
cmpq %rcx, %rax
je 0xb1bf2
movq $0x0, (%rax)
jmp 0xb1be8
leaq 0xd8(%rsp), %rsi
callq 0xaf222
movq 0x248(%rsp), %rdi
addq %r15, %rdi
callq 0xae9f2
movsd 0x2a0(%rsp), %xmm1
mulsd 0x190(%rsp), %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x268(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x130(%rsp)
movq 0x2b8(%rsp), %rcx
leaq (%rcx,%r15), %rdi
movq 0x30(%rcx,%r15), %rax
movq 0x40(%rcx,%r15), %rcx
addq $-0x8, %rcx
cmpq %rcx, %rax
je 0xb1c01
movsd %xmm0, (%rax)
addq $0x8, %rax
movq %rax, 0x30(%rdi)
jmp 0xb1c0e
leaq 0x130(%rsp), %rsi
callq 0xaf222
jmp 0xb1c0e
leaq 0x130(%rsp), %rsi
callq 0xaf222
movq 0x2b8(%rsp), %rdi
addq %r15, %rdi
callq 0xae9f2
cmpq $0x0, 0x5b28a(%rip)     # 0x10ceb0
je 0xb1de0
movq 0x168(%rsp), %rdi
leaq 0x20044(%rip), %rsi     # 0xd1c7f
callq 0x8160
testl %eax, %eax
je 0xb1de0
movq 0x168(%rsp), %rdi
addq $0x20, %rdi
leaq 0x26141(%rip), %rsi     # 0xd7d9c
callq 0x8160
testl %eax, %eax
je 0xb1cd8
movq 0x168(%rsp), %rdi
addq $0x20, %rdi
leaq 0x1ec44(%rip), %rsi     # 0xd08bb
callq 0x8160
testl %eax, %eax
je 0xb1d05
movq 0x168(%rsp), %rdi
addq $0x20, %rdi
leaq 0x3556b(%rip), %rsi     # 0xe7202
callq 0x8160
testl %eax, %eax
jne 0xb1de0
movq 0x270(%rsp), %rax
movq (%rax,%r14), %rdi
movq 0x38(%rdi), %rsi
cmpq 0x40(%rdi), %rsi
je 0xb1d8e
movsd 0xd8(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x38(%rdi)
jmp 0xb1d9f
movq 0x270(%rsp), %rax
movq (%rax,%r14), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0xb1d32
movsd 0xd8(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x8(%rdi)
jmp 0xb1d3f
movq 0x270(%rsp), %rax
movq (%rax,%r14), %rdi
movq 0x20(%rdi), %rsi
cmpq 0x28(%rdi), %rsi
je 0xb1d5b
movsd 0xd8(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x20(%rdi)
jmp 0xb1d6c
leaq 0xd8(%rsp), %rdx
callq 0x79f34
movq 0x288(%rsp), %rax
movq (%rax,%r14), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0xb1dd3
addq $0x8, %rdi
jmp 0xb1db9
addq $0x18, %rdi
leaq 0xd8(%rsp), %rdx
callq 0x79f34
movq 0x288(%rsp), %rax
movq (%rax,%r14), %rdi
movq 0x20(%rdi), %rsi
cmpq 0x28(%rdi), %rsi
je 0xb1d88
addq $0x20, %rdi
jmp 0xb1db9
addq $0x18, %rdi
jmp 0xb1dd3
addq $0x30, %rdi
leaq 0xd8(%rsp), %rdx
callq 0x79f34
movq 0x288(%rsp), %rax
movq (%rax,%r14), %rdi
movq 0x38(%rdi), %rsi
cmpq 0x40(%rdi), %rsi
je 0xb1dcf
addq $0x38, %rdi
movsd 0x130(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, (%rdi)
jmp 0xb1de0
addq $0x30, %rdi
leaq 0x130(%rsp), %rdx
callq 0x79f34
movl 0x597e6(%rip), %eax     # 0x10b5cc
cmpl %eax, %ebp
setge %dl
movl 0x597df(%rip), %ecx     # 0x10b5d0
cmpl %ecx, %eax
sete %al
orb %dl, %al
cmpb $0x1, %al
jne 0xb1f18
movl 0x7c(%rsp), %eax
cltd
idivl %ecx
testl %edx, %edx
jne 0xb1f18
movq 0x248(%rsp), %rsi
addq %r15, %rsi
leaq 0x6f8(%rsp), %rdi
callq 0xaeb1a
leaq 0x6f8(%rsp), %r12
movq %r12, %rdi
callq 0xaea40
movsd %xmm0, 0x8(%rsp)
movq 0x2b8(%rsp), %rsi
addq %r15, %rsi
leaq 0x748(%rsp), %rbp
movq %rbp, %rdi
callq 0xaeb1a
movq %rbp, %rdi
callq 0xaea40
movsd 0x8(%rsp), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
movq %rbp, %rdi
callq 0xaedf6
movq %r12, %rdi
callq 0xaedf6
movb $0x1, %r12b
xorpd %xmm1, %xmm1
ucomisd 0x8(%rsp), %xmm1
movq 0x108(%rsp), %rbp
ja 0xb1ece
movq 0x2b8(%rsp), %rsi
addq %r15, %rsi
leaq 0x6a8(%rsp), %rdi
callq 0xaeb1a
leaq 0x6a8(%rsp), %rdi
callq 0xaea40
xorpd %xmm1, %xmm1
cmpeqsd %xmm1, %xmm0
movq %xmm0, %r12
andl $0x1, %r12d
ucomisd 0x8(%rsp), %xmm1
ja 0xb1ee3
leaq 0x6a8(%rsp), %rdi
callq 0xaedf6
movl $0x1, %edx
movq 0xa0(%rsp), %rdi
leaq 0x1fd87(%rip), %rsi     # 0xd1c7e
callq 0x84e0
xorpd %xmm0, %xmm0
testb %r12b, %r12b
jne 0xb1f0b
movsd 0x8(%rsp), %xmm0
movq 0xa0(%rsp), %rdi
callq 0x8730
incq %r13
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
addq $0x50, %r15
addq $0x18, %r14
addq $0x20, %rbx
cmpq %rax, %r13
jne 0xb1986
cmpq $0x0, 0x5af67(%rip)     # 0x10ceb0
leaq 0x228(%rsp), %r15
leaq 0x1fd26(%rip), %r12     # 0xd1c7e
je 0xb2699
leaq 0x80(%rsp), %rdi
leaq 0x1fd12(%rip), %rsi     # 0xd1c7f
callq 0x8160
testl %eax, %eax
je 0xb2699
movq 0x18(%rsp), %rdx
movq 0x88(%rsp), %r14
cmpq %r14, %rdx
jne 0xb1faf
testq %rdx, %rdx
je 0xb2699
movq 0x80(%rsp), %rsi
movq 0x10(%rsp), %rdi
callq 0x8490
testl %eax, %eax
je 0xb2699
movq 0x270(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rbp
movq 0x20(%rax), %rcx
subq (%rax), %rbp
subq 0x18(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x38(%rax), %r13
subq 0x30(%rax), %r13
movq 0x80(%rsp), %rsi
movq 0x48(%rsp), %rdi
movq %r14, %rdx
callq 0x84e0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq %rbp, %rsi
shrq $0x3, %rsi
movq %rbx, %rdi
movq %rsi, 0x1a0(%rsp)
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq 0x8(%rsp), %rsi
shrq $0x3, %rsi
movq %rbx, %rdi
movq %rsi, %rbp
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
shrq $0x3, %r13
movq %rbx, %rdi
movl %r13d, %esi
callq 0x8810
movq 0x38(%rsp), %rax
cmpq 0x30(%rsp), %rax
je 0xb2659
xorl %r14d, %r14d
xorpd %xmm0, %xmm0
movsd %xmm0, 0x190(%rsp)
leaq (%r14,%r14,2), %r15
movsd %xmm0, 0x8(%rsp)
cmpl $0x0, 0x1a0(%rsp)
jle 0xb2216
movq 0x270(%rsp), %rax
movq (%rax,%r15,8), %rsi
leaq 0x340(%rsp), %rdi
callq 0x3a864
movq 0x340(%rsp), %rcx
movq 0x348(%rsp), %rdx
movq %rdx, %rax
subq %rcx, %rax
sarq $0x3, %rax
cmpq %rcx, %rdx
je 0xb20ee
cmpq $0x1, %rax
movq %rax, %rdx
adcq $0x0, %rdx
xorpd %xmm0, %xmm0
xorl %esi, %esi
addsd (%rcx,%rsi,8), %xmm0
incq %rsi
cmpq %rsi, %rdx
jne 0xb20df
jmp 0xb20f2
xorpd %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
movq %rax, %xmm0
punpckldq 0x1809b(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x180a3(%rip), %xmm0    # 0xca1b0
movapd %xmm0, 0x180(%rsp)
movq 0x288(%rsp), %rax
movq (%rax,%r15,8), %rsi
leaq 0x520(%rsp), %rdi
callq 0x3a864
movq 0x520(%rsp), %rdi
movq 0x528(%rsp), %rcx
movq %rcx, %rax
subq %rdi, %rax
sarq $0x3, %rax
cmpq %rdi, %rcx
je 0xb216e
cmpq $0x1, %rax
movq %rax, %rcx
adcq $0x0, %rcx
xorpd %xmm2, %xmm2
xorl %edx, %edx
addsd (%rdi,%rdx,8), %xmm2
incq %rdx
cmpq %rdx, %rcx
jne 0xb215f
jmp 0xb2172
xorpd %xmm2, %xmm2
movq %rax, %xmm3
punpckldq 0x18021(%rip), %xmm3 # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1]
subpd 0x18029(%rip), %xmm3    # 0xca1b0
testq %rdi, %rdi
je 0xb21c0
movq 0x530(%rsp), %rsi
subq %rdi, %rsi
movsd %xmm2, 0x1b0(%rsp)
movapd %xmm3, 0x210(%rsp)
callq 0x8480
movapd 0x210(%rsp), %xmm3
movsd 0x1b0(%rsp), %xmm2
movapd 0x180(%rsp), %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x8(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
unpckhpd %xmm3, %xmm0            # xmm0 = xmm0[1],xmm3[1]
addsd %xmm3, %xmm0
divsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, 0x8(%rsp)
movq 0x340(%rsp), %rdi
testq %rdi, %rdi
je 0xb2216
movq 0x350(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
testl %ebp, %ebp
jle 0xb23af
movq 0x270(%rsp), %rax
movq (%rax,%r15,8), %rsi
addq $0x18, %rsi
leaq 0x328(%rsp), %rdi
callq 0x3a864
movq 0x328(%rsp), %rcx
movq 0x330(%rsp), %rdx
movq %rdx, %rax
subq %rcx, %rax
sarq $0x3, %rax
cmpq %rcx, %rdx
je 0xb227a
cmpq $0x1, %rax
movq %rax, %rdx
adcq $0x0, %rdx
xorpd %xmm0, %xmm0
xorl %esi, %esi
addsd (%rcx,%rsi,8), %xmm0
incq %rsi
cmpq %rsi, %rdx
jne 0xb226b
jmp 0xb227e
xorpd %xmm0, %xmm0
movsd %xmm0, 0x190(%rsp)
movq %rax, %xmm0
punpckldq 0x17f0c(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x17f14(%rip), %xmm0    # 0xca1b0
movapd %xmm0, 0x180(%rsp)
movq 0x288(%rsp), %rax
movq (%rax,%r15,8), %rsi
addq $0x18, %rsi
leaq 0x508(%rsp), %rdi
callq 0x3a864
movq 0x508(%rsp), %rdi
movq 0x510(%rsp), %rcx
movq %rcx, %rax
subq %rdi, %rax
sarq $0x3, %rax
cmpq %rdi, %rcx
je 0xb2301
cmpq $0x1, %rax
movq %rax, %rcx
adcq $0x0, %rcx
xorpd %xmm2, %xmm2
xorl %edx, %edx
addsd (%rdi,%rdx,8), %xmm2
incq %rdx
cmpq %rdx, %rcx
jne 0xb22f2
jmp 0xb2305
xorpd %xmm2, %xmm2
movq %rax, %xmm3
punpckldq 0x17e8e(%rip), %xmm3 # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1]
subpd 0x17e96(%rip), %xmm3    # 0xca1b0
testq %rdi, %rdi
je 0xb2353
movq 0x518(%rsp), %rsi
subq %rdi, %rsi
movsd %xmm2, 0x1b0(%rsp)
movapd %xmm3, 0x210(%rsp)
callq 0x8480
movapd 0x210(%rsp), %xmm3
movsd 0x1b0(%rsp), %xmm2
movapd 0x180(%rsp), %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x190(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
unpckhpd %xmm3, %xmm0            # xmm0 = xmm0[1],xmm3[1]
addsd %xmm3, %xmm0
divsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, 0x190(%rsp)
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0xb23af
movq 0x338(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
testl %r13d, %r13d
jle 0xb2410
movq 0x270(%rsp), %rax
movq (%rax,%r15,8), %rsi
addq $0x30, %rsi
leaq 0x310(%rsp), %rdi
callq 0x3a864
movq 0x310(%rsp), %rcx
movq 0x318(%rsp), %rdx
movq %rdx, %rax
subq %rcx, %rax
sarq $0x3, %rax
cmpq %rcx, %rdx
je 0xb2422
cmpq $0x1, %rax
movq %rax, %rdx
adcq $0x0, %rdx
xorpd %xmm0, %xmm0
xorl %esi, %esi
addsd (%rcx,%rsi,8), %xmm0
incq %rsi
cmpq %rsi, %rdx
jne 0xb2401
jmp 0xb2426
xorpd %xmm0, %xmm0
movsd %xmm0, 0x180(%rsp)
jmp 0xb2557
xorpd %xmm0, %xmm0
movsd %xmm0, 0x180(%rsp)
movq %rax, %xmm0
punpckldq 0x17d64(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x17d6c(%rip), %xmm0    # 0xca1b0
movapd %xmm0, 0x1b0(%rsp)
movq 0x288(%rsp), %rax
movq (%rax,%r15,8), %rsi
addq $0x30, %rsi
leaq 0x4f0(%rsp), %rdi
callq 0x3a864
movq 0x4f0(%rsp), %rdi
movq 0x4f8(%rsp), %rcx
movq %rcx, %rax
subq %rdi, %rax
sarq $0x3, %rax
cmpq %rdi, %rcx
je 0xb24a9
cmpq $0x1, %rax
movq %rax, %rcx
adcq $0x0, %rcx
xorpd %xmm2, %xmm2
xorl %edx, %edx
addsd (%rdi,%rdx,8), %xmm2
incq %rdx
cmpq %rdx, %rcx
jne 0xb249a
jmp 0xb24ad
xorpd %xmm2, %xmm2
movq %rax, %xmm3
punpckldq 0x17ce6(%rip), %xmm3 # xmm3 = xmm3[0],mem[0],xmm3[1],mem[1]
subpd 0x17cee(%rip), %xmm3    # 0xca1b0
testq %rdi, %rdi
je 0xb24fb
movq 0x500(%rsp), %rsi
subq %rdi, %rsi
movsd %xmm2, 0x210(%rsp)
movapd %xmm3, 0x2a0(%rsp)
callq 0x8480
movapd 0x2a0(%rsp), %xmm3
movsd 0x210(%rsp), %xmm2
movapd 0x1b0(%rsp), %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x180(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm0
unpckhpd %xmm3, %xmm0            # xmm0 = xmm0[1],xmm3[1]
addsd %xmm3, %xmm0
divsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, 0x180(%rsp)
movq 0x310(%rsp), %rdi
testq %rdi, %rdi
je 0xb2557
movq 0x320(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movl $0x1, %edx
movq 0x48(%rsp), %rdi
movq %r12, %rsi
callq 0x84e0
xorpd %xmm0, %xmm0
maxsd 0x8(%rsp), %xmm0
movq 0x48(%rsp), %rdi
callq 0x8730
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
xorpd %xmm0, %xmm0
maxsd 0x190(%rsp), %xmm0
movq %rbx, %rdi
callq 0x8730
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
xorpd %xmm0, %xmm0
maxsd 0x180(%rsp), %xmm0
movq %rbx, %rdi
callq 0x8730
movq 0x270(%rsp), %rax
movq (%rax,%r15,8), %rax
movq (%rax), %rcx
cmpq %rcx, 0x8(%rax)
je 0xb25e6
movq %rcx, 0x8(%rax)
movq 0x18(%rax), %rcx
cmpq %rcx, 0x20(%rax)
je 0xb25f4
movq %rcx, 0x20(%rax)
movq 0x30(%rax), %rcx
cmpq %rcx, 0x38(%rax)
je 0xb2602
movq %rcx, 0x38(%rax)
movq 0x288(%rsp), %rax
movq (%rax,%r15,8), %rax
movq (%rax), %rcx
cmpq %rcx, 0x8(%rax)
je 0xb261b
movq %rcx, 0x8(%rax)
movq 0x18(%rax), %rcx
cmpq %rcx, 0x20(%rax)
leaq 0x228(%rsp), %r15
je 0xb2631
movq %rcx, 0x20(%rax)
movq 0x30(%rax), %rcx
cmpq %rcx, 0x38(%rax)
je 0xb263f
movq %rcx, 0x38(%rax)
incq %r14
movq 0x38(%rsp), %rax
subq 0x30(%rsp), %rax
sarq $0x5, %rax
cmpq %r14, %rax
ja 0xb2071
movq 0x48(%rsp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x48(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0x80(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x8270
movl 0x58f2d(%rip), %eax     # 0x10b5cc
cmpl %eax, 0x108(%rsp)
setge %dl
movl 0x58f21(%rip), %ecx     # 0x10b5d0
cmpl %ecx, %eax
sete %al
orb %dl, %al
cmpb $0x1, %al
jne 0xb26f9
movl 0x7c(%rsp), %eax
cltd
idivl %ecx
testl %edx, %edx
jne 0xb26f9
movq 0xa0(%rsp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0xa0(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
callq 0x82e0
subq 0x450(%rsp), %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x22ad2(%rip), %xmm0    # 0xd51e8
movsd %xmm0, 0x190(%rsp)
movq 0xc8(%rsp), %rbx
leaq 0x2a0(%rbx), %rdi
callq 0x3f5a6
leaq 0x270(%rbx), %rdi
callq 0x800b6
movq %rbx, %rdi
addq $0x240, %rdi            # imm = 0x240
callq 0x800b6
movq %rbx, %rdi
callq 0x7fed0
movl $0x2d0, %esi            # imm = 0x2D0
movq %rbx, %rdi
callq 0x8480
leaq 0x168(%rsp), %rdi
callq 0x3123c
movb $0x1, %bl
leaq 0x1c0(%rsp), %r13
movl 0x1ac(%rsp), %ebp
jmp 0xb138f
leaq 0xe8(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movapd 0x150(%rsp), %xmm0
movq 0x160(%rsp), %rax
movups 0xe8(%rsp), %xmm1
movaps %xmm1, 0x150(%rsp)
movq 0xf8(%rsp), %rcx
movq %rcx, 0x160(%rsp)
movapd 0x50(%rsp), %xmm1
movapd %xmm0, 0x50(%rsp)
movq %rax, 0x60(%rsp)
movupd %xmm1, 0xe8(%rsp)
movq $0x0, 0xf8(%rsp)
leaq 0x50(%rsp), %rbx
movq %rbx, %rdi
callq 0x3123c
movq %r14, %rdi
callq 0x3123c
movq 0x150(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x158(%rsp), %rdx
movq %r14, %rdi
movq %rbx, %rcx
callq 0x7fa48
movq $0x0, 0x50(%rsp)
movq 0xe8(%rsp), %rax
cmpq %rax, 0xf0(%rsp)
je 0xb28af
xorl %esi, %esi
shlq $0x5, %rsi
addq %rax, %rsi
leaq 0x5b8(%rsp), %rdi
callq 0x3e394
movq %rax, %rbx
leaq 0x558(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x5d80c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8270
movq 0x50(%rsp), %rsi
incq %rsi
movq %rsi, 0x50(%rsp)
movq 0xe8(%rsp), %rax
movq 0xf0(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
cmpq %rcx, %rsi
jne 0xb2852
movq 0x4b8(%rsp), %r15
leaq 0x4a8(%rsp), %rax
cmpq %rax, %r15
je 0xb2a23
leaq 0x60(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x20(%r15), %rsi
movq 0x28(%r15), %rdx
addq %rsi, %rdx
leaq 0x50(%rsp), %rdi
callq 0x2e45c
leaq 0x40(%r15), %rsi
leaq 0x138(%rsp), %rbx
movq %rbx, %rdi
callq 0x3273a
leaq 0x168(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
movq %rbx, %rdx
callq 0x53501
movq 0x168(%rsp), %rax
cmpq 0x170(%rsp), %rax
jne 0xb29ab
movl $0x29, %edx
movq 0x586b3(%rip), %rdi     # 0x10afe8
leaq 0x25a7f(%rip), %rsi     # 0xd83bb
callq 0x84e0
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x58696(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
leaq 0x247b6(%rip), %rsi     # 0xd711f
callq 0x84e0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x168(%rsp), %rax
cmpq 0x170(%rsp), %rax
je 0xb2c24
leaq 0x588(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x5d872
movq %rax, %rdi
leaq 0x168(%rsp), %rsi
callq 0x5d8ee
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0xb29ea
movq 0x178(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x138(%rsp), %rdi
callq 0x3123c
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xb2a13
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
movq %r15, %rdi
callq 0x8310
movq %rax, %r15
jmp 0xb28b7
callq 0x82e0
movq %rax, 0x458(%rsp)
leaq 0xe8(%rsp), %rdi
callq 0x3123c
leaq 0x228(%rsp), %r15
movq 0x108(%rsp), %rdx
jmp 0xb0ccd
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xb2a77
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xb2a9c
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x150(%rsp), %rdi
callq 0x3123c
leaq 0x4d0(%rsp), %rdi
callq 0x3123c
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xb2adb
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb2af7
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x288(%rsp), %rdi
callq 0xa5bb6
leaq 0x270(%rsp), %rdi
callq 0xa5bb6
leaq 0x430(%rsp), %rdi
callq 0x45f06
leaq 0x488(%rsp), %rdi
callq 0x45f06
leaq 0x470(%rsp), %rdi
callq 0x45f06
leaq 0x1c0(%rsp), %rdi
callq 0xb3b78
leaq 0x2b8(%rsp), %rdi
callq 0xaec28
leaq 0x248(%rsp), %rdi
callq 0xaec28
leaq 0x370(%rsp), %rdi
callq 0xaedf6
leaq 0x30(%rsp), %rdi
callq 0x3123c
leaq 0x2f0(%rsp), %rdi
callq 0x3123c
leaq 0x558(%rsp), %rdi
callq 0x5ddda
leaq 0x588(%rsp), %rdi
callq 0x5de52
leaq 0x5b8(%rsp), %rdi
callq 0x3f5f4
leaq 0x4a0(%rsp), %rdi
callq 0x3f522
leaq 0x678(%rsp), %rdi
callq 0x3f49e
leaq 0x648(%rsp), %rdi
callq 0x3f522
leaq 0x618(%rsp), %rdi
callq 0x3f5a6
leaq 0x5e8(%rsp), %rdi
callq 0x33302
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xb2c10
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %eax, %eax
addq $0x798, %rsp            # imm = 0x798
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x257ba(%rip), %rdi     # 0xd83e5
leaq 0x34d60(%rip), %rsi     # 0xe7992
leaq 0x34d6f(%rip), %rcx     # 0xe79a8
movl $0xa5, %edx
callq 0x82c0
jmp 0xb329f
jmp 0xb329f
jmp 0xb3229
jmp 0xb3208
jmp 0xb3229
movq %rax, %rbx
jmp 0xb3142
jmp 0xb2e83
movq %rax, %rbx
jmp 0xb314f
jmp 0xb3229
movq %rax, %rbx
movl $0x2d0, %esi            # imm = 0x2D0
movq %r15, %rdi
callq 0x8480
jmp 0xb3239
movq %rax, %rbx
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xb2cb8
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2cb8
movq %rax, %rbx
movq 0x1c0(%rsp), %rdi
cmpq %r15, %rdi
je 0xb2cda
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2cda
movq %rax, %rbx
leaq 0x258(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb2d00
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2d00
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb2d21
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2d21
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xb2d4b
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2d4b
movq %rax, %rbx
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb2d71
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2d71
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xb2d9b
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2d9b
movq %rax, %rbx
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xb2dc7
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2dc7
jmp 0xb2dc4
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xb2de3
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x200, %esi            # imm = 0x200
movq 0x48(%rsp), %rdi
jmp 0xb30cf
movq %rax, %rbx
jmp 0xb2de3
jmp 0xb3115
jmp 0xb30d9
jmp 0xb3115
jmp 0xb3229
movq %rax, %rbx
movq 0x328(%rsp), %rdi
testq %rdi, %rdi
je 0xb322c
movq 0x338(%rsp), %rsi
jmp 0xb319e
movq %rax, %rbx
movq 0x340(%rsp), %rdi
testq %rdi, %rdi
je 0xb322c
movq 0x350(%rsp), %rsi
jmp 0xb319e
movq %rax, %rbx
movq 0x310(%rsp), %rdi
testq %rdi, %rdi
je 0xb322c
movq 0x320(%rsp), %rsi
jmp 0xb319e
movq %rax, %rbx
leaq 0x6f8(%rsp), %rdi
callq 0xaedf6
jmp 0xb322c
movq %rax, %rbx
jmp 0xb316b
movq %rax, %rbx
jmp 0xb332b
movq %rax, %rbx
jmp 0xb3347
movq %rax, %rbx
jmp 0xb3354
movq %rax, %rbx
jmp 0xb3361
movq %rax, %rbx
jmp 0xb336e
movq %rax, %rbx
jmp 0xb337b
movq %rax, %rbx
jmp 0xb3388
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb3395
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb3395
movq %rax, %rbx
jmp 0xb3395
movq %rax, %rbx
jmp 0xb33a2
movq %rax, %rbx
jmp 0xb33af
jmp 0xb33c3
movq %rax, %rbx
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xb2f35
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2f35
movq %rax, %rbx
movq 0x1c0(%rsp), %rdi
cmpq %r15, %rdi
je 0xb2f57
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2f57
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xb2f83
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2f83
jmp 0xb2f80
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb2fa4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2fa4
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0xd0(%rsp), %rdi
jmp 0xb30cf
movq %rax, %rbx
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0xb2fe3
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb2fe3
movq %rax, %rbx
leaq 0x1d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb3009
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb3009
movq %rax, %rbx
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb3029
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb3029
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb304a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb304a
movq %rax, %rbx
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb3070
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb3070
movq %rax, %rbx
leaq 0x120(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb3098
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb3098
jmp 0xb3095
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xb30c2
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb30c2
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0xa0(%rsp), %rdi
callq 0x8480
jmp 0xb33c6
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
jmp 0xb310b
jmp 0xb3115
movq %rax, %rbx
leaq 0x380(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb341e
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb341e
movq %rax, %rbx
jmp 0xb341e
jmp 0xb3229
movq %rax, %rbx
movq 0x168(%rsp), %rdi
testq %rdi, %rdi
je 0xb3142
movq 0x178(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x138(%rsp), %rdi
callq 0x3123c
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xb316b
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xe8(%rsp), %rdi
jmp 0xb3282
jmp 0xb317a
movq %rax, %rdi
callq 0x287e1
movq %rax, %rbx
movq 0x358(%rsp), %rdi
testq %rdi, %rdi
je 0xb322c
movq 0x368(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
jmp 0xb322c
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0xb32a2
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xb32a2
jmp 0xb329f
movq %rax, %rbx
jmp 0xb327a
jmp 0xb329f
movq %rax, %rbx
jmp 0xb325e
movq %rax, %rbx
leaq 0x370(%rsp), %rdi
callq 0x7bc6a
jmp 0xb341e
movq %rax, %rbx
jmp 0xb3239
jmp 0xb33c3
jmp 0xb33c3
jmp 0xb33c3
jmp 0xb3229
jmp 0xb33c3
jmp 0xb3229
jmp 0xb3229
jmp 0xb329f
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
callq 0x3123c
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0xb325e
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xb327a
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x138(%rsp), %rdi
callq 0x3123c
jmp 0xb32a2
jmp 0xb33c3
jmp 0xb329f
jmp 0xb33be
jmp 0xb33c3
jmp 0xb33c3
movq %rax, %rbx
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xb32c7
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xb32ec
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x150(%rsp), %rdi
callq 0x3123c
leaq 0x4d0(%rsp), %rdi
callq 0x3123c
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xb332b
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xb3347
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x288(%rsp), %rdi
callq 0xa5bb6
leaq 0x270(%rsp), %rdi
callq 0xa5bb6
leaq 0x430(%rsp), %rdi
callq 0x45f06
leaq 0x488(%rsp), %rdi
callq 0x45f06
leaq 0x470(%rsp), %rdi
callq 0x45f06
leaq 0x1c0(%rsp), %rdi
callq 0xb3b78
leaq 0x2b8(%rsp), %rdi
callq 0xaec28
leaq 0x248(%rsp), %rdi
callq 0xaec28
leaq 0x370(%rsp), %rdi
callq 0xaedf6
jmp 0xb33c6
movq %rax, %rbx
jmp 0xb33ea
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x3123c
leaq 0x2f0(%rsp), %rdi
jmp 0xb33e5
movq %rax, %rbx
leaq 0x370(%rsp), %rdi
callq 0x3123c
leaq 0x558(%rsp), %rdi
callq 0x5ddda
leaq 0x588(%rsp), %rdi
callq 0x5de52
leaq 0x5b8(%rsp), %rdi
callq 0x3f5f4
leaq 0x4a0(%rsp), %rdi
callq 0x3f522
leaq 0x5e8(%rsp), %rdi
callq 0x7bc6a
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xb3450
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x8480
movq %rbx, %rdi
callq 0x8840