// File: 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
movq %rsp, %rbp
subq $0xa40, %rsp            # imm = 0xA40
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x94dd0
leaq -0x30(%rbp), %rdi
callq 0xa820
leaq 0x107d3a(%rip), %rsi    # 0x19a6e8
leaq -0x50(%rbp), %rdi
callq 0xa250
jmp 0x929b9
leaq -0x80(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x7be70
jmp 0x929c8
leaq -0xa8(%rbp), %rdi
callq 0x48da0
leaq -0xd8(%rbp), %rdi
callq 0x58920
leaq -0x108(%rbp), %rdi
callq 0x584b0
leaq -0x138(%rbp), %rdi
callq 0x951b0
leaq -0x168(%rbp), %rdi
callq 0x951d0
leaq -0x180(%rbp), %rdi
callq 0x48da0
leaq -0x198(%rbp), %rdi
callq 0x48da0
leaq 0x107d05(%rip), %rdi    # 0x19a728
callq 0xaa70
testb $0x1, %al
jne 0x92d5b
movl $0x208, %edi            # imm = 0x208
callq 0xa5d0
movq %rax, -0x760(%rbp)
jmp 0x92a43
leaq 0x107cde(%rip), %rdi    # 0x19a728
callq 0xa220
movq -0x760(%rbp), %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0xab90
jmp 0x92a65
movq -0x760(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa0d0
movq %rax, -0x768(%rbp)
jmp 0x92a8c
movq -0x768(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa740
movb %al, -0x769(%rbp)
jmp 0x92aaa
movb -0x769(%rbp), %al
testb $0x1, %al
jne 0x92ab9
jmp 0x92bf9
leaq -0x1b8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0x92ad0
leaq -0x1b8(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
callq 0x6b400
movq %rax, -0x778(%rbp)
jmp 0x92af9
xorl %eax, %eax
movl %eax, %esi
leaq -0x1b8(%rbp), %rdi
callq 0x3d940
movq -0x778(%rbp), %rdi
movq %rax, %rsi
callq 0x48dc0
jmp 0x92b1a
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0x790(%rbp)
movl $0x1, %esi
callq 0x3d940
movq -0x790(%rbp), %rdi
movq %rax, -0x788(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
callq 0x584d0
movq %rax, -0x780(%rbp)
jmp 0x92b61
movq -0x788(%rbp), %rsi
movq -0x780(%rbp), %rdi
callq 0xa060
jmp 0x92b76
leaq -0x1b8(%rbp), %rdi
callq 0x3dfa0
jmp 0x92a73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x94dba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x94db1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x94d54
movq -0x760(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x208, %esi            # imm = 0x208
callq 0xa5e0
jmp 0x94d54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x3dfa0
jmp 0x94d54
leaq -0xd8(%rbp), %rdi
callq 0x6c3d0
movq %rax, -0x1c0(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x6c430
movq %rax, -0x1c8(%rbp)
leaq -0x1c0(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x6c400
testb $0x1, %al
jne 0x92c3b
jmp 0x92ce8
leaq -0x1c0(%rbp), %rdi
callq 0x6c460
movq %rax, %rsi
leaq -0x180(%rbp), %rdi
callq 0x48dc0
jmp 0x92c58
leaq -0x1c0(%rbp), %rdi
callq 0x6c460
movq %rax, %rdi
leaq 0xa85ec(%rip), %rsi     # 0x13b25a
callq 0x50eb0
movb %al, -0x791(%rbp)
jmp 0x92c7b
movb -0x791(%rbp), %al
testb $0x1, %al
jne 0x92c87
jmp 0x92cd5
leaq -0x1c0(%rbp), %rdi
callq 0x6c460
movq %rax, %rdi
leaq 0xa9ad3(%rip), %rsi     # 0x13c770
callq 0x50eb0
movb %al, -0x792(%rbp)
jmp 0x92caa
movb -0x792(%rbp), %al
testb $0x1, %al
jne 0x92cb6
jmp 0x92cd5
leaq -0x1c0(%rbp), %rdi
callq 0x6c460
movq %rax, %rsi
leaq -0x198(%rbp), %rdi
callq 0x48dc0
jmp 0x92cd3
jmp 0x92cd5
jmp 0x92cd7
leaq -0x1c0(%rbp), %rdi
callq 0x71fc0
jmp 0x92c0c
movq 0x106301(%rip), %rdi    # 0x198ff0
leaq 0xbbd07(%rip), %rsi     # 0x14e9fd
callq 0xa5c0
movq %rax, -0x7a0(%rbp)
jmp 0x92d04
leaq -0x180(%rbp), %rdi
callq 0x3ffd0
movq -0x7a0(%rbp), %rdi
movq %rax, %rsi
callq 0xa140
movq %rax, -0x7a8(%rbp)
jmp 0x92d28
movq -0x7a8(%rbp), %rdi
leaq 0xa9a3e(%rip), %rsi     # 0x13c774
callq 0xa5c0
movq %rax, -0x7b0(%rbp)
jmp 0x92d44
movq -0x7b0(%rbp), %rdi
movq 0x106236(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x92d59
jmp 0x92d5b
leaq -0x1e0(%rbp), %rdi
callq 0x46270
leaq -0x1f8(%rbp), %rdi
callq 0x46270
leaq -0x210(%rbp), %rdi
callq 0x46270
leaq -0x228(%rbp), %rdi
callq 0x6ccb0
leaq -0x240(%rbp), %rdi
callq 0x65060
leaq -0x258(%rbp), %rdi
callq 0x65060
leaq -0x270(%rbp), %rdi
callq 0x65060
leaq -0x288(%rbp), %rdi
callq 0x65060
leaq -0x2a0(%rbp), %rdi
callq 0x65060
leaq -0x2b8(%rbp), %rdi
callq 0x6ccb0
leaq -0x2d0(%rbp), %rdi
callq 0x65060
leaq -0x2e8(%rbp), %rdi
callq 0x6ccb0
leaq -0x320(%rbp), %rdi
callq 0x951f0
leaq -0x358(%rbp), %rdi
callq 0x95210
leaq 0x10793e(%rip), %rdi    # 0x19a748
callq 0xaa70
testb $0x1, %al
jne 0x9328a
movl $0x208, %edi            # imm = 0x208
callq 0xa5d0
movq %rax, -0x7b8(%rbp)
jmp 0x92e2a
movq -0x7b8(%rbp), %rdi
leaq 0x107910(%rip), %rsi    # 0x19a748
movl $0x8, %edx
callq 0xaa00
jmp 0x92e44
movq -0x7b8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq 0x106197(%rip), %rdi    # 0x198ff0
leaq 0xa9922(%rip), %rsi     # 0x13c782
callq 0xa5c0
movq %rax, -0x7c0(%rbp)
jmp 0x92e6e
movq -0x7c0(%rbp), %rdi
movq 0x10610c(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x92e83
movl $0x38, %edi
callq 0xa5d0
movq %rax, -0x7c8(%rbp)
jmp 0x92e96
movq -0x7c8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6aa00
jmp 0x92eab
movq -0x7c8(%rbp), %rax
movq %rax, -0x360(%rbp)
movq 0x106130(%rip), %rdi    # 0x198ff0
leaq 0x9f428(%rip), %rsi     # 0x1322ef
callq 0xa5c0
movq %rax, -0x7d0(%rbp)
jmp 0x92ed5
movq -0x7d0(%rbp), %rdi
movq 0x1060a5(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x92eea
leaq -0x50(%rbp), %rdi
callq 0xa220
movq %rax, -0x7e0(%rbp)
leaq -0x389(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0xab60
movq -0x7e0(%rbp), %rsi
movq -0x7d8(%rbp), %rdx
leaq -0x388(%rbp), %rdi
callq 0x2d6c0
jmp 0x92f29
leaq -0x388(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x7e8(%rbp)
jmp 0x92f43
leaq -0x388(%rbp), %rdi
callq 0xac88
leaq -0x389(%rbp), %rdi
callq 0xa640
movq -0x7e8(%rbp), %rax
movq %rax, -0x368(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0xa820
movq -0x368(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xa0d0
movq %rax, -0x7f0(%rbp)
jmp 0x92f91
movq -0x7f0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa740
movb %al, -0x7f1(%rbp)
jmp 0x92faf
movb -0x7f1(%rbp), %al
testb $0x1, %al
jne 0x92fbe
jmp 0x93257
leaq -0x3c8(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0x92fd8
xorl %eax, %eax
movl %eax, %esi
leaq -0x3c8(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x3e8(%rbp), %rdi
callq 0xa250
jmp 0x92ff9
leaq -0x3c8(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa220
movq %rax, %rdi
callq 0xa970
movl %eax, -0x3ec(%rbp)
movl $0x0, -0x3f0(%rbp)
movl -0x3f0(%rbp), %eax
cmpl -0x3ec(%rbp), %eax
jge 0x9322c
movq -0x360(%rbp), %rdi
movl -0x3f0(%rbp), %edx
movl 0x106749(%rip), %eax    # 0x199798
movl %edx, %ecx
addl %eax, %ecx
leaq -0x3e8(%rbp), %rsi
callq 0x95230
movl %eax, -0x7f8(%rbp)
jmp 0x93067
movl -0x7f8(%rbp), %eax
movl %eax, -0x3f4(%rbp)
movq 0x105f3e(%rip), %rdi    # 0x198fb8
leaq -0x3e8(%rbp), %rsi
callq 0xa520
movq %rax, -0x800(%rbp)
jmp 0x9308f
movq -0x800(%rbp), %rdi
leaq 0xa2e41(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x808(%rbp)
jmp 0x930ab
movq -0x808(%rbp), %rdi
movl -0x3f0(%rbp), %esi
callq 0xab20
movq %rax, -0x810(%rbp)
jmp 0x930c6
movq -0x810(%rbp), %rdi
leaq 0xa2e0a(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x818(%rbp)
jmp 0x930e2
movq -0x818(%rbp), %rdi
movl -0x3f0(%rbp), %esi
movl 0x1066a3(%rip), %eax    # 0x199798
addl %eax, %esi
callq 0xab20
movq %rax, -0x820(%rbp)
jmp 0x93105
movq -0x820(%rbp), %rdi
leaq 0xa2dcb(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x828(%rbp)
jmp 0x93121
movq -0x828(%rbp), %rdi
movl -0x3f4(%rbp), %esi
callq 0xab20
movq %rax, -0x830(%rbp)
jmp 0x9313c
movq -0x830(%rbp), %rdi
movq 0x105e3e(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x93151
jmp 0x93153
movl -0x3f0(%rbp), %eax
addl 0x106639(%rip), %eax    # 0x199798
movl %eax, -0x3f0(%rbp)
jmp 0x9302a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x94cac
movq -0x7b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x208, %esi            # imm = 0x208
callq 0xa5e0
jmp 0x94cac
movq -0x7c8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x38, %esi
callq 0xa5e0
jmp 0x94cac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x931e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x388(%rbp), %rdi
callq 0xac88
leaq -0x389(%rbp), %rdi
callq 0xa640
jmp 0x94cac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x93279
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x93249
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0xac88
jmp 0x93249
leaq -0x3e8(%rbp), %rdi
callq 0xac88
leaq -0x3c8(%rbp), %rdi
callq 0x3dfa0
jmp 0x92f75
leaq -0x3c8(%rbp), %rdi
callq 0x3dfa0
jmp 0x93279
movl $0x0, -0x4(%rbp)
movl $0x1, -0x3f8(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0xac88
jmp 0x94b89
leaq -0x3b0(%rbp), %rdi
callq 0xac88
jmp 0x94cac
movq 0x105d5f(%rip), %rdi    # 0x198ff0
leaq 0xa9513(%rip), %rsi     # 0x13c7ab
callq 0xa5c0
movq %rax, -0x838(%rbp)
jmp 0x932a6
movq -0x838(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xa520
movq %rax, -0x840(%rbp)
jmp 0x932bf
movq -0x840(%rbp), %rdi
movq 0x105cbb(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x932d4
testb $0x1, 0x10748d(%rip)    # 0x19a768
je 0x93401
movq 0x105d08(%rip), %rdi    # 0x198ff0
leaq 0xa94da(%rip), %rsi     # 0x13c7c9
callq 0xa5c0
movq %rax, -0x848(%rbp)
jmp 0x932fd
leaq 0xa8f58(%rip), %rdx     # 0x13c25c
leaq -0x418(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3da80
jmp 0x93316
movq -0x848(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0xa520
movq %rax, -0x850(%rbp)
jmp 0x93332
movq -0x850(%rbp), %rdi
movq 0x105c48(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x93347
leaq -0x418(%rbp), %rdi
callq 0xac88
movq 0x105c96(%rip), %rdi    # 0x198ff0
leaq 0xa949d(%rip), %rsi     # 0x13c7fe
callq 0xa5c0
movq %rax, -0x858(%rbp)
jmp 0x9336f
leaq 0xa8ef0(%rip), %rdx     # 0x13c266
leaq -0x438(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3da80
jmp 0x93388
movq -0x858(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0xa520
movq %rax, -0x860(%rbp)
jmp 0x933a4
movq -0x860(%rbp), %rdi
movq 0x105bd6(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x933b9
leaq -0x438(%rbp), %rdi
callq 0xac88
jmp 0x93401
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0xac88
jmp 0x94cac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x438(%rbp), %rdi
callq 0xac88
jmp 0x94cac
testb $0x1, 0x107361(%rip)    # 0x19a769
je 0x9349f
movq 0x105bdb(%rip), %rdi    # 0x198ff0
leaq 0xa9431(%rip), %rsi     # 0x13c84d
callq 0xa5c0
movq %rax, -0x868(%rbp)
jmp 0x9342a
leaq 0xa8d2d(%rip), %rdx     # 0x13c15e
leaq -0x458(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3da80
jmp 0x93443
movq -0x868(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0xa520
movq %rax, -0x870(%rbp)
jmp 0x9345f
movq -0x870(%rbp), %rdi
movq 0x105b1b(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x93474
leaq -0x458(%rbp), %rdi
callq 0xac88
jmp 0x9349f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x458(%rbp), %rdi
callq 0xac88
jmp 0x94cac
testb $0x1, 0x1072c4(%rip)    # 0x19a76a
je 0x93634
movq 0x105b3d(%rip), %rdi    # 0x198ff0
leaq 0xa93cd(%rip), %rsi     # 0x13c887
callq 0xa5c0
movq %rax, -0x878(%rbp)
jmp 0x934c8
movq -0x878(%rbp), %rdi
leaq 0x107252(%rip), %rsi    # 0x19a728
callq 0xa520
movq %rax, -0x880(%rbp)
jmp 0x934e4
movq -0x880(%rbp), %rdi
leaq 0xa92ef(%rip), %rsi     # 0x13c7e1
callq 0xa5c0
movq %rax, -0x888(%rbp)
jmp 0x93500
leaq 0xac889(%rip), %rdx     # 0x13fd90
leaq -0x4b8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3da80
jmp 0x93519
leaq 0x107208(%rip), %rsi    # 0x19a728
leaq -0x4d8(%rbp), %rdi
callq 0x7be70
jmp 0x9352e
leaq -0x498(%rbp), %rdi
leaq -0x4b8(%rbp), %rsi
leaq -0x4d8(%rbp), %rdx
callq 0x3e070
jmp 0x9354a
leaq 0xa8d67(%rip), %rdx     # 0x13c2b8
leaq -0x478(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0x3e020
jmp 0x93566
movq -0x888(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0xa520
movq %rax, -0x890(%rbp)
jmp 0x93582
movq -0x890(%rbp), %rdi
movq 0x1059f8(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x93597
leaq -0x478(%rbp), %rdi
callq 0xac88
leaq -0x498(%rbp), %rdi
callq 0xac88
leaq -0x4d8(%rbp), %rdi
callq 0xac88
leaq -0x4b8(%rbp), %rdi
callq 0xac88
jmp 0x93634
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x93623
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x93617
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9360b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x478(%rbp), %rdi
callq 0xac88
leaq -0x498(%rbp), %rdi
callq 0xac88
leaq -0x4d8(%rbp), %rdi
callq 0xac88
leaq -0x4b8(%rbp), %rdi
callq 0xac88
jmp 0x94cac
leaq -0x50(%rbp), %rdi
callq 0xa220
movq %rax, -0x8a0(%rbp)
leaq -0x501(%rbp), %rdi
movq %rdi, -0x898(%rbp)
callq 0xab60
movq -0x8a0(%rbp), %rsi
movq -0x898(%rbp), %rdx
leaq -0x500(%rbp), %rdi
callq 0x2d6c0
jmp 0x93673
leaq -0x500(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x8a8(%rbp)
jmp 0x9368d
leaq -0x500(%rbp), %rdi
callq 0xac88
leaq -0x501(%rbp), %rdi
callq 0xa640
movq -0x8a8(%rbp), %rax
movq %rax, -0x4e0(%rbp)
movl $0x0, -0x510(%rbp)
movl $0x0, -0x514(%rbp)
leaq -0x530(%rbp), %rdi
callq 0x48da0
movq -0x4e0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa0d0
movq %rax, -0x8b0(%rbp)
jmp 0x936ec
movq -0x8b0(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa740
movb %al, -0x8b1(%rbp)
jmp 0x9370a
movb -0x8b1(%rbp), %al
testb $0x1, %al
jne 0x93719
jmp 0x9412c
xorl %eax, %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0xac60
movq %rax, -0x8c0(%rbp)
jmp 0x9372f
movq -0x8c0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x937b1
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0xac60
movq %rax, -0x8c8(%rbp)
jmp 0x93755
movq -0x8c8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x937b1
jmp 0x936d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9378f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x500(%rbp), %rdi
callq 0xac88
leaq -0x501(%rbp), %rdi
callq 0xa640
jmp 0x94cac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x94b78
xorl %eax, %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0xac60
movq %rax, -0x8d0(%rbp)
jmp 0x937c7
movq -0x8d0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x93d56
leaq -0x30(%rbp), %rdi
movl $0x1, %esi
callq 0xac60
movq %rax, -0x8d8(%rbp)
jmp 0x937f1
movq -0x8d8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x43, %eax
jne 0x93d56
leaq -0x548(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0x9381b
leaq -0x530(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0x50c30
leaq -0x548(%rbp), %rdi
callq 0x3dfa0
leaq 0x106ec7(%rip), %rdi    # 0x19a708
callq 0xaa70
testb $0x1, %al
jne 0x9384c
jmp 0x938bc
movq $0x9, -0x550(%rbp)
movq -0x550(%rbp), %rax
movq %rax, -0x8e0(%rbp)
leaq -0x530(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rcx
movq -0x8e0(%rbp), %rax
cmpq %rcx, %rax
je 0x938ba
movq -0x550(%rbp), %rsi
leaq -0x530(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x48dc0
jmp 0x938a4
jmp 0x938a6
movq -0x550(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x550(%rbp)
jmp 0x93857
jmp 0x938f0
leaq 0x106e45(%rip), %rsi    # 0x19a708
leaq -0x568(%rbp), %rdi
callq 0x80aa0
jmp 0x938d1
leaq -0xa8(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0x50c30
leaq -0x568(%rbp), %rdi
callq 0x3dfa0
leaq -0xa8(%rbp), %rdi
callq 0x3ffd0
movl %eax, -0x508(%rbp)
movl -0x508(%rbp), %eax
addl %eax, %eax
movl %eax, -0x50c(%rbp)
movq 0x1056d9(%rip), %rdi    # 0x198ff0
leaq 0xa8fa5(%rip), %rsi     # 0x13c8c3
callq 0xa5c0
movq %rax, -0x8e8(%rbp)
jmp 0x9392c
movq -0x8e8(%rbp), %rdi
movl -0x50c(%rbp), %esi
callq 0xab20
movq %rax, -0x8f0(%rbp)
jmp 0x93947
movq -0x8f0(%rbp), %rdi
movq 0x105633(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x9395c
movq $0x0, -0x570(%rbp)
movq -0x570(%rbp), %rax
movq %rax, -0x8f8(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rcx
movq -0x8f8(%rbp), %rax
cmpq %rcx, %rax
je 0x93a05
movq -0x570(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
callq 0x584d0
movq %rax, -0x900(%rbp)
jmp 0x939bb
leaq -0x168(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x95260
movq %rax, -0x908(%rbp)
jmp 0x939d7
movq -0x900(%rbp), %rsi
movq -0x908(%rbp), %rdi
callq 0xa060
jmp 0x939ec
jmp 0x939ee
movq -0x570(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x570(%rbp)
jmp 0x93967
leaq -0xd8(%rbp), %rdi
callq 0x6c3d0
movq %rax, -0x578(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x6c430
movq %rax, -0x580(%rbp)
leaq -0x578(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x6c400
testb $0x1, %al
jne 0x93a47
jmp 0x93c15
leaq -0x578(%rbp), %rdi
callq 0x6c460
movq %rax, %rsi
leaq -0x5a0(%rbp), %rdi
callq 0xa250
jmp 0x93a64
leaq -0x578(%rbp), %rdi
callq 0x6c460
movq %rax, %rsi
addq $0x20, %rsi
leaq -0x5b8(%rbp), %rdi
callq 0x3fee0
jmp 0x93a85
leaq -0x5d0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x5b8(%rbp), %rdx
callq 0x81250
jmp 0x93aa1
leaq -0x5d0(%rbp), %rdi
callq 0x95340
testb $0x1, %al
jne 0x93ab6
jmp 0x93b92
movq 0x105533(%rip), %rdi    # 0x198ff0
leaq 0xa8e17(%rip), %rsi     # 0x13c8db
callq 0xa5c0
movq %rax, -0x910(%rbp)
jmp 0x93ad2
movq -0x910(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0xa520
movq %rax, -0x918(%rbp)
jmp 0x93aee
movq -0x918(%rbp), %rdi
leaq 0xa7913(%rip), %rsi     # 0x13b40f
callq 0xa5c0
movq %rax, -0x920(%rbp)
jmp 0x93b0a
movq -0x920(%rbp), %rdi
movq 0x105470(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x93b1f
leaq -0x5d0(%rbp), %rdi
callq 0x95340
xorb $-0x1, %al
testb $0x1, %al
jne 0x93b33
jmp 0x93b35
jmp 0x93b90
leaq 0xa8dc9(%rip), %rdi     # 0x13c905
leaq 0xa8dd1(%rip), %rsi     # 0x13c914
movl $0xd5, %edx
leaq 0xa8ddb(%rip), %rcx     # 0x13c92a
callq 0xa390
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x93c04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x93bf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x50d40
jmp 0x93bf8
jmp 0x93b92
leaq -0x138(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x95380
movq %rax, -0x928(%rbp)
jmp 0x93bae
movq -0x928(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0x95460
jmp 0x93bc3
leaq -0x5d0(%rbp), %rdi
callq 0x50d40
leaq -0x5b8(%rbp), %rdi
callq 0x3dfa0
leaq -0x5a0(%rbp), %rdi
callq 0xac88
leaq -0x578(%rbp), %rdi
callq 0x71fc0
jmp 0x93a18
leaq -0x5b8(%rbp), %rdi
callq 0x3dfa0
leaq -0x5a0(%rbp), %rdi
callq 0xac88
jmp 0x94b78
movl -0x508(%rbp), %esi
leaq -0x258(%rbp), %rdi
xorl %edx, %edx
callq 0x7bc60
jmp 0x93c2b
movl -0x508(%rbp), %esi
leaq -0x270(%rbp), %rdi
xorl %edx, %edx
callq 0x7bc60
jmp 0x93c41
movl -0x508(%rbp), %esi
leaq -0x240(%rbp), %rdi
xorl %edx, %edx
callq 0x7bc60
jmp 0x93c57
movl -0x508(%rbp), %esi
leaq -0x288(%rbp), %rdi
xorl %edx, %edx
callq 0x7bc60
jmp 0x93c6d
movl -0x508(%rbp), %esi
leaq -0x2a0(%rbp), %rdi
xorl %edx, %edx
callq 0x7bc60
jmp 0x93c83
movl -0x508(%rbp), %esi
leaq -0x2d0(%rbp), %rdi
xorl %edx, %edx
callq 0x7bc60
jmp 0x93c99
movl -0x508(%rbp), %esi
leaq -0x2b8(%rbp), %rdi
xorl %edx, %edx
callq 0x7bd30
jmp 0x93caf
movl -0x508(%rbp), %esi
leaq -0x2e8(%rbp), %rdi
xorl %edx, %edx
callq 0x7bd30
jmp 0x93cc5
movslq -0x508(%rbp), %rsi
movl $0x0, -0x5d4(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x5d4(%rbp), %rdx
callq 0x838d0
jmp 0x93ceb
movslq -0x508(%rbp), %rsi
movl $0x0, -0x5d8(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x5d8(%rbp), %rdx
callq 0x838d0
jmp 0x93d11
leaq 0x106a10(%rip), %rdi    # 0x19a728
callq 0xaa70
testb $0x1, %al
jne 0x93d51
leaq -0x198(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rsi
movl $0x0, -0x5dc(%rbp)
leaq -0x210(%rbp), %rdi
leaq -0x5dc(%rbp), %rdx
callq 0x838d0
jmp 0x93d4f
jmp 0x93d51
jmp 0x94125
movl -0x510(%rbp), %eax
incl %eax
movl %eax, -0x510(%rbp)
leaq -0x5f8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0x93d7b
leaq -0x530(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
movq %rsi, -0x938(%rbp)
callq 0x50c30
movq -0x938(%rbp), %rdi
callq 0x3dfa0
movl $0x110, %edi            # imm = 0x110
callq 0xa5d0
movq %rax, -0x930(%rbp)
jmp 0x93db4
movq -0x930(%rbp), %rdi
callq 0x956b0
jmp 0x93dc2
movq -0x930(%rbp), %rax
movq %rax, -0x600(%rbp)
movl $0x100, %edi            # imm = 0x100
callq 0xa5d0
movq %rax, -0x940(%rbp)
jmp 0x93de3
movq -0x940(%rbp), %rdi
callq 0x3d960
jmp 0x93df1
movq -0x940(%rbp), %rax
movq %rax, -0x608(%rbp)
movq -0x608(%rbp), %rsi
leaq -0x530(%rbp), %rdi
callq 0x7cec0
jmp 0x93e14
movq -0x608(%rbp), %rsi
movq -0x600(%rbp), %rdi
addq $0x8, %rdi
callq 0x3db30
jmp 0x93e2d
movq -0x600(%rbp), %rax
movb 0x100(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x93f0b
testb $0x1, 0x106919(%rip)    # 0x19a768
je 0x93eb3
movq -0x600(%rbp), %rdx
leaq -0x1e0(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x9ba10
jmp 0x93e6d
jmp 0x93eb3
movq -0x930(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x110, %esi            # imm = 0x110
callq 0xa5e0
jmp 0x94b78
movq -0x940(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x100, %esi            # imm = 0x100
callq 0xa5e0
jmp 0x94b78
testb $0x1, 0x1068b0(%rip)    # 0x19a76a
je 0x93ebe
jmp 0x93ebe
testb $0x1, 0x1068a4(%rip)    # 0x19a769
je 0x93ec9
jmp 0x93ec9
testb $0x1, 0x10689b(%rip)    # 0x19a76b
je 0x93ee9
movq -0x600(%rbp), %rsi
leaq -0x288(%rbp), %rdi
callq 0x9d270
jmp 0x93ee7
jmp 0x93ee9
testb $0x1, 0x10687c(%rip)    # 0x19a76c
je 0x93f09
movq -0x600(%rbp), %rsi
leaq -0x2a0(%rbp), %rdi
callq 0x9d470
jmp 0x93f07
jmp 0x93f09
jmp 0x93f0b
testb $0x1, 0x10685b(%rip)    # 0x19a76d
je 0x93f92
movq -0x600(%rbp), %rax
testb $0x1, 0x101(%rax)
jne 0x93f64
movq -0x600(%rbp), %rcx
movq %rsp, %rax
movq %rcx, (%rax)
leaq -0x258(%rbp), %rdi
leaq -0x270(%rbp), %rsi
leaq -0x2d0(%rbp), %rdx
leaq -0x240(%rbp), %rcx
leaq -0x2b8(%rbp), %r8
leaq -0x2e8(%rbp), %r9
callq 0x9c8a0
jmp 0x93f62
jmp 0x93f90
movq -0x600(%rbp), %r8
leaq -0x270(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
leaq -0x2d0(%rbp), %rdx
leaq -0x2e8(%rbp), %rcx
callq 0x9cd40
jmp 0x93f8e
jmp 0x93f90
jmp 0x93f92
testb $0x1, 0x1067d5(%rip)    # 0x19a76e
je 0x94044
movl -0x510(%rbp), %eax
cltd
idivl 0x1057f0(%rip)          # 0x19979c
cmpl $0x0, %edx
jne 0x94042
leaq -0x320(%rbp), %rdi
leaq -0x514(%rbp), %rsi
callq 0x95700
movq %rax, -0x948(%rbp)
jmp 0x93fd1
movq -0x948(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x95730
jmp 0x93fe6
leaq -0x358(%rbp), %rdi
leaq -0x514(%rbp), %rsi
callq 0x95980
movq %rax, -0x950(%rbp)
jmp 0x94002
movq -0x950(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x6ce20
jmp 0x94017
leaq -0x2d0(%rbp), %rdi
callq 0x959b0
jmp 0x94025
leaq -0x2e8(%rbp), %rdi
callq 0x95a40
jmp 0x94033
movl -0x514(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x514(%rbp)
jmp 0x94044
movq -0x608(%rbp), %rax
movq %rax, -0x958(%rbp)
cmpq $0x0, %rax
je 0x94075
movq -0x958(%rbp), %rdi
callq 0x3df20
movq -0x958(%rbp), %rdi
movl $0x100, %esi            # imm = 0x100
callq 0xa5e0
movq -0x600(%rbp), %rax
movq %rax, -0x960(%rbp)
cmpq $0x0, %rax
je 0x940a6
movq -0x960(%rbp), %rdi
callq 0x95ad0
movq -0x960(%rbp), %rdi
movl $0x110, %esi            # imm = 0x110
callq 0xa5e0
movl -0x510(%rbp), %eax
movl $0x186a0, %ecx          # imm = 0x186A0
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x94123
movq 0x104f30(%rip), %rdi    # 0x198ff0
leaq 0xa887f(%rip), %rsi     # 0x13c946
callq 0xa5c0
movq %rax, -0x968(%rbp)
jmp 0x940d5
movq -0x968(%rbp), %rdi
movl -0x510(%rbp), %esi
callq 0xab20
movq %rax, -0x970(%rbp)
jmp 0x940f0
movq -0x970(%rbp), %rdi
leaq 0xaf869(%rip), %rsi     # 0x143967
callq 0xa5c0
movq %rax, -0x978(%rbp)
jmp 0x9410c
movq -0x978(%rbp), %rdi
movq 0x104e6e(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x94121
jmp 0x94123
jmp 0x94125
jmp 0x94127
jmp 0x936d3
cmpl $-0x1, 0x10566d(%rip)   # 0x1997a0
jle 0x94292
movq 0x104eb0(%rip), %rdi    # 0x198ff0
leaq 0xa880a(%rip), %rsi     # 0x13c951
callq 0xa5c0
movq %rax, -0x980(%rbp)
jmp 0x94155
movq -0x980(%rbp), %rdi
movl 0x10563e(%rip), %esi    # 0x1997a0
callq 0xab20
movq %rax, -0x988(%rbp)
jmp 0x94170
movq -0x988(%rbp), %rdi
movq 0x104e0a(%rip), %rsi    # 0x198f88
callq 0xa610
jmp 0x94185
movl $0x0, -0x60c(%rbp)
movslq -0x60c(%rbp), %rax
movq %rax, -0x990(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x651b0
movq %rax, %rcx
movq -0x990(%rbp), %rax
cmpq %rcx, %rax
jae 0x94290
movl $0x0, -0x610(%rbp)
movslq -0x610(%rbp), %rax
movq %rax, -0x998(%rbp)
movslq -0x60c(%rbp), %rsi
leaq -0x270(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
callq 0x3ebf0
movq %rax, %rcx
movq -0x998(%rbp), %rax
cmpq %rcx, %rax
jae 0x9427a
movslq -0x60c(%rbp), %rsi
leaq -0x270(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x610(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
cvtsi2sdl 0x105574(%rip), %xmm1 # 0x1997a0
divsd %xmm1, %xmm0
movsd %xmm0, -0x9a0(%rbp)
movslq -0x60c(%rbp), %rsi
leaq -0x270(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x610(%rbp), %rsi
callq 0x3ec30
movsd -0x9a0(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x610(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x610(%rbp)
jmp 0x941c6
jmp 0x9427c
movl -0x60c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60c(%rbp)
jmp 0x9418f
jmp 0x94292
testb $0x1, 0x1064d5(%rip)    # 0x19a76e
je 0x94a1e
movl $0x0, -0x614(%rbp)
movl -0x614(%rbp), %eax
cmpl 0x1054ef(%rip), %eax    # 0x1997a4
jge 0x94a1c
leaq 0xa86a5(%rip), %rdx     # 0x13c967
leaq -0x678(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3da80
jmp 0x942d4
movl -0x614(%rbp), %esi
leaq -0x698(%rbp), %rdi
callq 0x3e190
jmp 0x942e8
leaq -0x658(%rbp), %rdi
leaq -0x678(%rbp), %rsi
leaq -0x698(%rbp), %rdx
callq 0x3e070
jmp 0x94304
leaq 0xb529c(%rip), %rdx     # 0x1495a7
leaq -0x638(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x3e020
jmp 0x94320
leaq -0x658(%rbp), %rdi
callq 0xac88
leaq -0x698(%rbp), %rdi
callq 0xac88
leaq -0x678(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x9a8(%rbp)
jmp 0x94357
leaq -0x638(%rbp), %rdi
callq 0xa220
movq -0x9a8(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0x94379
movq -0x9a8(%rbp), %rax
movq %rax, -0x6a0(%rbp)
leaq -0x6b8(%rbp), %rdi
movq %rdi, -0x9b0(%rbp)
callq 0x65060
movq -0x9b0(%rbp), %rdi
movl -0x508(%rbp), %esi
xorl %edx, %edx
callq 0x7bc60
jmp 0x943b0
leaq -0x6d0(%rbp), %rdi
movq %rdi, -0x9b8(%rbp)
callq 0x65060
movq -0x9b8(%rbp), %rdi
movl -0x508(%rbp), %esi
xorl %edx, %edx
callq 0x7bc60
jmp 0x943d9
movl $0x0, -0x6d4(%rbp)
movl -0x6d4(%rbp), %eax
movl %eax, -0x9bc(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x95af0
movq %rax, %rcx
movl -0x9bc(%rbp), %eax
cmpl %ecx, %eax
jge 0x946ed
callq 0xa180
cltq
movq %rax, -0x9c8(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x95af0
movq %rax, %rcx
movq -0x9c8(%rbp), %rax
xorl %edx, %edx
divq %rcx
movl %edx, %eax
movl %eax, -0x6d8(%rbp)
movl $0x0, -0x6dc(%rbp)
movl -0x6dc(%rbp), %eax
movl %eax, -0x9cc(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x651b0
movq %rax, %rcx
movl -0x9cc(%rbp), %eax
cmpl %ecx, %eax
jge 0x946d7
movl $0x0, -0x6e0(%rbp)
movl -0x6e0(%rbp), %eax
movl %eax, -0x9d0(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x651b0
movq %rax, %rcx
movl -0x9d0(%rbp), %eax
cmpl %ecx, %eax
jge 0x946c1
movslq -0x6dc(%rbp), %rsi
leaq -0x6b8(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x6e0(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x9e0(%rbp)
leaq -0x320(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0x95700
movq %rax, -0x9d8(%rbp)
jmp 0x944ed
movq -0x9d8(%rbp), %rdi
movslq -0x6dc(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movslq -0x6e0(%rbp), %rsi
callq 0x3ec30
movsd -0x9e0(%rbp), %xmm0
movsd (%rax), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x9f8(%rbp)
movslq -0x6dc(%rbp), %rsi
leaq -0x6b8(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x6e0(%rbp), %rsi
callq 0x3ec30
movsd -0x9f8(%rbp), %xmm0
movsd %xmm0, (%rax)
movslq -0x6dc(%rbp), %rsi
leaq -0x6d0(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x6e0(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x9f0(%rbp)
leaq -0x358(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0x95980
movq %rax, -0x9e8(%rbp)
jmp 0x9459f
movq -0x9e8(%rbp), %rdi
movslq -0x6dc(%rbp), %rsi
callq 0x705d0
movq %rax, %rdi
movslq -0x6e0(%rbp), %rsi
callq 0x4d100
movsd -0x9f0(%rbp), %xmm0
cvtsi2sdl (%rax), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0xa00(%rbp)
movslq -0x6dc(%rbp), %rsi
leaq -0x6d0(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x6e0(%rbp), %rsi
callq 0x3ec30
movsd -0xa00(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x6e0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6e0(%rbp)
jmp 0x9447a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9465b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9464f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x658(%rbp), %rdi
callq 0xac88
leaq -0x698(%rbp), %rdi
callq 0xac88
leaq -0x678(%rbp), %rdi
callq 0xac88
jmp 0x94b78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x94a0b
movq -0x9a8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0x94a0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x949ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x949f3
jmp 0x946c3
movl -0x6dc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6dc(%rbp)
jmp 0x94447
jmp 0x946d9
movl -0x6d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6d4(%rbp)
jmp 0x943e3
leaq -0x6f8(%rbp), %rdi
movq %rdi, -0xa08(%rbp)
callq 0x65060
movq -0xa08(%rbp), %rdi
movl -0x508(%rbp), %esi
xorl %edx, %edx
callq 0x7bc60
jmp 0x94716
leaq -0x710(%rbp), %rdi
movq %rdi, -0xa10(%rbp)
callq 0x65060
movq -0xa10(%rbp), %rdi
movl -0x508(%rbp), %esi
xorl %edx, %edx
callq 0x7bc60
jmp 0x9473f
leaq -0x320(%rbp), %rdi
callq 0x95af0
imull 0x10504a(%rip), %eax    # 0x19979c
movl %eax, -0x714(%rbp)
movl $0x0, -0x718(%rbp)
movl -0x718(%rbp), %eax
movl %eax, -0xa14(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x651b0
movq %rax, %rcx
movl -0xa14(%rbp), %eax
cmpl %ecx, %eax
jge 0x94910
movl $0x0, -0x71c(%rbp)
movl -0x71c(%rbp), %eax
movl %eax, -0xa18(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x651b0
movq %rax, %rcx
movl -0xa18(%rbp), %eax
cmpl %ecx, %eax
jge 0x948fa
movslq -0x718(%rbp), %rsi
leaq -0x6d0(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x71c(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm1
cvtsi2sdl -0x714(%rbp), %xmm0
divsd %xmm0, %xmm1
movsd 0x9dac0(%rip), %xmm0    # 0x1322b8
subsd %xmm1, %xmm0
movsd %xmm0, -0xa30(%rbp)
movslq -0x718(%rbp), %rsi
leaq -0x6f8(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x71c(%rbp), %rsi
callq 0x3ec30
movsd -0xa30(%rbp), %xmm0
movsd %xmm0, (%rax)
movslq -0x718(%rbp), %rsi
leaq -0x6b8(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x71c(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0xa28(%rbp)
movslq -0x718(%rbp), %rsi
leaq -0x6f8(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x71c(%rbp), %rsi
callq 0x3ec30
movsd -0xa28(%rbp), %xmm0
divsd (%rax), %xmm0
movsd %xmm0, -0xa20(%rbp)
movslq -0x718(%rbp), %rsi
leaq -0x710(%rbp), %rdi
callq 0x651e0
movq %rax, %rdi
movslq -0x71c(%rbp), %rsi
callq 0x3ec30
movsd -0xa20(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x71c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x71c(%rbp)
jmp 0x94795
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x949e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x949db
jmp 0x948fc
movl -0x718(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x718(%rbp)
jmp 0x94762
leaq -0x738(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3fee0
jmp 0x94925
movq -0x6a0(%rbp), %rsi
leaq -0x738(%rbp), %rdi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x50da0
jmp 0x94944
leaq -0x738(%rbp), %rdi
callq 0x3dfa0
movq -0x6a0(%rbp), %rsi
leaq -0x710(%rbp), %rdi
callq 0x926b0
jmp 0x94965
movq -0x6a0(%rbp), %rdi
callq 0xa840
jmp 0x94973
leaq -0x710(%rbp), %rdi
callq 0x65200
leaq -0x6f8(%rbp), %rdi
callq 0x65200
leaq -0x6d0(%rbp), %rdi
callq 0x65200
leaq -0x6b8(%rbp), %rdi
callq 0x65200
leaq -0x638(%rbp), %rdi
callq 0xac88
movl -0x614(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x614(%rbp)
jmp 0x942a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x3dfa0
leaq -0x710(%rbp), %rdi
callq 0x65200
leaq -0x6f8(%rbp), %rdi
callq 0x65200
leaq -0x6d0(%rbp), %rdi
callq 0x65200
leaq -0x6b8(%rbp), %rdi
callq 0x65200
leaq -0x638(%rbp), %rdi
callq 0xac88
jmp 0x94b78
jmp 0x94a1e
leaq -0x758(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x7be00
jmp 0x94a30
testb $0x1, 0x105d31(%rip)    # 0x19a768
je 0x94a78
leaq -0x80(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
leaq -0x1f8(%rbp), %rcx
callq 0x90bf0
jmp 0x94a59
jmp 0x94a78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x758(%rbp), %rdi
callq 0xac88
jmp 0x94b78
testb $0x1, 0x105ceb(%rip)    # 0x19a76a
je 0x94aa3
leaq 0x105ca0(%rip), %rdx    # 0x19a728
leaq -0x80(%rbp), %rdi
leaq -0x198(%rbp), %rsi
leaq -0x210(%rbp), %rcx
callq 0x91150
jmp 0x94aa1
jmp 0x94aa3
testb $0x1, 0x105cc3(%rip)    # 0x19a76d
je 0x94af9
leaq -0x240(%rbp), %rdi
callq 0x83090
jmp 0x94aba
movl -0x510(%rbp), %edx
movq %rsp, %rax
leaq -0x2b8(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x758(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x258(%rbp), %rcx
leaq -0x270(%rbp), %r8
leaq -0x240(%rbp), %r9
callq 0x91480
jmp 0x94af7
jmp 0x94af9
testb $0x1, 0x105c6b(%rip)    # 0x19a76b
je 0x94b23
movl -0x510(%rbp), %edx
leaq -0x80(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x288(%rbp), %rcx
callq 0x91e80
jmp 0x94b21
jmp 0x94b23
testb $0x1, 0x105c42(%rip)    # 0x19a76c
je 0x94b4d
movl -0x510(%rbp), %edx
leaq -0x80(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0x2a0(%rbp), %rcx
callq 0x92110
jmp 0x94b4b
jmp 0x94b4d
movl $0x0, -0x4(%rbp)
movl $0x1, -0x3f8(%rbp)
leaq -0x758(%rbp), %rdi
callq 0xac88
leaq -0x530(%rbp), %rdi
callq 0x3dfa0
jmp 0x94b89
leaq -0x530(%rbp), %rdi
callq 0x3dfa0
jmp 0x94cac
leaq -0x358(%rbp), %rdi
callq 0x95b10
leaq -0x320(%rbp), %rdi
callq 0x95b30
leaq -0x2e8(%rbp), %rdi
callq 0x6d0b0
leaq -0x2d0(%rbp), %rdi
callq 0x65200
leaq -0x2b8(%rbp), %rdi
callq 0x6d0b0
leaq -0x2a0(%rbp), %rdi
callq 0x65200
leaq -0x288(%rbp), %rdi
callq 0x65200
leaq -0x270(%rbp), %rdi
callq 0x65200
leaq -0x258(%rbp), %rdi
callq 0x65200
leaq -0x240(%rbp), %rdi
callq 0x65200
leaq -0x228(%rbp), %rdi
callq 0x6d0b0
leaq -0x210(%rbp), %rdi
callq 0x48290
leaq -0x1f8(%rbp), %rdi
callq 0x48290
leaq -0x1e0(%rbp), %rdi
callq 0x48290
leaq -0x198(%rbp), %rdi
callq 0x3dfa0
leaq -0x180(%rbp), %rdi
callq 0x3dfa0
leaq -0x168(%rbp), %rdi
callq 0x95b50
leaq -0x138(%rbp), %rdi
callq 0x95b70
leaq -0x108(%rbp), %rdi
callq 0x58620
leaq -0xd8(%rbp), %rdi
callq 0x58f00
leaq -0xa8(%rbp), %rdi
callq 0x3dfa0
leaq -0x80(%rbp), %rdi
callq 0xac88
leaq -0x50(%rbp), %rdi
callq 0xac88
leaq -0x30(%rbp), %rdi
callq 0xac88
movl -0x4(%rbp), %eax
addq $0xa40, %rsp            # imm = 0xA40
popq %rbp
retq
leaq -0x358(%rbp), %rdi
callq 0x95b10
leaq -0x320(%rbp), %rdi
callq 0x95b30
leaq -0x2e8(%rbp), %rdi
callq 0x6d0b0
leaq -0x2d0(%rbp), %rdi
callq 0x65200
leaq -0x2b8(%rbp), %rdi
callq 0x6d0b0
leaq -0x2a0(%rbp), %rdi
callq 0x65200
leaq -0x288(%rbp), %rdi
callq 0x65200
leaq -0x270(%rbp), %rdi
callq 0x65200
leaq -0x258(%rbp), %rdi
callq 0x65200
leaq -0x240(%rbp), %rdi
callq 0x65200
leaq -0x228(%rbp), %rdi
callq 0x6d0b0
leaq -0x210(%rbp), %rdi
callq 0x48290
leaq -0x1f8(%rbp), %rdi
callq 0x48290
leaq -0x1e0(%rbp), %rdi
callq 0x48290
leaq -0x198(%rbp), %rdi
callq 0x3dfa0
leaq -0x180(%rbp), %rdi
callq 0x3dfa0
leaq -0x168(%rbp), %rdi
callq 0x95b50
leaq -0x138(%rbp), %rdi
callq 0x95b70
leaq -0x108(%rbp), %rdi
callq 0x58620
leaq -0xd8(%rbp), %rdi
callq 0x58f00
leaq -0xa8(%rbp), %rdi
callq 0x3dfa0
leaq -0x80(%rbp), %rdi
callq 0xac88
leaq -0x50(%rbp), %rdi
callq 0xac88
leaq -0x30(%rbp), %rdi
callq 0xac88
movq -0x58(%rbp), %rdi
callq 0xab50
nopl (%rax)