// File: millanek[P]evo/process_vcf_coding_sequences.cpp
// Function: getCodingSeqMain(int, char**)
int getCodingSeqMain(int argc, char** argv) {
    parseGetCodingSeqOptions(argc, argv);
    string vcfFileRoot = stripExtension(opt::vcfFile);
    string geneFileRoot = stripExtension(opt::geneFile);
    
    if (opt::bIsCoding) {
        std::cerr << "Generating gene coding sequences using variants from: " << opt::vcfFile << std::endl;
        std::cerr << "and the reference genome: " << opt::genomeFile << std::endl;
        std::cerr << "with coding sequence annotation defined in: " << opt::geneFile << std::endl;
    } else {
        std::cerr << "Generating sequences using variants from: " << opt::vcfFile << std::endl;
        std::cerr << "and the reference genome: " << opt::genomeFile << std::endl;
        std::cerr << "extracting regions according to annotation defined in: " << opt::geneFile << std::endl;
    }
        
    // Open connections to read from the vcf and reference genome files
    std::istream* vcfFile = createReader(opt::vcfFile.c_str());
    std::ifstream* genomeFile = new std::ifstream(opt::genomeFile.c_str());
    std::ifstream* geneFile = new std::ifstream(opt::geneFile.c_str());
    
    // Prepare an object for output files
    std::ofstream* badStartStopCodonFile;
    if (opt::bIsCoding) badStartStopCodonFile = new std::ofstream("badStartStopCodonList.txt");
    
    string line;
    string currentScaffoldNum = "";
    string currentScaffoldReference;
    string::size_type inStrPos;
    size_t numSamples;
    std::vector<string> sampleNames;
    string thisScaffoldName;
    unsigned int processedVariantCounter = 0;
    std::vector<string> scaffoldStrings;
    std::vector<string> scaffoldStringsH2;
    std::vector<std::vector<string> > statsAllGenes;
    string statsFileName = geneFileRoot + "_stats.txt";
    std::ofstream* statsFile = new std::ofstream(statsFileName.c_str());
    string stopsFileName = geneFileRoot + "_prematureStops.txt";
    *statsFile << "transcript" << "\t" << "length_in_nucleotides" << "\t" << "segregating_sites(ss)" << "\t" << "ss_proportion" << "\t" << "length_in_AA" << "\t" << "num_of_AA_with_synonymous_changes(synAAs)" << "\t" << "synAAs_proportion" << "\t" << "non_synonymous_AA_substitutions(nsAAs)" << "\t" << "nsAAs_proportion" << "\t" << "synonymousMAFaverage" << "\t" << "nonsynonymousMAFaverage" << "\t" << "pN" << "\t" << "pS" << std::endl;
    if (opt::hetTreatment == 'b') {
        std::cout << "transcript" << "\t" << "pN" << "\t" << "pS" << std::endl;
    } else {
        std::cout << "transcript" << "\t" << "length_in_nucleotides" << "\t" << "segregating_sites(ss)" << "\t" << "ss_proportion" << "\t" << "length_in_AA" << "\t" << "num_of_AA_with_synonymous_changes(synAAs)" << "\t" << "synAAs_proportion" << "\t" << "non_synonymous_AA_substitutions(nsAAs)" << "\t" << "nsAAs_proportion" << "\t" << "synonymousMAFaverage" << "\t" << "nonsynonymousMAFaverage" << "\t" << "pN" << "\t" << "pS" << std::endl;
    }
    std::ofstream* stopsFile = new std::ofstream(stopsFileName.c_str());
    *stopsFile << "transcript" << "\t" << "stopAA_position" << "\t" << "transcript_length" << "\t" << "stop_allele_frequency" << "\t" << "individuals_with_stop" << std::endl;
    string stopsPerGeneFileName = geneFileRoot + "_prematureStops_perGene.txt";
    std::ofstream* stopsPerGeneSummaryFile = new std::ofstream(stopsPerGeneFileName.c_str());
    *stopsPerGeneSummaryFile << "gene" << "\t" << "numStops" << "\t" << "numTranscripts" << "\t" << "avg_stop_allele_frequency" << "\t" << "avg_stop_AA_position(%_of_trancript_length)" << std::endl;
    
    // Load up the gene (CDS) annotation file
    Annotation wgAnnotation(geneFile, opt::bUsePartial);
    std::vector<std::vector<string> > annotation;
    
    //print_vector(wgAnnotation.annotationMap["scaffold_0"][0], std::cerr);
    
    while (getline(*vcfFile, line)) {
        if (line[0] == '#' && line[1] == '#')
            continue;
        else if (line[0] == '#' && line[1] == 'C') {
            std::vector<std::string> fields = split(line, '\t');
            numSamples = fields.size()-NUM_NON_GENOTYPE_COLUMNS;
            // Initialize vectors
            scaffoldStrings.resize(numSamples);
            
            for (std::vector<std::string>::size_type i = NUM_NON_GENOTYPE_COLUMNS; i != fields.size(); i++) {
                if (opt::sampleNameFile.empty())
                    sampleNames.push_back(fields[i]);
                else
                    sampleNames = readSampleNamesFromTextFile(opt::sampleNameFile);
            }
            
        } else {
            processedVariantCounter++;
            std::vector<std::string> fields = split(line, '\t');
            // Also get overall depth for this variant
            std::vector<std::string> info = split(fields[7], ';');
            if (fields[0] != currentScaffoldNum) {
                if (currentScaffoldNum != "") {
                    for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                        scaffoldStrings[i].append(currentScaffoldReference.substr(inStrPos, string::npos));
                    }
                    if (opt::hetTreatment == 'b') {
                        for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                            scaffoldStringsH2[i].append(currentScaffoldReference.substr(inStrPos, string::npos));
                        }
                    }
                      
#ifdef DEBUG
                    if (scaffoldStrings[0].length() != currentScaffoldReference.length()) {
                        std::cerr << "Error!!! Reference scaffold length: " << currentScaffoldReference.length() << " vcf scaffold length: " << scaffoldStrings[0].length() << std::endl;
                    }
#endif
                    std::cerr << currentScaffoldNum << std::endl;
                    annotation = wgAnnotation.annotationMap[currentScaffoldNum]; // Get annotation for this scaffold
                    
                    std::cerr << "Going through the annotation..." << std::endl;
                    for (std::vector<std::vector<string> >::size_type k = 0; k != annotation.size(); k++) {
                        std::vector<string> annotLineVec = split(annotation[k][0], '\t');
                        // std::cerr << "Gene:" << annotLineVec[4] << std::endl;
                        std::ofstream* geneOutFiles;
                        bool geneLengthDivisibleByThree = true;
                        std::vector<string> allSeqs; std::vector<string> allSeqsH2;
                        string geneName = annotLineVec[4];
                        std::vector<string> statsThisGene; statsThisGene.push_back(geneName);
                        string refSeq = getReferenceForThisRegion(annotation[k], annotLineVec[3], currentScaffoldReference);
                        if (opt::bIsCoding)
                            geneLengthDivisibleByThree = codingSequenceErrorChecks(refSeq, geneName, annotation, (int)k, badStartStopCodonFile);
                        if (geneLengthDivisibleByThree)
                            geneOutFiles = new std::ofstream(geneName.c_str());
                        else if (opt::nonDivPrefix != "")
                            geneOutFiles = new std::ofstream((opt::nonDivPrefix+'_'+geneName).c_str());
                        if (geneLengthDivisibleByThree || opt::nonDivPrefix != "") {
                            for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                                string geneSeq = getIndividualSequenceForThisRegion(annotation[k], annotLineVec[3], scaffoldStrings[i]);
                                *geneOutFiles << ">" << sampleNames[i] << std::endl;
                                *geneOutFiles << geneSeq << std::endl;
                                allSeqs.push_back(geneSeq);
                                if (opt::hetTreatment == 'b') {
                                    geneSeq = getIndividualSequenceForThisRegion(annotation[k], annotLineVec[3], scaffoldStringsH2[i]);
                                    *geneOutFiles << ">" << sampleNames[i] << "_H2" << std::endl;
                                    *geneOutFiles << geneSeq << std::endl;
                                    allSeqsH2.push_back(geneSeq);
                                }
                            } geneOutFiles->close();
                            std::cerr << "Got all sequences for: " << annotLineVec[4] << std::endl;
                        }
                        // Get statistics for the sequences
                        if (!opt::bNoStats) {
                            if (opt::bIsCoding && geneLengthDivisibleByThree) {
                                assert(allSeqs[0].length() == refSeq.length());
                                assert(allSeqsH2[0].length() == refSeq.length());
                                if (opt::hetTreatment == 'p' || opt::hetTreatment == 'r') {
                                    getStatsHaploidSeq(allSeqs, statsThisGene);
                                    print_vector(statsThisGene, std::cout);
                                } else if (opt::hetTreatment == 'b') {
                                    std::vector<std::vector<double> > combinedVectorForPCA;
                                    pNsets* sets = nullptr;
                                    getStatsBothPhasedHaps(allSeqs, allSeqsH2, statsThisGene, combinedVectorForPCA, sets);
                                    print_vector(statsThisGene, std::cout);
                                } else {
                                    getStatsIUPAC(allSeqs, refSeq, annotLineVec[4], statsThisGene,stopsFile, sampleNames);
                                }
                                statsAllGenes.push_back(statsThisGene);
                                std::cerr << "Got statistics for: " << annotLineVec[4] << std::endl;
                            }
                        }
                    }
                  //  for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                  //      scaffoldStrings[i] = "";
                  //      if (opt::hetTreatment == 'b') scaffoldStringsH2[i] = "";
                  //  }
                    processedVariantCounter = 1;
                    currentScaffoldNum = fields[0];
                    forwardGenomeToScaffold(currentScaffoldNum, genomeFile, thisScaffoldName);
                } else {
                    getline(*genomeFile, thisScaffoldName);
                    thisScaffoldName.erase(0,1);
                    currentScaffoldNum = fields[0];
                }
                
                print_matrix(statsAllGenes, *statsFile);
                statsFile->flush();
                statsAllGenes.clear();
                printPerGeneSummaries(stopsPerGeneSummaryFile, wgAnnotation);
                stopsTranscriptRecord.clear();
                
                inStrPos = 0;
                std::cerr << "Starting to read " << thisScaffoldName << std::endl;
                currentScaffoldReference = readScaffold(genomeFile, thisScaffoldName);
                thisScaffoldName.erase(0,1);
                std::cerr << "Finished reading" << std::endl;
                std::cerr << "Generating sequences with variants from the VCF file..." << std::endl;
                
                for (std::vector<string>::size_type i = 0; i != numSamples; i++) {
                    scaffoldStrings[i] = "";
                    scaffoldStrings[i].reserve(currentScaffoldReference.length());
                }
                if (opt::hetTreatment == 'b') {
                    scaffoldStringsH2.resize(numSamples);
                    for (std::vector<string>::size_type i = 0; i != numSamples; i++) {
                        scaffoldStringsH2[i] = "";
                        scaffoldStringsH2[i].reserve(currentScaffoldReference.length());
                    }
                }
                
            }
            //if (wgAnnotation.annotationMap.count(fields[0]) == 1) {
                std::string ref = fields[3];  std::string alt = fields[4];
                if (ref.length() == 1 && alt.length() == 1) { // Only use Biallelic SNPs (or multiallelics split across multiple lines)
                    for (std::vector<std::string>::size_type i = NUM_NON_GENOTYPE_COLUMNS; i != fields.size(); i++) {
                        //std::cerr << "Going through genotypes1:" << i << std::endl;
                        //std::cerr << scaffoldStrings.size() << " " << inStrPos << " " << fields[1] << " " << currentScaffoldReference.size() << std::endl;
                        int sampleNum = (int)i - NUM_NON_GENOTYPE_COLUMNS;
                        scaffoldStrings[sampleNum].append(currentScaffoldReference.substr(inStrPos, (atoi(fields[1].c_str()) - 1)-inStrPos));
                        if (opt::hetTreatment == 'b')
                            scaffoldStringsH2[sampleNum].append(currentScaffoldReference.substr(inStrPos, (atoi(fields[1].c_str()) - 1)-inStrPos));
                        std::vector<string> genotypeFields = split(fields[i], ':');
                        std::vector<char> genotype;
                        genotype.push_back(genotypeFields[0][0]); genotype.push_back(genotypeFields[0][2]);
                        if (opt::hetTreatment == 'b') {
                            // Somewhat hacky:
                            // 1) add to the first haplotype
                            appendGenotypeBaseToString(scaffoldStrings[sampleNum], fields[3], fields[4], genotype, 'p');
                            // 2) add to the second haplotype
                            appendGenotypeBaseToString(scaffoldStringsH2[sampleNum], fields[3], fields[4], genotype, 'b');
                        } else {
                            appendGenotypeBaseToString(scaffoldStrings[sampleNum], fields[3], fields[4], genotype, opt::hetTreatment);
                        }
                    }
                    inStrPos = atoi(fields[1].c_str());
                    
    #ifdef DEBUG
                    if (currentScaffoldReference[inStrPos-1] != fields[3][0]) {
                        std::cerr << "Error!!! Sequence: " << currentScaffoldReference[inStrPos-1] << " vcf-ref: " << fields[3][0] << std::endl;
                    }
    #endif
                }
            //}
            if (processedVariantCounter % 10000 == 0) {
                std::cerr << processedVariantCounter << " variants processed..." << std::endl;
                //std::cout << "scaffoldStrings[0]:\t" << scaffoldStrings[0] << std::endl;
                //std::cout << "scaffoldStringsH2[0]:\t" << scaffoldStringsH2[0] << std::endl;
                //std::cout << "ScaffoldReference:\t" << currentScaffoldReference.substr(0,inStrPos) << std::endl;
            }
        }
    }
    
    print_matrix(statsAllGenes, *statsFile);
    statsAllGenes.clear();
    printPerGeneSummaries(stopsPerGeneSummaryFile, wgAnnotation);
    stopsTranscriptRecord.clear();
 
    
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xbe0, %rsp            # imm = 0xBE0
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0xb25b0
leaq 0xeb09b(%rip), %rsi     # 0x19aa70
leaq -0x30(%rbp), %rdi
callq 0x7be70
leaq 0xeb0cb(%rip), %rsi     # 0x19aab0
leaq -0x50(%rbp), %rdi
callq 0x7be70
jmp 0xaf9f0
testb $0x1, 0xe9e79(%rip)     # 0x199870
je 0xafb0b
movq 0xe95ec(%rip), %rdi     # 0x198ff0
leaq 0x90fa8(%rip), %rsi     # 0x1409b3
callq 0xa5c0
movq %rax, -0x670(%rbp)
jmp 0xafa19
movq -0x670(%rbp), %rdi
leaq 0xeb049(%rip), %rsi     # 0x19aa70
callq 0xa520
movq %rax, -0x678(%rbp)
jmp 0xafa35
movq -0x678(%rbp), %rdi
movq 0xe9545(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xafa4a
movq 0xe959f(%rip), %rdi     # 0x198ff0
leaq 0x8ffb7(%rip), %rsi     # 0x13fa0f
callq 0xa5c0
movq %rax, -0x680(%rbp)
jmp 0xafa66
movq -0x680(%rbp), %rdi
leaq 0xeb01c(%rip), %rsi     # 0x19aa90
callq 0xa520
movq %rax, -0x688(%rbp)
jmp 0xafa82
movq -0x688(%rbp), %rdi
movq 0xe94f8(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xafa97
movq 0xe9552(%rip), %rdi     # 0x198ff0
leaq 0x90f45(%rip), %rsi     # 0x1409ea
callq 0xa5c0
movq %rax, -0x690(%rbp)
jmp 0xafab3
movq -0x690(%rbp), %rdi
leaq 0xeafef(%rip), %rsi     # 0x19aab0
callq 0xa520
movq %rax, -0x698(%rbp)
jmp 0xafacf
movq -0x698(%rbp), %rdi
movq 0xe94ab(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xafae4
jmp 0xafbf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb2592
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb2589
movq 0xe94de(%rip), %rdi     # 0x198ff0
leaq 0x90efe(%rip), %rsi     # 0x140a17
callq 0xa5c0
movq %rax, -0x6a0(%rbp)
jmp 0xafb27
movq -0x6a0(%rbp), %rdi
leaq 0xeaf3b(%rip), %rsi     # 0x19aa70
callq 0xa520
movq %rax, -0x6a8(%rbp)
jmp 0xafb43
movq -0x6a8(%rbp), %rdi
movq 0xe9437(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xafb58
movq 0xe9491(%rip), %rdi     # 0x198ff0
leaq 0x8fea9(%rip), %rsi     # 0x13fa0f
callq 0xa5c0
movq %rax, -0x6b0(%rbp)
jmp 0xafb74
movq -0x6b0(%rbp), %rdi
leaq 0xeaf0e(%rip), %rsi     # 0x19aa90
callq 0xa520
movq %rax, -0x6b8(%rbp)
jmp 0xafb90
movq -0x6b8(%rbp), %rdi
movq 0xe93ea(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xafba5
movq 0xe9444(%rip), %rdi     # 0x198ff0
leaq 0x90e8f(%rip), %rsi     # 0x140a42
callq 0xa5c0
movq %rax, -0x6c0(%rbp)
jmp 0xafbc1
movq -0x6c0(%rbp), %rdi
leaq 0xeaee1(%rip), %rsi     # 0x19aab0
callq 0xa520
movq %rax, -0x6c8(%rbp)
jmp 0xafbdd
movq -0x6c8(%rbp), %rdi
movq 0xe939d(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xafbf2
jmp 0xafbf4
leaq 0xeae75(%rip), %rdi     # 0x19aa70
callq 0xa220
movq %rax, -0x6d8(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0x6d0(%rbp)
callq 0xab60
movq -0x6d8(%rbp), %rsi
movq -0x6d0(%rbp), %rdx
leaq -0x88(%rbp), %rdi
callq 0x2d6c0
jmp 0xafc36
leaq -0x88(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x6e0(%rbp)
jmp 0xafc50
leaq -0x88(%rbp), %rdi
callq 0xac88
leaq -0x89(%rbp), %rdi
callq 0xa640
movq -0x6e0(%rbp), %rax
movq %rax, -0x68(%rbp)
movl $0x208, %edi            # imm = 0x208
callq 0xa5d0
movq %rax, -0x6e8(%rbp)
jmp 0xafc86
leaq 0xeae03(%rip), %rdi     # 0x19aa90
callq 0xa220
movq -0x6e8(%rbp), %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0xab90
jmp 0xafca8
movq -0x6e8(%rbp), %rax
movq %rax, -0x98(%rbp)
movl $0x208, %edi            # imm = 0x208
callq 0xa5d0
movq %rax, -0x6f0(%rbp)
jmp 0xafcc9
leaq 0xeade0(%rip), %rdi     # 0x19aab0
callq 0xa220
movq -0x6f0(%rbp), %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0xab90
jmp 0xafceb
movq -0x6f0(%rbp), %rax
movq %rax, -0xa0(%rbp)
testb $0x1, 0xe9b70(%rip)     # 0x199870
je 0xafde3
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x6f8(%rbp)
jmp 0xafd19
movq -0x6f8(%rbp), %rdi
leaq 0x90d53(%rip), %rsi     # 0x140a7a
movl $0x10, %edx
callq 0xa650
jmp 0xafd33
movq -0x6f8(%rbp), %rax
movq %rax, -0xa8(%rbp)
jmp 0xafde3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xafd6c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xac88
leaq -0x89(%rbp), %rdi
callq 0xa640
jmp 0xb2589
movq -0x6e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x208, %esi            # imm = 0x208
callq 0xa5e0
jmp 0xb2589
movq -0x6f0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x208, %esi            # imm = 0x208
callq 0xa5e0
jmp 0xb2589
movq -0x6f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xb2589
leaq -0xc8(%rbp), %rdi
callq 0xa820
leaq -0xe9(%rbp), %rdi
movq %rdi, -0x700(%rbp)
callq 0xab60
movq -0x700(%rbp), %rdx
leaq 0x860cf(%rip), %rsi     # 0x135edf
leaq -0xe8(%rbp), %rdi
callq 0x2d6c0
jmp 0xafe1e
leaq -0xe9(%rbp), %rdi
callq 0xa640
leaq -0x110(%rbp), %rdi
callq 0xa820
leaq -0x138(%rbp), %rdi
callq 0x48da0
leaq -0x158(%rbp), %rdi
callq 0xa820
movl $0x0, -0x15c(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x48da0
leaq -0x190(%rbp), %rdi
callq 0x48da0
leaq -0x1a8(%rbp), %rdi
callq 0x3f5f0
leaq 0x87d65(%rip), %rdx     # 0x137be8
leaq -0x1c8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0xafe95
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x708(%rbp)
jmp 0xafea8
leaq -0x1c8(%rbp), %rdi
callq 0xa220
movq -0x708(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xafeca
movq -0x708(%rbp), %rax
movq %rax, -0x1d0(%rbp)
leaq 0x90bb5(%rip), %rdx     # 0x140a94
leaq -0x1f0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0xafef1
movq -0x1d0(%rbp), %rdi
leaq 0x87d04(%rip), %rsi     # 0x137c03
callq 0xa5c0
movq %rax, -0x710(%rbp)
jmp 0xaff0d
movq -0x710(%rbp), %rdi
leaq 0x85fc3(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x718(%rbp)
jmp 0xaff29
movq -0x718(%rbp), %rdi
leaq 0x90b71(%rip), %rsi     # 0x140aa8
callq 0xa5c0
movq %rax, -0x720(%rbp)
jmp 0xaff45
movq -0x720(%rbp), %rdi
leaq 0x85f8b(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x728(%rbp)
jmp 0xaff61
movq -0x728(%rbp), %rdi
leaq 0x90b4f(%rip), %rsi     # 0x140abe
callq 0xa5c0
movq %rax, -0x730(%rbp)
jmp 0xaff7d
movq -0x730(%rbp), %rdi
leaq 0x85f53(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x738(%rbp)
jmp 0xaff99
movq -0x738(%rbp), %rdi
leaq 0x90b2d(%rip), %rsi     # 0x140ad4
callq 0xa5c0
movq %rax, -0x740(%rbp)
jmp 0xaffb5
movq -0x740(%rbp), %rdi
leaq 0x85f1b(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x748(%rbp)
jmp 0xaffd1
movq -0x748(%rbp), %rdi
leaq 0x90b03(%rip), %rsi     # 0x140ae2
callq 0xa5c0
movq %rax, -0x750(%rbp)
jmp 0xaffed
movq -0x750(%rbp), %rdi
leaq 0x85ee3(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x758(%rbp)
jmp 0xb0009
movq -0x758(%rbp), %rdi
leaq 0x90ad8(%rip), %rsi     # 0x140aef
callq 0xa5c0
movq %rax, -0x760(%rbp)
jmp 0xb0025
movq -0x760(%rbp), %rdi
leaq 0x85eab(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x768(%rbp)
jmp 0xb0041
movq -0x768(%rbp), %rdi
leaq 0x90aca(%rip), %rsi     # 0x140b19
callq 0xa5c0
movq %rax, -0x770(%rbp)
jmp 0xb005d
movq -0x770(%rbp), %rdi
leaq 0x85e73(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x778(%rbp)
jmp 0xb0079
movq -0x778(%rbp), %rdi
leaq 0x90aa4(%rip), %rsi     # 0x140b2b
callq 0xa5c0
movq %rax, -0x780(%rbp)
jmp 0xb0095
movq -0x780(%rbp), %rdi
leaq 0x85e3b(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x788(%rbp)
jmp 0xb00b1
movq -0x788(%rbp), %rdi
leaq 0x90a93(%rip), %rsi     # 0x140b52
callq 0xa5c0
movq %rax, -0x790(%rbp)
jmp 0xb00cd
movq -0x790(%rbp), %rdi
leaq 0x85e03(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x798(%rbp)
jmp 0xb00e9
movq -0x798(%rbp), %rdi
leaq 0x90a6f(%rip), %rsi     # 0x140b66
callq 0xa5c0
movq %rax, -0x7a0(%rbp)
jmp 0xb0105
movq -0x7a0(%rbp), %rdi
leaq 0x85dcb(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x7a8(%rbp)
jmp 0xb0121
movq -0x7a8(%rbp), %rdi
leaq 0x90a34(%rip), %rsi     # 0x140b63
callq 0xa5c0
movq %rax, -0x7b0(%rbp)
jmp 0xb013d
movq -0x7b0(%rbp), %rdi
leaq 0x85d93(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x7b8(%rbp)
jmp 0xb0159
movq -0x7b8(%rbp), %rdi
leaq 0x87af3(%rip), %rsi     # 0x137c5a
callq 0xa5c0
movq %rax, -0x7c0(%rbp)
jmp 0xb0175
movq -0x7c0(%rbp), %rdi
leaq 0x85d5b(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x7c8(%rbp)
jmp 0xb0191
movq -0x7c8(%rbp), %rdi
leaq 0x87a77(%rip), %rsi     # 0x137c16
callq 0xa5c0
movq %rax, -0x7d0(%rbp)
jmp 0xb01ad
movq -0x7d0(%rbp), %rdi
movq 0xe8dcd(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb01c2
movsbl 0xe96a8(%rip), %eax     # 0x199871
cmpl $0x62, %eax
jne 0xb02ea
movq 0xe8ddf(%rip), %rdi     # 0x198fb8
leaq 0x87a23(%rip), %rsi     # 0x137c03
callq 0xa5c0
movq %rax, -0x7d8(%rbp)
jmp 0xb01ee
movq -0x7d8(%rbp), %rdi
leaq 0x85ce2(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x7e0(%rbp)
jmp 0xb020a
movq -0x7e0(%rbp), %rdi
leaq 0x87a42(%rip), %rsi     # 0x137c5a
callq 0xa5c0
movq %rax, -0x7e8(%rbp)
jmp 0xb0226
movq -0x7e8(%rbp), %rdi
leaq 0x85caa(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x7f0(%rbp)
jmp 0xb0242
movq -0x7f0(%rbp), %rdi
leaq 0x879c6(%rip), %rsi     # 0x137c16
callq 0xa5c0
movq %rax, -0x7f8(%rbp)
jmp 0xb025e
movq -0x7f8(%rbp), %rdi
movq 0xe8d1c(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb0273
jmp 0xb05bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xe9(%rbp), %rdi
callq 0xa640
jmp 0xb257d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb2529
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb251d
movq -0x708(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xb251d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb2511
movq 0xe8cc7(%rip), %rdi     # 0x198fb8
leaq 0x8790b(%rip), %rsi     # 0x137c03
callq 0xa5c0
movq %rax, -0x800(%rbp)
jmp 0xb0306
movq -0x800(%rbp), %rdi
leaq 0x85bca(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x808(%rbp)
jmp 0xb0322
movq -0x808(%rbp), %rdi
leaq 0x90778(%rip), %rsi     # 0x140aa8
callq 0xa5c0
movq %rax, -0x810(%rbp)
jmp 0xb033e
movq -0x810(%rbp), %rdi
leaq 0x85b92(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x818(%rbp)
jmp 0xb035a
movq -0x818(%rbp), %rdi
leaq 0x90756(%rip), %rsi     # 0x140abe
callq 0xa5c0
movq %rax, -0x820(%rbp)
jmp 0xb0376
movq -0x820(%rbp), %rdi
leaq 0x85b5a(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x828(%rbp)
jmp 0xb0392
movq -0x828(%rbp), %rdi
leaq 0x90734(%rip), %rsi     # 0x140ad4
callq 0xa5c0
movq %rax, -0x830(%rbp)
jmp 0xb03ae
movq -0x830(%rbp), %rdi
leaq 0x85b22(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x838(%rbp)
jmp 0xb03ca
movq -0x838(%rbp), %rdi
leaq 0x9070a(%rip), %rsi     # 0x140ae2
callq 0xa5c0
movq %rax, -0x840(%rbp)
jmp 0xb03e6
movq -0x840(%rbp), %rdi
leaq 0x85aea(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x848(%rbp)
jmp 0xb0402
movq -0x848(%rbp), %rdi
leaq 0x906df(%rip), %rsi     # 0x140aef
callq 0xa5c0
movq %rax, -0x850(%rbp)
jmp 0xb041e
movq -0x850(%rbp), %rdi
leaq 0x85ab2(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x858(%rbp)
jmp 0xb043a
movq -0x858(%rbp), %rdi
leaq 0x906d1(%rip), %rsi     # 0x140b19
callq 0xa5c0
movq %rax, -0x860(%rbp)
jmp 0xb0456
movq -0x860(%rbp), %rdi
leaq 0x85a7a(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x868(%rbp)
jmp 0xb0472
movq -0x868(%rbp), %rdi
leaq 0x906ab(%rip), %rsi     # 0x140b2b
callq 0xa5c0
movq %rax, -0x870(%rbp)
jmp 0xb048e
movq -0x870(%rbp), %rdi
leaq 0x85a42(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x878(%rbp)
jmp 0xb04aa
movq -0x878(%rbp), %rdi
leaq 0x9069a(%rip), %rsi     # 0x140b52
callq 0xa5c0
movq %rax, -0x880(%rbp)
jmp 0xb04c6
movq -0x880(%rbp), %rdi
leaq 0x85a0a(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x888(%rbp)
jmp 0xb04e2
movq -0x888(%rbp), %rdi
leaq 0x90676(%rip), %rsi     # 0x140b66
callq 0xa5c0
movq %rax, -0x890(%rbp)
jmp 0xb04fe
movq -0x890(%rbp), %rdi
leaq 0x859d2(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x898(%rbp)
jmp 0xb051a
movq -0x898(%rbp), %rdi
leaq 0x9063b(%rip), %rsi     # 0x140b63
callq 0xa5c0
movq %rax, -0x8a0(%rbp)
jmp 0xb0536
movq -0x8a0(%rbp), %rdi
leaq 0x8599a(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8a8(%rbp)
jmp 0xb0552
movq -0x8a8(%rbp), %rdi
leaq 0x876fa(%rip), %rsi     # 0x137c5a
callq 0xa5c0
movq %rax, -0x8b0(%rbp)
jmp 0xb056e
movq -0x8b0(%rbp), %rdi
leaq 0x85962(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8b8(%rbp)
jmp 0xb058a
movq -0x8b8(%rbp), %rdi
leaq 0x8767e(%rip), %rsi     # 0x137c16
callq 0xa5c0
movq %rax, -0x8c0(%rbp)
jmp 0xb05a6
movq -0x8c0(%rbp), %rdi
movq 0xe89d4(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb05bb
jmp 0xb05bd
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x8c8(%rbp)
jmp 0xb05d0
leaq -0x1f0(%rbp), %rdi
callq 0xa220
movq -0x8c8(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xb05f2
movq -0x8c8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rdi
leaq 0x875f5(%rip), %rsi     # 0x137c03
callq 0xa5c0
movq %rax, -0x8d0(%rbp)
jmp 0xb061c
movq -0x8d0(%rbp), %rdi
leaq 0x858b4(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8d8(%rbp)
jmp 0xb0638
movq -0x8d8(%rbp), %rdi
leaq 0x90535(%rip), %rsi     # 0x140b7b
callq 0xa5c0
movq %rax, -0x8e0(%rbp)
jmp 0xb0654
movq -0x8e0(%rbp), %rdi
leaq 0x8587c(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8e8(%rbp)
jmp 0xb0670
movq -0x8e8(%rbp), %rdi
leaq 0x9050d(%rip), %rsi     # 0x140b8b
callq 0xa5c0
movq %rax, -0x8f0(%rbp)
jmp 0xb068c
movq -0x8f0(%rbp), %rdi
leaq 0x85844(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x8f8(%rbp)
jmp 0xb06a8
movq -0x8f8(%rbp), %rdi
leaq 0x9053a(%rip), %rsi     # 0x140bf0
callq 0xa5c0
movq %rax, -0x900(%rbp)
jmp 0xb06c4
movq -0x900(%rbp), %rdi
leaq 0x8580c(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x908(%rbp)
jmp 0xb06e0
movq -0x908(%rbp), %rdi
leaq 0x904af(%rip), %rsi     # 0x140b9d
callq 0xa5c0
movq %rax, -0x910(%rbp)
jmp 0xb06fc
movq -0x910(%rbp), %rdi
movq 0xe887e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb0711
leaq 0x9049b(%rip), %rdx     # 0x140bb3
leaq -0x218(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0xb072a
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x918(%rbp)
jmp 0xb073d
leaq -0x218(%rbp), %rdi
callq 0xa220
movq -0x918(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xb075f
movq -0x918(%rbp), %rax
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rdi
leaq 0x90454(%rip), %rsi     # 0x140bcf
callq 0xa5c0
movq %rax, -0x920(%rbp)
jmp 0xb0789
movq -0x920(%rbp), %rdi
leaq 0x85747(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x928(%rbp)
jmp 0xb07a5
movq -0x928(%rbp), %rdi
leaq 0x90421(%rip), %rsi     # 0x140bd4
callq 0xa5c0
movq %rax, -0x930(%rbp)
jmp 0xb07c1
movq -0x930(%rbp), %rdi
leaq 0x8570f(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x938(%rbp)
jmp 0xb07dd
movq -0x938(%rbp), %rdi
leaq 0x903f2(%rip), %rsi     # 0x140bdd
callq 0xa5c0
movq %rax, -0x940(%rbp)
jmp 0xb07f9
movq -0x940(%rbp), %rdi
leaq 0x856d7(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x948(%rbp)
jmp 0xb0815
movq -0x948(%rbp), %rdi
leaq 0x903c9(%rip), %rsi     # 0x140bec
callq 0xa5c0
movq %rax, -0x950(%rbp)
jmp 0xb0831
movq -0x950(%rbp), %rdi
leaq 0x8569f(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x958(%rbp)
jmp 0xb084d
movq -0x958(%rbp), %rdi
leaq 0x903ab(%rip), %rsi     # 0x140c06
callq 0xa5c0
movq %rax, -0x960(%rbp)
jmp 0xb0869
movq -0x960(%rbp), %rdi
movq 0xe8711(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb087e
movzbl 0xea28b(%rip), %edx     # 0x19ab10
andl $0x1, %edx
leaq -0x2e0(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x58390
jmp 0xb089d
leaq -0x2f8(%rbp), %rdi
callq 0x3f5f0
movq -0x68(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0xa0d0
movq %rax, -0x968(%rbp)
jmp 0xb08c2
movq -0x968(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa740
movb %al, -0x969(%rbp)
jmp 0xb08e0
movb -0x969(%rbp), %al
testb $0x1, %al
jne 0xb08ef
jmp 0xb23b9
xorl %eax, %eax
movl %eax, %esi
leaq -0xc8(%rbp), %rdi
callq 0xac60
movq %rax, -0x978(%rbp)
jmp 0xb0908
movq -0x978(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0xb09af
leaq -0xc8(%rbp), %rdi
movl $0x1, %esi
callq 0xac60
movq %rax, -0x980(%rbp)
jmp 0xb0935
movq -0x980(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0xb09af
jmp 0xb08a9
movq -0x8c8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xb2511
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb2505
movq -0x918(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xb2505
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb24ed
xorl %eax, %eax
movl %eax, %esi
leaq -0xc8(%rbp), %rdi
callq 0xac60
movq %rax, -0x988(%rbp)
jmp 0xb09c8
movq -0x988(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0xb0b39
leaq -0xc8(%rbp), %rdi
movl $0x1, %esi
callq 0xac60
movq %rax, -0x990(%rbp)
jmp 0xb09f5
movq -0x990(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x43, %eax
jne 0xb0b39
leaq -0x310(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0xb0a22
leaq -0x310(%rbp), %rdi
callq 0x3ffd0
addq $-0x9, %rax
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x5f8f0
jmp 0xb0a4e
movq $0x9, -0x318(%rbp)
movq -0x318(%rbp), %rax
movq %rax, -0x998(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rcx
movq -0x998(%rbp), %rax
cmpq %rcx, %rax
je 0xb0b28
leaq 0xea063(%rip), %rdi     # 0x19aaf0
callq 0xaa70
testb $0x1, %al
jne 0xb0a98
jmp 0xb0adb
movq -0x318(%rbp), %rsi
leaq -0x310(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x138(%rbp), %rdi
callq 0x48dc0
jmp 0xb0abc
jmp 0xb0b0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x3dfa0
jmp 0xb24ed
leaq 0xea00e(%rip), %rsi     # 0x19aaf0
leaq -0x330(%rbp), %rdi
callq 0x80aa0
jmp 0xb0af0
leaq -0x138(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x50c30
leaq -0x330(%rbp), %rdi
callq 0x3dfa0
jmp 0xb0b11
movq -0x318(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x318(%rbp)
jmp 0xb0a59
leaq -0x310(%rbp), %rdi
callq 0x3dfa0
jmp 0xb23b2
movl -0x15c(%rbp), %eax
incl %eax
movl %eax, -0x15c(%rbp)
leaq -0x348(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0xb0b61
leaq -0x348(%rbp), %rdi
movl $0x7, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x360(%rbp), %rdi
movl $0x3b, %edx
callq 0x7bbe0
jmp 0xb0b88
leaq -0x348(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rdi
leaq -0xe8(%rbp), %rsi
callq 0x56980
testb $0x1, %al
jne 0xb0bb0
jmp 0xb1cbd
leaq 0x85328(%rip), %rsi     # 0x135edf
leaq -0xe8(%rbp), %rdi
callq 0x50eb0
movb %al, -0x999(%rbp)
jmp 0xb0bcb
movb -0x999(%rbp), %al
testb $0x1, %al
jne 0xb0bda
jmp 0xb1982
movq $0x0, -0x368(%rbp)
movq -0x368(%rbp), %rax
cmpq -0x120(%rbp), %rax
je 0xb0cad
movq -0x368(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq %rax, -0x9a8(%rbp)
movq -0x118(%rbp), %rdx
leaq -0x388(%rbp), %rdi
leaq -0x110(%rbp), %rsi
movq $-0x1, %rcx
callq 0xa5f0
jmp 0xb0c36
movq -0x9a8(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0xac20
jmp 0xb0c4b
leaq -0x388(%rbp), %rdi
callq 0xac88
movq -0x368(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x368(%rbp)
jmp 0xb0be5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb23a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb2395
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x388(%rbp), %rdi
callq 0xac88
jmp 0xb2395
movsbl 0xe8bbd(%rip), %eax     # 0x199871
cmpl $0x62, %eax
jne 0xb0d70
movq $0x0, -0x390(%rbp)
movq -0x390(%rbp), %rax
cmpq -0x120(%rbp), %rax
je 0xb0d6e
movq -0x390(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x3d940
movq %rax, -0x9b0(%rbp)
movq -0x118(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
movq $-0x1, %rcx
callq 0xa5f0
jmp 0xb0d19
movq -0x9b0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0xac20
jmp 0xb0d2e
leaq -0x3b0(%rbp), %rdi
callq 0xac88
movq -0x390(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x390(%rbp)
jmp 0xb0cc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0xac88
jmp 0xb2395
jmp 0xb0d70
leaq -0x178(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa930
movq %rax, -0x9b8(%rbp)
leaq -0x110(%rbp), %rdi
callq 0xa930
movq %rax, %rcx
movq -0x9b8(%rbp), %rax
cmpq %rcx, %rax
je 0xb0e51
movq 0xe823b(%rip), %rdi     # 0x198ff0
leaq 0x8fe76(%rip), %rsi     # 0x140c32
callq 0xa5c0
movq %rax, -0x9c0(%rbp)
jmp 0xb0dca
leaq -0x110(%rbp), %rdi
callq 0xa930
movq -0x9c0(%rbp), %rdi
movq %rax, %rsi
callq 0xa140
movq %rax, -0x9c8(%rbp)
jmp 0xb0dee
movq -0x9c8(%rbp), %rdi
leaq 0x8ecac(%rip), %rsi     # 0x13faa8
callq 0xa5c0
movq %rax, -0x9d0(%rbp)
jmp 0xb0e0a
xorl %eax, %eax
movl %eax, %esi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
callq 0xa930
movq -0x9d0(%rbp), %rdi
movq %rax, %rsi
callq 0xa140
movq %rax, -0x9d8(%rbp)
jmp 0xb0e3a
movq -0x9d8(%rbp), %rdi
movq 0xe8140(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb0e4f
jmp 0xb0e51
movq 0xe8198(%rip), %rdi     # 0x198ff0
leaq -0xe8(%rbp), %rsi
callq 0xa520
movq %rax, -0x9e0(%rbp)
jmp 0xb0e6d
movq -0x9e0(%rbp), %rdi
movq 0xe810d(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb0e82
leaq -0x2e0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3f760
movq %rax, -0x9e8(%rbp)
jmp 0xb0e9e
movq -0x9e8(%rbp), %rsi
leaq -0x2f8(%rbp), %rdi
callq 0x3f840
jmp 0xb0eb3
movq 0xe8136(%rip), %rdi     # 0x198ff0
leaq 0x8fd96(%rip), %rsi     # 0x140c57
callq 0xa5c0
movq %rax, -0x9f0(%rbp)
jmp 0xb0ecf
movq -0x9f0(%rbp), %rdi
movq 0xe80ab(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb0ee4
movq $0x0, -0x3b8(%rbp)
movq -0x3b8(%rbp), %rax
movq %rax, -0x9f8(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x409f0
movq %rax, %rcx
movq -0x9f8(%rbp), %rax
cmpq %rcx, %rax
je 0xb1939
movq -0x3b8(%rbp), %rsi
leaq -0x2f8(%rbp), %rdi
callq 0x3ec10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x3d0(%rbp), %rdi
movl $0x9, %edx
callq 0x7bbe0
jmp 0xb0f51
movb $0x1, -0x3d9(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x48da0
leaq -0x410(%rbp), %rdi
callq 0x48da0
leaq -0x3d0(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x430(%rbp), %rdi
callq 0xa250
jmp 0xb0f92
leaq -0x448(%rbp), %rdi
movq %rdi, -0xa00(%rbp)
callq 0x48da0
movq -0xa00(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x48dc0
jmp 0xb0fba
movq -0x3b8(%rbp), %rsi
leaq -0x2f8(%rbp), %rdi
callq 0x3ec10
movq %rax, -0xa08(%rbp)
leaq -0x3d0(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq -0xa08(%rbp), %rsi
movq %rax, %rdx
leaq -0x468(%rbp), %rdi
leaq -0x110(%rbp), %rcx
callq 0x8f120
jmp 0xb1004
testb $0x1, 0xe8865(%rip)     # 0x199870
je 0xb107f
movl -0x3b8(%rbp), %ecx
leaq -0x468(%rbp), %rdi
leaq -0x430(%rbp), %rsi
leaq -0x2f8(%rbp), %rdx
leaq -0xa8(%rbp), %r8
callq 0xb29b0
movb %al, -0xa09(%rbp)
jmp 0xb103c
movb -0xa09(%rbp), %al
andb $0x1, %al
movb %al, -0x3d9(%rbp)
jmp 0xb107f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb1910
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb18f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb18ec
testb $0x1, -0x3d9(%rbp)
je 0xb10f2
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0xa18(%rbp)
jmp 0xb109b
leaq -0x430(%rbp), %rdi
callq 0xa220
movq -0xa18(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xb10bd
movq -0xa18(%rbp), %rax
movq %rax, -0x3d8(%rbp)
jmp 0xb1220
movq -0xa18(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xb18ec
leaq 0xe99d7(%rip), %rdi     # 0x19aad0
leaq 0x84ddf(%rip), %rsi     # 0x135edf
callq 0x50eb0
movb %al, -0xa19(%rbp)
jmp 0xb110d
movb -0xa19(%rbp), %al
testb $0x1, %al
jne 0xb111c
jmp 0xb121e
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0xa28(%rbp)
jmp 0xb112f
movb $0x1, -0x4a9(%rbp)
leaq 0xe9993(%rip), %rsi     # 0x19aad0
leaq -0x4a8(%rbp), %rdi
movl $0x5f, %edx
callq 0x587a0
jmp 0xb1150
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
leaq -0x430(%rbp), %rdx
callq 0x3da30
jmp 0xb116c
leaq -0x488(%rbp), %rdi
callq 0xa220
movq -0xa28(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xb118e
movq -0xa28(%rbp), %rax
movb $0x0, -0x4a9(%rbp)
movq %rax, -0x3d8(%rbp)
leaq -0x488(%rbp), %rdi
callq 0xac88
leaq -0x4a8(%rbp), %rdi
callq 0xac88
jmp 0xb121e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb11fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb11f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x488(%rbp), %rdi
callq 0xac88
leaq -0x4a8(%rbp), %rdi
callq 0xac88
testb $0x1, -0x4a9(%rbp)
jne 0xb1208
jmp 0xb1219
movq -0xa28(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xb18ec
jmp 0xb1220
testb $0x1, -0x3d9(%rbp)
jne 0xb1253
leaq 0xe98a0(%rip), %rdi     # 0x19aad0
leaq 0x84ca8(%rip), %rsi     # 0x135edf
callq 0x50eb0
movb %al, -0xa29(%rbp)
jmp 0xb1244
movb -0xa29(%rbp), %al
testb $0x1, %al
jne 0xb1253
jmp 0xb157c
movq $0x0, -0x4b8(%rbp)
movq -0x4b8(%rbp), %rax
cmpq -0x120(%rbp), %rax
je 0xb1512
movq -0x3b8(%rbp), %rsi
leaq -0x2f8(%rbp), %rdi
callq 0x3ec10
movq %rax, -0xa40(%rbp)
leaq -0x3d0(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq %rax, -0xa38(%rbp)
movq -0x4b8(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq -0xa40(%rbp), %rsi
movq -0xa38(%rbp), %rdx
movq %rax, %rcx
leaq -0x4d8(%rbp), %rdi
callq 0x8ee60
jmp 0xb12d6
movq -0x3d8(%rbp), %rdi
leaq 0x89942(%rip), %rsi     # 0x13ac26
callq 0xa5c0
movq %rax, -0xa48(%rbp)
jmp 0xb12f2
movq -0x4b8(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x3d940
movq -0xa48(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0xa50(%rbp)
jmp 0xb131d
movq -0xa50(%rbp), %rdi
movq 0xe7c5d(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb1332
movq -0x3d8(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0xa520
movq %rax, -0xa58(%rbp)
jmp 0xb134e
movq -0xa58(%rbp), %rdi
movq 0xe7c2c(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb1363
leaq -0x3f8(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x48dc0
jmp 0xb1378
movsbl 0xe84f2(%rip), %eax     # 0x199871
cmpl $0x62, %eax
jne 0xb14ef
movq -0x3b8(%rbp), %rsi
leaq -0x2f8(%rbp), %rdi
callq 0x3ec10
movq %rax, -0xa68(%rbp)
leaq -0x3d0(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq %rax, -0xa60(%rbp)
movq -0x4b8(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x3d940
movq -0xa68(%rbp), %rsi
movq -0xa60(%rbp), %rdx
movq %rax, %rcx
leaq -0x4f8(%rbp), %rdi
callq 0x8ee60
jmp 0xb13ec
leaq -0x4d8(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
movq %rsi, -0xa78(%rbp)
callq 0xa710
movq -0xa78(%rbp), %rdi
callq 0xac88
movq -0x3d8(%rbp), %rdi
leaq 0x89806(%rip), %rsi     # 0x13ac26
callq 0xa5c0
movq %rax, -0xa70(%rbp)
jmp 0xb142e
movq -0x4b8(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x3d940
movq -0xa70(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0xa80(%rbp)
jmp 0xb1459
movq -0xa80(%rbp), %rdi
leaq 0x8b160(%rip), %rsi     # 0x13c5c7
callq 0xa5c0
movq %rax, -0xa88(%rbp)
jmp 0xb1475
movq -0xa88(%rbp), %rdi
movq 0xe7b05(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb148a
movq -0x3d8(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0xa520
movq %rax, -0xa90(%rbp)
jmp 0xb14a6
movq -0xa90(%rbp), %rdi
movq 0xe7ad4(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb14bb
leaq -0x410(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x48dc0
jmp 0xb14d0
jmp 0xb14ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0xac88
jmp 0xb18ec
leaq -0x4d8(%rbp), %rdi
callq 0xac88
movq -0x4b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x4b8(%rbp)
jmp 0xb125e
movq -0x3d8(%rbp), %rdi
callq 0xa840
jmp 0xb1520
movq 0xe7ac9(%rip), %rdi     # 0x198ff0
leaq 0x8f749(%rip), %rsi     # 0x140c77
callq 0xa5c0
movq %rax, -0xa98(%rbp)
jmp 0xb153c
leaq -0x3d0(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq -0xa98(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0xaa0(%rbp)
jmp 0xb1565
movq -0xaa0(%rbp), %rdi
movq 0xe7a15(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb157a
jmp 0xb157c
testb $0x1, 0xe958e(%rip)     # 0x19ab11
jne 0xb188d
testb $0x1, 0xe82e0(%rip)     # 0x199870
je 0xb188b
testb $0x1, -0x3d9(%rbp)
je 0xb188b
leaq -0x3f8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa930
movq %rax, -0xaa8(%rbp)
leaq -0x468(%rbp), %rdi
callq 0xa930
movq %rax, %rcx
movq -0xaa8(%rbp), %rax
cmpq %rcx, %rax
jne 0xb15df
jmp 0xb15fe
leaq 0x8f6a9(%rip), %rdi     # 0x140c8f
leaq 0x8f6c9(%rip), %rsi     # 0x140cb6
movl $0xe6, %edx
leaq 0x8f6de(%rip), %rcx     # 0x140cd7
callq 0xa390
leaq -0x410(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa930
movq %rax, -0xab0(%rbp)
leaq -0x468(%rbp), %rdi
callq 0xa930
movq %rax, %rcx
movq -0xab0(%rbp), %rax
cmpq %rcx, %rax
jne 0xb163a
jmp 0xb1659
leaq 0x8f6b9(%rip), %rdi     # 0x140cfa
leaq 0x8f66e(%rip), %rsi     # 0x140cb6
movl $0xe7, %edx
leaq 0x8f683(%rip), %rcx     # 0x140cd7
callq 0xa390
movsbl 0xe8211(%rip), %eax     # 0x199871
cmpl $0x70, %eax
je 0xb1671
movsbl 0xe8205(%rip), %eax     # 0x199871
cmpl $0x72, %eax
jne 0xb16f0
leaq -0x3f8(%rbp), %rdi
leaq -0x448(%rbp), %rsi
movsd 0x7ca81(%rip), %xmm0    # 0x12e108
callq 0xb2d10
jmp 0xb168e
leaq -0x510(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x3fee0
jmp 0xb16a3
movq 0xe790e(%rip), %rsi     # 0x198fb8
leaq -0x510(%rbp), %rdi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x50da0
jmp 0xb16c2
leaq -0x510(%rbp), %rdi
callq 0x3dfa0
jmp 0xb181a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x510(%rbp), %rdi
callq 0x3dfa0
jmp 0xb18ec
movsbl 0xe817a(%rip), %eax     # 0x199871
cmpl $0x62, %eax
jne 0xb17d8
leaq -0x528(%rbp), %rdi
movq %rdi, -0xab8(%rbp)
callq 0x65060
movq -0xab8(%rbp), %rcx
movq $0x0, -0x530(%rbp)
movq -0x530(%rbp), %r8
leaq -0x3f8(%rbp), %rdi
leaq -0x410(%rbp), %rsi
leaq -0x448(%rbp), %rdx
movsd 0x7c9bf(%rip), %xmm0    # 0x12e108
xorl %r9d, %r9d
callq 0xb3c40
jmp 0xb1753
leaq -0x548(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x3fee0
jmp 0xb1768
movq 0xe7849(%rip), %rsi     # 0x198fb8
leaq -0x548(%rbp), %rdi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x50da0
jmp 0xb1787
leaq -0x548(%rbp), %rdi
callq 0x3dfa0
leaq -0x528(%rbp), %rdi
callq 0x65200
jmp 0xb1818
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb17c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x3dfa0
leaq -0x528(%rbp), %rdi
callq 0x65200
jmp 0xb18ec
leaq -0x3d0(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq %rax, %rdx
leaq -0x3f8(%rbp), %rdi
leaq -0x468(%rbp), %rsi
leaq -0x448(%rbp), %rcx
leaq -0x1f8(%rbp), %r8
leaq -0x138(%rbp), %r9
callq 0xb5e20
jmp 0xb1816
jmp 0xb1818
jmp 0xb181a
leaq -0x1a8(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x3f610
jmp 0xb182f
movq 0xe77ba(%rip), %rdi     # 0x198ff0
leaq 0x8f4e6(%rip), %rsi     # 0x140d23
callq 0xa5c0
movq %rax, -0xac0(%rbp)
jmp 0xb184b
leaq -0x3d0(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq -0xac0(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0xac8(%rbp)
jmp 0xb1874
movq -0xac8(%rbp), %rdi
movq 0xe7706(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb1889
jmp 0xb188b
jmp 0xb188d
leaq -0x468(%rbp), %rdi
callq 0xac88
leaq -0x448(%rbp), %rdi
callq 0x3dfa0
leaq -0x430(%rbp), %rdi
callq 0xac88
leaq -0x410(%rbp), %rdi
callq 0x3dfa0
leaq -0x3f8(%rbp), %rdi
callq 0x3dfa0
leaq -0x3d0(%rbp), %rdi
callq 0x3dfa0
movq -0x3b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x3b8(%rbp)
jmp 0xb0eef
leaq -0x468(%rbp), %rdi
callq 0xac88
leaq -0x448(%rbp), %rdi
callq 0x3dfa0
leaq -0x430(%rbp), %rdi
callq 0xac88
leaq -0x410(%rbp), %rdi
callq 0x3dfa0
leaq -0x3f8(%rbp), %rdi
callq 0x3dfa0
leaq -0x3d0(%rbp), %rdi
callq 0x3dfa0
jmp 0xb2395
movl $0x1, -0x15c(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x348(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0xe8(%rbp), %rdi
callq 0xa060
jmp 0xb1964
leaq -0xe8(%rbp), %rdi
leaq -0x98(%rbp), %rsi
leaq -0x158(%rbp), %rdx
callq 0xb7990
jmp 0xb1980
jmp 0xb19d1
movq -0x98(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xa0d0
jmp 0xb1997
xorl %eax, %eax
movl %eax, %esi
leaq -0x158(%rbp), %rdi
movl $0x1, %edx
callq 0xa130
jmp 0xb19ae
xorl %eax, %eax
movl %eax, %esi
leaq -0x348(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0xe8(%rbp), %rdi
callq 0xa060
jmp 0xb19cf
jmp 0xb19d1
leaq -0x560(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x45190
jmp 0xb19e6
movq -0x1d0(%rbp), %rsi
leaq -0x560(%rbp), %rdi
callq 0x6bf10
jmp 0xb19fb
leaq -0x560(%rbp), %rdi
callq 0x3ec50
movq -0x1d0(%rbp), %rdi
callq 0xa3b0
jmp 0xb1a15
leaq -0x1a8(%rbp), %rdi
callq 0x3fa90
leaq -0x220(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0xaf270
jmp 0xb1a36
leaq 0xe901b(%rip), %rdi     # 0x19aa58
callq 0x591f0
movq $0x0, -0x118(%rbp)
movq 0xe759c(%rip), %rdi     # 0x198ff0
leaq 0x8e113(%rip), %rsi     # 0x13fb6e
callq 0xa5c0
movq %rax, -0xad0(%rbp)
jmp 0xb1a69
movq -0xad0(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xa520
movq %rax, -0xad8(%rbp)
jmp 0xb1a85
movq -0xad8(%rbp), %rdi
movq 0xe74f5(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb1a9a
leaq -0x580(%rbp), %rdi
leaq -0x98(%rbp), %rsi
leaq -0x158(%rbp), %rdx
callq 0x6a7e0
jmp 0xb1ab6
leaq -0x110(%rbp), %rdi
leaq -0x580(%rbp), %rsi
movq %rsi, -0xae0(%rbp)
callq 0xa710
movq -0xae0(%rbp), %rdi
callq 0xac88
xorl %eax, %eax
movl %eax, %esi
leaq -0x158(%rbp), %rdi
movl $0x1, %edx
callq 0xa130
jmp 0xb1af3
movq 0xe74f6(%rip), %rdi     # 0x198ff0
leaq 0x8e0a3(%rip), %rsi     # 0x13fba4
callq 0xa5c0
movq %rax, -0xae8(%rbp)
jmp 0xb1b0f
movq -0xae8(%rbp), %rdi
movq 0xe746b(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb1b24
movq 0xe74c5(%rip), %rdi     # 0x198ff0
leaq 0x8e098(%rip), %rsi     # 0x13fbca
callq 0xa5c0
movq %rax, -0xaf0(%rbp)
jmp 0xb1b40
movq -0xaf0(%rbp), %rdi
movq 0xe743a(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb1b55
movq $0x0, -0x588(%rbp)
movq -0x588(%rbp), %rax
cmpq -0x120(%rbp), %rax
je 0xb1c05
movq -0x588(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
leaq 0x8434e(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xb1b98
movq -0x588(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq %rax, -0xaf8(%rbp)
leaq -0x110(%rbp), %rdi
callq 0xa930
movq -0xaf8(%rbp), %rdi
movq %rax, %rsi
callq 0xa980
jmp 0xb1bcf
jmp 0xb1bd1
movq -0x588(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x588(%rbp)
jmp 0xb1b60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x560(%rbp), %rdi
callq 0x3ec50
jmp 0xb2395
movsbl 0xe7c65(%rip), %eax     # 0x199871
cmpl $0x62, %eax
jne 0xb1cbb
movq -0x120(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x5f8f0
jmp 0xb1c2a
movq $0x0, -0x590(%rbp)
movq -0x590(%rbp), %rax
cmpq -0x120(%rbp), %rax
je 0xb1cb9
movq -0x590(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
leaq 0x8427d(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xb1c69
movq -0x590(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x3d940
movq %rax, -0xb00(%rbp)
leaq -0x110(%rbp), %rdi
callq 0xa930
movq -0xb00(%rbp), %rdi
movq %rax, %rsi
callq 0xa980
jmp 0xb1ca0
jmp 0xb1ca2
movq -0x590(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x590(%rbp)
jmp 0xb1c35
jmp 0xb1cbb
jmp 0xb1cbd
leaq -0x348(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x5b0(%rbp), %rdi
callq 0xa250
jmp 0xb1cdf
leaq -0x348(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x5d0(%rbp), %rdi
callq 0xa250
jmp 0xb1d01
leaq -0x5b0(%rbp), %rdi
callq 0xa930
cmpq $0x1, %rax
jne 0xb22e9
leaq -0x5d0(%rbp), %rdi
callq 0xa930
cmpq $0x1, %rax
jne 0xb22e9
movq $0x9, -0x5d8(%rbp)
movq -0x5d8(%rbp), %rax
movq %rax, -0xb08(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rcx
movq -0xb08(%rbp), %rax
cmpq %rcx, %rax
je 0xb217e
movl -0x5d8(%rbp), %eax
addl $-0x9, %eax
movl %eax, -0x5dc(%rbp)
movslq -0x5dc(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq %rax, -0xb18(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0xb10(%rbp)
leaq -0x348(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa220
movq %rax, %rdi
callq 0xa970
movq -0xb10(%rbp), %rdx
decl %eax
movslq %eax, %rcx
movq -0x118(%rbp), %rax
subq %rax, %rcx
leaq -0x600(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xa5f0
jmp 0xb1de8
movq -0xb18(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0xac20
jmp 0xb1dfd
leaq -0x600(%rbp), %rdi
callq 0xac88
movsbl 0xe7a61(%rip), %eax     # 0x199871
cmpl $0x62, %eax
jne 0xb1f0c
movslq -0x5dc(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x3d940
movq %rax, -0xb28(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0xb20(%rbp)
leaq -0x348(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa220
movq %rax, %rdi
callq 0xa970
movq -0xb20(%rbp), %rdx
decl %eax
movslq %eax, %rcx
movq -0x118(%rbp), %rax
subq %rax, %rcx
leaq -0x620(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xa5f0
jmp 0xb1e8d
movq -0xb28(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0xac20
jmp 0xb1ea2
leaq -0x620(%rbp), %rdi
callq 0xac88
jmp 0xb1f0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb2389
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xb237d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x600(%rbp), %rdi
callq 0xac88
jmp 0xb237d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x620(%rbp), %rdi
callq 0xac88
jmp 0xb237d
movq -0x5d8(%rbp), %rsi
leaq -0x348(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x638(%rbp), %rdi
movl $0x3a, %edx
callq 0x7bbe0
jmp 0xb1f35
leaq -0x650(%rbp), %rdi
callq 0xad970
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0xb38(%rbp)
leaq -0x638(%rbp), %rdi
callq 0x3d940
movq -0xb38(%rbp), %rsi
movq %rax, %rdi
callq 0xac60
movq %rax, -0xb30(%rbp)
jmp 0xb1f70
movq -0xb30(%rbp), %rsi
leaq -0x650(%rbp), %rdi
callq 0xad990
jmp 0xb1f85
xorl %eax, %eax
movl %eax, %esi
leaq -0x638(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
movl $0x2, %esi
callq 0xac60
movq %rax, -0xb40(%rbp)
jmp 0xb1fab
movq -0xb40(%rbp), %rsi
leaq -0x650(%rbp), %rdi
callq 0xad990
jmp 0xb1fc0
movsbl 0xe78aa(%rip), %eax     # 0x199871
cmpl $0x62, %eax
jne 0xb20dc
movslq -0x5dc(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq %rax, -0xb50(%rbp)
leaq -0x348(%rbp), %rdi
movq %rdi, -0xb58(%rbp)
movl $0x3, %esi
callq 0x3d940
movq -0xb58(%rbp), %rdi
movq %rax, -0xb48(%rbp)
movl $0x4, %esi
callq 0x3d940
movq -0xb50(%rbp), %rdi
movq -0xb48(%rbp), %rsi
movq %rax, %rdx
leaq -0x650(%rbp), %rcx
movl $0x70, %r8d
callq 0xae2e0
jmp 0xb203f
movslq -0x5dc(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x3d940
movq %rax, -0xb68(%rbp)
leaq -0x348(%rbp), %rdi
movq %rdi, -0xb70(%rbp)
movl $0x3, %esi
callq 0x3d940
movq -0xb70(%rbp), %rdi
movq %rax, -0xb60(%rbp)
movl $0x4, %esi
callq 0x3d940
movq -0xb68(%rbp), %rdi
movq -0xb60(%rbp), %rsi
movq %rax, %rdx
leaq -0x650(%rbp), %rcx
movl $0x62, %r8d
callq 0xae2e0
jmp 0xb20ae
jmp 0xb214f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x650(%rbp), %rdi
callq 0xae570
leaq -0x638(%rbp), %rdi
callq 0x3dfa0
jmp 0xb237d
movslq -0x5dc(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x3d940
movq %rax, -0xb80(%rbp)
leaq -0x348(%rbp), %rdi
movq %rdi, -0xb88(%rbp)
movl $0x3, %esi
callq 0x3d940
movq -0xb88(%rbp), %rdi
movq %rax, -0xb78(%rbp)
movl $0x4, %esi
callq 0x3d940
movq -0xb80(%rbp), %rdi
movq -0xb78(%rbp), %rsi
movq %rax, %rdx
movsbl 0xe7732(%rip), %r8d     # 0x199871
leaq -0x650(%rbp), %rcx
callq 0xae2e0
jmp 0xb214d
jmp 0xb214f
leaq -0x650(%rbp), %rdi
callq 0xae570
leaq -0x638(%rbp), %rdi
callq 0x3dfa0
movq -0x5d8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5d8(%rbp)
jmp 0xb1d38
leaq -0x348(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa220
movq %rax, %rdi
callq 0xa970
cltq
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rsi
decq %rsi
leaq -0x110(%rbp), %rdi
callq 0xac60
movq %rax, -0xb90(%rbp)
jmp 0xb21c7
movq -0xb90(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0xb9c(%rbp)
leaq -0x348(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xac60
movq %rax, -0xb98(%rbp)
jmp 0xb21fd
movl -0xb9c(%rbp), %eax
movq -0xb98(%rbp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
je 0xb22e7
movq 0xe6dd4(%rip), %rdi     # 0x198ff0
leaq 0x8eb15(%rip), %rsi     # 0x140d38
callq 0xa5c0
movq %rax, -0xba8(%rbp)
jmp 0xb2231
movq -0x118(%rbp), %rsi
decq %rsi
leaq -0x110(%rbp), %rdi
callq 0xac60
movq %rax, -0xbb0(%rbp)
jmp 0xb2250
movq -0xba8(%rbp), %rdi
movq -0xbb0(%rbp), %rax
movsbl (%rax), %esi
callq 0xa6d0
movq %rax, -0xbb8(%rbp)
jmp 0xb226f
movq -0xbb8(%rbp), %rdi
leaq 0x8eacf(%rip), %rsi     # 0x140d4c
callq 0xa5c0
movq %rax, -0xbc0(%rbp)
jmp 0xb228b
leaq -0x348(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xac60
movq %rax, -0xbc8(%rbp)
jmp 0xb22b1
movq -0xbc0(%rbp), %rdi
movq -0xbc8(%rbp), %rax
movsbl (%rax), %esi
callq 0xa6d0
movq %rax, -0xbd0(%rbp)
jmp 0xb22d0
movq -0xbd0(%rbp), %rdi
movq 0xe6caa(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb22e5
jmp 0xb22e7
jmp 0xb22e9
movl -0x15c(%rbp), %eax
movl $0x2710, %ecx           # imm = 0x2710
xorl %edx, %edx
divl %ecx
cmpl $0x0, %edx
jne 0xb234b
movl -0x15c(%rbp), %esi
movq 0xe6ce6(%rip), %rdi     # 0x198ff0
callq 0xa7e0
movq %rax, -0xbd8(%rbp)
jmp 0xb2318
movq -0xbd8(%rbp), %rdi
leaq 0x8d9c9(%rip), %rsi     # 0x13fcef
callq 0xa5c0
movq %rax, -0xbe0(%rbp)
jmp 0xb2334
movq -0xbe0(%rbp), %rdi
movq 0xe6c46(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xb2349
jmp 0xb234b
leaq -0x5d0(%rbp), %rdi
callq 0xac88
leaq -0x5b0(%rbp), %rdi
callq 0xac88
leaq -0x360(%rbp), %rdi
callq 0x3dfa0
leaq -0x348(%rbp), %rdi
callq 0x3dfa0
jmp 0xb23b2
leaq -0x5d0(%rbp), %rdi
callq 0xac88
leaq -0x5b0(%rbp), %rdi
callq 0xac88
leaq -0x360(%rbp), %rdi
callq 0x3dfa0
leaq -0x348(%rbp), %rdi
callq 0x3dfa0
jmp 0xb24ed
jmp 0xb23b4
jmp 0xb08a9
leaq -0x668(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x45190
jmp 0xb23ce
movq -0x1d0(%rbp), %rsi
leaq -0x668(%rbp), %rdi
callq 0x6bf10
jmp 0xb23e3
leaq -0x668(%rbp), %rdi
callq 0x3ec50
leaq -0x1a8(%rbp), %rdi
callq 0x3fa90
leaq -0x220(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0xaf270
jmp 0xb2410
leaq 0xe8641(%rip), %rdi     # 0x19aa58
callq 0x591f0
leaq -0x2f8(%rbp), %rdi
callq 0x3ec50
leaq -0x2e0(%rbp), %rdi
callq 0x588b0
leaq -0x218(%rbp), %rdi
callq 0xac88
leaq -0x1f0(%rbp), %rdi
callq 0xac88
leaq -0x1c8(%rbp), %rdi
callq 0xac88
leaq -0x1a8(%rbp), %rdi
callq 0x3ec50
leaq -0x190(%rbp), %rdi
callq 0x3dfa0
leaq -0x178(%rbp), %rdi
callq 0x3dfa0
leaq -0x158(%rbp), %rdi
callq 0xac88
leaq -0x138(%rbp), %rdi
callq 0x3dfa0
leaq -0x110(%rbp), %rdi
callq 0xac88
leaq -0xe8(%rbp), %rdi
callq 0xac88
leaq -0xc8(%rbp), %rdi
callq 0xac88
leaq -0x50(%rbp), %rdi
callq 0xac88
leaq -0x30(%rbp), %rdi
callq 0xac88
xorl %eax, %eax
addq $0xbe0, %rsp            # imm = 0xBE0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x3ec50
leaq -0x2f8(%rbp), %rdi
callq 0x3ec50
leaq -0x2e0(%rbp), %rdi
callq 0x588b0
leaq -0x218(%rbp), %rdi
callq 0xac88
leaq -0x1f0(%rbp), %rdi
callq 0xac88
leaq -0x1c8(%rbp), %rdi
callq 0xac88
leaq -0x1a8(%rbp), %rdi
callq 0x3ec50
leaq -0x190(%rbp), %rdi
callq 0x3dfa0
leaq -0x178(%rbp), %rdi
callq 0x3dfa0
leaq -0x158(%rbp), %rdi
callq 0xac88
leaq -0x138(%rbp), %rdi
callq 0x3dfa0
leaq -0x110(%rbp), %rdi
callq 0xac88
leaq -0xe8(%rbp), %rdi
callq 0xac88
leaq -0xc8(%rbp), %rdi
callq 0xac88
leaq -0x50(%rbp), %rdi
callq 0xac88
leaq -0x30(%rbp), %rdi
callq 0xac88
movq -0x58(%rbp), %rdi
callq 0xab50
nopw %cs:(%rax,%rax)