// File: /workspace/github_cpp_makefile_star2_O3/schneebergerlab[P]GameteBinning/asPollinator_1.0.cpp
// Function: correct_haplotype(std::map<int, POLLEN, std::less<int>, std::allocator<std::pair<int const, POLLEN>>>, std::map<int, POLLEN, std::less<int>, std::allocator<std::pair<int const, POLLEN>>>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool correct_haplotype(  map<int, POLLEN>                   pollens,
                         map<int, POLLEN>*                  pollens_corrected, 
                         string                             ctgid)
{
    // this is stage 1 correction: using pollen individuals to correct assembled m/paternal haplotypes -used
    /*
       for one contig:
       
       // parents
       AACTGATCTGTGTTCCAATAGCACACGGGGAGCACGGATTTGTTCGGACGTATCGAATGCA	0_m::matGT initial backbone
       GTGCATCGCACACCTTGGCGATGGTTCAAATATGTTAGCGATACTAAGTACGCTCTCGCAC	0_p::patGT initial backbone
       // pollens:
       NNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNTNNNNNNNNNNNNNNNNNNNNNGCCC	1_x
       NTGNNNNNNNCNNNNNNNCGANGGNNCNAATATGTTAGCGATNCTAAGTACGCTCTCGCAC	2_x
       NTGCATCNNNCNNNNNNNNNNNNNNNNNNNNNNNNTNNNNNNNNNNNNNNNNNNNNNNNCC	3_x
       GTGCATCGCACUCCTTGGCGATGGTTCANATNNGTTNNNNNNNNNNNNNNNNNNNNNNNNN	4_x
       NNNNNNNNNNNNNTCNAANNNCNNNNNNNNNNNANGNNNNNNNNNNNNNNNNNNNNNTGCA	5_x
       UUUCUUUUUUUUUCUUUUUUUUGUTTCAUAUUUGTUUUUUATACTAAGTACGCUUTCGCAC	6_x
       GUUCATCUUUCUUUUTGUUUUUUUUTUUUUUUUUUUUUUUUUUUUUUUUUUUUUGUUUUUU	7_x
       NNNNNNNNNNCGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGNNN	8_x
       UANTGNNCTNNNNNNCNANNGNNNNNNAANNNNNCGGATTUGTNCGGACGNNTCGAAGUUU	9_x
       ANNNGATCTGUGTNNNNNTAGNACACNGNGNGCANGGATNTNNNCGNNNNNNNNNNNNNNN	10_x
       GTGCATCGCACUCCTTGGCGAUGGTTCAAATATGTTAGCGATACTAAGTACGCTCTCGCAC	11_x
       GUGCATCGCACUCCTTGGCGATGGTTCAAATATGTTAGCGATACTAAGTACGCTCTCGCUC	12_x
       GTGCATCGCACACCTTGGUUUTGGTTCUAAUUTGUTAGCGATACTAAGTACGCTCTCGCUC	13_x
       GNGCATCGCANACCTTGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUC	14_x
       NNNNNNNNNGTGTTCCAATAGCACACNGGGAGCANGGATTTGNNNNNNNNNNNNNNNNNNN	15_x    
       
       struct POLLEN
       {
           string poSeq;   // seq at markers for pollen haplotype
           string poAll;   // over all, can be determined as 'M', 'P', 'MP', 'PM', or 'N'
           string poPat;   // string like MMMMMMppMMMMMMMpMMMMMMMM: indicating parental genotypes
           vector<unsigned long> mkrpos; // position of markers for this contig
       };
    */
    // this is to correct maternal and paternal haplotypes, or phasing
    string matGT = pollens[0].poSeq; // initial maternal backbone
    string patGT = pollens[0].poAll; // initial paternal backbone
    //
    vector<unsigned long> mkrpostmp = pollens[0].mkrpos;
    // update result
    if(matGT.size() == 1 && patGT.size() == 1)
    {
        (*pollens_corrected)          = pollens;    
        (*pollens_corrected)[0].poSeq = matGT; // 1 bp maternal backbone requiring no correction
        (*pollens_corrected)[0].poAll = patGT; // 1 bp paternal backbone requiring no correction  
        return true;    
    }
    //
    string matGT_corrected = "";
    string patGT_corrected = "";
    // 
    // initialize dimers at each pair of adjacent snps
    map<unsigned long, map<string, int> > dimers;    // <position, <2snp-dimer, count> >
    //
    for(unsigned long ii = 0; ii < matGT.size() - 1; ii ++)
    {
        // get     4 alleles from 2 snps: e.g., snp 1: (A, G) and snp 2: (A, T)
        string pos1allele1 = matGT.substr(ii+0, 1);  // A
        string pos1allele2 = patGT.substr(ii+0, 1);  // G
        string pos2allele1 = matGT.substr(ii+1, 1);  // A
        string pos2allele2 = patGT.substr(ii+1, 1);  // T
        // combine 4 alleles from 2 snps
        map<string, int> dimers_at_pos;                
        string dimertmp = "";
        // dimer 1
        dimertmp = pos1allele1 + pos2allele1;        // AA
        dimers_at_pos.insert(std::pair<string, int>(dimertmp, 0));        
        // dimer 2
        dimertmp = pos1allele1 + pos2allele2;        // AT
        dimers_at_pos.insert(std::pair<string, int>(dimertmp, 0));             
        // dimer 3
        dimertmp = pos1allele2 + pos2allele1;        // GA
        dimers_at_pos.insert(std::pair<string, int>(dimertmp, 0));             
        // dimer 4
        dimertmp = pos1allele2 + pos2allele2;        // GT
        dimers_at_pos.insert(std::pair<string, int>(dimertmp, 0));             
        // collect 4 dimers at postion ii 
        dimers.insert(std::pair<unsigned long, map<string, int> >(ii, dimers_at_pos));
    }
    //
    map<int, POLLEN>::iterator ppitr;
    map<int, POLLEN>::iterator ppitr_end;
    ppitr     = pollens.begin();
    ppitr_end = pollens.end();
    while(ppitr != ppitr_end)
    {
        POLLEN ptmp     = (*ppitr).second;
        // get current pollen sequence at markers along contigs
        string pollenGT = ptmp.poSeq;
        // check consistency in sequence length
        if (matGT.size() != patGT.size()    || 
            matGT.size() != pollenGT.size() ||
            patGT.size() != pollenGT.size() ) 
        {
            cout << "   Error: sequences of pollen and haplotype initials are with different lengths. " << endl;
            return false;
        }
        // vote each initialized dimmer according parental snps
        map<unsigned long, map<string, int> >::iterator positr; 
        for(unsigned long jj = 0; jj < pollenGT.size() - 1; jj ++)
        {
            // get a dimer along current pollen sequence
            string dimertmp = pollenGT.substr(jj, 2);
            // find  initialized dimmers according to parental un-phased snps at the current position
            positr = dimers.find(jj);
            assert(positr != dimers.end());            
            // score initialized dimmers according to parental un-phased snps at the current position
            map<string, int>::iterator dimeritr;
            dimeritr = ((*positr).second).find(dimertmp);
            if(dimeritr != ((*positr).second).end())
            {
                (*dimeritr).second += 1;
            }
        }
        // next pollen
        ppitr ++;
    }
    // get corrected haplotypes
    map<unsigned long, map<string, int> >::iterator positr;
    map<unsigned long, map<string, int> >::iterator positr_end;
    positr         = dimers.begin();
    positr_end     = dimers.end();
    string lastMat = "";
    string lastPat = "";
    while(positr != positr_end)
    {
        // marker positioning: this dimmer <= this_paired_mkr_pos + (this_paired_mkr_pos+1)
        unsigned long this_paired_mkr_pos = (*positr).first;
        //
        map<string, int> dimers_at_pos;
        dimers_at_pos = (*positr).second;
        //
        map<string, int>::iterator ditr;
        map<string, int>::iterator ditr_end;
        // find mostly voted genotype
        ditr     = dimers_at_pos.begin();
        ditr_end = dimers_at_pos.end();
        string maxDimer     = "";
        int    maxCnt       = 0;
        string left_allele  = "";
        string right_allele = "";
        while(ditr != ditr_end)
        {
            string this_dimer = (*ditr).first; 
            //           
            string this_left  = this_dimer.substr(0, 1);
            if(left_allele.find(this_left) == std::string::npos)
            {
                left_allele += this_left;
            }
            string this_right  = this_dimer.substr(1, 1);
            if(right_allele.find(this_right) == std::string::npos)
            {
                right_allele += this_right;
            }
            //            
            if( (*ditr).second > maxCnt)
            {
                maxDimer = (*ditr).first;
                maxCnt   = (*ditr).second;
            }
            ditr ++;
        }
        if(maxCnt == 0) // not voted cases: there might be a few; randomly set the first as best
        {
            maxDimer = (*(dimers_at_pos.begin() ) ).first;
            maxCnt   = (*(dimers_at_pos.begin() ) ).second;            
        }
        // find complemented genotype to the genotype with maximum vote
        string max_left  = maxDimer.substr(0, 1);        
        string max_right = maxDimer.substr(1, 1);
        string cmp_left  = ""; // complemented left  allele
        string cmp_right = ""; // complemented right allele
        for (int kk = 0; kk < 2; kk ++)
        {
            if(left_allele.substr(kk, 1).compare(max_left) != 0) 
            {
                cmp_left = left_allele.substr(kk, 1);
            }
            if(right_allele.substr(kk, 1).compare(max_right) != 0) 
            {
                cmp_right = right_allele.substr(kk, 1);
            }
        }
        string cmpDimer = cmp_left + cmp_right;
        assert( dimers_at_pos.find(cmpDimer) != dimers_at_pos.end() );
        int    cmpCnt   = dimers_at_pos[cmpDimer];
        //
        // check the other possibility: total support for both combination of alleles.
        string dimer3 = cmpDimer.substr(0, 1) + maxDimer.substr(1, 1);
        string dimer4 = maxDimer.substr(0, 1) + cmpDimer.substr(1, 1);  
        assert(dimers_at_pos.find(dimer3) != dimers_at_pos.end());
        assert(dimers_at_pos.find(dimer4) != dimers_at_pos.end());
        int    cnt3   = dimers_at_pos[dimer3];
        int    cnt4   = dimers_at_pos[dimer4];
        bool mcorrected=false;
        if(cnt3+cnt4  > cmpCnt + maxCnt)
        {
            cmpCnt   = cnt3;
            cmpDimer = dimer3;
            maxCnt   = cnt4;
            maxDimer = dimer4;
            if(cmpCnt > maxCnt)
            {
                int tmpcnt    = cmpCnt;
                cmpCnt        = maxCnt;
                maxCnt        = tmpcnt;
                //
                string tmpstr = cmpDimer;
                cmpDimer      = maxDimer;
                maxDimer      = tmpstr;
                //
                mcorrected    = true;
            }
        }        
        //        
        // out mostly voted genotype
        if(lastMat.size () == 0)
        {
            cout << "\t" << maxDimer << ":" << maxCnt << "\t"
                 <<         cmpDimer << ":" << cmpCnt << "\tother\t";
            // collect phased haplotypes                 
            matGT_corrected = maxDimer;
            patGT_corrected = cmpDimer;  
            // update
           lastMat = maxDimer;
           lastPat = cmpDimer;                             
        }else
        {
            string lastMatEnd = lastMat.substr(1, 1); // end of last dimmer for maternal haplotype
            string lastPatEnd = lastPat.substr(1, 1); // end of last dimmer for paternal haplotype
            string thisSta1   = maxDimer.substr(0, 1);// sta of this dimmer with maximum vote 
            string thisSta2   = cmpDimer.substr(0, 1);// sta of this dimmer complemented maximum vote
            //
            if(lastMatEnd.compare(thisSta1) == 0 && 
               lastPatEnd.compare(thisSta2) == 0)
            {
                cout << "\t" << maxDimer << ":" << maxCnt << "\t"
                     <<         cmpDimer << ":" << cmpCnt << "\tother\t";  
                // collect phased haplotypes                 
                matGT_corrected += maxDimer.substr(1,1);
                patGT_corrected += cmpDimer.substr(1,1);    
                // update
                lastMat = maxDimer;
                lastPat = cmpDimer;                                                        
            }else
            {
                cout << "\t" << cmpDimer << ":" << cmpCnt << "\t"
                     <<         maxDimer << ":" << maxCnt << "\tother\t";    
                // collect phased haplotypes                 
                matGT_corrected += cmpDimer.substr(1,1);
                patGT_corrected += maxDimer.substr(1,1); 
                // update
                lastMat = cmpDimer;
                lastPat = maxDimer;                                                            
            } 
                              
        } 
        // check 20191025
        map<string, int>::iterator oditr;
        map<string, int>::iterator oditr_end;    
        oditr     = dimers_at_pos.begin();
        oditr_end = dimers_at_pos.end();       
        while(oditr != oditr_end)
        {
            string this_dimer = (*oditr).first; 
            if(this_dimer.compare(maxDimer)!=0 && this_dimer.compare(cmpDimer)!=0)
            {
                cout << this_dimer << ":" << (*oditr).second << "\t";
            }
            oditr ++;
        }
        // record paired-marker positioning
        cout << ctgid << "\t" << mkrpostmp[this_paired_mkr_pos]   << "\t"
             <<                  mkrpostmp[this_paired_mkr_pos+1] << "\tmkr_fil\t";
        //               
        if(mcorrected)
        {
            cout << "\tcorrected";
        }  
        cout << endl;               
        // next position
        positr ++;
    }
    //
    cout << "   Check: initial   haplotypes: " << endl
         << "\t"  << matGT                     << endl
         << "\t"  << patGT                     << endl;
    cout << "   Check: corrected haplotypes: " << endl
         << "\t"  << matGT_corrected           << endl
         << "\t"  << patGT_corrected           << endl;     
    // update result
    (*pollens_corrected) = pollens;    
    (*pollens_corrected)[0].poSeq = matGT_corrected; // corrected maternal backbone
    (*pollens_corrected)[0].poAll = patGT_corrected; // corrected paternal backbone    
    //
    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x398, %rsp            # imm = 0x398
movq %rdx, 0x360(%rsp)
movq %rsi, 0x160(%rsp)
movq %rdi, %r14
xorl %ebp, %ebp
leaq 0xe8(%rsp), %rbx
movl %ebp, (%rbx)
movq %rbx, %rsi
callq 0x14730
leaq 0x270(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x260(%rsp), %rdi
callq 0x164ba
movl %ebp, (%rbx)
leaq 0xe8(%rsp), %rsi
movq %r14, 0x218(%rsp)
movq %r14, %rdi
callq 0x14730
leaq 0x2b0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
addq %rsi, %rdx
leaq 0x2a0(%rsp), %rdi
callq 0x164ba
leaq 0xe8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x218(%rsp), %rdi
callq 0x14730
addq $0x60, %rax
leaq 0x308(%rsp), %rdi
movq %rax, %rsi
callq 0x14796
cmpq $0x1, 0x268(%rsp)
jne 0xc413
cmpq $0x1, 0x2a8(%rsp)
jne 0xc413
movq 0x160(%rsp), %rbx
movq %rbx, %rdi
movq 0x218(%rsp), %rsi
callq 0x153ea
leaq 0xe8(%rsp), %rsi
movl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x14730
leaq 0x260(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
leaq 0xe8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x160(%rsp), %rdi
callq 0x14730
addq $0x20, %rax
leaq 0x2a0(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
movb $0x1, %bl
jmp 0xe10f
leaq 0x290(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xdaa3(%rip), %rdx      # 0x19ec9
leaq 0x280(%rsp), %rdi
movq %rdx, %rsi
callq 0x16550
leaq 0x2d0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xda80(%rip), %rdx      # 0x19ec9
leaq 0x2c0(%rsp), %rdi
movq %rdx, %rsi
callq 0x16550
leaq 0x370(%rsp), %rcx
movl $0x0, (%rcx)
xorl %eax, %eax
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
cmpq $0x1, 0x268(%rsp)
je 0xc8c8
leaq 0xf8(%rsp), %rbp
leaq 0x240(%rsp), %r14
leaq 0x80(%rsp), %r13
leaq 0xe8(%rsp), %r15
leaq 0x168(%rsp), %rbx
xorl %r12d, %r12d
movl $0x1, %ecx
leaq 0xc8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movl $0x1, %ecx
leaq 0x40(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
incq %r12
movl $0x1, %ecx
leaq 0x1b8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movl $0x1, %ecx
movq %r14, %rdi
leaq 0x2a0(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movl $0x0, 0x170(%rsp)
xorl %ecx, %ecx
movq %rcx, 0x178(%rsp)
leaq 0x170(%rsp), %rax
movq %rax, 0x180(%rsp)
movq %rax, 0x188(%rsp)
movq %rcx, 0x190(%rsp)
leaq 0x90(%rsp), %rax
movq %rax, 0x80(%rsp)
movq %r13, %rdi
leaq 0xd958(%rip), %rdx      # 0x19ec9
movq %rdx, %rsi
callq 0x16550
movq %r15, %rdi
leaq 0xc8(%rsp), %rsi
leaq 0x1b8(%rsp), %rdx
callq 0x14a98
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc5b9
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xe8(%rsp)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x164ba
movl $0x0, 0x108(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17b9c
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc60f
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %r15, %rdi
leaq 0xc8(%rsp), %rsi
movq %r14, %rdx
callq 0x14a98
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc64a
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xe8(%rsp)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x164ba
movl $0x0, 0x108(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17b9c
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc6a0
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %r15, %rdi
leaq 0x40(%rsp), %rsi
leaq 0x1b8(%rsp), %rdx
callq 0x14a98
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc6dd
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xe8(%rsp)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x164ba
movl $0x0, 0x108(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17b9c
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc733
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %r15, %rdi
leaq 0x40(%rsp), %rsi
movq %r14, %rdx
callq 0x14a98
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc76b
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xe8(%rsp)
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x164ba
movl $0x0, 0x108(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17b9c
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc7c1
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
decq %r12
movq %r12, 0xe8(%rsp)
leaq 0xf0(%rsp), %rdi
movq %rbx, %rsi
callq 0x15f74
leaq 0x368(%rsp), %rdi
movq %r15, %rsi
callq 0x17d66
leaq 0xf0(%rsp), %rdi
callq 0x15efc
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xc81e
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x15efc
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xc84b
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0xc870
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0xc88c
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xc8b1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x268(%rsp), %rax
decq %rax
incq %r12
cmpq %rax, %r12
jb 0xc4b3
movq 0x218(%rsp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, 0xa0(%rsp)
cmpq %rax, %rbx
je 0xcaf6
leaq 0xd8(%rsp), %rbp
leaq 0x168(%rsp), %r15
leaq 0xc8(%rsp), %r12
leaq 0x28(%rbx), %rsi
leaq 0xe8(%rsp), %rdi
callq 0x14816
leaq 0x178(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x164ba
movq 0x268(%rsp), %rax
cmpq 0x2a8(%rsp), %rax
jne 0xdfbf
cmpq 0x170(%rsp), %rax
jne 0xdfbf
cmpq $0x1, %rax
je 0xca2c
xorl %r13d, %r13d
movl $0x2, %ecx
movq %r12, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x32b0
movq 0x378(%rsp), %rsi
testq %rsi, %rsi
je 0xe18a
leaq 0x370(%rsp), %r14
movq %r14, %rax
movq %rsi, %rcx
movq 0x20(%rsi), %rdx
xorl %esi, %esi
cmpq %r13, %rdx
setb %sil
movq %rcx, %r14
cmovbq %rax, %r14
movq 0x10(%rcx,%rsi,8), %rsi
testq %rsi, %rsi
jne 0xc99a
leaq 0x370(%rsp), %rsi
cmpq %rsi, %r14
je 0xe18a
cmpq %r13, %rdx
cmovbq %rax, %rcx
cmpq 0x20(%rcx), %r13
jb 0xe18a
leaq 0x28(%r14), %rdi
movq %r12, %rsi
callq 0x17b12
addq $0x30, %r14
cmpq %r14, %rax
je 0xc9f8
incl 0x40(%rax)
movq 0xc8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xca15
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x3290
incq %r13
movq 0x170(%rsp), %rax
decq %rax
cmpq %rax, %r13
jb 0xc96e
movq %rbx, %rdi
callq 0x31c0
movq %rax, %rbx
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xca5c
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0xca79
movq 0x158(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0xca9e
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0xcac3
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0xcae8
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
cmpq 0xa0(%rsp), %rbx
jne 0xc901
movq 0x380(%rsp), %rbx
leaq 0x178(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xd3b8(%rip), %rdx      # 0x19ec9
leaq 0x168(%rsp), %rdi
movq %rdx, %rsi
callq 0x16550
leaq 0xd8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xd395(%rip), %rdx      # 0x19ec9
leaq 0xc8(%rsp), %rdi
movq %rdx, %rsi
callq 0x16550
leaq 0x370(%rsp), %rax
cmpq %rax, %rbx
je 0xdd0f
leaq 0xe8(%rsp), %r14
movq 0x20(%rbx), %rax
movq %rax, 0x2e0(%rsp)
movl $0x0, 0xf0(%rsp)
xorl %ecx, %ecx
movq %rcx, 0xf8(%rsp)
leaq 0xf0(%rsp), %rax
movq %rax, 0x100(%rsp)
movq %rax, 0x108(%rsp)
movq %rcx, 0x110(%rsp)
leaq 0x28(%rbx), %rsi
movq %r14, %rdi
callq 0x1619a
movq 0x100(%rsp), %r12
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0xd301(%rip), %r14      # 0x19ec9
movq %r14, %rsi
movq %r14, %rdx
callq 0x16550
leaq 0x1c8(%rsp), %rax
movq %rax, 0x1b8(%rsp)
leaq 0x1b8(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x16550
leaq 0x250(%rsp), %rax
movq %rax, 0x240(%rsp)
leaq 0x240(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x16550
leaq 0xf0(%rsp), %rax
cmpq %rax, %r12
leaq 0x80(%rsp), %r14
je 0xcdba
xorl %r13d, %r13d
leaq 0x90(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x164ba
movl $0x1, %ecx
leaq 0x220(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x32b0
movq 0x220(%rsp), %rsi
movq 0x228(%rsp), %rcx
leaq 0x1b8(%rsp), %rdi
xorl %edx, %edx
callq 0x3440
cmpq $-0x1, %rax
jne 0xccb3
movq 0x220(%rsp), %rsi
movq 0x228(%rsp), %rdx
leaq 0x1b8(%rsp), %rdi
callq 0x30c0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x198(%rsp), %rdi
movq %r14, %rsi
callq 0x32b0
movq 0x198(%rsp), %rsi
movq 0x1a0(%rsp), %rcx
leaq 0x240(%rsp), %rdi
xorl %edx, %edx
callq 0x3440
cmpq $-0x1, %rax
jne 0xcd0f
movq 0x198(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
leaq 0x240(%rsp), %rdi
callq 0x30c0
cmpl %r13d, 0x40(%r12)
jle 0xcd2a
leaq 0x20(%r12), %rsi
leaq 0x40(%rsp), %rdi
callq 0x3160
movl 0x40(%r12), %r13d
movq %r12, %rdi
callq 0x31c0
movq %rax, %r12
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0xcd5a
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0xcd7f
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xcda4
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xf0(%rsp), %rax
cmpq %rax, %r12
jne 0xcc35
testl %r13d, %r13d
jne 0xcddc
movq 0x100(%rsp), %rsi
addq $0x20, %rsi
leaq 0x40(%rsp), %rdi
callq 0x3160
movq 0x100(%rsp), %rax
movl 0x40(%rax), %r13d
movl $0x1, %ecx
movq %r14, %rdi
leaq 0x40(%rsp), %r14
movq %r14, %rsi
xorl %edx, %edx
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x220(%rsp), %rdi
movq %r14, %rsi
callq 0x32b0
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0xd09d(%rip), %r14      # 0x19ec9
movq %r14, %rsi
movq %r14, %rdx
callq 0x16550
leaq 0x2f8(%rsp), %rax
movq %rax, 0x2e8(%rsp)
leaq 0x2e8(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x16550
movb $0x1, %r15b
xorl %r12d, %r12d
movq %rbx, 0xa0(%rsp)
movl $0x1, %ecx
leaq 0x20(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movq 0x20(%rsp), %rbp
movq 0x28(%rsp), %r14
movq 0x88(%rsp), %rbx
cmpq %r14, %rbx
movq %r14, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0xcebc
movq 0x80(%rsp), %rsi
movq %rbp, %rdi
callq 0x32a0
testl %eax, %eax
je 0xcebc
xorl %r14d, %r14d
jmp 0xcec3
cmpq %rbx, %r14
sete %r14b
leaq 0x30(%rsp), %rax
cmpq %rax, %rbp
je 0xcedd
movq 0x30(%rsp), %rsi
incq %rsi
movq %rbp, %rdi
callq 0x3290
testb %r14b, %r14b
jne 0xcf2b
movl $0x1, %ecx
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1b8(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
leaq 0x198(%rsp), %rdi
movq %rbx, %rsi
callq 0x3310
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xcf2b
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %ecx
leaq 0x20(%rsp), %rdi
leaq 0x240(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movq 0x20(%rsp), %rbp
movq 0x28(%rsp), %r14
movq 0x228(%rsp), %rbx
cmpq %r14, %rbx
movq %r14, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0xcf7f
movq 0x220(%rsp), %rsi
movq %rbp, %rdi
callq 0x32a0
testl %eax, %eax
je 0xcf7f
xorl %r14d, %r14d
jmp 0xcf86
cmpq %rbx, %r14
sete %r14b
movq 0xa0(%rsp), %rbx
leaq 0x30(%rsp), %rax
cmpq %rax, %rbp
je 0xcfa8
movq 0x30(%rsp), %rsi
incq %rsi
movq %rbp, %rdi
callq 0x3290
testb %r14b, %r14b
leaq 0xb8(%rsp), %r14
jne 0xcffe
movl $0x1, %ecx
leaq 0x20(%rsp), %rbp
movq %rbp, %rdi
leaq 0x240(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
leaq 0x2e8(%rsp), %rdi
movq %rbp, %rsi
callq 0x3310
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xcffe
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %r12d
testb $0x1, %r15b
movl $0x0, %r15d
jne 0xce68
leaq 0x20(%rsp), %r15
movq %r15, %rdi
leaq 0x198(%rsp), %rsi
leaq 0x2e8(%rsp), %rdx
callq 0x14a98
leaq 0xe8(%rsp), %rdi
movq %r15, %rsi
callq 0x17b12
leaq 0xf0(%rsp), %rcx
cmpq %rcx, %rax
je 0xe1a9
leaq 0xe8(%rsp), %rdi
leaq 0x20(%rsp), %r15
movq %r15, %rsi
callq 0x14af2
movl (%rax), %ebp
movl $0x1, %ecx
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
movq %rsp, %rdi
leaq 0x40(%rsp), %rsi
callq 0x32b0
movq 0xa8(%rsp), %rcx
movl $0xf, %edi
cmpq %r14, %rcx
je 0xd0b1
movq 0xb8(%rsp), %rdi
movq 0xb0(%rsp), %r8
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0xd0e4
movl $0xf, %edi
leaq 0x10(%rsp), %r9
cmpq %r9, %rsi
je 0xd0df
movq 0x10(%rsp), %rdi
cmpq %rdi, %rax
jbe 0xd0f3
leaq 0xa8(%rsp), %rdi
callq 0x30c0
jmp 0xd0ff
movq %rsp, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32d0
leaq 0x208(%rsp), %rsi
movq %rsi, 0x1f8(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xd130
movq %rdx, 0x1f8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x208(%rsp)
jmp 0xd136
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x200(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xd171
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd18e
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %ecx
movq %rsp, %rdi
leaq 0x40(%rsp), %rsi
xorl %edx, %edx
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x1d8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x32b0
movq (%rsp), %rcx
movl $0xf, %edi
leaq 0x10(%rsp), %rax
cmpq %rax, %rcx
je 0xd1d6
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %r8
movq 0x1d8(%rsp), %rsi
movq 0x1e0(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0xd213
movl $0xf, %edi
leaq 0x1e8(%rsp), %r9
cmpq %r9, %rsi
je 0xd20e
movq 0x1e8(%rsp), %rdi
cmpq %rdi, %rax
jbe 0xd21d
movq %rsp, %rdi
callq 0x30c0
jmp 0xd22e
leaq 0x1d8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32d0
movq %r14, 0xa8(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xd257
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
jmp 0xd25e
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xb0(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0xd2a3
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x3290
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xd2be
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xe8(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x17b12
leaq 0xf0(%rsp), %rcx
cmpq %rcx, %rax
je 0xe1c8
leaq 0xe8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x17b12
leaq 0xf0(%rsp), %rcx
cmpq %rcx, %rax
je 0xe1e7
leaq 0xe8(%rsp), %r15
movq %r15, %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x14af2
movl (%rax), %r12d
movq %r15, %rdi
leaq 0xa8(%rsp), %rsi
callq 0x14af2
movl (%rax), %r15d
leal (%r15,%r12), %eax
leal (%rbp,%r13), %ecx
cmpl %ecx, %eax
jle 0xd3d0
leaq 0x20(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x3160
leaq 0x40(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x3160
cmpl %r15d, %r12d
jle 0xd3d8
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x164ba
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %r13
movq %r13, %rsi
callq 0x3160
movq %r13, %rdi
movq %rsp, %rsi
callq 0x3160
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xd3c8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
movl %r15d, %ebp
movb $0x1, %r15b
jmp 0xd3e1
xorl %r15d, %r15d
movl %r13d, %r12d
jmp 0xd3e1
movl %r12d, %ebp
movl %r15d, %r12d
xorl %r15d, %r15d
cmpq $0x0, 0x170(%rsp)
je 0xd4a2
movl $0x1, %edx
movl $0x1, %ecx
movq %rsp, %rdi
leaq 0x168(%rsp), %rsi
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x1d8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x32b0
movl $0x1, %ecx
leaq 0x340(%rsp), %rdi
leaq 0x40(%rsp), %rsi
xorl %edx, %edx
callq 0x32b0
movl $0x1, %ecx
leaq 0x320(%rsp), %rdi
leaq 0x20(%rsp), %rsi
xorl %edx, %edx
callq 0x32b0
movq 0x8(%rsp), %r14
movq 0x348(%rsp), %rbx
cmpq %r14, %rbx
movq %r14, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0xd59d
movq 0x340(%rsp), %rsi
movq (%rsp), %rdi
callq 0x32a0
cmpq %rbx, %r14
jne 0xd76a
testl %eax, %eax
je 0xd5a6
jmp 0xd76a
movl $0x1, %edx
movq 0x13b2a(%rip), %rdi     # 0x20fd8
leaq 0xca13(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0x13b0d(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc661(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %r13, %rdi
movl %r12d, %esi
callq 0x3430
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc9c4(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r12, %rdi
callq 0x32f0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc616(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %r12, %rdi
movl %ebp, %esi
callq 0x3430
movl $0x7, %edx
movq %rax, %rdi
leaq 0xc96d(%rip), %rsi      # 0x19eb8
callq 0x32f0
leaq 0x280(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x3160
leaq 0x2c0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3160
leaq 0x168(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x3160
leaq 0xc8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3160
jmp 0xd96e
cmpq %rbx, %r14
jne 0xd76a
movq 0x1e0(%rsp), %r14
movq 0x328(%rsp), %rbx
cmpq %r14, %rbx
movq %r14, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0xd761
movq 0x320(%rsp), %rsi
movq 0x1d8(%rsp), %rdi
callq 0x32a0
cmpq %rbx, %r14
jne 0xd76a
testl %eax, %eax
jne 0xd76a
movl $0x1, %edx
movq 0x139dd(%rip), %rdi     # 0x20fd8
leaq 0xc8c6(%rip), %rsi      # 0x19ec8
leaq 0xb8(%rsp), %r14
callq 0x32f0
movq 0xa0(%rsp), %rbx
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0x139b0(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc504(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %r13, %rdi
movl %r12d, %esi
callq 0x3430
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc867(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r12, %rdi
callq 0x32f0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc4b9(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %r12, %rdi
movl %ebp, %esi
callq 0x3430
movl $0x7, %edx
movq %rax, %rdi
leaq 0xc810(%rip), %rsi      # 0x19eb8
callq 0x32f0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x60(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x32b0
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x280(%rsp), %rdi
callq 0x30c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xd6f9
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x60(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x32b0
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x2c0(%rsp), %rdi
callq 0x30c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xd745
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x168(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x3160
leaq 0x20(%rsp), %rsi
jmp 0xd8d7
cmpq %rbx, %r14
je 0xd5ef
movl $0x1, %edx
movq 0x13862(%rip), %rdi     # 0x20fd8
leaq 0xc74b(%rip), %rsi      # 0x19ec8
leaq 0xb8(%rsp), %r14
callq 0x32f0
movq 0xa0(%rsp), %rbx
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x13835(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc389(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %r13, %rdi
movl %ebp, %esi
callq 0x3430
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc6ed(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %r13, %rdi
callq 0x32f0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc33f(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %r13, %rdi
movl %r12d, %esi
callq 0x3430
movl $0x7, %edx
movq %rax, %rdi
leaq 0xc695(%rip), %rsi      # 0x19eb8
callq 0x32f0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x60(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x32b0
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x280(%rsp), %rdi
callq 0x30c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xd874
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x60(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x32b0
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x2c0(%rsp), %rdi
callq 0x30c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xd8c0
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x168(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3160
leaq 0x40(%rsp), %rsi
leaq 0xc8(%rsp), %rdi
callq 0x3160
movq 0x320(%rsp), %rdi
leaq 0x330(%rsp), %rax
cmpq %rax, %rdi
je 0xd909
movq 0x330(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x340(%rsp), %rdi
leaq 0x350(%rsp), %rax
cmpq %rax, %rdi
je 0xd92e
movq 0x350(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0xd953
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x3290
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xd96e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x100(%rsp), %r12
leaq 0xf0(%rsp), %rax
cmpq %rax, %r12
je 0xdaa6
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x164ba
movq 0x8(%rsp), %rbp
movq 0x48(%rsp), %rbx
cmpq %rbp, %rbx
movq %rbp, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0xd9db
movq 0x40(%rsp), %rsi
movq (%rsp), %rdi
callq 0x32a0
cmpq %rbx, %rbp
jne 0xd9e4
testl %eax, %eax
je 0xda67
jmp 0xd9e4
cmpq %rbx, %rbp
je 0xda67
movq 0x28(%rsp), %rbx
cmpq %rbp, %rbx
movq %rbp, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0xda14
movq 0x20(%rsp), %rsi
movq (%rsp), %r13
movq %r13, %rdi
callq 0x32a0
cmpq %rbx, %rbp
jne 0xda1d
testl %eax, %eax
je 0xda67
jmp 0xda1d
cmpq %rbx, %rbp
je 0xda67
movq (%rsp), %r13
movq 0x135b4(%rip), %rdi     # 0x20fd8
movq %r13, %rsi
movq %rbp, %rdx
callq 0x32f0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc102(%rip), %rsi      # 0x19b43
callq 0x32f0
movl 0x40(%r12), %esi
movq %r13, %rdi
callq 0x3430
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc466(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq %r12, %rdi
callq 0x31c0
movq %rax, %r12
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xda8d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xf0(%rsp), %rax
cmpq %rax, %r12
movq 0xa0(%rsp), %rbx
jne 0xd987
movq 0x360(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x1351c(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc3f5(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x308(%rsp), %rax
movq 0x2e0(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
movq %r12, %rdi
callq 0x31a0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc3c2(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x308(%rsp), %rax
movq 0x2e0(%rsp), %rcx
movq 0x8(%rax,%rcx,8), %rsi
movq %r12, %rdi
callq 0x31a0
movl $0x9, %edx
movq %rax, %rdi
leaq 0xc389(%rip), %rsi      # 0x19ec0
callq 0x32f0
testb %r15b, %r15b
je 0xdb59
movl $0xa, %edx
movq 0x1348b(%rip), %rdi     # 0x20fd8
leaq 0xc376(%rip), %rsi      # 0x19eca
callq 0x32f0
movq 0x13478(%rip), %rcx     # 0x20fd8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0x1345a(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq %rbx, %rdi
callq 0x31c0
movq %rax, %rbx
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0xdbb3
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0xdbd8
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xdbf4
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x2e8(%rsp), %rdi
leaq 0x2f8(%rsp), %rax
cmpq %rax, %rdi
je 0xdc19
movq 0x2f8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0xdc3e
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0xdc63
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xdc88
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xdcad
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0xdcd2
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0xdcee
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xe8(%rsp), %r14
movq %r14, %rdi
callq 0x15efc
leaq 0x370(%rsp), %rax
cmpq %rax, %rbx
jne 0xcb5d
movq 0x132c2(%rip), %rbx     # 0x20fd8
leaq 0xc1b8(%rip), %rsi      # 0x19ed5
movl $0x20, %edx
movq %rbx, %rdi
callq 0x32f0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0x13290(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq %rax, %rbx
leaq 0xc169(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x260(%rsp), %rsi
movq 0x268(%rsp), %rdx
movq %rbx, %rdi
callq 0x32f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq %rax, %rbx
leaq 0xc110(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x2a0(%rsp), %rsi
movq 0x2a8(%rsp), %rdx
movq %rbx, %rdi
callq 0x32f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq 0x131ca(%rip), %rbx     # 0x20fd8
leaq 0xc0e1(%rip), %rsi      # 0x19ef6
movl $0x20, %edx
movq %rbx, %rdi
callq 0x32f0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0x13198(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq %rax, %rbx
leaq 0xc071(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x280(%rsp), %rsi
movq 0x288(%rsp), %rdx
movq %rbx, %rdi
callq 0x32f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq %rax, %rbx
leaq 0xc018(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x2c0(%rsp), %rsi
movq 0x2c8(%rsp), %rdx
movq %rbx, %rdi
callq 0x32f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq 0x160(%rsp), %rdi
movq 0x218(%rsp), %rsi
callq 0x153ea
leaq 0xe8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x160(%rsp), %rdi
callq 0x14730
leaq 0x280(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
leaq 0xe8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x160(%rsp), %rdi
callq 0x14730
addq $0x20, %rax
leaq 0x2c0(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xdf93
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xdfb8
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3290
movb $0x1, %bl
jmp 0xe0b8
movq 0x13012(%rip), %rbx     # 0x20fd8
leaq 0xbda5(%rip), %rsi      # 0x19d72
movl $0x51, %edx
movq %rbx, %rdi
callq 0x32f0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0x12fe0(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xe02a
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0xe047
movq 0x158(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0xe06c
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0xe091
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0xe0b6
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
xorl %ebx, %ebx
leaq 0x368(%rsp), %rdi
callq 0x16462
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0xe0ea
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0xe10f
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x308(%rsp), %rdi
testq %rdi, %rdi
je 0xe12c
movq 0x318(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0xe151
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0xe176
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x3290
movl %ebx, %eax
addq $0x398, %rsp            # imm = 0x398
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xbc33(%rip), %rdi      # 0x19dc4
leaq 0xb933(%rip), %rsi      # 0x19acb
leaq 0xbc3c(%rip), %rcx      # 0x19ddb
movl $0x7c9, %edx            # imm = 0x7C9
callq 0x3180
leaq 0xbc70(%rip), %rdi      # 0x19e20
leaq 0xb914(%rip), %rsi      # 0x19acb
leaq 0xbc1d(%rip), %rcx      # 0x19ddb
movl $0x819, %edx            # imm = 0x819
callq 0x3180
leaq 0xbc85(%rip), %rdi      # 0x19e54
leaq 0xb8f5(%rip), %rsi      # 0x19acb
leaq 0xbbfe(%rip), %rcx      # 0x19ddb
movl $0x81f, %edx            # imm = 0x81F
callq 0x3180
leaq 0xbc98(%rip), %rdi      # 0x19e86
leaq 0xb8d6(%rip), %rsi      # 0x19acb
leaq 0xbbdf(%rip), %rcx      # 0x19ddb
movl $0x820, %edx            # imm = 0x820
callq 0x3180
movq %rax, %rbx
jmp 0xe7c5
jmp 0xe3c7
movq %rax, %rbx
jmp 0xe81c
jmp 0xe230
jmp 0xe230
jmp 0xe5b3
jmp 0xe4e3
jmp 0xe4e3
jmp 0xe230
movq %rax, %rbx
jmp 0xe841
jmp 0xe25a
jmp 0xe4f0
jmp 0xe25a
jmp 0xe4f0
jmp 0xe29b
movq %rax, %rbx
jmp 0xe85e
movq %rax, %rbx
jmp 0xe883
jmp 0xe25a
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xe4f3
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xe4f3
jmp 0xe4f0
jmp 0xe4f0
jmp 0xe2a3
jmp 0xe682
movq %rax, %rbx
jmp 0xe518
movq %rax, %rbx
jmp 0xe57d
movq %rax, %rbx
jmp 0xe562
movq %rax, %rbx
jmp 0xe53d
jmp 0xe3c7
movq %rax, %rbx
jmp 0xe5db
jmp 0xe37d
jmp 0xe37d
movq %rax, %rbx
jmp 0xe2ed
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xe2ed
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xe664
movq 0xb8(%rsp), %rsi
jmp 0xe65c
movq %rax, %rbx
jmp 0xe63f
movq %rax, %rbx
jmp 0xe348
movq %rax, %rbx
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0xe348
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x3290
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xe63f
movq 0x10(%rsp), %rsi
jmp 0xe637
jmp 0xe5ff
jmp 0xe5ff
jmp 0xe5ff
jmp 0xe5ff
jmp 0xe696
movq %rax, %rbx
jmp 0xe664
jmp 0xe682
jmp 0xe68a
jmp 0xe68f
jmp 0xe5f7
jmp 0xe39b
movq %rax, %rbx
jmp 0xe793
movq %rax, %rbx
jmp 0xe777
movq %rax, %rbx
jmp 0xe752
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x15efc
jmp 0xe425
jmp 0xe422
movq %rax, %rbx
jmp 0xe7ea
movq %rax, %rbx
jmp 0xe4bd
movq %rax, %rbx
jmp 0xe4a1
movq %rax, %rbx
jmp 0xe47c
movq %rax, %rbx
jmp 0xe44a
jmp 0xe422
jmp 0xe422
jmp 0xe3fe
jmp 0xe422
jmp 0xe422
jmp 0xe3fe
jmp 0xe422
jmp 0xe422
jmp 0xe3fe
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xe425
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xe425
jmp 0xe422
movq %rax, %rbx
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xe44a
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x168(%rsp), %rdi
callq 0x15efc
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xe47c
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0xe4a1
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0xe4bd
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xe7ea
movq 0xd8(%rsp), %rsi
jmp 0xe7e2
movq %rax, %rbx
jmp 0xe7a0
jmp 0xe5ff
movq %rax, %rbx
movq 0x320(%rsp), %rdi
leaq 0x330(%rsp), %rax
cmpq %rax, %rdi
je 0xe518
movq 0x330(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x340(%rsp), %rdi
leaq 0x350(%rsp), %rax
cmpq %rax, %rdi
je 0xe53d
movq 0x350(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0xe562
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x3290
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xe57d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xb8(%rsp), %r14
jmp 0xe622
jmp 0xe68f
jmp 0xe5ff
movq %rax, %rbx
movq 0xc8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xe5b6
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xe5b6
movq %rax, %rbx
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xe5db
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xe8(%rsp), %rdi
callq 0x1466e
jmp 0xe7ea
jmp 0xe696
jmp 0xe696
movq %rax, %rbx
jmp 0xe6be
movq %rax, %rbx
jmp 0xe622
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xe622
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0xe63f
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x208(%rsp), %rax
movq 0x1f8(%rsp), %rdi
cmpq %rax, %rdi
je 0xe664
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0xe699
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xe699
movq %rax, %rbx
jmp 0xe72d
movq %rax, %rbx
jmp 0xe708
movq %rax, %rbx
jmp 0xe6e3
jmp 0xe696
movq %rax, %rbx
movq 0x2e8(%rsp), %rdi
leaq 0x2f8(%rsp), %rax
cmpq %rax, %rdi
je 0xe6be
movq 0x2f8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0xe6e3
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0xe708
movq 0x230(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xe72d
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xe752
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0xe777
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0xe793
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xe8(%rsp), %rdi
callq 0x15efc
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xe7c5
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xe7ea
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x368(%rsp), %rdi
callq 0x16462
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0xe81c
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x290(%rsp), %rax
movq 0x280(%rsp), %rdi
cmpq %rax, %rdi
je 0xe841
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x308(%rsp), %rdi
testq %rdi, %rdi
je 0xe85e
movq 0x318(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
movq 0x2a0(%rsp), %rdi
leaq 0x2b0(%rsp), %rax
cmpq %rax, %rdi
je 0xe883
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x270(%rsp), %rax
movq 0x260(%rsp), %rdi
cmpq %rax, %rdi
je 0xe8a8
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x3460