// File: 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:
subq $0xd88, %rsp            # imm = 0xD88
movq %rdi, 0x328(%rsp)
movq %rdx, 0x320(%rsp)
movq %rdi, 0xd78(%rsp)
movq %rsi, 0xd70(%rsp)
movq %rdx, 0xd68(%rsp)
movl $0x0, 0xd44(%rsp)
leaq 0xd44(%rsp), %rsi
callq 0x19010
movq %rax, %rsi
leaq 0xd48(%rsp), %rdi
callq 0x3160
movq 0x328(%rsp), %rdi
movl $0x0, 0xd1c(%rsp)
leaq 0xd1c(%rsp), %rsi
callq 0x19010
movq %rax, 0x330(%rsp)
jmp 0xe2a1
movq 0x330(%rsp), %rsi
addq $0x20, %rsi
leaq 0xd20(%rsp), %rdi
callq 0x3160
jmp 0xe2bc
movq 0x328(%rsp), %rdi
movl $0x0, 0xcec(%rsp)
leaq 0xcec(%rsp), %rsi
callq 0x19010
movq %rax, 0x318(%rsp)
jmp 0xe2e6
movq 0x318(%rsp), %rsi
addq $0x60, %rsi
leaq 0xcf0(%rsp), %rdi
callq 0x19100
jmp 0xe301
leaq 0xd48(%rsp), %rdi
callq 0x3250
cmpq $0x1, %rax
jne 0xe42f
leaq 0xd20(%rsp), %rdi
callq 0x3250
cmpq $0x1, %rax
jne 0xe42f
movq 0x328(%rsp), %rsi
movq 0xd70(%rsp), %rdi
callq 0x193e0
jmp 0xe346
movq 0xd70(%rsp), %rdi
movl $0x0, 0xce8(%rsp)
leaq 0xce8(%rsp), %rsi
callq 0x19010
movq %rax, 0x310(%rsp)
jmp 0xe370
movq 0x310(%rsp), %rdi
leaq 0xd48(%rsp), %rsi
callq 0x3050
jmp 0xe387
movq 0xd70(%rsp), %rdi
movl $0x0, 0xce4(%rsp)
leaq 0xce4(%rsp), %rsi
callq 0x19010
movq %rax, 0x308(%rsp)
jmp 0xe3b1
movq 0x308(%rsp), %rdi
addq $0x20, %rdi
leaq 0xd20(%rsp), %rsi
callq 0x3050
jmp 0xe3cc
movb $0x1, 0xd87(%rsp)
movl $0x1, 0xce0(%rsp)
jmp 0x10c44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10c96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10c89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10c7c
leaq 0xcbf(%rsp), %rdi
movq %rdi, 0x300(%rsp)
callq 0x3570
movq 0x300(%rsp), %rdx
leaq 0x1da0e(%rip), %rsi     # 0x2be61
leaq 0xcc0(%rsp), %rdi
callq 0x185e0
jmp 0xe462
leaq 0xcbf(%rsp), %rdi
callq 0x3390
leaq 0xc97(%rsp), %rdi
movq %rdi, 0x2f8(%rsp)
callq 0x3570
movq 0x2f8(%rsp), %rdx
leaq 0x1d9ce(%rip), %rsi     # 0x2be61
leaq 0xc98(%rsp), %rdi
callq 0x185e0
jmp 0xe4a2
leaq 0xc97(%rsp), %rdi
callq 0x3390
leaq 0xc60(%rsp), %rdi
callq 0x1a230
movq $0x0, 0xc58(%rsp)
movq 0xc58(%rsp), %rax
movq %rax, 0x2f0(%rsp)
leaq 0xd48(%rsp), %rdi
callq 0x3250
movq %rax, %rcx
movq 0x2f0(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0xebd9
movq 0xc58(%rsp), %rdx
leaq 0xc38(%rsp), %rdi
leaq 0xd48(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xe521
movq 0xc58(%rsp), %rdx
leaq 0xc18(%rsp), %rdi
leaq 0xd20(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xe545
movq 0xc58(%rsp), %rdx
incq %rdx
leaq 0xbf8(%rsp), %rdi
leaq 0xd48(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xe56c
movq 0xc58(%rsp), %rdx
incq %rdx
leaq 0xbd8(%rsp), %rdi
leaq 0xd20(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xe593
leaq 0xba8(%rsp), %rdi
callq 0x1a040
leaq 0xb87(%rsp), %rdi
movq %rdi, 0x2e8(%rsp)
callq 0x3570
movq 0x2e8(%rsp), %rdx
leaq 0x1d89d(%rip), %rsi     # 0x2be61
leaq 0xb88(%rsp), %rdi
callq 0x185e0
jmp 0xe5d3
leaq 0xb87(%rsp), %rdi
callq 0x3390
leaq 0xb60(%rsp), %rdi
leaq 0xc38(%rsp), %rsi
leaq 0xbf8(%rsp), %rdx
callq 0x1a240
jmp 0xe5ff
leaq 0xb88(%rsp), %rdi
movq %rdi, 0x2e0(%rsp)
leaq 0xb60(%rsp), %rsi
movq %rsi, 0x2d8(%rsp)
callq 0x33f0
movq 0x2d8(%rsp), %rdi
callq 0x31e0
movq 0x2e0(%rsp), %rsi
movl $0x0, 0xb34(%rsp)
leaq 0xb38(%rsp), %rdi
leaq 0xb34(%rsp), %rdx
callq 0x1a160
jmp 0xe65b
leaq 0xba8(%rsp), %rdi
leaq 0xb38(%rsp), %rsi
callq 0x1a110
movb %dl, 0x2cf(%rsp)
movq %rax, 0x2d0(%rsp)
jmp 0xe681
movb 0x2cf(%rsp), %al
movq 0x2d0(%rsp), %rcx
movq %rcx, 0xb20(%rsp)
movb %al, 0xb28(%rsp)
leaq 0xb38(%rsp), %rdi
callq 0x1a1a0
leaq 0xb00(%rsp), %rdi
leaq 0xc38(%rsp), %rsi
leaq 0xbd8(%rsp), %rdx
callq 0x1a240
jmp 0xe6cb
leaq 0xb88(%rsp), %rdi
movq %rdi, 0x2c0(%rsp)
leaq 0xb00(%rsp), %rsi
movq %rsi, 0x2b8(%rsp)
callq 0x33f0
movq 0x2b8(%rsp), %rdi
callq 0x31e0
movq 0x2c0(%rsp), %rsi
movl $0x0, 0xad4(%rsp)
leaq 0xad8(%rsp), %rdi
leaq 0xad4(%rsp), %rdx
callq 0x1a160
jmp 0xe727
leaq 0xba8(%rsp), %rdi
leaq 0xad8(%rsp), %rsi
callq 0x1a110
movb %dl, 0x2af(%rsp)
movq %rax, 0x2b0(%rsp)
jmp 0xe74d
movb 0x2af(%rsp), %al
movq 0x2b0(%rsp), %rcx
movq %rcx, 0xac0(%rsp)
movb %al, 0xac8(%rsp)
leaq 0xad8(%rsp), %rdi
callq 0x1a1a0
leaq 0xaa0(%rsp), %rdi
leaq 0xc18(%rsp), %rsi
leaq 0xbf8(%rsp), %rdx
callq 0x1a240
jmp 0xe797
leaq 0xb88(%rsp), %rdi
movq %rdi, 0x2a0(%rsp)
leaq 0xaa0(%rsp), %rsi
movq %rsi, 0x298(%rsp)
callq 0x33f0
movq 0x298(%rsp), %rdi
callq 0x31e0
movq 0x2a0(%rsp), %rsi
movl $0x0, 0xa74(%rsp)
leaq 0xa78(%rsp), %rdi
leaq 0xa74(%rsp), %rdx
callq 0x1a160
jmp 0xe7f3
leaq 0xba8(%rsp), %rdi
leaq 0xa78(%rsp), %rsi
callq 0x1a110
movb %dl, 0x28f(%rsp)
movq %rax, 0x290(%rsp)
jmp 0xe819
movb 0x28f(%rsp), %al
movq 0x290(%rsp), %rcx
movq %rcx, 0xa60(%rsp)
movb %al, 0xa68(%rsp)
leaq 0xa78(%rsp), %rdi
callq 0x1a1a0
leaq 0xa40(%rsp), %rdi
leaq 0xc18(%rsp), %rsi
leaq 0xbd8(%rsp), %rdx
callq 0x1a240
jmp 0xe863
leaq 0xb88(%rsp), %rdi
movq %rdi, 0x280(%rsp)
leaq 0xa40(%rsp), %rsi
movq %rsi, 0x278(%rsp)
callq 0x33f0
movq 0x278(%rsp), %rdi
callq 0x31e0
movq 0x280(%rsp), %rsi
movl $0x0, 0xa14(%rsp)
leaq 0xa18(%rsp), %rdi
leaq 0xa14(%rsp), %rdx
callq 0x1a160
jmp 0xe8bf
leaq 0xba8(%rsp), %rdi
leaq 0xa18(%rsp), %rsi
callq 0x1a110
movb %dl, 0x26f(%rsp)
movq %rax, 0x270(%rsp)
jmp 0xe8e5
movb 0x26f(%rsp), %al
movq 0x270(%rsp), %rcx
movq %rcx, 0xa00(%rsp)
movb %al, 0xa08(%rsp)
leaq 0xa18(%rsp), %rdi
callq 0x1a1a0
leaq 0x9c8(%rsp), %rdi
leaq 0xc58(%rsp), %rsi
leaq 0xba8(%rsp), %rdx
callq 0x1a320
jmp 0xe92f
leaq 0xc60(%rsp), %rdi
leaq 0x9c8(%rsp), %rsi
callq 0x1a2d0
movb %dl, 0x25f(%rsp)
movq %rax, 0x260(%rsp)
jmp 0xe955
movb 0x25f(%rsp), %al
movq 0x260(%rsp), %rcx
movq %rcx, 0x9b8(%rsp)
movb %al, 0x9c0(%rsp)
leaq 0x9c8(%rsp), %rdi
callq 0x1a360
leaq 0xb88(%rsp), %rdi
callq 0x31e0
leaq 0xba8(%rsp), %rdi
callq 0x1a220
leaq 0xbd8(%rsp), %rdi
callq 0x31e0
leaq 0xbf8(%rsp), %rdi
callq 0x31e0
leaq 0xc18(%rsp), %rdi
callq 0x31e0
leaq 0xc38(%rsp), %rdi
callq 0x31e0
movq 0xc58(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xc58(%rsp)
jmp 0xe4c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0xcbf(%rsp), %rdi
callq 0x3390
jmp 0x10c7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0xc97(%rsp), %rdi
callq 0x3390
jmp 0x10c35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10c1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xebc7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xebba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xebad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0xb87(%rsp), %rdi
callq 0x3390
jmp 0xeb93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xeb86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0xb38(%rsp), %rdi
callq 0x1a1a0
jmp 0xeb86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0xad8(%rsp), %rdi
callq 0x1a1a0
jmp 0xeb86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0xa78(%rsp), %rdi
callq 0x1a1a0
jmp 0xeb86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0xa18(%rsp), %rdi
callq 0x1a1a0
jmp 0xeb86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x9c8(%rsp), %rdi
callq 0x1a360
leaq 0xb88(%rsp), %rdi
callq 0x31e0
leaq 0xba8(%rsp), %rdi
callq 0x1a220
leaq 0xbd8(%rsp), %rdi
callq 0x31e0
leaq 0xbf8(%rsp), %rdi
callq 0x31e0
leaq 0xc18(%rsp), %rdi
callq 0x31e0
leaq 0xc38(%rsp), %rdi
callq 0x31e0
jmp 0x10c1b
leaq 0x9b0(%rsp), %rdi
callq 0x19200
leaq 0x9a8(%rsp), %rdi
callq 0x19200
movq 0x328(%rsp), %rdi
callq 0x19220
movq 0x328(%rsp), %rdi
movq %rax, 0x9a0(%rsp)
movq 0x9a0(%rsp), %rax
movq %rax, 0x9b0(%rsp)
callq 0x19250
movq %rax, 0x998(%rsp)
movq 0x998(%rsp), %rax
movq %rax, 0x9a8(%rsp)
leaq 0x9b0(%rsp), %rdi
leaq 0x9a8(%rsp), %rsi
callq 0x19280
testb $0x1, %al
jne 0xec5b
jmp 0xf011
leaq 0x9b0(%rsp), %rdi
callq 0x192a0
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x920(%rsp), %rdi
callq 0x192c0
jmp 0xec7e
leaq 0x900(%rsp), %rdi
leaq 0x920(%rsp), %rsi
callq 0x3160
jmp 0xec95
leaq 0xd48(%rsp), %rdi
callq 0x3250
movq %rax, 0x250(%rsp)
leaq 0xd20(%rsp), %rdi
callq 0x3250
movq %rax, %rcx
movq 0x250(%rsp), %rax
cmpq %rcx, %rax
jne 0xed2b
leaq 0xd48(%rsp), %rdi
callq 0x3250
movq %rax, 0x248(%rsp)
leaq 0x900(%rsp), %rdi
callq 0x3250
movq %rax, %rcx
movq 0x248(%rsp), %rax
cmpq %rcx, %rax
jne 0xed2b
leaq 0xd20(%rsp), %rdi
callq 0x3250
movq %rax, 0x240(%rsp)
leaq 0x900(%rsp), %rdi
callq 0x3250
movq %rax, %rcx
movq 0x240(%rsp), %rax
cmpq %rcx, %rax
je 0xeda8
movq 0x2a2a6(%rip), %rdi     # 0x38fd8
leaq 0x1cfd1(%rip), %rsi     # 0x2bd0a
callq 0x3320
movq %rax, 0x238(%rsp)
jmp 0xed48
movq 0x238(%rsp), %rdi
movq 0x2a271(%rip), %rsi     # 0x38fc8
callq 0x3370
jmp 0xed5e
movb $0x0, 0xd87(%rsp)
movl $0x1, 0xce0(%rsp)
jmp 0xefc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xefff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xeff2
leaq 0x8f8(%rsp), %rdi
callq 0x1a380
movq $0x0, 0x8f0(%rsp)
movq 0x8f0(%rsp), %rax
movq %rax, 0x230(%rsp)
leaq 0x900(%rsp), %rdi
callq 0x3250
movq %rax, %rcx
movq 0x230(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0xefa0
movq 0x8f0(%rsp), %rdx
leaq 0x8d0(%rsp), %rdi
leaq 0x900(%rsp), %rsi
movl $0x2, %ecx
callq 0x3350
jmp 0xee1a
leaq 0xc60(%rsp), %rdi
leaq 0x8f0(%rsp), %rsi
callq 0x1a3a0
movq %rax, 0x228(%rsp)
jmp 0xee39
movq 0x228(%rsp), %rax
movq %rax, 0x8c8(%rsp)
movq 0x8c8(%rsp), %rax
movq %rax, 0x8f8(%rsp)
leaq 0xc60(%rsp), %rdi
callq 0x1a3f0
movq %rax, 0x8c0(%rsp)
leaq 0x8f8(%rsp), %rdi
leaq 0x8c0(%rsp), %rsi
callq 0x1a3d0
testb $0x1, %al
jne 0xee89
jmp 0xee8b
jmp 0xeed0
leaq 0x1ceca(%rip), %rdi     # 0x2bd5c
leaq 0x1cbca(%rip), %rsi     # 0x2ba63
movl $0x7c9, %edx            # imm = 0x7C9
leaq 0x1cece(%rip), %rcx     # 0x2bd73
callq 0x3210
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x8d0(%rsp), %rdi
callq 0x31e0
jmp 0xeff2
leaq 0x8b8(%rsp), %rdi
callq 0x1a050
leaq 0x8f8(%rsp), %rdi
callq 0x1a420
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x8d0(%rsp), %rsi
callq 0x1a070
movq %rax, 0x220(%rsp)
jmp 0xef08
movq 0x220(%rsp), %rax
movq %rax, 0x8b0(%rsp)
movq 0x8b0(%rsp), %rax
movq %rax, 0x8b8(%rsp)
leaq 0x8f8(%rsp), %rdi
callq 0x1a420
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1a0c0
movq %rax, 0x8a8(%rsp)
leaq 0x8b8(%rsp), %rdi
leaq 0x8a8(%rsp), %rsi
callq 0x1a0a0
testb $0x1, %al
jne 0xef64
jmp 0xef7a
leaq 0x8b8(%rsp), %rdi
callq 0x1a0f0
movl 0x20(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x20(%rax)
leaq 0x8d0(%rsp), %rdi
callq 0x31e0
movq 0x8f0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8f0(%rsp)
jmp 0xedc1
leaq 0x9b0(%rsp), %rdi
xorl %esi, %esi
callq 0x193a0
movq %rax, 0x8a0(%rsp)
movl $0x0, 0xce0(%rsp)
leaq 0x900(%rsp), %rdi
callq 0x31e0
leaq 0x920(%rsp), %rdi
callq 0x18df0
movl 0xce0(%rsp), %eax
testl %eax, %eax
jne 0x10bf2
jmp 0xefed
jmp 0xec3d
leaq 0x900(%rsp), %rdi
callq 0x31e0
leaq 0x920(%rsp), %rdi
callq 0x18df0
jmp 0x10c1b
leaq 0x898(%rsp), %rdi
callq 0x1a380
leaq 0x890(%rsp), %rdi
callq 0x1a380
leaq 0xc60(%rsp), %rdi
movq %rdi, 0x210(%rsp)
callq 0x1a440
movq 0x210(%rsp), %rdi
movq %rax, 0x888(%rsp)
movq 0x888(%rsp), %rax
movq %rax, 0x898(%rsp)
callq 0x1a3f0
movq %rax, 0x880(%rsp)
movq 0x880(%rsp), %rax
movq %rax, 0x890(%rsp)
leaq 0x85f(%rsp), %rdi
movq %rdi, 0x218(%rsp)
callq 0x3570
movq 0x218(%rsp), %rdx
leaq 0x1cdc0(%rip), %rsi     # 0x2be61
leaq 0x860(%rsp), %rdi
callq 0x185e0
jmp 0xf0b0
leaq 0x85f(%rsp), %rdi
callq 0x3390
leaq 0x837(%rsp), %rdi
movq %rdi, 0x208(%rsp)
callq 0x3570
movq 0x208(%rsp), %rdx
leaq 0x1cd80(%rip), %rsi     # 0x2be61
leaq 0x838(%rsp), %rdi
callq 0x185e0
jmp 0xf0f0
leaq 0x837(%rsp), %rdi
callq 0x3390
leaq 0x898(%rsp), %rdi
leaq 0x890(%rsp), %rsi
callq 0x1a3d0
testb $0x1, %al
jne 0xf11b
jmp 0x10986
leaq 0x898(%rsp), %rdi
movq %rdi, 0x1f8(%rsp)
callq 0x1a420
movq (%rax), %rax
movq %rax, 0x828(%rsp)
leaq 0x7f8(%rsp), %rdi
movq %rdi, 0x200(%rsp)
callq 0x1a040
movq 0x1f8(%rsp), %rdi
callq 0x1a420
movq 0x200(%rsp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0x1a470
jmp 0xf173
leaq 0x7f0(%rsp), %rdi
callq 0x1a050
leaq 0x7e8(%rsp), %rdi
callq 0x1a050
leaq 0x7f8(%rsp), %rdi
movq %rdi, 0x1e8(%rsp)
callq 0x1a1b0
movq 0x1e8(%rsp), %rdi
movq %rax, 0x7e0(%rsp)
movq 0x7e0(%rsp), %rax
movq %rax, 0x7f0(%rsp)
callq 0x1a0c0
movq %rax, 0x7d8(%rsp)
movq 0x7d8(%rsp), %rax
movq %rax, 0x7e8(%rsp)
leaq 0x7b7(%rsp), %rdi
movq %rdi, 0x1f0(%rsp)
callq 0x3570
movq 0x1f0(%rsp), %rdx
leaq 0x1cc5e(%rip), %rsi     # 0x2be61
leaq 0x7b8(%rsp), %rdi
callq 0x185e0
jmp 0xf212
leaq 0x7b7(%rsp), %rdi
callq 0x3390
movl $0x0, 0x7b0(%rsp)
leaq 0x78f(%rsp), %rdi
movq %rdi, 0x1e0(%rsp)
callq 0x3570
movq 0x1e0(%rsp), %rdx
leaq 0x1cc13(%rip), %rsi     # 0x2be61
leaq 0x790(%rsp), %rdi
callq 0x185e0
jmp 0xf25d
leaq 0x78f(%rsp), %rdi
callq 0x3390
leaq 0x767(%rsp), %rdi
movq %rdi, 0x1d8(%rsp)
callq 0x3570
movq 0x1d8(%rsp), %rdx
leaq 0x1cbd3(%rip), %rsi     # 0x2be61
leaq 0x768(%rsp), %rdi
callq 0x185e0
jmp 0xf29d
leaq 0x767(%rsp), %rdi
callq 0x3390
leaq 0x7f0(%rsp), %rdi
leaq 0x7e8(%rsp), %rsi
callq 0x1a0a0
testb $0x1, %al
jne 0xf2c8
jmp 0xf596
leaq 0x7f0(%rsp), %rdi
callq 0x1a0f0
movq %rax, %rsi
leaq 0x740(%rsp), %rdi
callq 0x3160
jmp 0xf2e7
xorl %eax, %eax
movl %eax, %edx
leaq 0x720(%rsp), %rdi
leaq 0x740(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xf307
leaq 0x790(%rsp), %rdi
leaq 0x720(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x3600
cmpq $-0x1, %rax
jne 0xf468
leaq 0x790(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x3420
jmp 0xf341
jmp 0xf468
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x85f(%rsp), %rdi
callq 0x3390
jmp 0x10c1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x837(%rsp), %rdi
callq 0x3390
jmp 0x10be3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10974
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x7b7(%rsp), %rdi
callq 0x3390
jmp 0x10974
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x78f(%rsp), %rdi
callq 0x3390
jmp 0x10967
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x767(%rsp), %rdi
callq 0x3390
jmp 0x1095a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x1094d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xf584
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xf577
leaq 0x700(%rsp), %rdi
leaq 0x740(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0xf487
leaq 0x768(%rsp), %rdi
leaq 0x700(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x3600
cmpq $-0x1, %rax
jne 0xf4e5
leaq 0x768(%rsp), %rdi
leaq 0x700(%rsp), %rsi
callq 0x3420
jmp 0xf4bd
jmp 0xf4e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x700(%rsp), %rdi
callq 0x31e0
jmp 0xf577
leaq 0x7f0(%rsp), %rdi
callq 0x1a0f0
movl 0x20(%rax), %eax
cmpl 0x7b0(%rsp), %eax
jle 0xf534
leaq 0x7f0(%rsp), %rdi
callq 0x1a0f0
movq %rax, %rsi
leaq 0x7b8(%rsp), %rdi
callq 0x3050
jmp 0xf51d
leaq 0x7f0(%rsp), %rdi
callq 0x1a0f0
movl 0x20(%rax), %eax
movl %eax, 0x7b0(%rsp)
leaq 0x7f0(%rsp), %rdi
xorl %esi, %esi
callq 0x1a1e0
movq %rax, 0x6f8(%rsp)
leaq 0x700(%rsp), %rdi
callq 0x31e0
leaq 0x720(%rsp), %rdi
callq 0x31e0
leaq 0x740(%rsp), %rdi
callq 0x31e0
jmp 0xf2aa
leaq 0x720(%rsp), %rdi
callq 0x31e0
leaq 0x740(%rsp), %rdi
callq 0x31e0
jmp 0x1094d
cmpl $0x0, 0x7b0(%rsp)
jne 0xf600
leaq 0x7f8(%rsp), %rdi
callq 0x1a1b0
movq %rax, 0x6f0(%rsp)
leaq 0x6f0(%rsp), %rdi
callq 0x1a0f0
movq %rax, %rsi
leaq 0x7b8(%rsp), %rdi
callq 0x3050
jmp 0xf5d4
leaq 0x7f8(%rsp), %rdi
callq 0x1a1b0
movq %rax, 0x6e8(%rsp)
leaq 0x6e8(%rsp), %rdi
callq 0x1a0f0
movl 0x20(%rax), %eax
movl %eax, 0x7b0(%rsp)
xorl %eax, %eax
movl %eax, %edx
leaq 0x6c8(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xf620
leaq 0x6a8(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0xf63f
leaq 0x687(%rsp), %rdi
movq %rdi, 0x1d0(%rsp)
callq 0x3570
movq 0x1d0(%rsp), %rdx
leaq 0x1c7fe(%rip), %rsi     # 0x2be61
leaq 0x688(%rsp), %rdi
callq 0x185e0
jmp 0xf672
leaq 0x687(%rsp), %rdi
callq 0x3390
leaq 0x65f(%rsp), %rdi
movq %rdi, 0x1c8(%rsp)
callq 0x3570
movq 0x1c8(%rsp), %rdx
leaq 0x1c7be(%rip), %rsi     # 0x2be61
leaq 0x660(%rsp), %rdi
callq 0x185e0
jmp 0xf6b2
leaq 0x65f(%rsp), %rdi
callq 0x3390
movl $0x0, 0x658(%rsp)
cmpl $0x2, 0x658(%rsp)
jge 0xf907
movslq 0x658(%rsp), %rdx
leaq 0x638(%rsp), %rdi
leaq 0x790(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xf6fc
leaq 0x638(%rsp), %rdi
leaq 0x6c8(%rsp), %rsi
callq 0x3040
movl %eax, 0x1c4(%rsp)
jmp 0xf71a
leaq 0x638(%rsp), %rdi
callq 0x31e0
movl 0x1c4(%rsp), %eax
cmpl $0x0, %eax
je 0xf826
movslq 0x658(%rsp), %rdx
leaq 0x618(%rsp), %rdi
leaq 0x790(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xf75b
leaq 0x688(%rsp), %rdi
leaq 0x618(%rsp), %rsi
callq 0x33f0
leaq 0x618(%rsp), %rdi
callq 0x31e0
jmp 0xf826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10940
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x687(%rsp), %rdi
callq 0x3390
jmp 0x10933
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x65f(%rsp), %rdi
callq 0x3390
jmp 0x10926
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10919
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x638(%rsp), %rdi
callq 0x31e0
jmp 0x10919
movslq 0x658(%rsp), %rdx
leaq 0x5f8(%rsp), %rdi
leaq 0x768(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xf84a
leaq 0x5f8(%rsp), %rdi
leaq 0x6a8(%rsp), %rsi
callq 0x3040
movl %eax, 0x1c0(%rsp)
jmp 0xf868
leaq 0x5f8(%rsp), %rdi
callq 0x31e0
movl 0x1c0(%rsp), %eax
cmpl $0x0, %eax
je 0xf8ef
movslq 0x658(%rsp), %rdx
leaq 0x5d8(%rsp), %rdi
leaq 0x768(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xf8a5
leaq 0x660(%rsp), %rdi
leaq 0x5d8(%rsp), %rsi
callq 0x33f0
leaq 0x5d8(%rsp), %rdi
callq 0x31e0
jmp 0xf8ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x5f8(%rsp), %rdi
callq 0x31e0
jmp 0x10919
jmp 0xf8f1
movl 0x658(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x658(%rsp)
jmp 0xf6ca
leaq 0x5b8(%rsp), %rdi
leaq 0x688(%rsp), %rsi
leaq 0x660(%rsp), %rdx
callq 0x1a240
jmp 0xf926
leaq 0x7f8(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x1a070
movq %rax, 0x1b8(%rsp)
jmp 0xf945
movq 0x1b8(%rsp), %rax
movq %rax, 0x5b0(%rsp)
leaq 0x7f8(%rsp), %rdi
callq 0x1a0c0
movq %rax, 0x5a8(%rsp)
leaq 0x5b0(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
callq 0x1a0a0
testb $0x1, %al
jne 0xf985
jmp 0xf987
jmp 0xf9bf
leaq 0x1c42a(%rip), %rdi     # 0x2bdb8
leaq 0x1c0ce(%rip), %rsi     # 0x2ba63
movl $0x819, %edx            # imm = 0x819
leaq 0x1c3d2(%rip), %rcx     # 0x2bd73
callq 0x3210
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x1090c
leaq 0x7f8(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x1a4a0
movq %rax, 0x1b0(%rsp)
jmp 0xf9de
movq 0x1b0(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x5a4(%rsp)
xorl %eax, %eax
movl %eax, %edx
leaq 0x560(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xfa0f
leaq 0x540(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0xfa2e
leaq 0x580(%rsp), %rdi
leaq 0x560(%rsp), %rsi
leaq 0x540(%rsp), %rdx
callq 0x1a590
jmp 0xfa4d
leaq 0x540(%rsp), %rdi
callq 0x31e0
leaq 0x560(%rsp), %rdi
callq 0x31e0
xorl %eax, %eax
movl %eax, %edx
leaq 0x500(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0xfa87
leaq 0x4e0(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0xfaa6
leaq 0x520(%rsp), %rdi
leaq 0x500(%rsp), %rsi
leaq 0x4e0(%rsp), %rdx
callq 0x1a590
jmp 0xfac5
leaq 0x4e0(%rsp), %rdi
callq 0x31e0
leaq 0x500(%rsp), %rdi
callq 0x31e0
leaq 0x7f8(%rsp), %rdi
leaq 0x580(%rsp), %rsi
callq 0x1a070
movq %rax, 0x1a8(%rsp)
jmp 0xfafe
movq 0x1a8(%rsp), %rax
movq %rax, 0x4d8(%rsp)
leaq 0x7f8(%rsp), %rdi
callq 0x1a0c0
movq %rax, 0x4d0(%rsp)
leaq 0x4d8(%rsp), %rdi
leaq 0x4d0(%rsp), %rsi
callq 0x1a0a0
testb $0x1, %al
jne 0xfb3e
jmp 0xfb43
jmp 0xfc26
leaq 0x1c2a2(%rip), %rdi     # 0x2bdec
leaq 0x1bf12(%rip), %rsi     # 0x2ba63
movl $0x81f, %edx            # imm = 0x81F
leaq 0x1c216(%rip), %rcx     # 0x2bd73
callq 0x3210
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xfb99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x540(%rsp), %rdi
callq 0x31e0
leaq 0x560(%rsp), %rdi
callq 0x31e0
jmp 0x1090c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x108ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0xfbfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x4e0(%rsp), %rdi
callq 0x31e0
leaq 0x500(%rsp), %rdi
callq 0x31e0
jmp 0x108ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x108f2
leaq 0x7f8(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x1a070
movq %rax, 0x1a0(%rsp)
jmp 0xfc45
movq 0x1a0(%rsp), %rax
movq %rax, 0x4c8(%rsp)
leaq 0x7f8(%rsp), %rdi
callq 0x1a0c0
movq %rax, 0x4c0(%rsp)
leaq 0x4c8(%rsp), %rdi
leaq 0x4c0(%rsp), %rsi
callq 0x1a0a0
testb $0x1, %al
jne 0xfc85
jmp 0xfc87
jmp 0xfca6
leaq 0x1c190(%rip), %rdi     # 0x2be1e
leaq 0x1bdce(%rip), %rsi     # 0x2ba63
movl $0x820, %edx            # imm = 0x820
leaq 0x1c0d2(%rip), %rcx     # 0x2bd73
callq 0x3210
leaq 0x7f8(%rsp), %rdi
leaq 0x580(%rsp), %rsi
callq 0x1a4a0
movq %rax, 0x198(%rsp)
jmp 0xfcc5
movq 0x198(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4bc(%rsp)
leaq 0x7f8(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x1a4a0
movq %rax, 0x190(%rsp)
jmp 0xfcf5
movq 0x190(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x4b8(%rsp)
movb $0x0, 0x4b7(%rsp)
movl 0x4bc(%rsp), %eax
addl 0x4b8(%rsp), %eax
movl 0x5a4(%rsp), %ecx
addl 0x7b0(%rsp), %ecx
cmpl %ecx, %eax
jle 0xfe3e
movl 0x4bc(%rsp), %eax
movl %eax, 0x5a4(%rsp)
leaq 0x5b8(%rsp), %rdi
leaq 0x580(%rsp), %rsi
callq 0x3050
jmp 0xfd57
movl 0x4b8(%rsp), %eax
movl %eax, 0x7b0(%rsp)
leaq 0x7b8(%rsp), %rdi
leaq 0x520(%rsp), %rsi
callq 0x3050
jmp 0xfd7c
movl 0x5a4(%rsp), %eax
cmpl 0x7b0(%rsp), %eax
jle 0xfe3c
movl 0x5a4(%rsp), %eax
movl %eax, 0x4b0(%rsp)
movl 0x7b0(%rsp), %eax
movl %eax, 0x5a4(%rsp)
movl 0x4b0(%rsp), %eax
movl %eax, 0x7b0(%rsp)
leaq 0x490(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x3160
jmp 0xfdd1
leaq 0x5b8(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x3050
jmp 0xfde8
leaq 0x7b8(%rsp), %rdi
leaq 0x490(%rsp), %rsi
callq 0x3050
jmp 0xfdff
movb $0x1, 0x4b7(%rsp)
leaq 0x490(%rsp), %rdi
callq 0x31e0
jmp 0xfe3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x490(%rsp), %rdi
callq 0x31e0
jmp 0x108f2
jmp 0xfe3e
leaq 0x860(%rsp), %rdi
callq 0x3250
cmpq $0x0, %rax
jne 0xffbd
movq 0x2917c(%rip), %rdi     # 0x38fd8
leaq 0x1bffd(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x188(%rsp)
jmp 0xfe72
movq 0x188(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x32e0
movq %rax, 0x180(%rsp)
jmp 0xfe91
movq 0x180(%rsp), %rdi
leaq 0x1bc3b(%rip), %rsi     # 0x2badb
callq 0x3320
movq %rax, 0x178(%rsp)
jmp 0xfeaf
movq 0x178(%rsp), %rdi
movl 0x7b0(%rsp), %esi
callq 0x3540
movq %rax, 0x170(%rsp)
jmp 0xfecd
movq 0x170(%rsp), %rdi
leaq 0x1bf84(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x168(%rsp)
jmp 0xfeeb
movq 0x168(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x32e0
movq %rax, 0x160(%rsp)
jmp 0xff0a
movq 0x160(%rsp), %rdi
leaq 0x1bbc2(%rip), %rsi     # 0x2badb
callq 0x3320
movq %rax, 0x158(%rsp)
jmp 0xff28
movq 0x158(%rsp), %rdi
movl 0x5a4(%rsp), %esi
callq 0x3540
movq %rax, 0x150(%rsp)
jmp 0xff46
movq 0x150(%rsp), %rdi
leaq 0x1befb(%rip), %rsi     # 0x2be50
callq 0x3320
jmp 0xff5c
leaq 0xcc0(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x3050
jmp 0xff73
leaq 0xc98(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x3050
jmp 0xff8a
leaq 0x860(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x3050
jmp 0xffa1
leaq 0x838(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x3050
jmp 0xffb8
jmp 0x10579
leaq 0x470(%rsp), %rdi
leaq 0x860(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0xffdc
leaq 0x450(%rsp), %rdi
leaq 0x838(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0xfffb
xorl %eax, %eax
movl %eax, %edx
leaq 0x430(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0x1001b
xorl %eax, %eax
movl %eax, %edx
leaq 0x410(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
movl $0x1, %ecx
callq 0x3350
jmp 0x1003b
leaq 0x470(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0x3040
movl %eax, 0x14c(%rsp)
jmp 0x10059
movl 0x14c(%rsp), %eax
cmpl $0x0, %eax
jne 0x10307
leaq 0x450(%rsp), %rdi
leaq 0x410(%rsp), %rsi
callq 0x3040
movl %eax, 0x148(%rsp)
jmp 0x10087
movl 0x148(%rsp), %eax
cmpl $0x0, %eax
jne 0x10307
movq 0x28f3a(%rip), %rdi     # 0x38fd8
leaq 0x1bdbb(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x140(%rsp)
jmp 0x100b4
movq 0x140(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x32e0
movq %rax, 0x138(%rsp)
jmp 0x100d3
movq 0x138(%rsp), %rdi
leaq 0x1b9f9(%rip), %rsi     # 0x2badb
callq 0x3320
movq %rax, 0x130(%rsp)
jmp 0x100f1
movq 0x130(%rsp), %rdi
movl 0x7b0(%rsp), %esi
callq 0x3540
movq %rax, 0x128(%rsp)
jmp 0x1010f
movq 0x128(%rsp), %rdi
leaq 0x1bd42(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x120(%rsp)
jmp 0x1012d
movq 0x120(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x32e0
movq %rax, 0x118(%rsp)
jmp 0x1014c
movq 0x118(%rsp), %rdi
leaq 0x1b980(%rip), %rsi     # 0x2badb
callq 0x3320
movq %rax, 0x110(%rsp)
jmp 0x1016a
movq 0x110(%rsp), %rdi
movl 0x5a4(%rsp), %esi
callq 0x3540
movq %rax, 0x108(%rsp)
jmp 0x10188
movq 0x108(%rsp), %rdi
leaq 0x1bcb9(%rip), %rsi     # 0x2be50
callq 0x3320
jmp 0x1019e
leaq 0x3f0(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0x101bd
leaq 0xcc0(%rsp), %rdi
leaq 0x3f0(%rsp), %rsi
callq 0x3420
jmp 0x101d4
leaq 0x3f0(%rsp), %rdi
callq 0x31e0
leaq 0x3d0(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0x10200
leaq 0xc98(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
callq 0x3420
jmp 0x10217
leaq 0x3d0(%rsp), %rdi
callq 0x31e0
leaq 0x860(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x3050
jmp 0x1023b
leaq 0x838(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x3050
jmp 0x10252
jmp 0x1050a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10567
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x1055a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x1054d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
jmp 0x10540
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x3f0(%rsp), %rdi
callq 0x31e0
jmp 0x10540
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x3d0(%rsp), %rdi
callq 0x31e0
jmp 0x10540
movq 0x28cca(%rip), %rdi     # 0x38fd8
leaq 0x1bb4b(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x100(%rsp)
jmp 0x10324
movq 0x100(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x32e0
movq %rax, 0xf8(%rsp)
jmp 0x10343
movq 0xf8(%rsp), %rdi
leaq 0x1b789(%rip), %rsi     # 0x2badb
callq 0x3320
movq %rax, 0xf0(%rsp)
jmp 0x10361
movq 0xf0(%rsp), %rdi
movl 0x5a4(%rsp), %esi
callq 0x3540
movq %rax, 0xe8(%rsp)
jmp 0x1037f
movq 0xe8(%rsp), %rdi
leaq 0x1bad2(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0xe0(%rsp)
jmp 0x1039d
movq 0xe0(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x32e0
movq %rax, 0xd8(%rsp)
jmp 0x103bc
movq 0xd8(%rsp), %rdi
leaq 0x1b710(%rip), %rsi     # 0x2badb
callq 0x3320
movq %rax, 0xd0(%rsp)
jmp 0x103da
movq 0xd0(%rsp), %rdi
movl 0x7b0(%rsp), %esi
callq 0x3540
movq %rax, 0xc8(%rsp)
jmp 0x103f8
movq 0xc8(%rsp), %rdi
leaq 0x1ba49(%rip), %rsi     # 0x2be50
callq 0x3320
jmp 0x1040e
leaq 0x3b0(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0x1042d
leaq 0xcc0(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
callq 0x3420
jmp 0x10444
leaq 0x3b0(%rsp), %rdi
callq 0x31e0
leaq 0x390(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
movl $0x1, %ecx
movq %rcx, %rdx
callq 0x3350
jmp 0x10470
leaq 0xc98(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x3420
jmp 0x10487
leaq 0x390(%rsp), %rdi
callq 0x31e0
leaq 0x860(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x3050
jmp 0x104ab
leaq 0x838(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x3050
jmp 0x104c2
jmp 0x1050a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x3b0(%rsp), %rdi
callq 0x31e0
jmp 0x10540
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x390(%rsp), %rdi
callq 0x31e0
jmp 0x10540
leaq 0x410(%rsp), %rdi
callq 0x31e0
leaq 0x430(%rsp), %rdi
callq 0x31e0
leaq 0x450(%rsp), %rdi
callq 0x31e0
leaq 0x470(%rsp), %rdi
callq 0x31e0
jmp 0x10579
leaq 0x410(%rsp), %rdi
callq 0x31e0
leaq 0x430(%rsp), %rdi
callq 0x31e0
leaq 0x450(%rsp), %rdi
callq 0x31e0
leaq 0x470(%rsp), %rdi
callq 0x31e0
jmp 0x108f2
leaq 0x388(%rsp), %rdi
callq 0x1a050
leaq 0x380(%rsp), %rdi
callq 0x1a050
leaq 0x7f8(%rsp), %rdi
callq 0x1a1b0
movq %rax, 0x378(%rsp)
movq 0x378(%rsp), %rax
movq %rax, 0x388(%rsp)
leaq 0x7f8(%rsp), %rdi
callq 0x1a0c0
movq %rax, 0x370(%rsp)
movq 0x370(%rsp), %rax
movq %rax, 0x380(%rsp)
leaq 0x388(%rsp), %rdi
leaq 0x380(%rsp), %rsi
callq 0x1a0a0
testb $0x1, %al
jne 0x105fb
jmp 0x10740
leaq 0x388(%rsp), %rdi
callq 0x1a0f0
movq %rax, %rsi
leaq 0x350(%rsp), %rdi
callq 0x3160
jmp 0x1061a
leaq 0x350(%rsp), %rdi
leaq 0x7b8(%rsp), %rsi
callq 0x3040
movl %eax, 0xc4(%rsp)
jmp 0x10638
movl 0xc4(%rsp), %eax
cmpl $0x0, %eax
je 0x10717
leaq 0x350(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0x3040
movl %eax, 0xc0(%rsp)
jmp 0x10666
movl 0xc0(%rsp), %eax
cmpl $0x0, %eax
je 0x10717
movq 0x2895b(%rip), %rdi     # 0x38fd8
leaq 0x350(%rsp), %rsi
callq 0x32e0
movq %rax, 0xb8(%rsp)
jmp 0x10694
movq 0xb8(%rsp), %rdi
leaq 0x1b438(%rip), %rsi     # 0x2badb
callq 0x3320
movq %rax, 0xb0(%rsp)
jmp 0x106b2
leaq 0x388(%rsp), %rdi
callq 0x1a0f0
movq 0xb0(%rsp), %rdi
movl 0x20(%rax), %esi
callq 0x3540
movq %rax, 0xa8(%rsp)
jmp 0x106d9
movq 0xa8(%rsp), %rdi
leaq 0x1b778(%rip), %rsi     # 0x2be60
callq 0x3320
jmp 0x106ef
jmp 0x10717
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x31e0
jmp 0x108f2
leaq 0x388(%rsp), %rdi
xorl %esi, %esi
callq 0x1a1e0
movq %rax, 0x348(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x31e0
jmp 0x105dd
movq 0x320(%rsp), %rsi
movq 0x28889(%rip), %rdi     # 0x38fd8
callq 0x32e0
movq %rax, 0xa0(%rsp)
jmp 0x1075e
movq 0xa0(%rsp), %rdi
leaq 0x1b6f3(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x98(%rsp)
jmp 0x1077c
movq 0x828(%rsp), %rsi
leaq 0xcf0(%rsp), %rdi
callq 0x1a680
movq 0x98(%rsp), %rdi
movq (%rax), %rsi
callq 0x30d0
movq %rax, 0x90(%rsp)
jmp 0x107ab
movq 0x90(%rsp), %rdi
leaq 0x1b6a6(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x88(%rsp)
jmp 0x107c9
movq 0x828(%rsp), %rsi
incq %rsi
leaq 0xcf0(%rsp), %rdi
callq 0x1a680
movq 0x88(%rsp), %rdi
movq (%rax), %rsi
callq 0x30d0
movq %rax, 0x80(%rsp)
jmp 0x107fb
movq 0x80(%rsp), %rdi
leaq 0x1b64e(%rip), %rsi     # 0x2be58
callq 0x3320
jmp 0x10811
testb $0x1, 0x4b7(%rsp)
je 0x10832
movq 0x287b6(%rip), %rdi     # 0x38fd8
leaq 0x1b639(%rip), %rsi     # 0x2be62
callq 0x3320
jmp 0x10830
jmp 0x10832
movq 0x2879f(%rip), %rdi     # 0x38fd8
movq 0x28788(%rip), %rsi     # 0x38fc8
callq 0x3370
jmp 0x10847
leaq 0x898(%rsp), %rdi
xorl %esi, %esi
callq 0x1a6a0
movq %rax, 0x340(%rsp)
leaq 0x520(%rsp), %rdi
callq 0x31e0
leaq 0x580(%rsp), %rdi
callq 0x31e0
leaq 0x5b8(%rsp), %rdi
callq 0x31e0
leaq 0x660(%rsp), %rdi
callq 0x31e0
leaq 0x688(%rsp), %rdi
callq 0x31e0
leaq 0x6a8(%rsp), %rdi
callq 0x31e0
leaq 0x6c8(%rsp), %rdi
callq 0x31e0
leaq 0x768(%rsp), %rdi
callq 0x31e0
leaq 0x790(%rsp), %rdi
callq 0x31e0
leaq 0x7b8(%rsp), %rdi
callq 0x31e0
leaq 0x7f8(%rsp), %rdi
callq 0x1a220
jmp 0xf0fd
leaq 0x520(%rsp), %rdi
callq 0x31e0
leaq 0x580(%rsp), %rdi
callq 0x31e0
leaq 0x5b8(%rsp), %rdi
callq 0x31e0
leaq 0x660(%rsp), %rdi
callq 0x31e0
leaq 0x688(%rsp), %rdi
callq 0x31e0
leaq 0x6a8(%rsp), %rdi
callq 0x31e0
leaq 0x6c8(%rsp), %rdi
callq 0x31e0
leaq 0x768(%rsp), %rdi
callq 0x31e0
leaq 0x790(%rsp), %rdi
callq 0x31e0
leaq 0x7b8(%rsp), %rdi
callq 0x31e0
leaq 0x7f8(%rsp), %rdi
callq 0x1a220
jmp 0x10bd6
movq 0x2864b(%rip), %rdi     # 0x38fd8
leaq 0x1b4d9(%rip), %rsi     # 0x2be6d
callq 0x3320
movq %rax, 0x78(%rsp)
jmp 0x109a0
movq 0x78(%rsp), %rdi
movq 0x2861c(%rip), %rsi     # 0x38fc8
callq 0x3370
movq %rax, 0x70(%rsp)
jmp 0x109b8
movq 0x70(%rsp), %rdi
leaq 0x1b49c(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x68(%rsp)
jmp 0x109d0
movq 0x68(%rsp), %rdi
leaq 0xd48(%rsp), %rsi
callq 0x32e0
movq %rax, 0x60(%rsp)
jmp 0x109e9
movq 0x60(%rsp), %rdi
movq 0x285d3(%rip), %rsi     # 0x38fc8
callq 0x3370
movq %rax, 0x58(%rsp)
jmp 0x10a01
movq 0x58(%rsp), %rdi
leaq 0x1b453(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x50(%rsp)
jmp 0x10a19
movq 0x50(%rsp), %rdi
leaq 0xd20(%rsp), %rsi
callq 0x32e0
movq %rax, 0x48(%rsp)
jmp 0x10a32
movq 0x48(%rsp), %rdi
movq 0x2858a(%rip), %rsi     # 0x38fc8
callq 0x3370
jmp 0x10a45
movq 0x2858c(%rip), %rdi     # 0x38fd8
leaq 0x1b43b(%rip), %rsi     # 0x2be8e
callq 0x3320
movq %rax, 0x40(%rsp)
jmp 0x10a5f
movq 0x40(%rsp), %rdi
movq 0x2855d(%rip), %rsi     # 0x38fc8
callq 0x3370
movq %rax, 0x38(%rsp)
jmp 0x10a77
movq 0x38(%rsp), %rdi
leaq 0x1b3dd(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x30(%rsp)
jmp 0x10a8f
movq 0x30(%rsp), %rdi
leaq 0xcc0(%rsp), %rsi
callq 0x32e0
movq %rax, 0x28(%rsp)
jmp 0x10aa8
movq 0x28(%rsp), %rdi
movq 0x28514(%rip), %rsi     # 0x38fc8
callq 0x3370
movq %rax, 0x20(%rsp)
jmp 0x10ac0
movq 0x20(%rsp), %rdi
leaq 0x1b394(%rip), %rsi     # 0x2be60
callq 0x3320
movq %rax, 0x18(%rsp)
jmp 0x10ad8
movq 0x18(%rsp), %rdi
leaq 0xc98(%rsp), %rsi
callq 0x32e0
movq %rax, 0x10(%rsp)
jmp 0x10af1
movq 0x10(%rsp), %rdi
movq 0x284cb(%rip), %rsi     # 0x38fc8
callq 0x3370
jmp 0x10b04
movq 0x328(%rsp), %rsi
movq 0xd70(%rsp), %rdi
callq 0x193e0
jmp 0x10b1b
movq 0xd70(%rsp), %rdi
movl $0x0, 0x33c(%rsp)
leaq 0x33c(%rsp), %rsi
callq 0x19010
movq %rax, 0x8(%rsp)
jmp 0x10b42
movq 0x8(%rsp), %rdi
leaq 0xcc0(%rsp), %rsi
callq 0x3050
jmp 0x10b56
movq 0xd70(%rsp), %rdi
movl $0x0, 0x338(%rsp)
leaq 0x338(%rsp), %rsi
callq 0x19010
movq %rax, (%rsp)
jmp 0x10b7c
movq (%rsp), %rdi
addq $0x20, %rdi
leaq 0xc98(%rsp), %rsi
callq 0x3050
jmp 0x10b93
movb $0x1, 0xd87(%rsp)
movl $0x1, 0xce0(%rsp)
leaq 0x838(%rsp), %rdi
callq 0x31e0
leaq 0x860(%rsp), %rdi
callq 0x31e0
jmp 0x10bf2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd10(%rsp)
movl %eax, 0xd0c(%rsp)
leaq 0x838(%rsp), %rdi
callq 0x31e0
leaq 0x860(%rsp), %rdi
callq 0x31e0
jmp 0x10c1b
leaq 0xc60(%rsp), %rdi
callq 0x1a6e0
leaq 0xc98(%rsp), %rdi
callq 0x31e0
leaq 0xcc0(%rsp), %rdi
callq 0x31e0
jmp 0x10c44
leaq 0xc60(%rsp), %rdi
callq 0x1a6e0
leaq 0xc98(%rsp), %rdi
callq 0x31e0
leaq 0xcc0(%rsp), %rdi
callq 0x31e0
jmp 0x10c7c
leaq 0xcf0(%rsp), %rdi
callq 0x19920
leaq 0xd20(%rsp), %rdi
callq 0x31e0
leaq 0xd48(%rsp), %rdi
callq 0x31e0
movb 0xd87(%rsp), %al
andb $0x1, %al
addq $0xd88, %rsp            # imm = 0xD88
retq
leaq 0xcf0(%rsp), %rdi
callq 0x19920
leaq 0xd20(%rsp), %rdi
callq 0x31e0
leaq 0xd48(%rsp), %rdi
callq 0x31e0
movq 0xd10(%rsp), %rdi
callq 0x3560