// File: /workspace/github_cpp_makefile_star2_O1/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 $0x3b8, %rsp            # imm = 0x3B8
movq %rdx, 0x368(%rsp)
movq %rsi, 0x1a0(%rsp)
movq %rdi, %r14
xorl %ebp, %ebp
leaq 0xd8(%rsp), %rbx
movl %ebp, (%rbx)
movq %rbx, %rsi
callq 0x14806
leaq 0x280(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x270(%rsp), %rdi
callq 0x16592
movl %ebp, (%rbx)
leaq 0xd8(%rsp), %rsi
movq %r14, 0x228(%rsp)
movq %r14, %rdi
callq 0x14806
leaq 0x2a0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
addq %rsi, %rdx
leaq 0x290(%rsp), %rdi
callq 0x16592
leaq 0xd8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x228(%rsp), %rdi
callq 0x14806
addq $0x60, %rax
leaq 0x310(%rsp), %rdi
movq %rax, %rsi
callq 0x1486a
cmpq $0x1, 0x278(%rsp)
jne 0xc4fe
cmpq $0x1, 0x298(%rsp)
jne 0xc4fe
movq 0x1a0(%rsp), %rbx
movq %rbx, %rdi
movq 0x228(%rsp), %rsi
callq 0x154be
leaq 0xd8(%rsp), %rsi
movl $0x0, (%rsi)
movq %rbx, %rdi
callq 0x14806
leaq 0x270(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
leaq 0xd8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x1a0(%rsp), %rdi
callq 0x14806
addq $0x20, %rax
leaq 0x290(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
movb $0x1, %r14b
jmp 0xe221
leaq 0x2e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xd9b8(%rip), %rdx      # 0x19ec9
leaq 0x2d0(%rsp), %rdi
movq %rdx, %rsi
callq 0x16622
leaq 0x2c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xd995(%rip), %rdx      # 0x19ec9
leaq 0x2b0(%rsp), %rdi
movq %rdx, %rsi
callq 0x16622
leaq 0x390(%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, 0x278(%rsp)
je 0xc9b3
leaq 0xe8(%rsp), %rbp
leaq 0x250(%rsp), %r14
leaq 0x90(%rsp), %r13
leaq 0xd8(%rsp), %r15
leaq 0x150(%rsp), %rbx
xorl %r12d, %r12d
movl $0x1, %ecx
leaq 0xb8(%rsp), %rdi
leaq 0x270(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movl $0x1, %ecx
leaq 0x48(%rsp), %rdi
leaq 0x290(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
incq %r12
movl $0x1, %ecx
leaq 0x1e8(%rsp), %rdi
leaq 0x270(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movl $0x1, %ecx
movq %r14, %rdi
leaq 0x290(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movl $0x0, 0x158(%rsp)
xorl %ecx, %ecx
movq %rcx, 0x160(%rsp)
leaq 0x158(%rsp), %rax
movq %rax, 0x168(%rsp)
movq %rax, 0x170(%rsp)
movq %rcx, 0x178(%rsp)
leaq 0xa0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq %r13, %rdi
leaq 0xd86d(%rip), %rdx      # 0x19ec9
movq %rdx, %rsi
callq 0x16622
movq %r15, %rdi
leaq 0xb8(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
callq 0x14b6c
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc6a4
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xd8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x16592
movl $0x0, 0xf8(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17c7e
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc6fa
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %r15, %rdi
leaq 0xb8(%rsp), %rsi
movq %r14, %rdx
callq 0x14b6c
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc735
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xd8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x16592
movl $0x0, 0xf8(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17c7e
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc78b
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
callq 0x14b6c
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc7c8
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xd8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x16592
movl $0x0, 0xf8(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17c7e
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc81e
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
movq %r14, %rdx
callq 0x14b6c
movq %r13, %rdi
movq %r15, %rsi
callq 0x3310
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc856
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbp, 0xd8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x16592
movl $0x0, 0xf8(%rsp)
movq %rbx, %rdi
movq %r15, %rsi
callq 0x17c7e
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc8ac
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
decq %r12
movq %r12, 0xd8(%rsp)
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x1604a
leaq 0x388(%rsp), %rdi
movq %r15, %rsi
callq 0x17e48
leaq 0xe0(%rsp), %rdi
callq 0x15fd2
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xc909
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x15fd2
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0xc936
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0xc95b
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xc977
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xc99c
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x278(%rsp), %rax
decq %rax
incq %r12
cmpq %rax, %r12
jb 0xc59e
movq 0x228(%rsp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, 0x68(%rsp)
cmpq %rax, %rbx
sete %r14b
je 0xcbd6
leaq 0xc8(%rsp), %rbp
leaq 0x150(%rsp), %r15
leaq 0xb8(%rsp), %r12
leaq 0x28(%rbx), %rsi
leaq 0xd8(%rsp), %rdi
callq 0x148ea
leaq 0x160(%rsp), %rax
movq %rax, 0x150(%rsp)
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x16592
movq 0x278(%rsp), %rax
cmpq 0x298(%rsp), %rax
jne 0xe0d3
cmpq 0x158(%rsp), %rax
jne 0xe0d3
cmpq $0x1, 0x158(%rsp)
je 0xcb0b
xorl %r13d, %r13d
movl $0x2, %ecx
movq %r12, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x32b0
movq 0x398(%rsp), %rcx
leaq 0x390(%rsp), %rax
testq %rcx, %rcx
je 0xca9b
xorl %edx, %edx
cmpq %r13, 0x20(%rcx)
setb %dl
cmovaeq %rcx, %rax
movq 0x10(%rcx,%rdx,8), %rcx
jmp 0xca82
leaq 0x390(%rsp), %rcx
movq %rcx, %r14
cmpq %rcx, %rax
je 0xcab6
cmpq 0x20(%rax), %r13
cmovbq %rcx, %rax
movq %rax, %r14
cmpq %rcx, %r14
je 0xe2a1
leaq 0x28(%r14), %rdi
movq %r12, %rsi
callq 0x17bf4
addq $0x30, %r14
cmpq %r14, %rax
je 0xcad7
incl 0x40(%rax)
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xcaf4
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3290
incq %r13
movq 0x158(%rsp), %rax
decq %rax
cmpq %rax, %r13
jb 0xca5f
movq %rbx, %rdi
callq 0x31c0
movq %rax, %rbx
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0xcb3b
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0xcb58
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0xcb7d
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0xcba2
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0xcbc7
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
cmpq 0x68(%rsp), %rbx
sete %r14b
jne 0xc9ed
movq 0x3a0(%rsp), %rbx
leaq 0x160(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xd2d8(%rip), %rdx      # 0x19ec9
leaq 0x150(%rsp), %rdi
movq %rdx, %rsi
callq 0x16622
movb %r14b, 0x7(%rsp)
leaq 0xc8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xd2b0(%rip), %rdx      # 0x19ec9
leaq 0xb8(%rsp), %rdi
movq %rdx, %rsi
callq 0x16622
leaq 0x390(%rsp), %rax
cmpq %rax, %rbx
je 0xde24
leaq 0x190(%rsp), %r13
leaq 0xd8(%rsp), %r14
leaq 0x90(%rsp), %rbp
movq 0x20(%rbx), %rax
movq %rax, 0x380(%rsp)
movl $0x0, 0xe0(%rsp)
xorl %ecx, %ecx
movq %rcx, 0xe8(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
movq %rcx, 0x100(%rsp)
movq %rbx, 0x378(%rsp)
leaq 0x28(%rbx), %rsi
movq %r14, %rdi
callq 0x16270
movq 0xf0(%rsp), %r12
leaq 0x58(%rsp), %rax
movq %rax, 0x48(%rsp)
leaq 0x48(%rsp), %r14
movq %r14, %rdi
leaq 0xd201(%rip), %rbx      # 0x19ec9
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x16622
leaq 0x1f8(%rsp), %rax
movq %rax, 0x1e8(%rsp)
leaq 0x1e8(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x16622
leaq 0x260(%rsp), %rax
movq %rax, 0x250(%rsp)
leaq 0x250(%rsp), %rdi
movq %rbx, %rsi
movq %rbx, %rdx
callq 0x16622
leaq 0xe0(%rsp), %rax
xorl %ebx, %ebx
cmpq %rax, %r12
je 0xcea6
leaq 0xa0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x16592
movl $0x1, %ecx
leaq 0x230(%rsp), %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x32b0
movq 0x230(%rsp), %rsi
movq 0x238(%rsp), %rcx
leaq 0x1e8(%rsp), %rdi
xorl %edx, %edx
callq 0x3440
cmpq $-0x1, %rax
jne 0xcdaa
movq 0x230(%rsp), %rsi
movq 0x238(%rsp), %rdx
leaq 0x1e8(%rsp), %rdi
callq 0x30c0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x1c8(%rsp), %rdi
movq %rbp, %rsi
callq 0x32b0
movq 0x1c8(%rsp), %rsi
movq 0x1d0(%rsp), %rcx
leaq 0x250(%rsp), %rdi
xorl %edx, %edx
callq 0x3440
cmpq $-0x1, %rax
jne 0xce06
movq 0x1c8(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
leaq 0x250(%rsp), %rdi
callq 0x30c0
cmpl %ebx, 0x40(%r12)
jle 0xce1f
leaq 0x20(%r12), %rsi
movq %r14, %rdi
callq 0x3160
movl 0x40(%r12), %ebx
movq %r12, %rdi
callq 0x31c0
movq %rax, %r12
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0xce4f
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xce74
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xce99
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xe0(%rsp), %rax
jmp 0xcd23
testl %ebx, %ebx
jne 0xcec9
movq 0xf0(%rsp), %rsi
addq $0x20, %rsi
movq %r14, %rdi
callq 0x3160
movq 0xf0(%rsp), %rax
movl 0x40(%rax), %ebx
movl $0x1, %ecx
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x230(%rsp), %rdi
movq %r14, %rsi
callq 0x32b0
leaq 0x1d8(%rsp), %rax
movq %rax, 0x1c8(%rsp)
leaq 0x1c8(%rsp), %rdi
leaq 0xcfb5(%rip), %r14      # 0x19ec9
movq %r14, %rsi
movq %r14, %rdx
callq 0x16622
movq %rbx, 0x370(%rsp)
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
leaq 0x2f0(%rsp), %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x16622
xorl %r12d, %r12d
movl $0x1, %ecx
leaq 0x28(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movq %rbp, %rbx
movq %r13, %r14
movq 0x30(%rsp), %r15
movq 0x98(%rsp), %rbp
cmpq %r15, %rbp
movq %r15, %rdx
cmovbq %rbp, %rdx
testq %rdx, %rdx
je 0xcfa3
movq 0x90(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x32a0
testl %eax, %eax
sete %r13b
jmp 0xcfa6
movb $0x1, %r13b
cmpq %rbp, %r15
sete %bpl
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xcfc9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
andb %bpl, %r13b
leaq 0x28(%rsp), %r15
jne 0xd017
movl $0x1, %ecx
movq %r15, %rdi
leaq 0x1e8(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
leaq 0x1c8(%rsp), %rdi
movq %r15, %rsi
callq 0x3310
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xd017
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %ecx
movq %r15, %rdi
leaq 0x250(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
movq 0x30(%rsp), %r15
movq 0x238(%rsp), %rbp
cmpq %r15, %rbp
movq %r15, %rdx
cmovbq %rbp, %rdx
testq %rdx, %rdx
je 0xd065
movq 0x230(%rsp), %rsi
movq 0x28(%rsp), %rdi
callq 0x32a0
testl %eax, %eax
sete %r13b
jmp 0xd068
movb $0x1, %r13b
cmpq %rbp, %r15
sete %bpl
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xd08b
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
andb %bpl, %r13b
movq %r14, %r13
movq %rbx, %rbp
jne 0xd0df
movl $0x1, %ecx
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
leaq 0x250(%rsp), %rsi
movq %r12, %rdx
callq 0x32b0
leaq 0x2f0(%rsp), %rdi
movq %rbx, %rsi
callq 0x3310
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xd0df
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
incq %r12
cmpq $0x1, %r12
je 0xcf4d
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1c8(%rsp), %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x14b6c
leaq 0xd8(%rsp), %rdi
movq %rbx, %rsi
callq 0x17bf4
leaq 0xe0(%rsp), %rcx
cmpq %rcx, %rax
je 0xe2c0
leaq 0xd8(%rsp), %rdi
leaq 0x28(%rsp), %rbx
movq %rbx, %rsi
callq 0x14bc6
movl (%rax), %eax
movq %rax, 0x68(%rsp)
movl $0x1, %ecx
leaq 0x180(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x32b0
movq 0x180(%rsp), %rcx
movl $0xf, %esi
cmpq %r13, %rcx
je 0xd190
movq 0x190(%rsp), %rsi
movq 0x188(%rsp), %r8
movq 0x10(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0xd1c1
movl $0xf, %esi
leaq 0x18(%rsp), %rdi
cmpq %rdi, 0x8(%rsp)
je 0xd1bc
movq 0x18(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xd1d5
movq 0x8(%rsp), %rsi
leaq 0x180(%rsp), %rdi
callq 0x30c0
jmp 0xd1e3
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32d0
leaq 0x218(%rsp), %rsi
movq %rsi, 0x208(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xd214
movq %rdx, 0x208(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x218(%rsp)
jmp 0xd21a
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x210(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xd256
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x180(%rsp), %rdi
cmpq %r13, %rdi
je 0xd273
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %ecx
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rsi
xorl %edx, %edx
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x1a8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x32b0
movq 0x8(%rsp), %rcx
movl $0xf, %esi
leaq 0x18(%rsp), %rax
cmpq %rax, %rcx
je 0xd2be
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %r8
movq 0x1b0(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0xd2f8
movl $0xf, %esi
leaq 0x1b8(%rsp), %rdi
cmpq %rdi, 0x1a8(%rsp)
je 0xd2f3
movq 0x1b8(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xd30c
movq 0x1a8(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x30c0
jmp 0xd31d
leaq 0x1a8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32d0
movq %r13, 0x180(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xd346
movq %rdx, 0x180(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x190(%rsp)
jmp 0xd34e
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x188(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0xd393
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xd3af
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xd8(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x17bf4
leaq 0xe0(%rsp), %rcx
cmpq %rcx, %rax
je 0xe2df
leaq 0xd8(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x17bf4
leaq 0xe0(%rsp), %rcx
cmpq %rcx, %rax
je 0xe2fe
leaq 0xd8(%rsp), %r15
movq %r15, %rdi
leaq 0x208(%rsp), %rsi
callq 0x14bc6
movl (%rax), %ebx
movq %r15, %rdi
leaq 0x180(%rsp), %rsi
callq 0x14bc6
movl (%rax), %r12d
leal (%r12,%rbx), %eax
movq 0x370(%rsp), %rdx
movq 0x68(%rsp), %rcx
addl %edx, %ecx
cmpl %ecx, %eax
jle 0xd4db
movq %rbx, %r15
leaq 0x28(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x3160
leaq 0x48(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x3160
cmpl %r12d, %r15d
jle 0xd4eb
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x16592
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x3160
movq %rbx, %rdi
leaq 0x8(%rsp), %rsi
callq 0x3160
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xd4cb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movb $0x1, %al
movl %eax, 0xb4(%rsp)
movq %r12, 0x68(%rsp)
jmp 0xd501
movl $0x0, 0xb4(%rsp)
movl %edx, %r15d
jmp 0xd501
movl $0x0, 0xb4(%rsp)
movl %r15d, %eax
movq %rax, 0x68(%rsp)
movl %r12d, %r15d
cmpq $0x0, 0x158(%rsp)
je 0xd5bc
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x8(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x32b0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x1a8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x32b0
movl $0x1, %ecx
leaq 0x348(%rsp), %rdi
leaq 0x48(%rsp), %rsi
xorl %edx, %edx
callq 0x32b0
movq %r15, %r12
movl $0x1, %ecx
leaq 0x328(%rsp), %rdi
leaq 0x28(%rsp), %rsi
xorl %edx, %edx
callq 0x32b0
movq 0x10(%rsp), %rbx
movq 0x350(%rsp), %r15
cmpq %rbx, %r15
movq %rbx, %rdx
cmovbq %r15, %rdx
testq %rdx, %rdx
je 0xd6ba
movq 0x348(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x32a0
testl %eax, %eax
sete %al
jmp 0xd6bc
movl $0x1, %edx
movq 0x13a10(%rip), %rdi     # 0x20fd8
leaq 0xc8f9(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x139f3(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc547(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %rbx, %rdi
movl %r15d, %esi
callq 0x3430
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc8aa(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rbx, %rdi
callq 0x32f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc4fc(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %rbx, %rdi
movq 0x68(%rsp), %rsi
callq 0x3430
movl $0x7, %edx
movq %rax, %rdi
leaq 0xc850(%rip), %rsi      # 0x19eb8
callq 0x32f0
leaq 0x2d0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x3160
leaq 0x2b0(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x3160
leaq 0x150(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x3160
leaq 0xb8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x3160
jmp 0xda8e
movb $0x1, %al
cmpq %r15, %rbx
setne %cl
xorb $0x1, %al
orb %cl, %al
jne 0xd88a
movq 0x1b0(%rsp), %rbx
movq 0x330(%rsp), %r15
cmpq %rbx, %r15
movq %rbx, %rdx
cmovbq %r15, %rdx
testq %rdx, %rdx
je 0xd707
movq 0x328(%rsp), %rsi
movq 0x1a8(%rsp), %rdi
callq 0x32a0
testl %eax, %eax
sete %al
jmp 0xd709
movb $0x1, %al
cmpq %r15, %rbx
setne %cl
xorb $0x1, %al
orb %cl, %al
jne 0xd88a
movl $0x1, %edx
movq 0x138b3(%rip), %rdi     # 0x20fd8
leaq 0xc79c(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x13896(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc3ea(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %rbx, %rdi
movl %r12d, %esi
callq 0x3430
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc74d(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rbx, %rdi
callq 0x32f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc39f(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %rbx, %rdi
movq 0x68(%rsp), %rsi
callq 0x3430
movl $0x7, %edx
movq %rax, %rdi
leaq 0xc6f3(%rip), %rsi      # 0x19eb8
callq 0x32f0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x70(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x32b0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
leaq 0x2d0(%rsp), %rdi
callq 0x30c0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xd81c
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x70(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x32b0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
leaq 0x2b0(%rsp), %rdi
callq 0x30c0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xd86e
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x150(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x3160
leaq 0x28(%rsp), %rsi
jmp 0xd9f6
movl $0x1, %edx
movq 0x13742(%rip), %rdi     # 0x20fd8
leaq 0xc62b(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x13725(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc279(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %rbx, %rdi
movq 0x68(%rsp), %rsi
callq 0x3430
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc5da(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbx, %rdi
callq 0x32f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc22c(%rip), %rsi      # 0x19b43
callq 0x32f0
movq %rbx, %rdi
movl %r12d, %esi
callq 0x3430
movl $0x7, %edx
movq %rax, %rdi
leaq 0xc582(%rip), %rsi      # 0x19eb8
callq 0x32f0
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x70(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x32b0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
leaq 0x2d0(%rsp), %rdi
callq 0x30c0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xd98d
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x3290
movl $0x1, %edx
movl $0x1, %ecx
leaq 0x70(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x32b0
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
leaq 0x2b0(%rsp), %rdi
callq 0x30c0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xd9df
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x150(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x3160
leaq 0x48(%rsp), %rsi
leaq 0xb8(%rsp), %rdi
callq 0x3160
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0xda28
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0xda4d
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0xda72
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xda8e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xf0(%rsp), %r12
leaq 0xe0(%rsp), %rax
cmpq %rax, %r12
je 0xdbb9
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x16592
movq 0x10(%rsp), %rbx
movq 0x50(%rsp), %r15
cmpq %rbx, %r15
movq %rbx, %rdx
cmovbq %r15, %rdx
testq %rdx, %rdx
je 0xdaf7
movq 0x48(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x32a0
testl %eax, %eax
sete %al
jmp 0xdaf9
movb $0x1, %al
cmpq %r15, %rbx
sete %cl
testb %cl, %al
jne 0xdb89
movq 0x30(%rsp), %r15
cmpq %rbx, %r15
movq %rbx, %rdx
cmovbq %r15, %rdx
testq %rdx, %rdx
je 0xdb31
movq 0x28(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x32a0
testl %eax, %eax
sete %al
jmp 0xdb33
movb $0x1, %al
cmpq %r15, %rbx
sete %cl
testb %cl, %al
jne 0xdb89
movq 0x8(%rsp), %rsi
movq 0x1348f(%rip), %rdi     # 0x20fd8
movq %rbx, %rdx
callq 0x32f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xbfe0(%rip), %rsi      # 0x19b43
callq 0x32f0
movl 0x40(%r12), %esi
movq %rbx, %rdi
callq 0x3430
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc344(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq %r12, %rdi
callq 0x31c0
movq %rax, %r12
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xda96
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xda96
movq 0x368(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x13409(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq 0x380(%rsp), %r14
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc2da(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x310(%rsp), %rax
movq (%rax,%r14,8), %rsi
movq %rbx, %rdi
callq 0x31a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0xc2af(%rip), %rsi      # 0x19ec8
callq 0x32f0
movq 0x310(%rsp), %rax
movq 0x8(%rax,%r14,8), %rsi
movq %rbx, %rdi
callq 0x31a0
movl $0x9, %edx
movq %rax, %rdi
leaq 0xc27e(%rip), %rsi      # 0x19ec0
callq 0x32f0
cmpb $0x0, 0xb4(%rsp)
je 0xdc69
movl $0xa, %edx
movq 0x1337b(%rip), %rdi     # 0x20fd8
leaq 0xc266(%rip), %rsi      # 0x19eca
callq 0x32f0
movq 0x13368(%rip), %rcx     # 0x20fd8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0x1334a(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq 0x378(%rsp), %rdi
callq 0x31c0
movq %rax, %rbx
movq 0x180(%rsp), %rdi
cmpq %r13, %rdi
je 0xdcc8
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
cmpq %rax, %rdi
je 0xdced
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xdd09
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0xdd2e
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0xdd53
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xdd78
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xdd9d
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0xddc2
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0xdde7
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xde03
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xd8(%rsp), %r14
movq %r14, %rdi
callq 0x15fd2
leaq 0x390(%rsp), %rax
cmpq %rax, %rbx
jne 0xcc52
movq 0x131ad(%rip), %rbx     # 0x20fd8
leaq 0xc0a3(%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 0x1317b(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq %rax, %rbx
leaq 0xc054(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x270(%rsp), %rsi
movq 0x278(%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 0xbffb(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x290(%rsp), %rsi
movq 0x298(%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 0x130b5(%rip), %rbx     # 0x20fd8
leaq 0xbfcc(%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 0x13083(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq %rax, %rbx
leaq 0xbf5c(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x2d0(%rsp), %rsi
movq 0x2d8(%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 0xbf03(%rip), %rsi      # 0x19ec8
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x2b0(%rsp), %rsi
movq 0x2b8(%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 0x1a0(%rsp), %rdi
movq 0x228(%rsp), %rsi
callq 0x154be
leaq 0xd8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x1a0(%rsp), %rdi
callq 0x14806
leaq 0x2d0(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
leaq 0xd8(%rsp), %rsi
movl $0x0, (%rsi)
movq 0x1a0(%rsp), %rdi
callq 0x14806
addq $0x20, %rax
leaq 0x2b0(%rsp), %rsi
movq %rax, %rdi
callq 0x3160
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
movb 0x7(%rsp), %r14b
je 0xe0ad
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0xe1ca
movq 0x160(%rsp), %rsi
jmp 0xe1c2
movq 0x12efe(%rip), %rbx     # 0x20fd8
leaq 0xbc91(%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 0x12ecc(%rip), %rdi     # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0xe13e
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0xe15b
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0xe180
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0xe1a5
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0xe1ca
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x388(%rsp), %rdi
callq 0x1653a
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0xe1fc
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0xe221
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x310(%rsp), %rdi
testq %rdi, %rdi
je 0xe23e
movq 0x320(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0xe263
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0xe288
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3290
andb $0x1, %r14b
movl %r14d, %eax
addq $0x3b8, %rsp            # imm = 0x3B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xbb1c(%rip), %rdi      # 0x19dc4
leaq 0xb81c(%rip), %rsi      # 0x19acb
leaq 0xbb25(%rip), %rcx      # 0x19ddb
movl $0x7c9, %edx            # imm = 0x7C9
callq 0x3180
leaq 0xbb59(%rip), %rdi      # 0x19e20
leaq 0xb7fd(%rip), %rsi      # 0x19acb
leaq 0xbb06(%rip), %rcx      # 0x19ddb
movl $0x819, %edx            # imm = 0x819
callq 0x3180
leaq 0xbb6e(%rip), %rdi      # 0x19e54
leaq 0xb7de(%rip), %rsi      # 0x19acb
leaq 0xbae7(%rip), %rcx      # 0x19ddb
movl $0x81f, %edx            # imm = 0x81F
callq 0x3180
leaq 0xbb81(%rip), %rdi      # 0x19e86
leaq 0xb7bf(%rip), %rsi      # 0x19acb
leaq 0xbac8(%rip), %rcx      # 0x19ddb
movl $0x820, %edx            # imm = 0x820
callq 0x3180
movq %rax, %rbx
jmp 0xe8d3
jmp 0xe4d8
movq %rax, %rbx
jmp 0xe92a
jmp 0xe347
jmp 0xe347
jmp 0xe69e
jmp 0xe5f4
jmp 0xe5f4
jmp 0xe347
movq %rax, %rbx
jmp 0xe94f
jmp 0xe37b
jmp 0xe601
jmp 0xe37b
jmp 0xe601
jmp 0xe3b8
movq %rax, %rbx
jmp 0xe96c
movq %rax, %rbx
jmp 0xe991
jmp 0xe795
jmp 0xe601
jmp 0xe37b
movq %rax, %rbx
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xe604
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xe604
jmp 0xe601
jmp 0xe3c0
movq %rax, %rbx
jmp 0xe629
movq %rax, %rbx
jmp 0xe68f
movq %rax, %rbx
jmp 0xe673
movq %rax, %rbx
jmp 0xe64e
movq %rax, %rbx
jmp 0xe6e8
jmp 0xe4d8
jmp 0xe7a4
jmp 0xe3e6
jmp 0xe3e6
movq %rax, %rbx
jmp 0xe772
movq %rax, %rbx
jmp 0xe412
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xe412
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0xe772
movq 0x190(%rsp), %rsi
jmp 0xe76a
movq %rax, %rbx
jmp 0xe74d
movq %rax, %rbx
jmp 0xe465
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0xe465
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xe74d
movq 0x18(%rsp), %rsi
jmp 0xe745
jmp 0xe70c
jmp 0xe70c
jmp 0xe70c
jmp 0xe70c
jmp 0xe795
jmp 0xe79d
jmp 0xe790
jmp 0xe704
jmp 0xe4ac
movq %rax, %rbx
jmp 0xe8a1
movq %rax, %rbx
jmp 0xe885
movq %rax, %rbx
jmp 0xe860
jmp 0xe533
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x15fd2
jmp 0xe536
movq %rax, %rbx
jmp 0xe8f8
movq %rax, %rbx
jmp 0xe5ce
movq %rax, %rbx
jmp 0xe5b2
movq %rax, %rbx
jmp 0xe58d
movq %rax, %rbx
jmp 0xe55b
jmp 0xe533
jmp 0xe533
jmp 0xe511
jmp 0xe533
jmp 0xe533
jmp 0xe511
jmp 0xe533
jmp 0xe511
jmp 0xe533
jmp 0xe533
movq %rax, %rbx
movq 0xd8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xe536
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xe536
movq %rax, %rbx
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xe55b
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x150(%rsp), %rdi
callq 0x15fd2
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0xe58d
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0xe5b2
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xe5ce
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xe8f8
movq 0xc8(%rsp), %rsi
jmp 0xe8f0
movq %rax, %rbx
jmp 0xe8ae
jmp 0xe70c
movq %rax, %rbx
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0xe629
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0xe64e
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0xe673
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xe68f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movq %r14, %r13
jmp 0xe730
jmp 0xe790
jmp 0xe70c
movq %rax, %rbx
jmp 0xe6c3
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xe6c3
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0xe6e8
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xd8(%rsp), %rdi
callq 0x14746
jmp 0xe8f8
jmp 0xe7a4
jmp 0xe7a4
movq %rax, %rbx
jmp 0xe7cc
movq %rax, %rbx
jmp 0xe730
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xe730
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x180(%rsp), %rdi
cmpq %r13, %rdi
je 0xe74d
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x218(%rsp), %rax
movq 0x208(%rsp), %rdi
cmpq %rax, %rdi
je 0xe772
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xe7a7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0xe7a7
movq %rax, %rbx
jmp 0xe7f1
movq %rax, %rbx
jmp 0xe83b
movq %rax, %rbx
jmp 0xe816
jmp 0xe7a4
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0xe7cc
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0xe7f1
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xe816
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xe83b
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0xe860
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0xe885
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xe8a1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xd8(%rsp), %rdi
callq 0x15fd2
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xe8d3
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x160(%rsp), %rax
movq 0x150(%rsp), %rdi
cmpq %rax, %rdi
je 0xe8f8
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x388(%rsp), %rdi
callq 0x1653a
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0xe92a
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0xe94f
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x310(%rsp), %rdi
testq %rdi, %rdi
je 0xe96c
movq 0x320(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
leaq 0x2a0(%rsp), %rax
movq 0x290(%rsp), %rdi
cmpq %rax, %rdi
je 0xe991
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x280(%rsp), %rax
movq 0x270(%rsp), %rdi
cmpq %rax, %rdi
je 0xe9b6
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x3460