// File: /workspace/github_cpp_makefile_star2_O1/millanek[P]evo/process_vcf_stats.cpp
// Function: statsMain(int, char**)
int statsMain(int argc, char** argv) {
    parseStatsOptions(argc, argv);
    string line; // for reading the input files
    
    string fileName = opt::vcfFile;
    string fileRoot = stripExtension(fileName);
    std::ifstream* setsFile;
    std::ifstream* accessibleGenomeBed;
    
    // Data structures to hold individual and population identifiers
    std::vector<std::string> sampleNames;
    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;
    std::vector<string> populations; std::vector<string> populationsToUse;
    // Read in the POPULATIONS_FILE if supplied
    if (!opt::populationsFile.empty()) {
        std::ifstream* setsFile = new std::ifstream(opt::populationsFile.c_str());
    
        // 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)
        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;
    }
    
    // Data structures to hold the results
    std::vector<int> hetCounts; std::vector<int> hetsSharedWithOthers; std::vector<int> privateVarCounts;
    int_matrix doubletons; double_matrix diffMatrixHetsVsHomDiff;
    double_matrix diffMatrix; double_matrix diffMatrixMe; double_matrix diffMatrixH1; double_matrix diffMatrixAllH;
    int_matrix pairwiseMissingness;
    double_matrix thisBootstrapBlock; int_matrix thisBootstrapBlockMissingness;
    std::unordered_map<int, double_matrix>  bootstrapBlockDiffMe;
    std::unordered_map<int , int_matrix >  bootstrapBlockMissingnessMe;
    
    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;
        std::istream* inFile = createReader(fileName.c_str());
        string line;
        while (getline(*inFile, line)) {
            std::vector<std::string> fields = split(line, '\t');
            string sc = fields[0];
            int len = atoi(fields[1].c_str());
            for (int i=0; i < len; i=i+opt::accessibleGenBedWindow ) {
                int numAccessibleBP = ag->getAccessibleBPinRegion(sc, i, i+opt::accessibleGenBedWindow);
                std::cout << sc << "\t" << i << "\t" << i+opt::accessibleGenBedWindow << "\t" << numAccessibleBP << std::endl;
            }
        }
        return 0;
    }
    
    std::cerr << "Calculating statistics from: " << fileName << std::endl;
    if (opt::countHets) {
        std::cerr << "Het count per individual are going to be output to: " << fileRoot + ".hets.txt" << std::endl;
        std::cerr << "Counts of hets (per individual) shared with others are going to be output to: " << fileRoot + ".sharedHets.txt" << std::endl;
    }
    if (opt::bDoubleton) {
        std::cerr << "The distribution of doubletons is going to be output to: " <<  fileRoot + ".doubletons.txt" << std::endl;
        //pop_unique = initializeDoubletons(doubletons, indPopVector,fieldsPopMap);
    }
    if (opt::countPrivateVars) {
        std::cerr << "The numbers of private variants fixed in groups defined in " << opt::populationsFile << " are going to be output to: " <<  fileRoot + "_" + stripExtension(opt::populationsFile) + ".privateFixedVars.txt" << std::endl;
        //pop_unique = initializeDoubletons(doubletons, indPopVector,fieldsPopMap);
        
    }
    
    // Start reading from the vcf file
    std::istream* inFile = createReader(fileName.c_str());
    int numSamples; int numChromosomes; int totalVariantNumber = 0;
    int bootstrapBlockNum = 0; std::vector<std::string> fields;
    while (getline(*inFile, line)) {
        if (line[0] == '#' && line[1] == '#')
            continue;
        else if (line[0] == '#' && line[1] == 'C') {
            // Read the sample names, initialise output variables, and (if supplied) locate populations
            fields = split(line, '\t');
            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);
            } numSamples = (int)sampleNames.size(); numChromosomes = (int)numSamples * 2;
            std::cerr << "Number of chromosomes: " << numChromosomes << std::endl;
            
           // 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;
           }
            
            initialize_matrix_double(diffMatrix, numSamples); initialize_matrix_double(diffMatrixMe, numSamples);
            initialize_matrix_double(diffMatrixHetsVsHomDiff, numSamples);
            initialize_matrix_double(diffMatrixH1, numSamples); initialize_matrix_double(diffMatrixAllH, numSamples);
            initialize_matrix_double(thisBootstrapBlock, numSamples);
            initialize_matrix_int(pairwiseMissingness, numSamples);
            initialize_matrix_int(thisBootstrapBlockMissingness, numSamples);
            hetCounts.assign(numSamples, 0); hetsSharedWithOthers.assign(numSamples, 0);
            
            if (!opt::populationsFile.empty()) {
                privateVarCounts.assign(populationsToUse.size(), 0);
            }
            
        } else {
            totalVariantNumber++;
            fields = split(line, '\t');
            
            FilterResult* result = new FilterResult();
            Counts* c = new Counts(); getThisVariantCountsSimple(fields, c);
            result->counts = *c;
            
            // Only do these calculations if none of the genotypes are missing:
            if (result->counts.bAnyMissingGenotypes == false) {
                if (opt::countHets) {
                    het_analysis(hetCounts, hetsSharedWithOthers, *result);
                }
                if (opt::countPrivateVars) {
                    // This needs updating 
                    //privateVars_analysis(privateVarCounts,*result,populationsIndices, populationsIndicesComplements);
                }
                if (opt::bDoubleton) {
                //    doubleton_analysis(doubletons,result,numChromosomes,indPopVector, fieldsPopMap);
                }
                if (opt::bDiffH1) {
                    diffs_between_H1(diffMatrixH1, *result);
                }
                if (opt::bDiffAllH) {
                    diffs_between_AllH(diffMatrixAllH, *result);
                }
            }
            if (opt::bDiffs) {
                if (!result->counts.bIsMultiallelic) {
                diffs_between_individuals(diffMatrix,diffMatrixMe,thisBootstrapBlock,diffMatrixHetsVsHomDiff,pairwiseMissingness,thisBootstrapBlockMissingness,*result);
                } else {
                diffs_between_individuals_with_multialleleics(diffMatrixMe,pairwiseMissingness,thisBootstrapBlock,thisBootstrapBlockMissingness,*result);
                }
            }
            
            if (opt::bDoBootstrap) {
                if (totalVariantNumber % opt::bootstrapBlockSize == 0) {
                    bootstrapBlockDiffMe[bootstrapBlockNum] = thisBootstrapBlock;
                    bootstrapBlockMissingnessMe[bootstrapBlockNum] = thisBootstrapBlockMissingness;
                    reset_matrix_to_zero(thisBootstrapBlock); reset_matrix_to_zero(thisBootstrapBlockMissingness);
                    //thisBootstrapBlock.clear(); thisBootstrapBlockMissingness.clear();
                    //initialize_matrix_double(thisBootstrapBlock, numSamples);
                    //initialize_matrix_int(thisBootstrapBlockMissingness, numSamples);
                    bootstrapBlockNum++;
                }
            }
            delete c;
            delete result;
                
            if (totalVariantNumber % 100000 == 0)
                std::cerr << "Processed " << totalVariantNumber << " variants" << std::endl;
            
        }
    }
    
    if (opt::numAccessibleBP > -1) {
        std::cerr << "opt::numAccessibleBP " << opt::numAccessibleBP << std::endl;
        for (int i = 0; i < diffMatrixMe.size(); i++) {
            for (int j = 0; j < diffMatrixMe[i].size(); j++) {
                diffMatrixMe[i][j] =  (double)diffMatrixMe[i][j]/opt::numAccessibleBP;
            }    
        }
    }
    
    // Bootstrap:
    if (opt::bDoBootstrap) {
        for (int n = 0; n < opt::n_bootstrap_replicates; n++) {
            string bootFileName = fileRoot + "boot." + numToString(n) + ".txt";
            std::ofstream* pBootOutFile = new std::ofstream(bootFileName.c_str());
            std::vector<std::vector<double> > bootReplicateMatrix; initialize_matrix_double(bootReplicateMatrix, numSamples);
            std::vector<std::vector<double> > bootReplicateMatrixMissingness; initialize_matrix_double(bootReplicateMatrixMissingness, numSamples);
            for (int b = 0; b < (int)bootstrapBlockDiffMe.size(); b++) {
                int block = rand() % bootstrapBlockDiffMe.size();
                for (int i = 0; i < (int)diffMatrixMe.size(); i++) {
                    for (int j = 0; j < (int)diffMatrixMe.size(); j++) {
                        bootReplicateMatrix[i][j] = bootReplicateMatrix[i][j] + bootstrapBlockDiffMe[block][i][j];
                        bootReplicateMatrixMissingness[i][j] = bootReplicateMatrixMissingness[i][j] + bootstrapBlockMissingnessMe[block][i][j];
                    }
                }
            }
            
            // Normalise the bootstrap diff matrix based on pairwise missingness
            std::vector<std::vector<double> > proportionUsed; initialize_matrix_double(proportionUsed, numSamples);
            std::vector<std::vector<double> > normalisedBootstrap; initialize_matrix_double(normalisedBootstrap, numSamples);
            int totalSitesBootstrap = (int)bootstrapBlockDiffMe.size() * opt::bootstrapBlockSize;
            for (int i = 0; i < (int)diffMatrixMe.size(); i++) {
                for (int j = 0; j < (int)diffMatrixMe.size(); j++) {
                    proportionUsed[i][j] = 1 - (bootReplicateMatrixMissingness[i][j]/totalSitesBootstrap);
                    normalisedBootstrap[i][j] = bootReplicateMatrix[i][j]/proportionUsed[i][j];
                }
            }
            
            print_vector(sampleNames,*pBootOutFile);
            print_matrix<const std::vector<std::vector<double> >&>(normalisedBootstrap, *pBootOutFile);
            pBootOutFile->close();
        }
    }
    
    
    string fileNoPath = stripPath(fileRoot);
    
    // Printing doubletons
//    if (opt::bDoubleton)
//        print_doubleton_distribution(fileRoot, pop_unique, doubletons);
    
    // Printing het counts
    if (opt::countHets) 
        print_het_counts(fileRoot, sampleNames, hetCounts, hetsSharedWithOthers);
    
    // Printing statistics for private variants
    if (opt::countPrivateVars)
        print_privateFixedVarsSummary(fileRoot, populationsToUse, opt::populationsFile, privateVarCounts);
    
    // Printing pairwise difference statistics
    if (opt::bDiffs) {
        finalize_diffs_Hets_vs_Homs_proportions(diffMatrixHetsVsHomDiff);
        print_pairwise_diff_stats(fileNoPath, sampleNames, totalVariantNumber, diffMatrix, diffMatrixMe, diffMatrixHetsVsHomDiff,pairwiseMissingness);
    }
    if (opt::bDiffH1) {
        print_H1_pairwise_diff_stats(fileRoot, sampleNames, totalVariantNumber, diffMatrixH1);
    }
    if (opt::bDiffAllH) {
        print_AllH_pairwise_diff_stats(fileRoot, sampleNames, totalVariantNumber, diffMatrixAllH);
    }
    
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x488, %rsp            # imm = 0x488
callq 0x5d495
leaq 0x270(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x150(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0xb1124(%rip), %rsi     # 0x10c200
movq 0xb1125(%rip), %rdx     # 0x10c208
addq %rsi, %rdx
leaq 0x140(%rsp), %rdi
callq 0x2e45c
leaq 0x110(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x50803
xorl %eax, %eax
movq %rax, 0x90(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x80(%rsp)
leaq 0x368(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x3b0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x460(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x430(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
movq %rax, 0x310(%rsp)
movapd %xmm0, 0x300(%rsp)
movq %rax, 0x250(%rsp)
movapd %xmm0, 0x240(%rsp)
cmpq %rax, 0xb1098(%rip)     # 0x10c248
je 0x5b383
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r14
movq 0xb1076(%rip), %rsi     # 0x10c240
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
leaq 0x260(%rsp), %rbx
leaq 0x320(%rsp), %r15
leaq 0x360(%rsp), %r12
leaq 0x3a8(%rsp), %r13
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x5b28a
movq %r15, %rdi
movq %rbx, %rsi
movl $0x9, %edx
callq 0x50624
movq 0x320(%rsp), %rsi
addq $0x20, %rsi
movq %r12, %rdi
callq 0x49f44
movq 0x320(%rsp), %rsi
movq %rax, %rdi
callq 0x33db0
movq 0x320(%rsp), %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0x3e394
addq $0x20, %rbp
movq %rax, %rdi
movq %rbp, %rsi
callq 0x8270
movq %r15, %rdi
callq 0x3123c
jmp 0x5b1f7
movq 0x378(%rsp), %rbx
leaq 0x368(%rsp), %rax
cmpq %rax, %rbx
je 0x5b30d
leaq 0x300(%rsp), %r14
leaq 0x7bcbc(%rip), %r15     # 0xd6f6a
leaq 0x7cf9b(%rip), %r12     # 0xd8250
leaq 0x240(%rsp), %r13
leaq 0x20(%rbx), %rbp
movq %r14, %rdi
movq %rbp, %rsi
callq 0x33db0
movq %rbp, %rdi
movq %r15, %rsi
callq 0x8160
testl %eax, %eax
je 0x5b2f5
movq %rbp, %rdi
movq %r12, %rsi
callq 0x8160
testl %eax, %eax
je 0x5b2f5
movq %r13, %rdi
movq %rbp, %rsi
callq 0x33db0
movq %rbx, %rdi
callq 0x8310
movq %rax, %rbx
leaq 0x368(%rsp), %rax
cmpq %rax, %rbx
jne 0x5b2bd
movq 0xafcd4(%rip), %rdi     # 0x10afe8
leaq 0x8ebd6(%rip), %rsi     # 0xe9ef1
movl $0xa, %edx
callq 0x84e0
movq 0x308(%rsp), %rsi
subq 0x300(%rsp), %rsi
sarq $0x5, %rsi
movq 0xafca8(%rip), %rdi     # 0x10afe8
callq 0x82f0
movq %rax, %rbx
leaq 0x7cf05(%rip), %rsi     # 0xd8254
movl $0xd, %edx
movq %rax, %rdi
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
xorpd %xmm0, %xmm0
movapd %xmm0, 0x1c0(%rsp)
xorl %eax, %eax
movq %rax, 0x1d0(%rsp)
movq %rax, 0x1b0(%rsp)
movapd %xmm0, 0x1a0(%rsp)
movq %rax, 0x230(%rsp)
movapd %xmm0, 0x220(%rsp)
movq %rax, 0x3a0(%rsp)
movapd %xmm0, 0x390(%rsp)
movq %rax, 0x210(%rsp)
movapd %xmm0, 0x200(%rsp)
movq %rax, 0x2f0(%rsp)
movapd %xmm0, 0x2e0(%rsp)
movq %rax, 0xd0(%rsp)
movapd %xmm0, 0xc0(%rsp)
movq %rax, 0x2d0(%rsp)
movapd %xmm0, 0x2c0(%rsp)
movq %rax, 0x2b0(%rsp)
movapd %xmm0, 0x2a0(%rsp)
movq %rax, 0x1f0(%rsp)
movapd %xmm0, 0x1e0(%rsp)
movq %rax, 0x190(%rsp)
movapd %xmm0, 0x180(%rsp)
movq %rax, 0x170(%rsp)
movapd %xmm0, 0x160(%rsp)
leaq 0x350(%rsp), %rcx
movq %rcx, -0x30(%rcx)
movl $0x1, %edx
movq %rdx, -0x28(%rcx)
movupd %xmm0, -0x20(%rcx)
movl $0x3f800000, %esi       # imm = 0x3F800000
movl %esi, -0x10(%rcx)
movupd %xmm0, -0x8(%rcx)
leaq 0x408(%rsp), %rcx
movq %rcx, -0x30(%rcx)
movq %rdx, -0x28(%rcx)
movupd %xmm0, -0x20(%rcx)
movl %esi, -0x10(%rcx)
movupd %xmm0, -0x8(%rcx)
cmpq %rax, 0xb0dc8(%rip)     # 0x10c268
je 0x5b791
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r14
leaq 0xb0da6(%rip), %rsi     # 0x10c260
movq %rax, %rdi
movl $0x8, %edx
callq 0x8740
movq %r14, 0x358(%rsp)
movq 0xafb12(%rip), %rbx     # 0x10afe8
leaq 0x7cd85(%rip), %rsi     # 0xd8262
movl $0x28, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0xafae0(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0x38, %edi
callq 0x8470
movq %rax, %r14
leaq 0x358(%rsp), %rsi
movq %rax, %rdi
callq 0x496da
movq 0xafaaf(%rip), %rbx     # 0x10afe8
leaq 0x72b37(%rip), %rsi     # 0xce077
movl $0x4, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0xafa7d(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x140(%rsp), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x286de
leaq 0x10(%rsp), %rdi
movl $0x8, %esi
callq 0x53224
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5b5bc
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x10(%rsp), %r15
leaq 0x20(%rsp), %rax
movq %rax, (%r15)
movq $0x0, 0x8(%r15)
movb $0x0, 0x10(%r15)
leaq 0x50(%rsp), %r13
leaq 0x7669c(%rip), %r12     # 0xd1c7e
movq %rbx, 0xe8(%rsp)
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 0x5b76c
movq %r13, %rdi
movq %r15, %rsi
movl $0x9, %edx
callq 0x50624
movq 0x50(%rsp), %rax
leaq 0x40(%rsp), %rcx
movq %rcx, 0x30(%rsp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rdi
callq 0x2e45c
movq 0x50(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86e0
testl %eax, %eax
jle 0x5b731
movl %eax, %r15d
xorl %ebx, %ebx
movl 0xafe96(%rip), %ecx     # 0x10b508
addl %ebx, %ecx
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
movl %ebx, %edx
callq 0x4a03c
movl %eax, %ebp
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq 0xaf922(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq %r13, %rdi
movl %ebx, %esi
callq 0x8810
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movl 0xafe37(%rip), %esi     # 0x10b508
addl %ebx, %esi
movq %r13, %rdi
callq 0x8810
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x84e0
movq %r13, %rdi
movl %ebp, %esi
callq 0x8810
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r13, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
addl 0xafde0(%rip), %ebx     # 0x10b508
cmpl %r15d, %ebx
jl 0x5b66c
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x10(%rsp), %r15
je 0x5b752
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x50(%rsp), %r13
movq %r13, %rdi
callq 0x3123c
movq 0xe8(%rsp), %rbx
jmp 0x5b5ea
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x5cda0
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x5cda0
movq 0xaf850(%rip), %rdi     # 0x10afe8
leaq 0x7caec(%rip), %rsi     # 0xd828b
movl $0x1d, %edx
callq 0x84e0
movq 0x140(%rsp), %rsi
movq 0x148(%rsp), %rdx
movq 0xaf828(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
cmpb $0x1, 0xb0a8a(%rip)     # 0x10c280
jne 0x5b942
movq 0xaf7e5(%rip), %rdi     # 0x10afe8
leaq 0x7ca9f(%rip), %rsi     # 0xd82a9
movl $0x34, %edx
callq 0x84e0
leaq 0x20(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x2e45c
leaq 0x7c65e(%rip), %rsi     # 0xd7e9f
leaq 0x10(%rsp), %rdi
callq 0x88c0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xaf78c(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x5b8a2
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xaf73f(%rip), %rdi     # 0x10afe8
leaq 0x7ca2e(%rip), %rsi     # 0xd82de
movl $0x4e, %edx
callq 0x84e0
leaq 0x10(%rsp), %rdi
movq %r14, (%rdi)
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
addq %rsi, %rdx
callq 0x2e45c
leaq 0x7c5c8(%rip), %rsi     # 0xd7ea9
leaq 0x10(%rsp), %rdi
callq 0x88c0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xaf6ec(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x5b942
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
cmpb $0x1, 0xb0938(%rip)     # 0x10c281
jne 0x5b9f5
movq 0xaf692(%rip), %rdi     # 0x10afe8
leaq 0x7c9d0(%rip), %rsi     # 0xd832d
movl $0x39, %edx
callq 0x84e0
leaq 0x20(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x2e45c
leaq 0x7c40d(%rip), %rsi     # 0xd7da1
leaq 0x10(%rsp), %rdi
callq 0x88c0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xaf639(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x5b9f5
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
cmpb $0x1, 0xb0886(%rip)     # 0x10c282
jne 0x5bc4d
movq 0xaf5df(%rip), %rdi     # 0x10afe8
leaq 0x7c957(%rip), %rsi     # 0xd8367
movl $0x3b, %edx
callq 0x84e0
movq 0xb081f(%rip), %rsi     # 0x10c240
movq 0xb0820(%rip), %rdx     # 0x10c248
movq 0xaf5b9(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %rbx
leaq 0x7c883(%rip), %rsi     # 0xd82c1
movl $0x1c, %edx
movq %rax, %rdi
callq 0x84e0
leaq 0x60(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
addq %rsi, %rdx
leaq 0x50(%rsp), %rdi
callq 0x2e45c
leaq 0x7fac4(%rip), %rsi     # 0xdb53c
leaq 0x50(%rsp), %rdi
callq 0x88c0
leaq 0xb07b7(%rip), %rsi     # 0x10c240
leaq 0xa0(%rsp), %rdi
callq 0x50803
movq 0x50(%rsp), %rcx
movq 0x58(%rsp), %r8
movq 0xa8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r14, %rcx
je 0x5babb
movq 0x60(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x5bae0
leaq 0xb0(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x5badb
movq 0xb0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x5baf4
movq 0xa0(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x8180
jmp 0x5bb05
leaq 0xa0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x84d0
leaq 0x40(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x5bb29
movq %rsi, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x5bb31
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x7c3a6(%rip), %rsi     # 0xd7efb
leaq 0x30(%rsp), %rdi
callq 0x88c0
leaq 0x20(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5bb86
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x5bb8f
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x5bbfa
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5bc15
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5bc36
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x5bc4d
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x140(%rsp), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x286de
leaq 0x10(%rsp), %rdi
movl $0x8, %esi
callq 0x53224
movq %rax, %r12
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5bc91
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x7c(%rsp), %rax
movl $0x0, (%rax)
xorpd %xmm0, %xmm0
leaq 0xf0(%rsp), %rax
movapd %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x260(%rsp), %r14
movq %rax, 0xe0(%rsp)
xorl %ebx, %ebx
movl %ebx, 0x78(%rsp)
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r12, %rdi
movq %r14, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x5c5ce
movq 0x260(%rsp), %rax
movb (%rax), %cl
cmpb $0x23, %cl
jne 0x5bd23
cmpb $0x23, 0x1(%rax)
je 0x5bcca
cmpb $0x23, %cl
jne 0x5bd23
cmpb $0x43, 0x1(%rax)
je 0x5c12a
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movl $0x9, %edx
callq 0x50624
xorpd %xmm0, %xmm0
movapd %xmm0, 0x10(%rsp)
movapd 0xf0(%rsp), %xmm0
movq 0x100(%rsp), %rax
movups 0x30(%rsp), %xmm1
movaps %xmm1, 0xf0(%rsp)
movq 0x40(%rsp), %rcx
movq %rcx, 0x100(%rsp)
movapd 0x10(%rsp), %xmm1
movapd %xmm0, 0x10(%rsp)
movq %rax, 0x20(%rsp)
movupd %xmm1, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x3123c
movq %rbx, %rdi
callq 0x3123c
movl $0x110, %edi            # imm = 0x110
callq 0x8470
movq %rax, %rbp
movq %rax, %rdi
callq 0x5d9c4
movl $0x100, %edi            # imm = 0x100
callq 0x8470
movq %rax, %rbx
movabsq $0x7fffffff00000000, %rax # imm = 0x7FFFFFFF00000000
movq %rax, (%rbx)
xorl %ecx, %ecx
movl %ecx, 0x8(%rbx)
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%rbx)
movq %rcx, 0x18(%rbx)
movb %cl, 0x20(%rbx)
leaq 0x40(%rbx), %rax
movq %rax, 0x30(%rbx)
movq %rcx, 0x38(%rbx)
movb %cl, 0x40(%rbx)
movabsq $0x7fefffffffffffff, %rax # imm = 0x7FEFFFFFFFFFFFFF
movq %rax, 0x50(%rbx)
movq %rcx, 0x58(%rbx)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x60(%rbx)
movb %cl, 0x68(%rbx)
movq %rcx, 0xe0(%rbx)
movl %ecx, 0xe8(%rbx)
movq %rcx, 0xf0(%rbx)
movw $0x0, 0xf8(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x70(%rbx)
movupd %xmm0, 0x80(%rbx)
movupd %xmm0, 0x90(%rbx)
movupd %xmm0, 0xa0(%rbx)
movupd %xmm0, 0xb0(%rbx)
movupd %xmm0, 0xc0(%rbx)
movupd %xmm0, 0xcc(%rbx)
leaq 0xf0(%rsp), %rdi
movq %rbx, %rsi
callq 0x5119f
leaq 0x10(%rbx), %rsi
movl 0x8(%rbx), %eax
movl %eax, 0x10(%rbp)
movq (%rbx), %rax
movq %rax, 0x8(%rbp)
leaq 0x18(%rbp), %rdi
callq 0x8270
leaq 0x30(%rbx), %rsi
leaq 0x38(%rbp), %rdi
callq 0x8270
leaq 0x50(%rbx), %rax
leaq 0x70(%rbx), %rsi
movupd (%rax), %xmm0
movupd 0x9(%rax), %xmm1
movupd %xmm1, 0x61(%rbp)
movupd %xmm0, 0x58(%rbp)
leaq 0x78(%rbp), %rdi
callq 0x33980
leaq 0x90(%rbp), %rdi
leaq 0x88(%rbx), %rsi
callq 0x33980
leaq 0xa8(%rbp), %rdi
leaq 0xa0(%rbx), %rsi
callq 0x33980
leaq 0xc0(%rbp), %rdi
leaq 0xb8(%rbx), %rsi
callq 0x33980
leaq 0xd8(%rbp), %rdi
movq %rbx, %rsi
addq $0xd0, %rsi
callq 0x33a56
movzwl 0xf8(%rbx), %eax
movw %ax, 0x100(%rbp)
testb %al, %al
jne 0x5bf79
cmpb $0x1, 0xb0353(%rip)     # 0x10c280
jne 0x5bf47
leaq 0x1c0(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
movq %rbp, %rdx
callq 0x5ec28
cmpb $0x1, 0xb0335(%rip)     # 0x10c283
jne 0x5bf60
leaq 0x2c0(%rsp), %rdi
movq %rbp, %rsi
callq 0x5fa60
cmpb $0x1, 0xb031d(%rip)     # 0x10c284
jne 0x5bf79
leaq 0x2a0(%rsp), %rdi
movq %rbp, %rsi
callq 0x5fbc7
cmpb $0x1, 0xb0305(%rip)     # 0x10c285
jne 0x5bfee
cmpb $0x0, 0x101(%rbp)
je 0x5bfb5
leaq 0xc0(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
leaq 0x180(%rsp), %rdx
leaq 0x160(%rsp), %rcx
movq %rbp, %r8
callq 0x5f635
jmp 0x5bfee
movq %rbp, (%rsp)
leaq 0x2e0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
leaq 0x180(%rsp), %rdx
leaq 0x200(%rsp), %rcx
leaq 0x1e0(%rsp), %r8
leaq 0x160(%rsp), %r9
callq 0x5f34e
movl 0x78(%rsp), %r13d
incl %r13d
cmpb $0x1, 0xb0289(%rip)     # 0x10c286
jne 0x5c06f
movl %r13d, %eax
cltd
idivl 0xaf503(%rip)           # 0x10b50c
testl %edx, %edx
jne 0x5c06f
leaq 0x320(%rsp), %rdi
leaq 0x7c(%rsp), %rsi
callq 0x5e4ae
movq %rax, %rdi
leaq 0x180(%rsp), %rsi
callq 0x5da6c
leaq 0x3d8(%rsp), %rdi
leaq 0x7c(%rsp), %rsi
callq 0x5e920
movq %rax, %rdi
leaq 0x160(%rsp), %rsi
callq 0x4af2c
leaq 0x180(%rsp), %rdi
callq 0x5dbe3
leaq 0x160(%rsp), %rdi
callq 0x5dc44
incl 0x7c(%rsp)
movq %rbp, %r15
addq $0x8, %r15
movq %rbx, %rdi
callq 0x31188
movl $0x100, %esi            # imm = 0x100
movq %rbx, %rdi
callq 0x8480
movq %r15, %rdi
callq 0x31188
movl $0x110, %esi            # imm = 0x110
movq %rbp, %rdi
callq 0x8480
movl %r13d, 0x78(%rsp)
imull $0xbcbe61d, %r13d, %eax # imm = 0xBCBE61D
addl $0xa7c40, %eax          # imm = 0xA7C40
rorl $0x5, %eax
cmpl $0xa7c4, %eax           # imm = 0xA7C4
ja 0x5bcca
movl $0xa, %edx
movq 0xaef1d(%rip), %rdi     # 0x10afe8
leaq 0x7c354(%rip), %rsi     # 0xd8426
callq 0x84e0
movq 0xaef0a(%rip), %rdi     # 0x10afe8
movl 0x78(%rsp), %esi
callq 0x8810
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x833f6(%rip), %rsi     # 0xdf4ef
callq 0x84e0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
jmp 0x5bcca
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movl $0x9, %edx
callq 0x50624
xorpd %xmm0, %xmm0
movapd %xmm0, 0x10(%rsp)
movapd 0xf0(%rsp), %xmm0
movq 0x100(%rsp), %rax
movups 0x30(%rsp), %xmm1
movaps %xmm1, 0xf0(%rsp)
movq 0x40(%rsp), %rcx
movq %rcx, 0x100(%rsp)
movapd 0x10(%rsp), %xmm1
movapd %xmm0, 0x10(%rsp)
movq %rax, 0x20(%rsp)
movupd %xmm1, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x3123c
movq %rbx, %rdi
callq 0x3123c
cmpq $0x0, 0xb007a(%rip)     # 0x10c228
je 0x5c228
movq %rbx, %rdi
leaq 0xb0066(%rip), %rsi     # 0x10c220
callq 0x52fb6
xorpd %xmm0, %xmm0
movapd %xmm0, 0x10(%rsp)
movapd 0x80(%rsp), %xmm0
movq 0x90(%rsp), %rax
movups 0x30(%rsp), %xmm1
movaps %xmm1, 0x80(%rsp)
movq 0x40(%rsp), %rcx
movq %rcx, 0x90(%rsp)
movapd 0x10(%rsp), %xmm1
movapd %xmm0, 0x10(%rsp)
movq %rax, 0x20(%rsp)
movupd %xmm1, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x3123c
movq %rbx, %rdi
callq 0x3123c
jmp 0x5c281
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rax
subq %rsi, %rax
cmpq $0x120, %rax            # imm = 0x120
je 0x5c281
movl $0x9, %ebx
movl $0x120, %r15d           # imm = 0x120
addq %r15, %rsi
leaq 0x80(%rsp), %rdi
callq 0x33db0
incq %rbx
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
addq $0x20, %r15
cmpq %rax, %rbx
jne 0x5c24e
movq 0x88(%rsp), %r15
subq 0x80(%rsp), %r15
movl $0x17, %edx
movq 0xaed4b(%rip), %rdi     # 0x10afe8
leaq 0x7c0ff(%rip), %rsi     # 0xd83a3
callq 0x84e0
shrq $0x5, %r15
leal (%r15,%r15), %esi
movq 0xaed30(%rip), %rdi     # 0x10afe8
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq %r15, 0xe0(%rsp)
movq $0x0, 0x10(%rsp)
movq 0x80(%rsp), %rax
cmpq %rax, 0x88(%rsp)
je 0x5c369
xorl %esi, %esi
shlq $0x5, %rsi
addq %rax, %rsi
leaq 0x3a8(%rsp), %rdi
callq 0x3e394
movq %rax, %rbx
leaq 0x428(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x5d80c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8270
movq 0x10(%rsp), %rsi
incq %rsi
movq %rsi, 0x10(%rsp)
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
cmpq %rcx, %rsi
jne 0x5c30c
movq 0x378(%rsp), %rbx
leaq 0x368(%rsp), %rax
cmpq %rax, %rbx
je 0x5c4bb
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x2e45c
leaq 0x40(%rbx), %rsi
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0x3273a
leaq 0x50(%rsp), %rdi
leaq 0x80(%rsp), %rsi
movq %r15, %rdx
callq 0x53501
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x5c44f
movl $0x29, %edx
movq 0xaec09(%rip), %rdi     # 0x10afe8
leaq 0x7bfd5(%rip), %rsi     # 0xd83bb
callq 0x84e0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xaebec(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7ad0c(%rip), %rsi     # 0xd711f
callq 0x84e0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r15, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
je 0x5cf60
leaq 0x458(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x5d872
movq %rax, %rdi
leaq 0x50(%rsp), %rsi
callq 0x5d8ee
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x5c485
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x30(%rsp), %rdi
callq 0x3123c
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x5c4ab
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq %rbx, %rdi
callq 0x8310
movq %rax, %rbx
jmp 0x5c371
leaq 0x2e0(%rsp), %rdi
movq 0xe0(%rsp), %rbx
movl %ebx, %esi
xorl %edx, %edx
callq 0x50664
leaq 0xc0(%rsp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x50664
leaq 0x200(%rsp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x50664
leaq 0x2c0(%rsp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x50664
leaq 0x2a0(%rsp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x50664
leaq 0x180(%rsp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x50664
leaq 0x1e0(%rsp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x50703
leaq 0x160(%rsp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x50703
movslq %ebx, %rbx
movl $0x0, 0x10(%rsp)
leaq 0x1c0(%rsp), %rdi
movq %rbx, %rsi
leaq 0x10(%rsp), %r15
movq %r15, %rdx
callq 0x561e6
movl $0x0, 0x10(%rsp)
leaq 0x1a0(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x561e6
cmpq $0x0, 0xafcb7(%rip)     # 0x10c248
movl 0x78(%rsp), %ebx
je 0x5bcc6
movq 0x248(%rsp), %rsi
subq 0x240(%rsp), %rsi
sarq $0x5, %rsi
movl $0x0, 0x10(%rsp)
leaq 0x220(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x561e6
jmp 0x5bcc6
cmpl $0x0, 0xaef3b(%rip)     # 0x10b510
movq 0xe0(%rsp), %r12
js 0x5c6b1
movq 0xae9fe(%rip), %rdi     # 0x10afe8
leaq 0x7be40(%rip), %rsi     # 0xd8431
movl $0x15, %edx
callq 0x84e0
movl 0xaef0f(%rip), %esi     # 0x10b510
movq 0xae9e0(%rip), %rdi     # 0x10afe8
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0xc0(%rsp), %rax
movq 0xc8(%rsp), %rdx
subq %rax, %rdx
je 0x5c6b1
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
cvtsi2sdl 0xaeeaa(%rip), %xmm0 # 0x10b510
cmpq $0x1, %rcx
adcq $0x0, %rcx
xorl %edx, %edx
leaq (%rdx,%rdx,2), %rdi
movq (%rax,%rdi,8), %rsi
movq 0x8(%rax,%rdi,8), %rdi
subq %rsi, %rdi
je 0x5c6a9
sarq $0x3, %rdi
cmpq $0x1, %rdi
adcq $0x0, %rdi
xorl %r8d, %r8d
movsd (%rsi,%r8,8), %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, (%rsi,%r8,8)
incq %r8
cmpq %r8, %rdi
jne 0x5c691
incq %rdx
cmpq %rcx, %rdx
jne 0x5c670
cmpb $0x1, 0xafbce(%rip)     # 0x10c286
jne 0x5cc68
movq $0x0, 0x130(%rsp)
leaq 0xa0(%rsp), %rbp
leaq 0x320(%rsp), %rbx
leaq 0x3d8(%rsp), %r15
leaq 0x60(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
addq %rsi, %rdx
leaq 0x50(%rsp), %r14
movq %r14, %rdi
callq 0x2e45c
movq %r14, %rdi
leaq 0x7bd31(%rip), %rsi     # 0xd8447
callq 0x88c0
movq %rbp, %rdi
movq 0x130(%rsp), %rsi
callq 0x31297
movq 0x50(%rsp), %rcx
movl $0xf, %esi
leaq 0x60(%rsp), %rax
cmpq %rax, %rcx
je 0x5c744
movq 0x60(%rsp), %rsi
movq 0x58(%rsp), %r8
movq 0xa8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x5c77e
movl $0xf, %esi
leaq 0xb0(%rsp), %rdi
cmpq %rdi, 0xa0(%rsp)
je 0x5c779
movq 0xb0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x5c792
movq 0xa0(%rsp), %rsi
leaq 0x50(%rsp), %rdi
callq 0x8180
jmp 0x5c79e
movq %rbp, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x84d0
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x5c7c3
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x5c7cb
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x30(%rsp), %rdi
leaq 0x88361(%rip), %rsi     # 0xe4b55
callq 0x88c0
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x5c821
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x5c829
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)
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x5c85d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x5c882
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x5c89e
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x200, %edi            # imm = 0x200
callq 0x8470
leaq 0x50(%rsp), %r13
movq %rax, %r14
movq 0x10(%rsp), %rsi
movq %rax, %rdi
movl $0x10, %edx
callq 0x84c0
xorpd %xmm0, %xmm0
movapd %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
leaq 0x30(%rsp), %rdi
movl %r12d, %esi
xorl %edx, %edx
callq 0x50664
movq %r14, 0x318(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
movq %r13, %rdi
movl %r12d, %esi
xorl %edx, %edx
callq 0x50664
cmpl $0x0, 0x338(%rsp)
jle 0x5ca92
xorl %eax, %eax
movl %eax, 0x13c(%rsp)
callq 0x8140
cltq
xorl %edx, %edx
divq 0x338(%rsp)
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
movl %edx, 0xa0(%rsp)
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
testl %eax, %eax
jle 0x5ca7c
xorl %r14d, %r14d
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
testl %eax, %eax
jle 0x5ca54
xorl %r13d, %r13d
movq 0x30(%rsp), %rax
leaq (%r14,%r14,2), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r13,8), %xmm0
movsd %xmm0, 0xe8(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x5e4ae
movq (%rax), %rax
leaq (,%r14,8), %rcx
leaq (%rcx,%rcx,2), %r12
movq (%rax,%r12), %rax
movsd 0xe8(%rsp), %xmm0
addsd (%rax,%r13,8), %xmm0
movq 0x30(%rsp), %rax
movq (%rax,%r12), %rax
movsd %xmm0, (%rax,%r13,8)
movq 0x50(%rsp), %rax
movq (%rax,%r12), %rax
movsd (%rax,%r13,8), %xmm0
movsd %xmm0, 0xe8(%rsp)
movq %r15, %rdi
movq %rbp, %rsi
callq 0x5e920
movq (%rax), %rax
movq (%rax,%r12), %rax
xorps %xmm0, %xmm0
cvtsi2sdl (%rax,%r13,4), %xmm0
movsd 0xe8(%rsp), %xmm1
addsd %xmm0, %xmm1
movq 0x50(%rsp), %rax
movq (%rax,%r12), %rax
movsd %xmm1, (%rax,%r13,8)
incq %r13
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
cltq
cmpq %rax, %r13
jl 0x5c985
incq %r14
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
cltq
cmpq %rax, %r14
jl 0x5c960
movl 0x13c(%rsp), %eax
incl %eax
cmpl 0x338(%rsp), %eax
jl 0x5c91c
xorpd %xmm0, %xmm0
movapd %xmm0, 0xa0(%rsp)
movq $0x0, 0xb0(%rsp)
movq %rbp, %rdi
movq 0xe0(%rsp), %r14
movl %r14d, %esi
xorl %edx, %edx
callq 0x50664
xorpd %xmm0, %xmm0
movapd %xmm0, 0x280(%rsp)
movq $0x0, 0x290(%rsp)
leaq 0x280(%rsp), %rdi
movl %r14d, %esi
xorl %edx, %edx
callq 0x50664
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
testl %eax, %eax
jle 0x5cbab
movl 0xae9f1(%rip), %edx     # 0x10b50c
imull 0x338(%rsp), %edx
movq 0x50(%rsp), %rcx
xorps %xmm0, %xmm0
cvtsi2sd %edx, %xmm0
movq 0xa0(%rsp), %rdx
movq 0x30(%rsp), %rsi
movq 0x280(%rsp), %rdi
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %r8d, %r8d
leaq (,%r8,8), %r9
leaq (%r9,%r9,2), %r14
movq (%rcx,%r14), %r9
movq (%rdx,%r14), %r10
movq (%rsi,%r14), %r11
movq (%rdi,%r14), %r14
xorl %r12d, %r12d
movsd 0x728cd(%rip), %xmm3    # 0xcf440
movsd (%r9,%r12,8), %xmm1
divsd %xmm0, %xmm1
movapd %xmm3, %xmm2
subsd %xmm1, %xmm2
movsd %xmm2, (%r10,%r12,8)
movsd (%r11,%r12,8), %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, (%r14,%r12,8)
incq %r12
cmpq %r12, %rax
jne 0x5cb73
incq %r8
cmpq %rax, %r8
jne 0x5cb4c
leaq 0x410(%rsp), %r12
movq %r12, %rdi
leaq 0x80(%rsp), %rsi
leaq 0x20(%rsp), %r14
callq 0x3273a
movq 0x318(%rsp), %r13
movq %r12, %rdi
movq %r13, %rsi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x39979
movq %r12, %rdi
callq 0x3123c
leaq 0x280(%rsp), %rdi
movq %r13, %rsi
callq 0x5aeca
movq %r13, %rdi
callq 0x8600
leaq 0x280(%rsp), %rdi
callq 0x45f06
movq %rbp, %rdi
callq 0x45f06
leaq 0x50(%rsp), %rdi
callq 0x45f06
leaq 0x30(%rsp), %rdi
callq 0x45f06
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x5cc45
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x130(%rsp), %rax
incl %eax
movq %rax, 0x130(%rsp)
cmpl $0x64, %eax
movq 0xe0(%rsp), %r12
jne 0x5c6e2
leaq 0x10(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x507a1
cmpb $0x1, 0xaf5ff(%rip)     # 0x10c280
movl 0x78(%rsp), %ebx
leaq 0x20(%rsp), %r14
jne 0x5ccb1
leaq 0x110(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0x1c0(%rsp), %rdx
leaq 0x1a0(%rsp), %rcx
callq 0x59422
cmpb $0x1, 0xaf5ca(%rip)     # 0x10c282
jne 0x5ccde
leaq 0xaf57f(%rip), %rdx     # 0x10c240
leaq 0x110(%rsp), %rdi
leaq 0x240(%rsp), %rsi
leaq 0x220(%rsp), %rcx
callq 0x59983
cmpb $0x1, 0xaf5a0(%rip)     # 0x10c285
jne 0x5cd2c
leaq 0x200(%rsp), %rdi
callq 0x54a19
leaq 0x1e0(%rsp), %rax
movq %rax, (%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0x2e0(%rsp), %rcx
leaq 0xc0(%rsp), %r8
leaq 0x200(%rsp), %r9
movl %ebx, %edx
callq 0x59da0
cmpb $0x1, 0xaf550(%rip)     # 0x10c283
jne 0x5cd54
leaq 0x110(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0x2c0(%rsp), %rcx
movl %ebx, %edx
callq 0x5a750
cmpb $0x1, 0xaf529(%rip)     # 0x10c284
jne 0x5cd7c
leaq 0x110(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0x2a0(%rsp), %rcx
movl %ebx, %edx
callq 0x5a9f6
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x5cd93
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xf0(%rsp), %rdi
callq 0x3123c
leaq 0x3d8(%rsp), %rdi
callq 0x5dca6
leaq 0x320(%rsp), %rdi
callq 0x5dd40
leaq 0x160(%rsp), %rdi
callq 0x4b0a4
leaq 0x180(%rsp), %rdi
callq 0x45f06
leaq 0x1e0(%rsp), %rdi
callq 0x4b0a4
leaq 0x2a0(%rsp), %rdi
callq 0x45f06
leaq 0x2c0(%rsp), %rdi
callq 0x45f06
leaq 0xc0(%rsp), %rdi
callq 0x45f06
leaq 0x2e0(%rsp), %rdi
callq 0x45f06
leaq 0x200(%rsp), %rdi
callq 0x45f06
leaq 0x390(%rsp), %rdi
callq 0x4b0a4
movq 0x220(%rsp), %rdi
testq %rdi, %rdi
je 0x5ce4c
movq 0x230(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x5ce69
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x5ce86
movq 0x1d0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x240(%rsp), %rdi
callq 0x3123c
leaq 0x300(%rsp), %rdi
callq 0x3123c
leaq 0x428(%rsp), %rdi
callq 0x5ddda
leaq 0x458(%rsp), %rdi
callq 0x5de52
leaq 0x3a8(%rsp), %rdi
callq 0x3f5f4
leaq 0x360(%rsp), %rdi
callq 0x3f522
leaq 0x80(%rsp), %rdi
callq 0x3123c
leaq 0x120(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5cf02
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x5cf27
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x5cf4c
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %eax, %eax
addq $0x488, %rsp            # imm = 0x488
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x7b47e(%rip), %rdi     # 0xd83e5
leaq 0x7b486(%rip), %rsi     # 0xd83f4
leaq 0x7b495(%rip), %rcx     # 0xd840a
movl $0xd5, %edx
callq 0x82c0
jmp 0x5d230
jmp 0x5d230
jmp 0x5d230
jmp 0x5d230
jmp 0x5d230
jmp 0x5d230
jmp 0x5d230
movq %rax, %rbx
jmp 0x5d019
movq %rax, %rbx
jmp 0x5d023
jmp 0x5d230
movq %rax, %rbx
jmp 0x5d0af
movq %rax, %rbx
jmp 0x5d0ca
jmp 0x5cfc3
movq %rax, %rbx
jmp 0x5d0eb
jmp 0x5d1fc
jmp 0x5d107
jmp 0x5d1fc
jmp 0x5d107
jmp 0x5d1fc
jmp 0x5d107
jmp 0x5d1fc
jmp 0x5d230
jmp 0x5d230
jmp 0x5d03b
jmp 0x5d1fc
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x5d019
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x30(%rsp), %rdi
callq 0x3123c
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
jne 0x5d2c7
jmp 0x5d2d4
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x5d28d
jmp 0x5d1fc
movq %rax, %rbx
movl $0x38, %esi
jmp 0x5d063
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
jmp 0x5d29a
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
jmp 0x5d3c2
movq %rax, %rbx
movl $0x110, %esi            # imm = 0x110
movq %rbp, %rdi
jmp 0x5d2cf
jmp 0x5d230
jmp 0x5d230
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x5d0af
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5d0ca
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5d0eb
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x5d2e1
movq 0x60(%rsp), %rsi
jmp 0x5d297
jmp 0x5d107
jmp 0x5d107
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
jne 0x5d292
jmp 0x5d2e1
movq %rax, %rbx
jmp 0x5d2bd
movq %rax, %rbx
jmp 0x5d443
movq %rax, %rbx
jmp 0x5d468
jmp 0x5d230
movq %rax, %rbx
leaq 0x410(%rsp), %rdi
callq 0x3123c
jmp 0x5d209
jmp 0x5d206
movq %rax, %rbx
jmp 0x5d216
jmp 0x5d230
jmp 0x5d163
movq %rax, %rbx
jmp 0x5d1b1
movq %rax, %rbx
jmp 0x5d18c
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x5d18c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x5d1b1
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x5d2d4
movq 0x60(%rsp), %rsi
jmp 0x5d2cc
movq %rax, %rbx
jmp 0x5d1e3
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq %r14, %rdi
callq 0x8480
leaq 0x20(%rsp), %r14
jmp 0x5d2bd
movq %rax, %rbx
jmp 0x5d2ae
jmp 0x5d2a1
jmp 0x5d23d
movq %rax, %rbx
jmp 0x5d2e1
jmp 0x5d230
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x45f06
leaq 0xa0(%rsp), %rdi
callq 0x45f06
jmp 0x5d2a4
jmp 0x5d23d
movq %rax, %rbx
jmp 0x5d279
jmp 0x5d238
jmp 0x5d23d
movq %rax, %rbx
jmp 0x5d2d4
movq %rax, %rbx
jmp 0x5d283
movq %rax, %rbx
jmp 0x5d3c7
movq %rax, %rbx
leaq 0x320(%rsp), %rdi
callq 0x3123c
jmp 0x5d3c7
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x5d279
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x50(%rsp), %rdi
callq 0x3123c
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x5d2e1
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x5d2e1
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x45f06
leaq 0x20(%rsp), %r14
leaq 0x30(%rsp), %rdi
callq 0x45f06
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x5d2d4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xf0(%rsp), %rdi
callq 0x3123c
leaq 0x3d8(%rsp), %rdi
callq 0x5dca6
leaq 0x320(%rsp), %rdi
callq 0x5dd40
leaq 0x160(%rsp), %rdi
callq 0x4b0a4
leaq 0x180(%rsp), %rdi
callq 0x45f06
leaq 0x1e0(%rsp), %rdi
callq 0x4b0a4
leaq 0x2a0(%rsp), %rdi
callq 0x45f06
leaq 0x2c0(%rsp), %rdi
callq 0x45f06
leaq 0xc0(%rsp), %rdi
callq 0x45f06
leaq 0x2e0(%rsp), %rdi
callq 0x45f06
leaq 0x200(%rsp), %rdi
callq 0x45f06
leaq 0x390(%rsp), %rdi
callq 0x4b0a4
movq 0x220(%rsp), %rdi
testq %rdi, %rdi
je 0x5d38d
movq 0x230(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x1a0(%rsp), %rdi
testq %rdi, %rdi
je 0x5d3aa
movq 0x1b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x1c0(%rsp), %rdi
testq %rdi, %rdi
je 0x5d3c7
movq 0x1d0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x240(%rsp), %rdi
callq 0x3123c
leaq 0x300(%rsp), %rdi
callq 0x3123c
leaq 0x428(%rsp), %rdi
callq 0x5ddda
leaq 0x458(%rsp), %rdi
callq 0x5de52
leaq 0x3a8(%rsp), %rdi
callq 0x3f5f4
leaq 0x360(%rsp), %rdi
callq 0x3f522
leaq 0x80(%rsp), %rdi
callq 0x3123c
leaq 0x120(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5d443
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x150(%rsp), %rax
movq 0x140(%rsp), %rdi
cmpq %rax, %rdi
je 0x5d468
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0x5d48d
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x8480
movq %rbx, %rdi
callq 0x8840