// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/evo_codingStats_from_alignment.cpp
// Function: getCodingStats(int, char**)
int getCodingStats(int argc, char** argv) {
    parseCodingStatsOptions(argc, argv);
    std::vector<string> allAligmentFiles; string statsFileName; string pcaVectorsFileName;
    
    std::vector<std::vector<std::string>> genomeWide_Dxy;
    if (opt::genomeWide_DxyMatrixFile != "") {
        std::ifstream* genomeWide_DxyMatrixFile = new std::ifstream(opt::genomeWide_DxyMatrixFile);
        string line;
        while (getline(*genomeWide_DxyMatrixFile, line)) {
            std::vector<string> thisIndDxyVec = split(line, '\t');
            genomeWide_Dxy.push_back(thisIndDxyVec);
        }
    }
    
    pNsets* sets;
    if (opt::pNgroupsFile != "") {
        std::ifstream* pNgroupsF = new std::ifstream(opt::pNgroupsFile);
        sets = new pNsets(pNgroupsF);
    } else {
        sets = new pNsets();
    }
    if (sets->initialised == true) {
        std::cerr << "Sets are initialised" << std::endl;
    }
    
    std::cerr << "Calculating gene coding statistics" << std::endl;
    
    if (opt::alignmentFile != "") {
        allAligmentFiles.push_back(opt::alignmentFile);
        // look at suffix
        size_t suffixPos = opt::alignmentFile.find_last_of('.');
        if (suffixPos !=  std::string::npos) {
            if (opt::alignmentFile.substr(suffixPos) == ".fa" || opt::alignmentFile.substr(suffixPos) == ".fasta") {
                statsFileName = stripExtension(opt::alignmentFile) + "_stats.txt";
                std::cerr << "for the gene: " << stripExtension(opt::alignmentFile) << std::endl;
            } else {
                statsFileName = opt::alignmentFile + "_stats.txt";
                std::cerr << "for the gene: " << opt::alignmentFile << std::endl;
            }
        }
    } else {
        std::ifstream* alignmentList = new std::ifstream(opt::alignmentListFile.c_str());
        statsFileName = stripExtension(opt::alignmentListFile) + "_stats.txt";
        pcaVectorsFileName = stripExtension(opt::alignmentListFile) + "_pcaVectors.txt";
        std::cerr << "for the genes in: " << opt::alignmentListFile << std::endl;
        std::string line;
        while (getline(*alignmentList, line)) {
            allAligmentFiles.push_back(line);
        }
    } 
      
    std::ofstream* statsFile = new std::ofstream(statsFileName.c_str());
    std::ofstream* pcaVectorsFile = new std::ofstream(pcaVectorsFileName.c_str());
    if (opt::ploidy == 'd') {
        if (opt::pNgroupsFile != "") {
            std::cout << "transcript" << "\t" << "ntLengh" << "\t" << "pN" << "\t" << "pS" << "\t" << "hetN" << "\t" << "hetS" << "\t" << "pNstdErr" << "\t" << "pSstdErr" << "\t" << "pNpSstdErr" << "\t" << "pNpSstdErrAllComparisons" << "\t" << "withinSet1pN" << "\t" << "withinSet2pN" << "\t" << "withinSet3pN"<< "\t" << "pNset1vsSet2" << "\t" << "pNset1andSet2vsSet3" << "\t" << "pNwithinSet1andSet2" << std::endl;
            *statsFile << "transcript" << "\t" << "ntLengh" << "\t" << "pN" << "\t" << "pS" << "\t" << "hetN" << "\t" << "hetS" << "\t" << "pNstdErr" << "\t" << "pSstdErr" << "\t" << "pNpSstdErr" << "\t" << "pNpSstdErrAllComparisons" << "\t" << "withinSet1pN" << "\t" << "withinSet2pN" << "\t" << "withinSet3pN"<< "\t" << "pNset1vsSet2" << "\t" << "pNset1andSet2vsSet3" << "\t" << "pNwithinSet1andSet2" << std::endl;
        } else {
            std::cout << "transcript" << "\t" << "ntLengh" << "\t" << "pN" << "\t" << "pS" << "\t" << "hetN" << "\t" << "hetS" << "\t" << "pNstdErr" << "\t" << "pSstdErr" << "\t" << "pNpSstdErr" << "\t" << "pNpSstdErrAllComparisons" << std::endl;
            *statsFile << "transcript" << "\t" << "ntLengh" << "\t" << "pN" << "\t" << "pS" << "\t" << "hetN" << "\t" << "hetS" << "\t" << "pNstdErr" << "\t" << "pSstdErr" << "\t" << "pNpSstdErr" << "\t" << "pNpSstdErrAllComparisons" << std::endl;
        }
    } else {
        std::cout << "transcript" << "\t" << "ntLengh" << "\t" << "pN" << "\t" << "pS" << "\t" << "pNstdErr" << "\t" << "pSstdErr" << "\t" << "pNpSstdErr" << std::endl;
        *statsFile << "transcript" << "\t" << "ntLengh" << "\t" << "pN" << "\t" << "pS" << "\t" << "pNstdErr" << "\t" << "pSstdErr" << "\t" << "pNpSstdErr" << std::endl;
    }
    // Loop over the mutiple alignment files:
    for (std::vector<std::string>::size_type i = 0; i != allAligmentFiles.size(); i++) {
        std::ifstream* alignment = new std::ifstream(allAligmentFiles[i].c_str());
        std::vector<string> allSeqs; std::vector<string> allSeqsH2;
        std::string line; int lineNum = 1;
        while (getline(*alignment, line)) {
            if (lineNum % 2 == 1) assert(line[0] == '>');
            lineNum++;
            if (line[0] == '>') continue;
            if (opt::ploidy == 'd' && allSeqsH2.size() == (allSeqs.size() - 1))
                allSeqsH2.push_back(line);
            else
                allSeqs.push_back(line);
        } alignment->close();
        
        //std::cerr << "loaded seqs for: " << allAligmentFiles[i] << std::endl;
        //std::cerr << "allSeqs.size(): " << allSeqs.size() << std::endl;
        if (allSeqs.size() > 0) {
            assert(allSeqs[0].length() % 3 == 0); // The gene length must be divisible by three
            if (opt::ploidy == 'd')
                assert(allSeqs[0].length() == allSeqsH2[0].length());
            
            std::vector<string> statsThisGene; statsThisGene.push_back(allAligmentFiles[i]);
            if (opt::ploidy == 'd') {
                std::vector<std::vector<double> > combinedVectorForPCA;
                getStatsBothPhasedHaps(allSeqs, allSeqsH2, statsThisGene, combinedVectorForPCA, sets, opt::tStVratio, opt::nonCodingNull);
                std::cerr << "got stats for: " << allAligmentFiles[i] << std::endl;
                if (opt::pNgroupsFile != "") {
                    int ns1 = (int)sets->set1Loci.size(); int ns2 = (int)sets->set2Loci.size(); int ns3 = (int)sets->set3Loci.size();
                    statsThisGene.push_back(numToString(sets->withinSet1pN/(2*ns1*(ns1-1))));
                    statsThisGene.push_back(numToString(sets->withinSet2pN/(2*ns2*(ns2-1))));
                    statsThisGene.push_back(numToString(sets->withinSet3pN/(2*ns3*(ns3-1))));
                    statsThisGene.push_back(numToString(sets->set1vsSet2pN/(2*ns1*ns2)));
                    statsThisGene.push_back(numToString(sets->sets1and2vsSet3pN/(2*(ns1+ns2)*ns3)));
                    statsThisGene.push_back(numToString(sets->withinSet1andSet2pN/(2*(ns1+ns2)*(ns1+ns2-1))));
                    sets->withinSet1pN = 0;
                    sets->withinSet2pN = 0;
                    sets->withinSet3pN = 0;
                    sets->set1vsSet2pN = 0;
                    sets->sets1and2vsSet3pN = 0;
                    sets->withinSet1andSet2pN = 0;
                }
                print_vector(statsThisGene, std::cout);
                print_vector(statsThisGene, *statsFile);
                for (int i = 0; i < combinedVectorForPCA.size() - 1; i++) {
                    for (int j = i+1; j < combinedVectorForPCA.size(); j++) {
                        if (j == (combinedVectorForPCA.size() - 1) && i == (combinedVectorForPCA.size() - 2))
                            *pcaVectorsFile << combinedVectorForPCA[i][j] << std::endl;
                        else
                            *pcaVectorsFile << combinedVectorForPCA[i][j] << '\t';
                    }
                }
            } else {
                getStatsHaploidSeq(allSeqs,statsThisGene, opt::tStVratio);
                print_vector(statsThisGene, std::cout);
                print_vector(statsThisGene, *statsFile);
            }
        } else{
            std::cout << allAligmentFiles[i] << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << std::endl;
            *statsFile << allAligmentFiles[i] << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << "\t" << "NA" << std::endl;
        }
    }
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
callq 0x37495
xorpd %xmm0, %xmm0
movapd %xmm0, 0x70(%rsp)
andq $0x0, 0x80(%rsp)
leaq 0x120(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x158(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
movapd %xmm0, 0x130(%rsp)
andq $0x0, 0x140(%rsp)
leaq 0xa8226(%rip), %rdi     # 0xddfd0
leaq 0x6406e(%rip), %rsi     # 0x99e1f
callq 0x2ea9b
testb %al, %al
je 0x35e48
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r14
leaq 0xa81fe(%rip), %rsi     # 0xddfd0
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8760
leaq 0x20(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x10(%rsp), %rbx
leaq 0x30(%rsp), %r15
pushq $0x9
popq %rbp
leaq 0x130(%rsp), %r12
movq %r14, %rdi
movq %rbx, %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x35e3e
movq %r15, %rdi
movq %rbx, %rsi
movl %ebp, %edx
callq 0x40349
movq %r12, %rdi
movq %r15, %rsi
callq 0x29502
movq %r15, %rdi
callq 0x28a08
jmp 0x35e03
leaq 0x10(%rsp), %rdi
callq 0x8978
leaq 0xa8161(%rip), %rdi     # 0xddfb0
leaq 0x63fc9(%rip), %rsi     # 0x99e1f
callq 0x2ea9b
testb %al, %al
je 0x35e9f
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r14
leaq 0xa813d(%rip), %rsi     # 0xddfb0
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8760
movq %r14, 0x10(%rsp)
movl $0xe0, %edi
callq 0x8490
movq %rax, %r12
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x37770
jmp 0x35eb4
movl $0xe0, %edi
callq 0x8490
movq %rax, %r12
movq %rax, %rdi
callq 0x37b5c
cmpb $0x1, 0xd8(%r12)
jne 0x35eda
movq 0xa7122(%rip), %rdi     # 0xdcfe8
leaq 0x66703(%rip), %rsi     # 0x9c5d0
callq 0x8480
movq %rax, %rdi
callq 0x8230
movq 0xa7107(%rip), %rdi     # 0xdcfe8
leaq 0x666fd(%rip), %rsi     # 0x9c5e5
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0xa8074(%rip), %rdi     # 0xddf70
leaq 0x63f1c(%rip), %rsi     # 0x99e1f
callq 0x2ea9b
testb %al, %al
movq %r12, 0x8(%rsp)
je 0x35f80
leaq 0xa8058(%rip), %rsi     # 0xddf70
leaq 0x70(%rsp), %rdi
callq 0x2b0a4
leaq 0xa8047(%rip), %rdi     # 0xddf70
pushq $0x2e
popq %rsi
pushq $-0x1
popq %rdx
callq 0x8940
cmpq $-0x1, %rax
je 0x3618b
movq %rax, %rbx
leaq 0xa8028(%rip), %rsi     # 0xddf70
leaq 0x10(%rsp), %rdi
pushq $-0x1
popq %rcx
movq %rax, %rdx
callq 0x84b0
leaq 0x7332b(%rip), %rsi     # 0xa928a
leaq 0x10(%rsp), %rdi
callq 0x2193f
testb %al, %al
je 0x360aa
leaq 0x10(%rsp), %rdi
callq 0x8978
jmp 0x360f7
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r14
movq 0xa7ffc(%rip), %rsi     # 0xddf90
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8890
leaq 0xa7fea(%rip), %rsi     # 0xddf90
leaq 0x30(%rsp), %rdi
callq 0x404d7
leaq 0x66651(%rip), %rdx     # 0x9c608
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x28a29
leaq 0x110(%rsp), %rdi
leaq 0x10(%rsp), %rbx
movq %rbx, %rsi
callq 0x8550
movq %rbx, %rdi
callq 0x8978
leaq 0x30(%rsp), %rdi
callq 0x8978
leaq 0xa7f9c(%rip), %rsi     # 0xddf90
leaq 0x30(%rsp), %rdi
callq 0x404d7
leaq 0x6660e(%rip), %rdx     # 0x9c613
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x28a29
leaq 0x148(%rsp), %rdi
leaq 0x10(%rsp), %rbx
movq %rbx, %rsi
callq 0x8550
movq %rbx, %rdi
callq 0x8978
leaq 0x30(%rsp), %rdi
callq 0x8978
movq 0xa6fa6(%rip), %rdi     # 0xdcfe8
leaq 0x60607(%rip), %rsi     # 0x96650
callq 0x8480
leaq 0xa7f3b(%rip), %rsi     # 0xddf90
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
leaq 0x20(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x10(%rsp), %rbx
leaq 0x70(%rsp), %r15
movq %r14, %rdi
movq %rbx, %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x36181
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2b0a4
jmp 0x36080
leaq 0xa7ebf(%rip), %rsi     # 0xddf70
leaq 0x30(%rsp), %rdi
pushq $-0x1
popq %rcx
movq %rbx, %rdx
callq 0x84b0
leaq 0x64bd1(%rip), %rsi     # 0x9ac99
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x2193f
movl %eax, %ebp
movq %rbx, %rdi
callq 0x8978
leaq 0x10(%rsp), %rdi
callq 0x8978
testb %bpl, %bpl
movq 0x8(%rsp), %r12
je 0x3720a
leaq 0xa7e72(%rip), %rsi     # 0xddf70
leaq 0x30(%rsp), %rdi
callq 0x404d7
leaq 0x664f9(%rip), %rdx     # 0x9c608
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x28a29
leaq 0x110(%rsp), %rdi
leaq 0x10(%rsp), %rbx
movq %rbx, %rsi
callq 0x8550
movq %rbx, %rdi
callq 0x8978
leaq 0x30(%rsp), %rdi
callq 0x8978
movq 0xa6e9c(%rip), %rdi     # 0xdcfe8
leaq 0x63c4a(%rip), %rsi     # 0x99d9d
callq 0x8480
movq %rax, %rbx
leaq 0xa7e0e(%rip), %rsi     # 0xddf70
leaq 0x10(%rsp), %rdi
callq 0x404d7
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
leaq 0x10(%rsp), %rdi
callq 0x8978
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %r14
movq 0x110(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %r15
movq 0x148(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
cmpb $0x64, 0xa733e(%rip)    # 0xdd510
jne 0x3659a
leaq 0xa7dd1(%rip), %rdi     # 0xddfb0
leaq 0x63c39(%rip), %rsi     # 0x99e1f
callq 0x2ea9b
testb %al, %al
je 0x36725
movq 0xa6dbe(%rip), %rdi     # 0xdcfb8
leaq 0x66422(%rip), %rsi     # 0x9c623
callq 0x8480
leaq 0x63c11(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66412(%rip), %rsi     # 0x9c62e
movq %rax, %rdi
callq 0x8480
leaq 0x63bf3(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66440(%rip), %rsi     # 0x9c67a
movq %rax, %rdi
callq 0x8480
leaq 0x63bd5(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x663de(%rip), %rsi     # 0x9c636
movq %rax, %rdi
callq 0x8480
leaq 0x63bb7(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x663c3(%rip), %rsi     # 0x9c639
movq %rax, %rdi
callq 0x8480
leaq 0x63b99(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x663aa(%rip), %rsi     # 0x9c63e
movq %rax, %rdi
callq 0x8480
leaq 0x63b7b(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66391(%rip), %rsi     # 0x9c643
movq %rax, %rdi
callq 0x8480
leaq 0x63b5d(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x6637e(%rip), %rsi     # 0x9c64e
movq %rax, %rdi
callq 0x8480
leaq 0x63b3f(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x6635e(%rip), %rsi     # 0x9c64c
movq %rax, %rdi
callq 0x8480
leaq 0x63b21(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x6634b(%rip), %rsi     # 0x9c657
movq %rax, %rdi
callq 0x8480
leaq 0x63b03(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66346(%rip), %rsi     # 0x9c670
movq %rax, %rdi
callq 0x8480
leaq 0x63ae5(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66335(%rip), %rsi     # 0x9c67d
movq %rax, %rdi
callq 0x8480
leaq 0x63ac7(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66324(%rip), %rsi     # 0x9c68a
movq %rax, %rdi
callq 0x8480
leaq 0x63aa9(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66313(%rip), %rsi     # 0x9c697
movq %rax, %rdi
callq 0x8480
leaq 0x63a8b(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66302(%rip), %rsi     # 0x9c6a4
movq %rax, %rdi
callq 0x8480
leaq 0x63a6d(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x662f8(%rip), %rbx     # 0x9c6b8
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x66249(%rip), %rsi     # 0x9c623
movq %r14, %rdi
callq 0x8480
leaq 0x63a35(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66236(%rip), %rsi     # 0x9c62e
movq %rax, %rdi
callq 0x8480
leaq 0x63a17(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66264(%rip), %rsi     # 0x9c67a
movq %rax, %rdi
callq 0x8480
leaq 0x639f9(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66202(%rip), %rsi     # 0x9c636
movq %rax, %rdi
callq 0x8480
leaq 0x639db(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x661e7(%rip), %rsi     # 0x9c639
movq %rax, %rdi
callq 0x8480
leaq 0x639bd(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x661ce(%rip), %rsi     # 0x9c63e
movq %rax, %rdi
callq 0x8480
leaq 0x6399f(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x661b5(%rip), %rsi     # 0x9c643
movq %rax, %rdi
callq 0x8480
leaq 0x63981(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x661a2(%rip), %rsi     # 0x9c64e
movq %rax, %rdi
callq 0x8480
leaq 0x63963(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66182(%rip), %rsi     # 0x9c64c
movq %rax, %rdi
callq 0x8480
leaq 0x63945(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x6616f(%rip), %rsi     # 0x9c657
movq %rax, %rdi
callq 0x8480
leaq 0x63927(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x6616a(%rip), %rsi     # 0x9c670
movq %rax, %rdi
callq 0x8480
leaq 0x63909(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66159(%rip), %rsi     # 0x9c67d
movq %rax, %rdi
callq 0x8480
leaq 0x638eb(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66148(%rip), %rsi     # 0x9c68a
movq %rax, %rdi
callq 0x8480
leaq 0x638cd(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66137(%rip), %rsi     # 0x9c697
movq %rax, %rdi
callq 0x8480
leaq 0x638af(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66126(%rip), %rsi     # 0x9c6a4
movq %rax, %rdi
callq 0x8480
leaq 0x63891(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
jmp 0x3695f
movq 0xa6a17(%rip), %rdi     # 0xdcfb8
leaq 0x6607b(%rip), %rsi     # 0x9c623
callq 0x8480
leaq 0x6386a(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x6606b(%rip), %rsi     # 0x9c62e
movq %rax, %rdi
callq 0x8480
leaq 0x6384c(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66099(%rip), %rsi     # 0x9c67a
movq %rax, %rdi
callq 0x8480
leaq 0x6382e(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66037(%rip), %rsi     # 0x9c636
movq %rax, %rdi
callq 0x8480
leaq 0x63810(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66026(%rip), %rsi     # 0x9c643
movq %rax, %rdi
callq 0x8480
leaq 0x637f2(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x66013(%rip), %rsi     # 0x9c64e
movq %rax, %rdi
callq 0x8480
leaq 0x637d4(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65ff3(%rip), %rbx     # 0x9c64c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x65fb0(%rip), %rsi     # 0x9c623
movq %r14, %rdi
callq 0x8480
leaq 0x6379c(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65f9d(%rip), %rsi     # 0x9c62e
movq %rax, %rdi
callq 0x8480
leaq 0x6377e(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65fcb(%rip), %rsi     # 0x9c67a
movq %rax, %rdi
callq 0x8480
leaq 0x63760(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65f69(%rip), %rsi     # 0x9c636
movq %rax, %rdi
callq 0x8480
leaq 0x63742(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65f58(%rip), %rsi     # 0x9c643
movq %rax, %rdi
callq 0x8480
leaq 0x63724(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65f45(%rip), %rsi     # 0x9c64e
movq %rax, %rdi
callq 0x8480
leaq 0x63706(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
jmp 0x3695f
movq 0xa688c(%rip), %rdi     # 0xdcfb8
leaq 0x65ef0(%rip), %rsi     # 0x9c623
callq 0x8480
leaq 0x636df(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65ee0(%rip), %rsi     # 0x9c62e
movq %rax, %rdi
callq 0x8480
leaq 0x636c1(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65f0e(%rip), %rsi     # 0x9c67a
movq %rax, %rdi
callq 0x8480
leaq 0x636a3(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65eac(%rip), %rsi     # 0x9c636
movq %rax, %rdi
callq 0x8480
leaq 0x63685(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65e91(%rip), %rsi     # 0x9c639
movq %rax, %rdi
callq 0x8480
leaq 0x63667(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65e78(%rip), %rsi     # 0x9c63e
movq %rax, %rdi
callq 0x8480
leaq 0x63649(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65e5f(%rip), %rsi     # 0x9c643
movq %rax, %rdi
callq 0x8480
leaq 0x6362b(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65e4c(%rip), %rsi     # 0x9c64e
movq %rax, %rdi
callq 0x8480
leaq 0x6360d(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65e2c(%rip), %rsi     # 0x9c64c
movq %rax, %rdi
callq 0x8480
leaq 0x635ef(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65e19(%rip), %rbx     # 0x9c657
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x65dcb(%rip), %rsi     # 0x9c623
movq %r14, %rdi
callq 0x8480
leaq 0x635b7(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65db8(%rip), %rsi     # 0x9c62e
movq %rax, %rdi
callq 0x8480
leaq 0x63599(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65de6(%rip), %rsi     # 0x9c67a
movq %rax, %rdi
callq 0x8480
leaq 0x6357b(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65d84(%rip), %rsi     # 0x9c636
movq %rax, %rdi
callq 0x8480
leaq 0x6355d(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65d69(%rip), %rsi     # 0x9c639
movq %rax, %rdi
callq 0x8480
leaq 0x6353f(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65d50(%rip), %rsi     # 0x9c63e
movq %rax, %rdi
callq 0x8480
leaq 0x63521(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65d37(%rip), %rsi     # 0x9c643
movq %rax, %rdi
callq 0x8480
leaq 0x63503(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65d24(%rip), %rsi     # 0x9c64e
movq %rax, %rdi
callq 0x8480
leaq 0x634e5(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
leaq 0x65d04(%rip), %rsi     # 0x9c64c
movq %rax, %rdi
callq 0x8480
leaq 0x634c7(%rip), %rsi     # 0x99e1e
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8480
movq %rax, %rdi
callq 0x8230
movq %r14, 0x90(%rsp)
leaq 0xa8(%r12), %rax
movq %rax, 0x100(%rsp)
xorl %ecx, %ecx
pushq $0x18
popq %rbp
movq 0x70(%rsp), %r14
movq 0x78(%rsp), %rax
subq %r14, %rax
sarq $0x5, %rax
movq %rcx, 0x98(%rsp)
cmpq %rax, %rcx
je 0x371c5
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r12
movq 0x98(%rsp), %rbx
shlq $0x5, %rbx
movq (%r14,%rbx), %rsi
movq %rax, %rdi
pushq $0x8
popq %rdx
callq 0x8890
andq $0x0, 0xb0(%rsp)
andq $0x0, 0xf0(%rsp)
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
andq $0x0, 0x18(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xa0(%rsp)
movapd %xmm0, 0xe0(%rsp)
movb $0x0, 0x20(%rsp)
pushq $0x1
popq %r13
movq 0x98(%rsp), %r14
movq %r12, %rdi
leaq 0x10(%rsp), %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x36aba
movq 0x10(%rsp), %rax
movb (%rax), %al
testb $0x1, %r13b
jne 0x36aaa
orl $0x1, %r13d
cmpb $0x3e, %al
je 0x36a22
cmpb $0x64, 0xa6ab7(%rip)    # 0xdd510
jne 0x36a93
movq 0xe8(%rsp), %rax
subq 0xe0(%rsp), %rax
sarq $0x5, %rax
movq 0xa8(%rsp), %rcx
subq 0xa0(%rsp), %rcx
sarq $0x5, %rcx
decq %rcx
leaq 0xe0(%rsp), %rdi
cmpq %rcx, %rax
je 0x36a9b
leaq 0xa0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2b0a4
jmp 0x36a22
cmpb $0x3e, %al
jne 0x3726e
incl %r13d
jmp 0x36a22
movq %r12, %rdi
callq 0x80e0
leaq 0x1b0(%rsp), %r13
movq 0xa0(%rsp), %rax
cmpq %rax, 0xa8(%rsp)
je 0x36e92
movq 0x8(%rax), %rcx
movq %rcx, %rax
xorl %edx, %edx
pushq $0x3
popq %rsi
divq %rsi
testq %rdx, %rdx
jne 0x3728d
cmpb $0x64, 0xa6a11(%rip)    # 0xdd510
jne 0x36b13
movq 0xe0(%rsp), %rax
cmpq 0x8(%rax), %rcx
jne 0x372ac
andq $0x0, 0x60(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x50(%rsp)
movq 0x70(%rsp), %rsi
addq %rbx, %rsi
leaq 0x50(%rsp), %rdi
callq 0x2b0a4
cmpb $0x64, 0xa69d4(%rip)    # 0xdd510
jne 0x370ec
andq $0x0, 0xd0(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xc0(%rsp)
movsd 0xa69b8(%rip), %xmm0    # 0xdd518
movzbl 0xa7488(%rip), %r9d     # 0xddff0
leaq 0xa0(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
leaq 0x50(%rsp), %rdx
leaq 0xc0(%rsp), %rcx
movq 0x8(%rsp), %r8
callq 0x5828c
leaq 0x30(%rsp), %r14
movq 0xa644d(%rip), %rdi     # 0xdcfe8
leaq 0x65bb8(%rip), %rsi     # 0x9c75a
callq 0x8480
addq 0x70(%rsp), %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8430
movq %rax, %rdi
callq 0x8230
leaq 0xa73ea(%rip), %rdi     # 0xddfb0
leaq 0x63252(%rip), %rsi     # 0x99e1f
callq 0x2ea9b
testb %al, %al
je 0x36d85
movq 0x8(%rsp), %rax
movl 0x18(%rax), %edx
movl 0x50(%rax), %ebx
movl 0x88(%rax), %ecx
movq %rcx, 0xf8(%rsp)
movsd 0xa8(%rax), %xmm0
leal (%rdx,%rdx), %r12d
movq %rdx, 0x108(%rsp)
leal -0x1(%rdx), %eax
imull %r12d, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x37bd4
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x3490e
movq %r14, %rdi
callq 0x8978
movq 0x8(%rsp), %rax
movsd 0xb0(%rax), %xmm0
leal -0x1(%rbx), %eax
imull %ebx, %eax
addl %eax, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x37bd4
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x3490e
movq %r14, %rdi
callq 0x8978
movq 0x8(%rsp), %rax
movsd 0xb8(%rax), %xmm0
movq 0xf8(%rsp), %rcx
leal -0x1(%rcx), %eax
imull %ecx, %eax
addl %eax, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x37bd4
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x3490e
movq %r14, %rdi
callq 0x8978
movq 0x8(%rsp), %rax
movsd 0xc8(%rax), %xmm0
imull %ebx, %r12d
cvtsi2sd %r12d, %xmm1
divsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x37bd4
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x3490e
movq %r14, %rdi
callq 0x8978
movq 0x8(%rsp), %rax
movsd 0xd0(%rax), %xmm0
addl 0x108(%rsp), %ebx
movq %r14, %r12
leal (%rbx,%rbx), %r14d
movq 0xf8(%rsp), %rax
imull %r14d, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movq %r12, %rdi
callq 0x37bd4
leaq 0x50(%rsp), %rdi
movq %r12, %rsi
callq 0x3490e
movq %r12, %rdi
callq 0x8978
movq 0x8(%rsp), %rax
movsd 0xc0(%rax), %xmm0
decl %ebx
imull %ebx, %r14d
cvtsi2sd %r14d, %xmm1
divsd %xmm1, %xmm0
movq %r12, %rdi
callq 0x37bd4
leaq 0x50(%rsp), %rdi
movq %r12, %rsi
callq 0x3490e
movq %r12, %rdi
callq 0x8978
movq 0x100(%rsp), %rax
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
movupd %xmm0, (%rax)
movq %r13, %rdi
leaq 0x50(%rsp), %rsi
callq 0x297dc
movq %r13, %rdi
movq 0xa621c(%rip), %rsi     # 0xdcfb8
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x2ea24
movq %r13, %rdi
callq 0x28a08
leaq 0x198(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x297dc
leaq 0x198(%rsp), %rbx
movq %rbx, %rdi
movq 0x90(%rsp), %rsi
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x2ea24
movq %rbx, %rdi
callq 0x28a08
movq 0xc0(%rsp), %rcx
movq 0xc8(%rsp), %rsi
xorl %r12d, %r12d
pushq $0x1
popq %r14
movq %rsi, %rax
subq %rcx, %rax
cqto
idivq %rbp
decq %rax
cmpq %r12, %rax
jbe 0x37177
leaq 0x1(%r12), %r13
movq %r14, %rbx
movq %rsi, %rax
subq %rcx, %rax
cqto
idivq %rbp
cmpq %rbx, %rax
jbe 0x36e87
leaq -0x1(%rax), %rdx
xorq %rbx, %rdx
addq $-0x2, %rax
xorq %r12, %rax
imulq $0x18, %r12, %rsi
movq (%rcx,%rsi), %rcx
movsd (%rcx,%rbx,8), %xmm0
orq %rdx, %rax
jne 0x36e5f
movq %r15, %rdi
callq 0x8750
movq %rax, %rdi
callq 0x8230
jmp 0x36e72
movq %r15, %rdi
callq 0x8750
movq %rax, %rdi
pushq $0x9
popq %rsi
callq 0x8510
incq %rbx
movq 0xc0(%rsp), %rcx
movq 0xc8(%rsp), %rsi
jmp 0x36e1d
incq %r14
movq %r13, %r12
jmp 0x36dfe
movq 0x70(%rsp), %rsi
addq %rbx, %rsi
movq 0xa6117(%rip), %rdi     # 0xdcfb8
callq 0x8430
movq %rax, %rdi
leaq 0x62f6e(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b885(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62f50(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b867(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62f32(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b849(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62f14(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b82b(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62ef6(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b80d(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62ed8(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b7ef(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62eba(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b7d1(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62e9c(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b7b3(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62e7e(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b795(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
callq 0x8230
addq 0x70(%rsp), %rbx
movq 0x90(%rsp), %rdi
movq %rbx, %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x62e43(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b75a(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62e25(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b73c(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62e07(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b71e(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62de9(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b700(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62dcb(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b6e2(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62dad(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b6c4(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62d8f(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b6a6(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62d71(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b688(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
leaq 0x62d53(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
leaq 0x5b66a(%rip), %rsi     # 0x92744
callq 0x8480
movq %rax, %rdi
callq 0x8230
jmp 0x37196
movsd 0xa6424(%rip), %xmm0    # 0xdd518
leaq 0xa0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x57a1e
leaq 0x180(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x297dc
leaq 0x180(%rsp), %rbx
movq %rbx, %rdi
movq 0xa5e8e(%rip), %rsi     # 0xdcfb8
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x2ea24
movq %rbx, %rdi
callq 0x28a08
leaq 0x168(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x297dc
leaq 0x168(%rsp), %rbx
movq %rbx, %rdi
movq 0x90(%rsp), %rsi
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
callq 0x2ea24
movq %rbx, %rdi
callq 0x28a08
jmp 0x3718c
leaq 0xc0(%rsp), %rdi
callq 0x37c74
movq 0x98(%rsp), %r14
leaq 0x50(%rsp), %rdi
callq 0x28a08
leaq 0x10(%rsp), %rdi
callq 0x8978
leaq 0xe0(%rsp), %rdi
callq 0x28a08
leaq 0xa0(%rsp), %rdi
callq 0x28a08
incq %r14
movq %r14, %rcx
jmp 0x3698f
leaq 0x130(%rsp), %rdi
callq 0x29054
leaq 0x148(%rsp), %rdi
callq 0x8978
leaq 0x110(%rsp), %rdi
callq 0x8978
leaq 0x70(%rsp), %rdi
callq 0x28a08
xorl %eax, %eax
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xa6d5f(%rip), %rsi     # 0xddf70
leaq 0x653f0(%rip), %rdx     # 0x9c608
leaq 0x10(%rsp), %rdi
callq 0x28806
leaq 0x110(%rsp), %rdi
leaq 0x10(%rsp), %rbx
movq %rbx, %rsi
callq 0x8550
movq %rbx, %rdi
callq 0x8978
movq 0xa5da2(%rip), %rdi     # 0xdcfe8
leaq 0x62b50(%rip), %rsi     # 0x99d9d
callq 0x8480
leaq 0xa6d17(%rip), %rsi     # 0xddf70
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
jmp 0x3618b
leaq 0x5f3ee(%rip), %rdi     # 0x96663
leaq 0x65450(%rip), %rsi     # 0x9c6cc
leaq 0x6546c(%rip), %rcx     # 0x9c6ef
movl $0x87, %edx
callq 0x82f0
leaq 0x6547c(%rip), %rdi     # 0x9c710
leaq 0x65431(%rip), %rsi     # 0x9c6cc
leaq 0x6544d(%rip), %rcx     # 0x9c6ef
movl $0x93, %edx
callq 0x82f0
leaq 0x6547a(%rip), %rdi     # 0x9c72d
leaq 0x65412(%rip), %rsi     # 0x9c6cc
leaq 0x6542e(%rip), %rcx     # 0x9c6ef
movl $0x95, %edx
callq 0x82f0
jmp 0x3740b
jmp 0x373fc
jmp 0x3740b
jmp 0x372f7
jmp 0x3740b
jmp 0x3740b
jmp 0x373fc
jmp 0x3740b
jmp 0x372f7
jmp 0x3740b
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x37404
jmp 0x3740b
jmp 0x3731a
movq %rax, %rbx
movl $0xe0, %esi
jmp 0x373f2
jmp 0x3731a
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
jmp 0x37341
jmp 0x3740b
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq %r15, %rdi
jmp 0x373f5
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq %r14, %rdi
jmp 0x373f5
jmp 0x3740b
jmp 0x3740b
jmp 0x3740b
jmp 0x3740b
jmp 0x37380
jmp 0x3741e
jmp 0x37380
jmp 0x3741e
jmp 0x37380
jmp 0x3741e
jmp 0x37380
jmp 0x3741e
jmp 0x37380
jmp 0x3741e
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x8978
jmp 0x37421
jmp 0x3741e
movq %rax, %rbx
leaq 0x198(%rsp), %rdi
jmp 0x373af
movq %rax, %rbx
leaq 0x1b0(%rsp), %rdi
callq 0x28a08
jmp 0x37421
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
jmp 0x373ce
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0x28a08
jmp 0x3742e
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x28a08
jmp 0x373ff
jmp 0x373fc
jmp 0x373fc
jmp 0x3740b
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r12, %rdi
callq 0x84a0
jmp 0x3745c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x8978
jmp 0x3745c
movq %rax, %rbx
jmp 0x3745c
movq %rax, %rbx
jmp 0x3742e
jmp 0x3741e
jmp 0x37419
movq %rax, %rbx
jmp 0x37438
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x37c74
leaq 0x50(%rsp), %rdi
callq 0x28a08
leaq 0x10(%rsp), %rdi
callq 0x8978
leaq 0xe0(%rsp), %rdi
callq 0x28a08
leaq 0xa0(%rsp), %rdi
callq 0x28a08
leaq 0x130(%rsp), %rdi
callq 0x29054
leaq 0x148(%rsp), %rdi
callq 0x8978
leaq 0x110(%rsp), %rdi
callq 0x8978
leaq 0x70(%rsp), %rdi
callq 0x28a08
movq %rbx, %rdi
callq 0x8870