// File: schneebergerlab[P]DrLink/analyze_molecule.cpp
// Function: write_chr_alignment(ogzstream&, std::multimap<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, ALIGNINFO, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, ALIGNINFO>>>*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, unsigned long, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, unsigned long>>>*, std::map<int, unsigned long, std::less<int>, std::allocator<std::pair<int const, unsigned long>>>*, std::map<int, unsigned long, std::less<int>, std::allocator<std::pair<int const, unsigned long>>>*, std::map<int, unsigned long, std::less<int>, std::allocator<std::pair<int const, unsigned long>>>*, std::map<int, unsigned long, std::less<int>, std::allocator<std::pair<int const, unsigned long>>>*, std::map<int, unsigned long, std::less<int>, std::allocator<std::pair<int const, unsigned long>>>*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, int>>>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, unsigned long, int)
bool write_chr_alignment(ogzstream& moutfp,
                         multimap<string, ALIGNINFO>* bcPosQueue, 
                         map<string, unsigned long>* molecule_cov,
                         map<int,    unsigned long>* molecule_len,
                         map<int,    unsigned long>* molecule_len_sum, 
                         map<int,    unsigned long>* molecule_read_num,
                         map<int,    unsigned long>* molecule_read_num_sum,
                         map<int,    unsigned long>* molecule_read_interval,
                         map<string, int>*           barcode_molecule_cnt,
                         string lastChr,
                         unsigned long winsize,
                         int minMoleSize)
{
    // bcPosQueue: multimap<chr#barcode, <read.align.start, read.align.end> >
    multimap<string, ALIGNINFO>::iterator mitr; 
    multimap<string, ALIGNINFO>::iterator mitr_end;
    mitr     = (*bcPosQueue).begin();
    mitr_end = (*bcPosQueue).end();
    long moleNum  = 0;
    long alignNum = 0;
    while(mitr != mitr_end)
    {
        string key = (*mitr).first;
        vector<string> chrbc = split_string(key, '#'); // get [0]:chr, [1]:barcode/partition
        std::pair <multimap<string, ALIGNINFO>::iterator, 
                   multimap<string, ALIGNINFO>::iterator> clitr_region;
        clitr_region = (*bcPosQueue).equal_range(key);
        multimap<string, ALIGNINFO>::iterator clitr;
        unsigned long firstAlignSta  = 0; // for calculating molecule length; molecule first alignment       
        unsigned long firstAlignEnd  = 0; // not really used
        unsigned long lastAlignSta   = 0; // molecule last alignment       
        unsigned long lastAlignEnd   = 0; // for calculating molecule length; for breaking molecule
        unsigned long lastR1AlignSta = 0; // for calculating R1 distance
        unsigned long lastR1AlignEnd = 0; // ..
        unsigned long lastR2AlignSta = 0; // for calculating R2 distance
        unsigned long lastR2AlignEnd = 0; // ..     
        int     readNum = 0;
        int     covleng = 0;
        int moleculeLen = 0;
        std::stringstream alignedPos;     // aligned positions of reads of a molecule
        alignedPos.str("");
        //
        std::stringstream readids; // id of reads
        readids.str("");
        std::stringstream rcigars; // cigar of reads
        rcigars.str("");
        std::stringstream rpairids;// id of R1/R2
        rpairids.str("");
        //
        map<int, unsigned long> im_read_interval;
        for (clitr=clitr_region.first; clitr!=clitr_region.second; ++clitr) // span of reads within chr#barcode
        {
            ALIGNINFO span         = (*clitr).second;       
            if(clitr==clitr_region.first || (span.first>lastAlignEnd && span.first-lastAlignEnd+1>winsize)) // new molecule
            {
                // summary last cluster with the same barcode
                if(firstAlignSta != 0)
                {
                   assert(lastAlignEnd>firstAlignSta);
                   moleculeLen = lastAlignEnd-firstAlignSta+1; // in bp
                   if(moleculeLen==0) moleculeLen = 1; // caution: avoid potential dividing 0
                   moutfp << lastAlignSta     << "\t" 
                          << moleculeLen      << "\t" 
                          << setprecision(2)  << fixed << (float)covleng/moleculeLen << "\t" 
                          << readNum          << "\tR\t" 
                          << lastAlignEnd << "\t"
                          << alignedPos.str() << "\t" 
                          << rpairids.str()   << "\t" 
                          << readids.str()    << "\t"
                          << rcigars.str()    << endl;                          
                   if(moleculeLen >= minMoleSize)
                   {
                       // molecule cov
                       std::stringstream mckey;
                       mckey.str("");
                       mckey << setprecision(2) << fixed << (float)covleng/moleculeLen;
                       map<string, unsigned long>::iterator mcitr = (*molecule_cov).find(mckey.str());
                       if(mcitr == (*molecule_cov).end())
                       {
                           (*molecule_cov).insert(std::pair<string, unsigned long>(mckey.str(), 1));
                       }
                       else
                       {
                           (*mcitr).second += 1;
                       }
                       // molecule len
                       int mlkey = (int)round((double)moleculeLen/1000); 
                       map<int, unsigned long>::iterator mlitr = (*molecule_len).find(mlkey);
                       if(mlitr == (*molecule_len).end())
                       {
                           (*molecule_len).insert(std::pair<int, unsigned long>(mlkey, 1));
                           (*molecule_len_sum).insert(std::pair<int, unsigned long>(mlkey, moleculeLen));
                       }
                       else
                       {
                           (*mlitr).second += 1;
                           (*molecule_len_sum)[mlkey] += moleculeLen;
                       }
                       // molecules per barcode
                       map<string, int>::iterator bcitr;
                       bcitr = (*barcode_molecule_cnt).find(chrbc[1]);
                       if(bcitr == (*barcode_molecule_cnt).end())
                       {
                           (*barcode_molecule_cnt).insert(std::pair<string, int>(chrbc[1], 1));
                       }
                       else
                       {
                           (*barcode_molecule_cnt)[chrbc[1]] +=1;
                       }
                       // molecule read number
                       map<int,    unsigned long>::iterator readitr;
                       readitr = (*molecule_read_num).find(readNum);
                       if(readitr == (*molecule_read_num).end())
                       {
                           (*molecule_read_num).insert(std::pair<int, unsigned long>(readNum, 1));
                           (*molecule_read_num_sum).insert(std::pair<int, unsigned long>(readNum, span.second - span.first + 1));
                       }
                       else
                       {
                           (*molecule_read_num)[readNum] += 1;
                           (*molecule_read_num_sum)[readNum] += span.second - span.first + 1;
                       }
                       // molecule read distances:
                       map<int, unsigned long>::iterator imrditr;
                       map<int, unsigned long>::iterator imrditr_end;
                       map<int, unsigned long>::iterator imrditr_final;
                       imrditr     = im_read_interval.begin();
                       imrditr_end = im_read_interval.end();
                       while(imrditr != imrditr_end)
                       {
                           //if(abs((*imrditr).first) > 500) // note: with 0.1x of 50kb molecule, dist between 18 readpairs is 2777bp
                           if(true)
                           {
                               imrditr_final = (*molecule_read_interval).find((*imrditr).first);
                               if(imrditr_final == (*molecule_read_interval).end())
                               {
                                   (*molecule_read_interval).insert(std::pair<int, unsigned long>((*imrditr).first, (*imrditr).second));
                               }
                               else
                               {
                                   (*imrditr_final).second += (*imrditr).second;
                               }
                           }
                           imrditr ++;
                       }        
                   }
                   //
                   readNum = 0;
                   // aligned positions of reads of a molecule
                   alignedPos.str("");
                   // read id and order of pair info
                   readids.str("");
                   rcigars.str("");
                   rpairids.str("");                   
                   covleng = 0;
                }
                // start new/next cluster
                moleNum ++;
                firstAlignSta = span.first;
                firstAlignEnd = span.second;
                moutfp << (*clitr).first << "\t" << firstAlignSta << "\t";
                // read dist info: if do following, then distance of reads between inter-molecules is ignored.
                lastR1AlignSta = 0; // initializing
                lastR1AlignEnd = 0;  
                lastR2AlignSta = 0; // initializing
                lastR2AlignEnd = 0;    
                im_read_interval.clear();             
            }
            // get covered length and read number
            covleng += span.second - span.first + 1;        
            readNum ++;
            // aligned positions of reads of a molecule: each item is a spanning range of a read
            if(alignedPos.str().size()>0)
            {
                alignedPos  << ";" << span.first << "," << span.second;
            }
            else
            {
                alignedPos  << span.first << "," << span.second;
            }
            // read id and order of pair info
            if(readids.str().size()>0)
            {
                readids  << "," << span.readid;
                rcigars  << "," << span.rcigar;
                rpairids << "," << span.rorder; 
            }
            else
            {
                readids  << span.readid;
                rcigars  << span.rcigar;
                rpairids << span.rorder; 
            }            
            alignNum ++;
            // get R1.vs.R1-/R2.vs.R2-read distances within the chr#barcode
            if(span.rorder.compare("1")==0)
            {
                if(lastR1AlignEnd != 0)// if there is one R1-read before current R1-read
                {
                    map<int, unsigned long>::iterator mritr;
                    int distSize = 0;
                    if(span.first>=lastR1AlignEnd)
                    {
                        distSize = span.first-lastR1AlignEnd+1;
                    }
                    else
                    {
                        distSize = -1*(lastR1AlignEnd - span.first+1); // in case overlapping
                    }
                    mritr = im_read_interval.find(distSize);
                    if(mritr == im_read_interval.end())
                    {
                        im_read_interval.insert(std::pair<int, unsigned long>(distSize, 1));
                    }
                    else
                    {
                        (*mritr).second += 1;
                    }
                    //cout << "   check: " << (*clitr).first << ": span.first-lastR1AlignEnd=abs(" << span.first << "-" << lastR1AlignEnd << ")=" << distSize << endl;
                }
                lastR1AlignSta = span.first; // updating
                lastR1AlignEnd = span.second;
            }
            else
            if(span.rorder.compare("2")==0)
            {
                if(lastR2AlignEnd != 0) // if there is one R2-read before current R2-read
                {
                    map<int, unsigned long>::iterator mritr;
                    int distSize = 0;
                    if(span.first>=lastR2AlignEnd)
                    {
                        distSize = span.first-lastR2AlignEnd+1;
                    }
                    else
                    {
                        distSize = -1*(lastR2AlignEnd - span.first+1); // in case overlapping
                    }
                    mritr = im_read_interval.find(distSize);
                    if(mritr == im_read_interval.end())
                    {
                        im_read_interval.insert(std::pair<int, unsigned long>(distSize, 1));
                    }
                    else
                    {
                        (*mritr).second += 1;
                    }
                    //cout << "   check: " << (*clitr).first << ": span.first-lastR2AlignEnd=abs(" << span.first << "-" << lastR2AlignEnd << ")=" << distSize << endl;
                }
                lastR2AlignSta = span.first; // updating
                lastR2AlignEnd = span.second;                 
            }
            else ;            
            // update current as last
            lastAlignSta = span.first;
            lastAlignEnd = span.second;
        }
        // summary last cluster: first_alignment_start all_alignment_cov_len	base_cov	read_num
        assert(lastAlignEnd>firstAlignSta);
        moleculeLen = lastAlignEnd-firstAlignSta+1;
        if(moleculeLen==0) moleculeLen = 1; // caution: avoid potential dividing 0
        moutfp << lastAlignSta     << "\t" 
               << moleculeLen      << "\t" 
               << setprecision(2)  << fixed << (float)covleng/moleculeLen << "\t" 
               << readNum          << "\tU\t" 
               << lastAlignEnd     << "\t"
               << alignedPos.str() << "\t"
               << rpairids.str()   << "\t" 
               << readids.str()    << "\t"
               << rcigars.str()    << endl;
        if(moleculeLen >= minMoleSize)
        {
            // molecule cov
            std::stringstream mckey;
            mckey.str("");
            mckey << setprecision(2) << fixed << (float)covleng/moleculeLen;
            map<string, unsigned long>::iterator mcitr = (*molecule_cov).find(mckey.str());
            if(mcitr == (*molecule_cov).end())
            {
                (*molecule_cov).insert(std::pair<string, unsigned long>(mckey.str(), 1));
            }
            else
            {
                (*mcitr).second += 1;
            }
            // molecule len
            int mlkey = (int)round((double)moleculeLen/1000); 
            map<int, unsigned long>::iterator mlitr = (*molecule_len).find(mlkey);
            if(mlitr == (*molecule_len).end())
            {
                (*molecule_len).insert(std::pair<int, unsigned long>(mlkey, 1));
                (*molecule_len_sum).insert(std::pair<int, unsigned long>(mlkey, moleculeLen));            
            }
            else
            {
                (*mlitr).second += 1;
                (*molecule_len_sum)[mlkey] += moleculeLen;            
            }
            // molecules per barcode
            map<string, int>::iterator bcitr;
            bcitr = (*barcode_molecule_cnt).find(chrbc[1]);
            if(bcitr == (*barcode_molecule_cnt).end())
            {
                (*barcode_molecule_cnt).insert(std::pair<string, int>(chrbc[1], 1));
            }
            else
            {
                (*barcode_molecule_cnt)[chrbc[1]] +=1;
            } 
            // molecule read number
            map<int,    unsigned long>::iterator readitr;
            readitr = (*molecule_read_num).find(readNum);
            if(readitr == (*molecule_read_num).end())
            {
                (*molecule_read_num).insert(std::pair<int, unsigned long>(readNum, 1));
                (*molecule_read_num_sum).insert(std::pair<int, unsigned long>(readNum, lastAlignEnd-lastAlignSta+1));                
            }
            else
            {
                (*molecule_read_num)[readNum] += 1;
                (*molecule_read_num_sum)[readNum] += lastAlignEnd-lastAlignSta+1;
            }
            // molecule read distances:
            map<int, unsigned long>::iterator imrditr;
            map<int, unsigned long>::iterator imrditr_end;
            map<int, unsigned long>::iterator imrditr_final;
            imrditr     = im_read_interval.begin();
            imrditr_end = im_read_interval.end();
            while(imrditr != imrditr_end)
            {
                //if(abs((*imrditr).first) > 500) // note: with 0.1x of 50kb molecule, dist between 18 readpairs is 2777bp
                if(true)
                {
                    imrditr_final = (*molecule_read_interval).find((*imrditr).first);
                    if(imrditr_final == (*molecule_read_interval).end())
                    {
                        (*molecule_read_interval).insert(std::pair<int, unsigned long>((*imrditr).first, (*imrditr).second));
                    }
                    else
                    {
                        (*imrditr_final).second += (*imrditr).second;
                    }
                }
                imrditr ++;
            }
        }
        //
        im_read_interval.clear();    
        readNum = 0;
        //
        alignedPos.str("");
        // read id and order of pair info
        readids.str("");
        rcigars.str("");
        rpairids.str("");        
        mitr = clitr;     
    }
    cout << "   Info: " << lastChr << " has " << alignNum << " alignments analyzed." << endl;
    return true;
}

// Assembly:
subq $0x1848, %rsp           # imm = 0x1848
movl 0x1878(%rsp), %eax
movq 0x1870(%rsp), %rax
movq 0x1868(%rsp), %rax
movq %rax, 0x518(%rsp)
movq 0x1860(%rsp), %rax
movq 0x1858(%rsp), %rax
movq 0x1850(%rsp), %rax
movq %rdi, 0x1840(%rsp)
movq %rsi, 0x1838(%rsp)
movq %rdx, 0x1830(%rsp)
movq %rcx, 0x1828(%rsp)
movq %r8, 0x1820(%rsp)
movq %r9, 0x1818(%rsp)
leaq 0x1810(%rsp), %rdi
callq 0xfea0
leaq 0x1808(%rsp), %rdi
callq 0xfea0
movq 0x1838(%rsp), %rdi
callq 0xfec0
movq %rax, 0x1800(%rsp)
movq 0x1800(%rsp), %rax
movq %rax, 0x1810(%rsp)
movq 0x1838(%rsp), %rdi
callq 0xfef0
movq %rax, 0x17f8(%rsp)
movq 0x17f8(%rsp), %rax
movq %rax, 0x1808(%rsp)
movq $0x0, 0x17f0(%rsp)
movq $0x0, 0x17e8(%rsp)
leaq 0x1810(%rsp), %rdi
leaq 0x1808(%rsp), %rsi
callq 0xff20
testb $0x1, %al
jne 0xade8
jmp 0xdf0a
leaq 0x1810(%rsp), %rdi
callq 0xff40
movq %rax, %rsi
leaq 0x17c8(%rsp), %rdi
movq %rdi, 0x510(%rsp)
callq 0x51f0
movq 0x510(%rsp), %rsi
movb $0x23, 0x17af(%rsp)
leaq 0x17b0(%rsp), %rdi
leaq 0x17af(%rsp), %rdx
callq 0x60790
jmp 0xae34
leaq 0x1788(%rsp), %rdi
callq 0xff60
jmp 0xae43
movq 0x1838(%rsp), %rdi
leaq 0x17c8(%rsp), %rsi
callq 0xff90
movq %rdx, 0x500(%rsp)
movq %rax, 0x508(%rsp)
jmp 0xae6a
movq 0x500(%rsp), %rax
movq 0x508(%rsp), %rcx
movq %rcx, 0x1778(%rsp)
movq %rax, 0x1780(%rsp)
leaq 0x1788(%rsp), %rdi
leaq 0x1778(%rsp), %rsi
callq 0xffd0
leaq 0x1770(%rsp), %rdi
callq 0xfea0
movq $0x0, 0x1768(%rsp)
movq $0x0, 0x1760(%rsp)
movq $0x0, 0x1758(%rsp)
movq $0x0, 0x1750(%rsp)
movq $0x0, 0x1748(%rsp)
movq $0x0, 0x1740(%rsp)
movq $0x0, 0x1738(%rsp)
movq $0x0, 0x1730(%rsp)
movl $0x0, 0x172c(%rsp)
movl $0x0, 0x1728(%rsp)
movl $0x0, 0x1724(%rsp)
leaq 0x1598(%rsp), %rdi
callq 0x5320
jmp 0xaf3c
leaq 0x1577(%rsp), %rdi
movq %rdi, 0x4f8(%rsp)
callq 0x57c0
movq 0x4f8(%rsp), %rdx
leaq 0x5fc34(%rip), %rsi     # 0x6ab94
leaq 0x1578(%rsp), %rdi
callq 0x6880
jmp 0xaf6f
leaq 0x1598(%rsp), %rdi
leaq 0x1578(%rsp), %rsi
callq 0x5510
jmp 0xaf86
leaq 0x1578(%rsp), %rdi
callq 0x58b8
leaq 0x1577(%rsp), %rdi
callq 0x54d0
leaq 0x13e8(%rsp), %rdi
callq 0x5320
jmp 0xafaf
leaq 0x13c7(%rsp), %rdi
movq %rdi, 0x4f0(%rsp)
callq 0x57c0
movq 0x4f0(%rsp), %rdx
leaq 0x5fbc1(%rip), %rsi     # 0x6ab94
leaq 0x13c8(%rsp), %rdi
callq 0x6880
jmp 0xafe2
leaq 0x13e8(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x5510
jmp 0xaff9
leaq 0x13c8(%rsp), %rdi
callq 0x58b8
leaq 0x13c7(%rsp), %rdi
callq 0x54d0
leaq 0x1238(%rsp), %rdi
callq 0x5320
jmp 0xb022
leaq 0x1217(%rsp), %rdi
movq %rdi, 0x4e8(%rsp)
callq 0x57c0
movq 0x4e8(%rsp), %rdx
leaq 0x5fb4e(%rip), %rsi     # 0x6ab94
leaq 0x1218(%rsp), %rdi
callq 0x6880
jmp 0xb055
leaq 0x1238(%rsp), %rdi
leaq 0x1218(%rsp), %rsi
callq 0x5510
jmp 0xb06c
leaq 0x1218(%rsp), %rdi
callq 0x58b8
leaq 0x1217(%rsp), %rdi
callq 0x54d0
leaq 0x1088(%rsp), %rdi
callq 0x5320
jmp 0xb095
leaq 0x1067(%rsp), %rdi
movq %rdi, 0x4e0(%rsp)
callq 0x57c0
movq 0x4e0(%rsp), %rdx
leaq 0x5fadb(%rip), %rsi     # 0x6ab94
leaq 0x1068(%rsp), %rdi
callq 0x6880
jmp 0xb0c8
leaq 0x1088(%rsp), %rdi
leaq 0x1068(%rsp), %rsi
callq 0x5510
jmp 0xb0df
leaq 0x1068(%rsp), %rdi
callq 0x58b8
leaq 0x1067(%rsp), %rdi
callq 0x54d0
leaq 0x1030(%rsp), %rdi
callq 0xfb80
movq 0x1788(%rsp), %rax
movq %rax, 0x1770(%rsp)
leaq 0x1788(%rsp), %rsi
addq $0x8, %rsi
leaq 0x1770(%rsp), %rdi
callq 0xff20
testb $0x1, %al
jne 0xb138
jmp 0xccc4
leaq 0x1770(%rsp), %rdi
callq 0xff40
movq %rax, %rsi
addq $0x20, %rsi
leaq 0xfc0(%rsp), %rdi
callq 0x10000
jmp 0xb15b
leaq 0x1788(%rsp), %rsi
leaq 0x1770(%rsp), %rdi
callq 0x100b0
testb $0x1, %al
jne 0xb1ac
movq 0xfc0(%rsp), %rax
cmpq 0x1750(%rsp), %rax
jbe 0xc67a
movq 0xfc0(%rsp), %rax
subq 0x1750(%rsp), %rax
addq $0x1, %rax
cmpq 0x1870(%rsp), %rax
jbe 0xc67a
cmpq $0x0, 0x1768(%rsp)
je 0xc57a
movq 0x1750(%rsp), %rax
cmpq 0x1768(%rsp), %rax
jbe 0xb1d2
jmp 0xb3ab
leaq 0x5bb79(%rip), %rdi     # 0x66d52
leaq 0x5bb8d(%rip), %rsi     # 0x66d6d
movl $0x137, %edx            # imm = 0x137
leaq 0x5bb96(%rip), %rcx     # 0x66d82
callq 0x52d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xdefb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xdeee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xb25a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x1578(%rsp), %rdi
callq 0x58b8
leaq 0x1577(%rsp), %rdi
callq 0x54d0
jmp 0xdee1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xdee1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xb2bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x58b8
leaq 0x13c7(%rsp), %rdi
callq 0x54d0
jmp 0xded4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xded4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xb31e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x1218(%rsp), %rdi
callq 0x58b8
leaq 0x1217(%rsp), %rdi
callq 0x54d0
jmp 0xdec7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xdec7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xb380
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x1068(%rsp), %rdi
callq 0x58b8
leaq 0x1067(%rsp), %rdi
callq 0x54d0
jmp 0xdeba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xdead
movq 0x1750(%rsp), %rax
subq 0x1768(%rsp), %rax
addq $0x1, %rax
movl %eax, 0x1724(%rsp)
cmpl $0x0, 0x1724(%rsp)
jne 0xb3db
movl $0x1, 0x1724(%rsp)
movq 0x1840(%rsp), %rdi
addq $0x188, %rdi            # imm = 0x188
movq 0x1758(%rsp), %rsi
callq 0x50f0
movq %rax, 0x4d8(%rsp)
jmp 0xb401
movq 0x4d8(%rsp), %rdi
leaq 0x5f783(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x4d0(%rsp)
jmp 0xb41f
movq 0x4d0(%rsp), %rdi
movl 0x1724(%rsp), %esi
callq 0x5790
movq %rax, 0x4c8(%rsp)
jmp 0xb43d
movq 0x4c8(%rsp), %rdi
leaq 0x5f747(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x4c0(%rsp)
jmp 0xb45b
movl $0x2, %edi
callq 0x100d0
movl %eax, 0x4bc(%rsp)
jmp 0xb46e
movq 0x4c0(%rsp), %rdi
movl 0x4bc(%rsp), %eax
movl %eax, 0xfbc(%rsp)
movl 0xfbc(%rsp), %esi
callq 0x56d0
movq %rax, 0x4b0(%rsp)
jmp 0xb49a
movq 0x4b0(%rsp), %rdi
leaq 0x4c47(%rip), %rsi      # 0x100f0
callq 0x5180
movq %rax, 0x4a8(%rsp)
jmp 0xb4b8
movq 0x4a8(%rsp), %rdi
cvtsi2ssl 0x1728(%rsp), %xmm0
cvtsi2ssl 0x1724(%rsp), %xmm1
divss %xmm1, %xmm0
callq 0x5340
movq %rax, 0x4a0(%rsp)
jmp 0xb4e5
movq 0x4a0(%rsp), %rdi
leaq 0x5f69f(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x498(%rsp)
jmp 0xb503
movq 0x498(%rsp), %rdi
movl 0x172c(%rsp), %esi
callq 0x5790
movq %rax, 0x490(%rsp)
jmp 0xb521
movq 0x490(%rsp), %rdi
leaq 0x5b96c(%rip), %rsi     # 0x66e9c
callq 0x5460
movq %rax, 0x488(%rsp)
jmp 0xb53f
movq 0x488(%rsp), %rdi
movq 0x1750(%rsp), %rsi
callq 0x50f0
movq %rax, 0x480(%rsp)
jmp 0xb55e
movq 0x480(%rsp), %rdi
leaq 0x5f626(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x478(%rsp)
jmp 0xb57c
leaq 0xf98(%rsp), %rdi
leaq 0x1598(%rsp), %rsi
callq 0x5440
jmp 0xb593
movq 0x478(%rsp), %rdi
leaq 0xf98(%rsp), %rsi
callq 0x53e0
movq %rax, 0x470(%rsp)
jmp 0xb5b2
movq 0x470(%rsp), %rdi
leaq 0x5f5d2(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x468(%rsp)
jmp 0xb5d0
leaq 0xf78(%rsp), %rdi
leaq 0x1088(%rsp), %rsi
callq 0x5440
jmp 0xb5e7
movq 0x468(%rsp), %rdi
leaq 0xf78(%rsp), %rsi
callq 0x53e0
movq %rax, 0x460(%rsp)
jmp 0xb606
movq 0x460(%rsp), %rdi
leaq 0x5f57e(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x458(%rsp)
jmp 0xb624
leaq 0xf58(%rsp), %rdi
leaq 0x13e8(%rsp), %rsi
callq 0x5440
jmp 0xb63b
movq 0x458(%rsp), %rdi
leaq 0xf58(%rsp), %rsi
callq 0x53e0
movq %rax, 0x450(%rsp)
jmp 0xb65a
movq 0x450(%rsp), %rdi
leaq 0x5f52a(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x448(%rsp)
jmp 0xb678
leaq 0xf38(%rsp), %rdi
leaq 0x1238(%rsp), %rsi
callq 0x5440
jmp 0xb68f
movq 0x448(%rsp), %rdi
leaq 0xf38(%rsp), %rsi
callq 0x53e0
movq %rax, 0x440(%rsp)
jmp 0xb6ae
movq 0x440(%rsp), %rdi
movq 0x798f3(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0xb6c4
leaq 0xf38(%rsp), %rdi
callq 0x58b8
leaq 0xf58(%rsp), %rdi
callq 0x58b8
leaq 0xf78(%rsp), %rdi
callq 0x58b8
leaq 0xf98(%rsp), %rdi
callq 0x58b8
movl 0x1724(%rsp), %eax
cmpl 0x1878(%rsp), %eax
jl 0xc2ab
leaq 0xdb0(%rsp), %rdi
callq 0x5320
jmp 0xb71b
leaq 0xd8f(%rsp), %rdi
movq %rdi, 0x438(%rsp)
callq 0x57c0
movq 0x438(%rsp), %rdx
leaq 0x5f455(%rip), %rsi     # 0x6ab94
leaq 0xd90(%rsp), %rdi
callq 0x6880
jmp 0xb74e
leaq 0xdb0(%rsp), %rdi
leaq 0xd90(%rsp), %rsi
callq 0x5510
jmp 0xb765
leaq 0xd90(%rsp), %rdi
callq 0x58b8
leaq 0xd8f(%rsp), %rdi
callq 0x54d0
leaq 0xdc0(%rsp), %rax
movq %rax, 0x428(%rsp)
movl $0x2, %edi
callq 0x100d0
movl %eax, 0x434(%rsp)
jmp 0xb7a2
movq 0x428(%rsp), %rdi
movl 0x434(%rsp), %eax
movl %eax, 0xd88(%rsp)
movl 0xd88(%rsp), %esi
callq 0x56d0
movq %rax, 0x420(%rsp)
jmp 0xb7ce
movq 0x420(%rsp), %rdi
leaq 0x4913(%rip), %rsi      # 0x100f0
callq 0x5180
movq %rax, 0x418(%rsp)
jmp 0xb7ec
movq 0x418(%rsp), %rdi
cvtsi2ssl 0x1728(%rsp), %xmm0
cvtsi2ssl 0x1724(%rsp), %xmm1
divss %xmm1, %xmm0
callq 0x5340
jmp 0xb811
movq 0x1830(%rsp), %rax
movq %rax, 0x410(%rsp)
leaq 0xd60(%rsp), %rdi
leaq 0xdb0(%rsp), %rsi
callq 0x5440
jmp 0xb838
movq 0x410(%rsp), %rdi
leaq 0xd60(%rsp), %rsi
callq 0x10110
movq %rax, 0x408(%rsp)
jmp 0xb857
movq 0x408(%rsp), %rax
movq %rax, 0xd80(%rsp)
leaq 0xd60(%rsp), %rdi
callq 0x58b8
movq 0x1830(%rsp), %rdi
callq 0x10160
movq %rax, 0xd58(%rsp)
leaq 0xd80(%rsp), %rdi
leaq 0xd58(%rsp), %rsi
callq 0x10140
testb $0x1, %al
jne 0xb8a7
jmp 0xbad4
movq 0x1830(%rsp), %rax
movq %rax, 0x400(%rsp)
leaq 0xd10(%rsp), %rdi
leaq 0xdb0(%rsp), %rsi
callq 0x5440
jmp 0xb8ce
movl $0x1, 0xd0c(%rsp)
leaq 0xd30(%rsp), %rdi
leaq 0xd10(%rsp), %rsi
leaq 0xd0c(%rsp), %rdx
callq 0x101e0
jmp 0xb8f8
movq 0x400(%rsp), %rdi
leaq 0xd30(%rsp), %rsi
callq 0x10190
movb %dl, 0x3f7(%rsp)
movq %rax, 0x3f8(%rsp)
jmp 0xb91e
movb 0x3f7(%rsp), %al
movq 0x3f8(%rsp), %rcx
movq %rcx, 0xcf8(%rsp)
movb %al, 0xd00(%rsp)
leaq 0xd30(%rsp), %rdi
callq 0x10220
leaq 0xd10(%rsp), %rdi
callq 0x58b8
jmp 0xbaed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xccb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xb9f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xb9e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xb9d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xf38(%rsp), %rdi
callq 0x58b8
leaq 0xf58(%rsp), %rdi
callq 0x58b8
leaq 0xf78(%rsp), %rdi
callq 0x58b8
leaq 0xf98(%rsp), %rdi
callq 0x58b8
jmp 0xccb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xba3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xd90(%rsp), %rdi
callq 0x58b8
leaq 0xd8f(%rsp), %rdi
callq 0x54d0
jmp 0xc299
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xc299
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xd60(%rsp), %rdi
callq 0x58b8
jmp 0xc299
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xbac2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xd30(%rsp), %rdi
callq 0x10220
leaq 0xd10(%rsp), %rdi
callq 0x58b8
jmp 0xc299
leaq 0xd80(%rsp), %rdi
callq 0x10230
movq 0x20(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x20(%rax)
cvtsi2sdl 0x1724(%rsp), %xmm0
movsd 0x5add2(%rip), %xmm1    # 0x668d0
divsd %xmm1, %xmm0
callq 0x51e0
cvttsd2si %xmm0, %eax
movl %eax, 0xcf4(%rsp)
movq 0x1828(%rsp), %rdi
leaq 0xcf4(%rsp), %rsi
callq 0x10250
movq %rax, 0x3e8(%rsp)
jmp 0xbb31
movq 0x3e8(%rsp), %rax
movq %rax, 0xce8(%rsp)
movq 0x1828(%rsp), %rdi
callq 0x102a0
movq %rax, 0xce0(%rsp)
leaq 0xce8(%rsp), %rdi
leaq 0xce0(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xbb74
jmp 0xbc67
movq 0x1828(%rsp), %rax
movq %rax, 0x3e0(%rsp)
movl $0x1, 0xccc(%rsp)
leaq 0xcd0(%rsp), %rdi
leaq 0xcf4(%rsp), %rsi
leaq 0xccc(%rsp), %rdx
callq 0x10320
jmp 0xbbae
movq 0x3e0(%rsp), %rdi
leaq 0xcd0(%rsp), %rsi
callq 0x102d0
movb %dl, 0x3d7(%rsp)
movq %rax, 0x3d8(%rsp)
jmp 0xbbd4
movb 0x3d7(%rsp), %al
movq 0x3d8(%rsp), %rcx
movq %rcx, 0xcb8(%rsp)
movb %al, 0xcc0(%rsp)
movq 0x1820(%rsp), %rax
movq %rax, 0x3c8(%rsp)
leaq 0xca8(%rsp), %rdi
leaq 0xcf4(%rsp), %rsi
leaq 0x1724(%rsp), %rdx
callq 0x10350
jmp 0xbc21
movq 0x3c8(%rsp), %rdi
leaq 0xca8(%rsp), %rsi
callq 0x102d0
movb %dl, 0x3bf(%rsp)
movq %rax, 0x3c0(%rsp)
jmp 0xbc47
movb 0x3bf(%rsp), %al
movq 0x3c0(%rsp), %rcx
movq %rcx, 0xc98(%rsp)
movb %al, 0xca0(%rsp)
jmp 0xbcc4
leaq 0xce8(%rsp), %rdi
callq 0x10380
movq 0x8(%rax), %rcx
incq %rcx
movq %rcx, 0x8(%rax)
movslq 0x1724(%rsp), %rax
movq %rax, 0x3a8(%rsp)
movq 0x1820(%rsp), %rdi
leaq 0xcf4(%rsp), %rsi
callq 0x103a0
movq %rax, 0x3b0(%rsp)
jmp 0xbcae
movq 0x3b0(%rsp), %rax
movq 0x3a8(%rsp), %rcx
addq (%rax), %rcx
movq %rcx, (%rax)
leaq 0xc90(%rsp), %rdi
callq 0x10490
movq 0x1860(%rsp), %rax
movq %rax, 0x398(%rsp)
leaq 0x17b0(%rsp), %rdi
movl $0x1, %esi
callq 0x88f0
movq 0x398(%rsp), %rdi
movq %rax, %rsi
callq 0x104b0
movq %rax, 0x3a0(%rsp)
jmp 0xbd0d
movq 0x3a0(%rsp), %rax
movq %rax, 0xc88(%rsp)
movq 0xc88(%rsp), %rax
movq %rax, 0xc90(%rsp)
movq 0x1860(%rsp), %rdi
callq 0x10500
movq %rax, 0xc80(%rsp)
leaq 0xc90(%rsp), %rdi
leaq 0xc80(%rsp), %rsi
callq 0x104e0
testb $0x1, %al
jne 0xbd60
jmp 0xbe20
movq 0x1860(%rsp), %rax
movq %rax, 0x390(%rsp)
leaq 0x17b0(%rsp), %rdi
movl $0x1, %esi
callq 0x88f0
movq %rax, %rsi
movl $0x1, 0xc54(%rsp)
leaq 0xc58(%rsp), %rdi
leaq 0xc54(%rsp), %rdx
callq 0x10580
jmp 0xbda7
movq 0x390(%rsp), %rdi
leaq 0xc58(%rsp), %rsi
callq 0x10530
movb %dl, 0x387(%rsp)
movq %rax, 0x388(%rsp)
jmp 0xbdcd
movb 0x387(%rsp), %al
movq 0x388(%rsp), %rcx
movq %rcx, 0xc40(%rsp)
movb %al, 0xc48(%rsp)
leaq 0xc58(%rsp), %rdi
callq 0x105c0
jmp 0xbe6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xc58(%rsp), %rdi
callq 0x105c0
jmp 0xc299
movq 0x1860(%rsp), %rax
movq %rax, 0x370(%rsp)
leaq 0x17b0(%rsp), %rdi
movl $0x1, %esi
callq 0x88f0
movq 0x370(%rsp), %rdi
movq %rax, %rsi
callq 0x105d0
movq %rax, 0x378(%rsp)
jmp 0xbe5c
movq 0x378(%rsp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq 0xc38(%rsp), %rdi
callq 0x106c0
movq 0x1818(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
callq 0x10250
movq %rax, 0x368(%rsp)
jmp 0xbe97
movq 0x368(%rsp), %rax
movq %rax, 0xc30(%rsp)
movq 0xc30(%rsp), %rax
movq %rax, 0xc38(%rsp)
movq 0x1818(%rsp), %rdi
callq 0x102a0
movq %rax, 0xc28(%rsp)
leaq 0xc38(%rsp), %rdi
leaq 0xc28(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xbeea
jmp 0xbffe
movq 0x1818(%rsp), %rax
movq %rax, 0x360(%rsp)
movl $0x1, 0xc14(%rsp)
leaq 0xc18(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
leaq 0xc14(%rsp), %rdx
callq 0x10320
jmp 0xbf24
movq 0x360(%rsp), %rdi
leaq 0xc18(%rsp), %rsi
callq 0x102d0
movb %dl, 0x357(%rsp)
movq %rax, 0x358(%rsp)
jmp 0xbf4a
movb 0x357(%rsp), %al
movq 0x358(%rsp), %rcx
movq %rcx, 0xc00(%rsp)
movb %al, 0xc08(%rsp)
movq 0x1850(%rsp), %rax
movq %rax, 0x348(%rsp)
movq 0xfc0(%rsp), %rcx
movq 0xfc8(%rsp), %rax
subq %rcx, %rax
incq %rax
movq %rax, 0xbe8(%rsp)
leaq 0xbf0(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
leaq 0xbe8(%rsp), %rdx
callq 0x106e0
jmp 0xbfb5
movq 0x348(%rsp), %rdi
leaq 0xbf0(%rsp), %rsi
callq 0x102d0
movb %dl, 0x33f(%rsp)
movq %rax, 0x340(%rsp)
jmp 0xbfdb
movb 0x33f(%rsp), %al
movq 0x340(%rsp), %rcx
movq %rcx, 0xbd8(%rsp)
movb %al, 0xbe0(%rsp)
jmp 0xc081
movq 0x1818(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
callq 0x103a0
movq %rax, 0x330(%rsp)
jmp 0xc01d
movq 0x330(%rsp), %rax
movq (%rax), %rcx
incq %rcx
movq %rcx, (%rax)
movq 0xfc0(%rsp), %rcx
movq 0xfc8(%rsp), %rax
subq %rcx, %rax
incq %rax
movq %rax, 0x320(%rsp)
movq 0x1850(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
callq 0x103a0
movq %rax, 0x328(%rsp)
jmp 0xc06b
movq 0x328(%rsp), %rax
movq 0x320(%rsp), %rcx
addq (%rax), %rcx
movq %rcx, (%rax)
leaq 0xbd0(%rsp), %rdi
callq 0x106c0
leaq 0xbc8(%rsp), %rdi
callq 0x106c0
leaq 0xbc0(%rsp), %rdi
callq 0x106c0
leaq 0x1030(%rsp), %rdi
callq 0x10710
movq %rax, 0xbb8(%rsp)
movq 0xbb8(%rsp), %rax
movq %rax, 0xbd0(%rsp)
leaq 0x1030(%rsp), %rdi
callq 0x102a0
movq %rax, 0xbb0(%rsp)
movq 0xbb0(%rsp), %rax
movq %rax, 0xbc8(%rsp)
leaq 0xbd0(%rsp), %rdi
leaq 0xbc8(%rsp), %rsi
callq 0x10740
testb $0x1, %al
jne 0xc110
jmp 0xc28a
movq 0x1858(%rsp), %rax
movq %rax, 0x310(%rsp)
leaq 0xbd0(%rsp), %rdi
callq 0x10380
movq 0x310(%rsp), %rdi
movq %rax, %rsi
callq 0x10250
movq %rax, 0x318(%rsp)
jmp 0xc147
movq 0x318(%rsp), %rax
movq %rax, 0xba8(%rsp)
movq 0xba8(%rsp), %rax
movq %rax, 0xbc0(%rsp)
movq 0x1858(%rsp), %rdi
callq 0x102a0
movq %rax, 0xba0(%rsp)
leaq 0xbc0(%rsp), %rdi
leaq 0xba0(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xc19a
jmp 0xc238
movq 0x1858(%rsp), %rax
movq %rax, 0x2f8(%rsp)
leaq 0xbd0(%rsp), %rdi
movq %rdi, 0x300(%rsp)
callq 0x10380
movq 0x300(%rsp), %rdi
movq %rax, 0x308(%rsp)
callq 0x10380
movq 0x308(%rsp), %rsi
movq %rax, %rdx
addq $0x8, %rdx
leaq 0xb90(%rsp), %rdi
callq 0x10760
jmp 0xc1f2
movq 0x2f8(%rsp), %rdi
leaq 0xb90(%rsp), %rsi
callq 0x102d0
movb %dl, 0x2ef(%rsp)
movq %rax, 0x2f0(%rsp)
jmp 0xc218
movb 0x2ef(%rsp), %al
movq 0x2f0(%rsp), %rcx
movq %rcx, 0xb80(%rsp)
movb %al, 0xb88(%rsp)
jmp 0xc26e
leaq 0xbd0(%rsp), %rdi
callq 0x10380
movq 0x8(%rax), %rax
movq %rax, 0x2e0(%rsp)
leaq 0xbc0(%rsp), %rdi
callq 0x10380
movq 0x2e0(%rsp), %rcx
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
leaq 0xbd0(%rsp), %rdi
xorl %esi, %esi
callq 0x10790
movq %rax, 0xb78(%rsp)
jmp 0xc0f2
leaq 0xdb0(%rsp), %rdi
callq 0x5350
jmp 0xc2ab
leaq 0xdb0(%rsp), %rdi
callq 0x5350
jmp 0xccb2
movl $0x0, 0x172c(%rsp)
leaq 0xb57(%rsp), %rdi
movq %rdi, 0x2d8(%rsp)
callq 0x57c0
movq 0x2d8(%rsp), %rdx
leaq 0x5e8ba(%rip), %rsi     # 0x6ab94
leaq 0xb58(%rsp), %rdi
callq 0x6880
jmp 0xc2e9
leaq 0x1598(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x5510
jmp 0xc300
leaq 0xb58(%rsp), %rdi
callq 0x58b8
leaq 0xb57(%rsp), %rdi
callq 0x54d0
leaq 0xb2f(%rsp), %rdi
movq %rdi, 0x2d0(%rsp)
callq 0x57c0
movq 0x2d0(%rsp), %rdx
leaq 0x5e856(%rip), %rsi     # 0x6ab94
leaq 0xb30(%rsp), %rdi
callq 0x6880
jmp 0xc34d
leaq 0x13e8(%rsp), %rdi
leaq 0xb30(%rsp), %rsi
callq 0x5510
jmp 0xc364
leaq 0xb30(%rsp), %rdi
callq 0x58b8
leaq 0xb2f(%rsp), %rdi
callq 0x54d0
leaq 0xb07(%rsp), %rdi
movq %rdi, 0x2c8(%rsp)
callq 0x57c0
movq 0x2c8(%rsp), %rdx
leaq 0x5e7f2(%rip), %rsi     # 0x6ab94
leaq 0xb08(%rsp), %rdi
callq 0x6880
jmp 0xc3b1
leaq 0x1238(%rsp), %rdi
leaq 0xb08(%rsp), %rsi
callq 0x5510
jmp 0xc3c8
leaq 0xb08(%rsp), %rdi
callq 0x58b8
leaq 0xb07(%rsp), %rdi
callq 0x54d0
leaq 0xadf(%rsp), %rdi
movq %rdi, 0x2c0(%rsp)
callq 0x57c0
movq 0x2c0(%rsp), %rdx
leaq 0x5e78e(%rip), %rsi     # 0x6ab94
leaq 0xae0(%rsp), %rdi
callq 0x6880
jmp 0xc415
leaq 0x1088(%rsp), %rdi
leaq 0xae0(%rsp), %rsi
callq 0x5510
jmp 0xc42c
leaq 0xae0(%rsp), %rdi
callq 0x58b8
leaq 0xadf(%rsp), %rdi
callq 0x54d0
movl $0x0, 0x1728(%rsp)
jmp 0xc57a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xc48d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xb58(%rsp), %rdi
callq 0x58b8
leaq 0xb57(%rsp), %rdi
callq 0x54d0
jmp 0xccb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xc4d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xb30(%rsp), %rdi
callq 0x58b8
leaq 0xb2f(%rsp), %rdi
callq 0x54d0
jmp 0xccb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xc51f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xb08(%rsp), %rdi
callq 0x58b8
leaq 0xb07(%rsp), %rdi
callq 0x54d0
jmp 0xccb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xc568
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0xae0(%rsp), %rdi
callq 0x58b8
leaq 0xadf(%rsp), %rdi
callq 0x54d0
jmp 0xccb2
movq 0x17f0(%rsp), %rax
incq %rax
movq %rax, 0x17f0(%rsp)
movq 0xfc0(%rsp), %rax
movq %rax, 0x1768(%rsp)
movq 0xfc8(%rsp), %rax
movq %rax, 0x1760(%rsp)
movq 0x1840(%rsp), %rax
addq $0x188, %rax            # imm = 0x188
movq %rax, 0x2b0(%rsp)
leaq 0x1770(%rsp), %rdi
callq 0xff40
movq 0x2b0(%rsp), %rdi
movq %rax, %rsi
callq 0x53e0
movq %rax, 0x2b8(%rsp)
jmp 0xc5ea
movq 0x2b8(%rsp), %rdi
leaq 0x5e59a(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x2a8(%rsp)
jmp 0xc608
movq 0x2a8(%rsp), %rdi
movq 0x1768(%rsp), %rsi
callq 0x50f0
movq %rax, 0x2a0(%rsp)
jmp 0xc627
movq 0x2a0(%rsp), %rdi
leaq 0x5e55d(%rip), %rsi     # 0x6ab93
callq 0x5460
jmp 0xc63d
movq $0x0, 0x1748(%rsp)
movq $0x0, 0x1740(%rsp)
movq $0x0, 0x1738(%rsp)
movq $0x0, 0x1730(%rsp)
leaq 0x1030(%rsp), %rdi
callq 0x107d0
movl 0xfc0(%rsp), %eax
movl 0xfc8(%rsp), %edx
subl %eax, %edx
movl 0x1728(%rsp), %eax
movl %eax, %ecx
movl %edx, %eax
leal 0x1(%rax,%rcx), %eax
movl %eax, 0x1728(%rsp)
movl 0x172c(%rsp), %eax
incl %eax
movl %eax, 0x172c(%rsp)
leaq 0xab8(%rsp), %rdi
leaq 0x1598(%rsp), %rsi
callq 0x5440
jmp 0xc6c7
leaq 0xab8(%rsp), %rdi
callq 0x5310
movq %rax, 0x298(%rsp)
leaq 0xab8(%rsp), %rdi
callq 0x58b8
movq 0x298(%rsp), %rax
cmpq $0x0, %rax
jbe 0xc76b
leaq 0x15a8(%rsp), %rdi
leaq 0x5bd6b(%rip), %rsi     # 0x68471
callq 0x5460
movq %rax, 0x290(%rsp)
jmp 0xc715
movq 0x290(%rsp), %rdi
movq 0xfc0(%rsp), %rsi
callq 0x50f0
movq %rax, 0x288(%rsp)
jmp 0xc734
movq 0x288(%rsp), %rdi
leaq 0x5a75d(%rip), %rsi     # 0x66ea0
callq 0x5460
movq %rax, 0x280(%rsp)
jmp 0xc752
movq 0x280(%rsp), %rdi
movq 0xfc8(%rsp), %rsi
callq 0x50f0
jmp 0xc769
jmp 0xc7c1
leaq 0x15a8(%rsp), %rdi
movq 0xfc0(%rsp), %rsi
callq 0x50f0
movq %rax, 0x278(%rsp)
jmp 0xc78a
movq 0x278(%rsp), %rdi
leaq 0x5a707(%rip), %rsi     # 0x66ea0
callq 0x5460
movq %rax, 0x270(%rsp)
jmp 0xc7a8
movq 0x270(%rsp), %rdi
movq 0xfc8(%rsp), %rsi
callq 0x50f0
jmp 0xc7bf
jmp 0xc7c1
leaq 0xa98(%rsp), %rdi
leaq 0x13e8(%rsp), %rsi
callq 0x5440
jmp 0xc7d8
leaq 0xa98(%rsp), %rdi
callq 0x5310
movq %rax, 0x268(%rsp)
leaq 0xa98(%rsp), %rdi
callq 0x58b8
movq 0x268(%rsp), %rax
cmpq $0x0, %rax
jbe 0xc8ad
leaq 0x13f8(%rsp), %rdi
leaq 0x5a685(%rip), %rsi     # 0x66ea0
callq 0x5460
movq %rax, 0x260(%rsp)
jmp 0xc82a
movq 0x260(%rsp), %rdi
leaq 0xff0(%rsp), %rsi
callq 0x53e0
jmp 0xc841
leaq 0x1248(%rsp), %rdi
leaq 0x5a650(%rip), %rsi     # 0x66ea0
callq 0x5460
movq %rax, 0x258(%rsp)
jmp 0xc85f
movq 0x258(%rsp), %rdi
leaq 0x1010(%rsp), %rsi
callq 0x53e0
jmp 0xc876
leaq 0x1098(%rsp), %rdi
leaq 0x5a61b(%rip), %rsi     # 0x66ea0
callq 0x5460
movq %rax, 0x250(%rsp)
jmp 0xc894
movq 0x250(%rsp), %rdi
leaq 0xfd0(%rsp), %rsi
callq 0x53e0
jmp 0xc8ab
jmp 0xc8f4
leaq 0x13f8(%rsp), %rdi
leaq 0xff0(%rsp), %rsi
callq 0x53e0
jmp 0xc8c4
leaq 0x1248(%rsp), %rdi
leaq 0x1010(%rsp), %rsi
callq 0x53e0
jmp 0xc8db
leaq 0x1098(%rsp), %rdi
leaq 0xfd0(%rsp), %rsi
callq 0x53e0
jmp 0xc8f2
jmp 0xc8f4
movq 0x17e8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x17e8(%rsp)
leaq 0xfc0(%rsp), %rdi
addq $0x10, %rdi
leaq 0x59d26(%rip), %rsi     # 0x66641
callq 0x5140
cmpl $0x0, %eax
jne 0xcabd
cmpq $0x0, 0x1740(%rsp)
je 0xca98
leaq 0xa90(%rsp), %rdi
callq 0x106c0
movl $0x0, 0xa8c(%rsp)
movq 0xfc0(%rsp), %rax
cmpq 0x1740(%rsp), %rax
jb 0xc97f
movq 0xfc0(%rsp), %rax
subq 0x1740(%rsp), %rax
addq $0x1, %rax
movl %eax, 0xa8c(%rsp)
jmp 0xc99e
movq 0x1740(%rsp), %rax
subq 0xfc0(%rsp), %rax
addq $0x1, %rax
imulq $-0x1, %rax, %rax
movl %eax, 0xa8c(%rsp)
leaq 0x1030(%rsp), %rdi
leaq 0xa8c(%rsp), %rsi
callq 0x10250
movq %rax, 0x248(%rsp)
jmp 0xc9bd
movq 0x248(%rsp), %rax
movq %rax, 0xa80(%rsp)
movq 0xa80(%rsp), %rax
movq %rax, 0xa90(%rsp)
leaq 0x1030(%rsp), %rdi
callq 0x102a0
movq %rax, 0xa78(%rsp)
leaq 0xa90(%rsp), %rdi
leaq 0xa78(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xca0d
jmp 0xca7d
movl $0x1, 0xa64(%rsp)
leaq 0xa68(%rsp), %rdi
leaq 0xa8c(%rsp), %rsi
leaq 0xa64(%rsp), %rdx
callq 0x10320
jmp 0xca37
leaq 0x1030(%rsp), %rdi
leaq 0xa68(%rsp), %rsi
callq 0x102d0
movb %dl, 0x23f(%rsp)
movq %rax, 0x240(%rsp)
jmp 0xca5d
movb 0x23f(%rsp), %al
movq 0x240(%rsp), %rcx
movq %rcx, 0xa50(%rsp)
movb %al, 0xa58(%rsp)
jmp 0xca96
leaq 0xa90(%rsp), %rdi
callq 0x10380
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
jmp 0xca98
movq 0xfc0(%rsp), %rax
movq %rax, 0x1748(%rsp)
movq 0xfc8(%rsp), %rax
movq %rax, 0x1740(%rsp)
jmp 0xcc73
leaq 0xfc0(%rsp), %rdi
addq $0x10, %rdi
leaq 0x5e4bd(%rip), %rsi     # 0x6af8d
callq 0x5140
cmpl $0x0, %eax
jne 0xcc6f
cmpq $0x0, 0x1730(%rsp)
je 0xcc4d
leaq 0xa48(%rsp), %rdi
callq 0x106c0
movl $0x0, 0xa44(%rsp)
movq 0xfc0(%rsp), %rax
cmpq 0x1730(%rsp), %rax
jb 0xcb34
movq 0xfc0(%rsp), %rax
subq 0x1730(%rsp), %rax
addq $0x1, %rax
movl %eax, 0xa44(%rsp)
jmp 0xcb53
movq 0x1730(%rsp), %rax
subq 0xfc0(%rsp), %rax
addq $0x1, %rax
imulq $-0x1, %rax, %rax
movl %eax, 0xa44(%rsp)
leaq 0x1030(%rsp), %rdi
leaq 0xa44(%rsp), %rsi
callq 0x10250
movq %rax, 0x230(%rsp)
jmp 0xcb72
movq 0x230(%rsp), %rax
movq %rax, 0xa38(%rsp)
movq 0xa38(%rsp), %rax
movq %rax, 0xa48(%rsp)
leaq 0x1030(%rsp), %rdi
callq 0x102a0
movq %rax, 0xa30(%rsp)
leaq 0xa48(%rsp), %rdi
leaq 0xa30(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xcbc2
jmp 0xcc32
movl $0x1, 0xa1c(%rsp)
leaq 0xa20(%rsp), %rdi
leaq 0xa44(%rsp), %rsi
leaq 0xa1c(%rsp), %rdx
callq 0x10320
jmp 0xcbec
leaq 0x1030(%rsp), %rdi
leaq 0xa20(%rsp), %rsi
callq 0x102d0
movb %dl, 0x227(%rsp)
movq %rax, 0x228(%rsp)
jmp 0xcc12
movb 0x227(%rsp), %al
movq 0x228(%rsp), %rcx
movq %rcx, 0xa08(%rsp)
movb %al, 0xa10(%rsp)
jmp 0xcc4b
leaq 0xa48(%rsp), %rdi
callq 0x10380
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
jmp 0xcc4d
movq 0xfc0(%rsp), %rax
movq %rax, 0x1738(%rsp)
movq 0xfc8(%rsp), %rax
movq %rax, 0x1730(%rsp)
jmp 0xcc71
jmp 0xcc71
jmp 0xcc73
movq 0xfc0(%rsp), %rax
movq %rax, 0x1758(%rsp)
movq 0xfc8(%rsp), %rax
movq %rax, 0x1750(%rsp)
leaq 0xfc0(%rsp), %rdi
callq 0xfd50
leaq 0x1770(%rsp), %rdi
callq 0x107e0
jmp 0xb116
leaq 0xfc0(%rsp), %rdi
callq 0xfd50
jmp 0xdead
movq 0x1750(%rsp), %rax
cmpq 0x1768(%rsp), %rax
jbe 0xccd8
jmp 0xccf7
leaq 0x5a073(%rip), %rdi     # 0x66d52
leaq 0x5a087(%rip), %rsi     # 0x66d6d
movl $0x1ff, %edx            # imm = 0x1FF
leaq 0x5a090(%rip), %rcx     # 0x66d82
callq 0x52d0
movq 0x1750(%rsp), %rax
subq 0x1768(%rsp), %rax
addq $0x1, %rax
movl %eax, 0x1724(%rsp)
cmpl $0x0, 0x1724(%rsp)
jne 0xcd27
movl $0x1, 0x1724(%rsp)
movq 0x1840(%rsp), %rdi
addq $0x188, %rdi            # imm = 0x188
movq 0x1758(%rsp), %rsi
callq 0x50f0
movq %rax, 0x218(%rsp)
jmp 0xcd4d
movq 0x218(%rsp), %rdi
leaq 0x5de37(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x210(%rsp)
jmp 0xcd6b
movq 0x210(%rsp), %rdi
movl 0x1724(%rsp), %esi
callq 0x5790
movq %rax, 0x208(%rsp)
jmp 0xcd89
movq 0x208(%rsp), %rdi
leaq 0x5ddfb(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x200(%rsp)
jmp 0xcda7
movl $0x2, %edi
callq 0x100d0
movl %eax, 0x1fc(%rsp)
jmp 0xcdba
movq 0x200(%rsp), %rdi
movl 0x1fc(%rsp), %eax
movl %eax, 0xa04(%rsp)
movl 0xa04(%rsp), %esi
callq 0x56d0
movq %rax, 0x1f0(%rsp)
jmp 0xcde6
movq 0x1f0(%rsp), %rdi
leaq 0x32fb(%rip), %rsi      # 0x100f0
callq 0x5180
movq %rax, 0x1e8(%rsp)
jmp 0xce04
movq 0x1e8(%rsp), %rdi
cvtsi2ssl 0x1728(%rsp), %xmm0
cvtsi2ssl 0x1724(%rsp), %xmm1
divss %xmm1, %xmm0
callq 0x5340
movq %rax, 0x1e0(%rsp)
jmp 0xce31
movq 0x1e0(%rsp), %rdi
leaq 0x5dd53(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x1d8(%rsp)
jmp 0xce4f
movq 0x1d8(%rsp), %rdi
movl 0x172c(%rsp), %esi
callq 0x5790
movq %rax, 0x1d0(%rsp)
jmp 0xce6d
movq 0x1d0(%rsp), %rdi
leaq 0x5a026(%rip), %rsi     # 0x66ea2
callq 0x5460
movq %rax, 0x1c8(%rsp)
jmp 0xce8b
movq 0x1c8(%rsp), %rdi
movq 0x1750(%rsp), %rsi
callq 0x50f0
movq %rax, 0x1c0(%rsp)
jmp 0xceaa
movq 0x1c0(%rsp), %rdi
leaq 0x5dcda(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x1b8(%rsp)
jmp 0xcec8
leaq 0x9e0(%rsp), %rdi
leaq 0x1598(%rsp), %rsi
callq 0x5440
jmp 0xcedf
movq 0x1b8(%rsp), %rdi
leaq 0x9e0(%rsp), %rsi
callq 0x53e0
movq %rax, 0x1b0(%rsp)
jmp 0xcefe
movq 0x1b0(%rsp), %rdi
leaq 0x5dc86(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x1a8(%rsp)
jmp 0xcf1c
leaq 0x9c0(%rsp), %rdi
leaq 0x1088(%rsp), %rsi
callq 0x5440
jmp 0xcf33
movq 0x1a8(%rsp), %rdi
leaq 0x9c0(%rsp), %rsi
callq 0x53e0
movq %rax, 0x1a0(%rsp)
jmp 0xcf52
movq 0x1a0(%rsp), %rdi
leaq 0x5dc32(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x198(%rsp)
jmp 0xcf70
leaq 0x9a0(%rsp), %rdi
leaq 0x13e8(%rsp), %rsi
callq 0x5440
jmp 0xcf87
movq 0x198(%rsp), %rdi
leaq 0x9a0(%rsp), %rsi
callq 0x53e0
movq %rax, 0x190(%rsp)
jmp 0xcfa6
movq 0x190(%rsp), %rdi
leaq 0x5dbde(%rip), %rsi     # 0x6ab93
callq 0x5460
movq %rax, 0x188(%rsp)
jmp 0xcfc4
leaq 0x980(%rsp), %rdi
leaq 0x1238(%rsp), %rsi
callq 0x5440
jmp 0xcfdb
movq 0x188(%rsp), %rdi
leaq 0x980(%rsp), %rsi
callq 0x53e0
movq %rax, 0x180(%rsp)
jmp 0xcffa
movq 0x180(%rsp), %rdi
movq 0x77fa7(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0xd010
leaq 0x980(%rsp), %rdi
callq 0x58b8
leaq 0x9a0(%rsp), %rdi
callq 0x58b8
leaq 0x9c0(%rsp), %rdi
callq 0x58b8
leaq 0x9e0(%rsp), %rdi
callq 0x58b8
movl 0x1724(%rsp), %eax
cmpl 0x1878(%rsp), %eax
jl 0xdb93
leaq 0x7f8(%rsp), %rdi
callq 0x5320
jmp 0xd067
leaq 0x7d7(%rsp), %rdi
movq %rdi, 0x178(%rsp)
callq 0x57c0
movq 0x178(%rsp), %rdx
leaq 0x5db09(%rip), %rsi     # 0x6ab94
leaq 0x7d8(%rsp), %rdi
callq 0x6880
jmp 0xd09a
leaq 0x7f8(%rsp), %rdi
leaq 0x7d8(%rsp), %rsi
callq 0x5510
jmp 0xd0b1
leaq 0x7d8(%rsp), %rdi
callq 0x58b8
leaq 0x7d7(%rsp), %rdi
callq 0x54d0
leaq 0x808(%rsp), %rax
movq %rax, 0x168(%rsp)
movl $0x2, %edi
callq 0x100d0
movl %eax, 0x174(%rsp)
jmp 0xd0ee
movq 0x168(%rsp), %rdi
movl 0x174(%rsp), %eax
movl %eax, 0x7d0(%rsp)
movl 0x7d0(%rsp), %esi
callq 0x56d0
movq %rax, 0x160(%rsp)
jmp 0xd11a
movq 0x160(%rsp), %rdi
leaq 0x2fc7(%rip), %rsi      # 0x100f0
callq 0x5180
movq %rax, 0x158(%rsp)
jmp 0xd138
movq 0x158(%rsp), %rdi
cvtsi2ssl 0x1728(%rsp), %xmm0
cvtsi2ssl 0x1724(%rsp), %xmm1
divss %xmm1, %xmm0
callq 0x5340
jmp 0xd15d
movq 0x1830(%rsp), %rax
movq %rax, 0x150(%rsp)
leaq 0x7a8(%rsp), %rdi
leaq 0x7f8(%rsp), %rsi
callq 0x5440
jmp 0xd184
movq 0x150(%rsp), %rdi
leaq 0x7a8(%rsp), %rsi
callq 0x10110
movq %rax, 0x148(%rsp)
jmp 0xd1a3
movq 0x148(%rsp), %rax
movq %rax, 0x7c8(%rsp)
leaq 0x7a8(%rsp), %rdi
callq 0x58b8
movq 0x1830(%rsp), %rdi
callq 0x10160
movq %rax, 0x7a0(%rsp)
leaq 0x7c8(%rsp), %rdi
leaq 0x7a0(%rsp), %rsi
callq 0x10140
testb $0x1, %al
jne 0xd1f3
jmp 0xd407
movq 0x1830(%rsp), %rax
movq %rax, 0x140(%rsp)
leaq 0x758(%rsp), %rdi
leaq 0x7f8(%rsp), %rsi
callq 0x5440
jmp 0xd21a
movl $0x1, 0x754(%rsp)
leaq 0x778(%rsp), %rdi
leaq 0x758(%rsp), %rsi
leaq 0x754(%rsp), %rdx
callq 0x101e0
jmp 0xd244
movq 0x140(%rsp), %rdi
leaq 0x778(%rsp), %rsi
callq 0x10190
movb %dl, 0x137(%rsp)
movq %rax, 0x138(%rsp)
jmp 0xd26a
movb 0x137(%rsp), %al
movq 0x138(%rsp), %rcx
movq %rcx, 0x740(%rsp)
movb %al, 0x748(%rsp)
leaq 0x778(%rsp), %rdi
callq 0x10220
leaq 0x758(%rsp), %rdi
callq 0x58b8
jmp 0xd420
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xd324
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xd317
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xd30a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x980(%rsp), %rdi
callq 0x58b8
leaq 0x9a0(%rsp), %rdi
callq 0x58b8
leaq 0x9c0(%rsp), %rdi
callq 0x58b8
leaq 0x9e0(%rsp), %rdi
callq 0x58b8
jmp 0xdead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xd36d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x7d8(%rsp), %rdi
callq 0x58b8
leaq 0x7d7(%rsp), %rdi
callq 0x54d0
jmp 0xdb81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xdb81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x7a8(%rsp), %rdi
callq 0x58b8
jmp 0xdb81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xd3f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x778(%rsp), %rdi
callq 0x10220
leaq 0x758(%rsp), %rdi
callq 0x58b8
jmp 0xdb81
leaq 0x7c8(%rsp), %rdi
callq 0x10230
movq 0x20(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x20(%rax)
cvtsi2sdl 0x1724(%rsp), %xmm0
movsd 0x5949f(%rip), %xmm1    # 0x668d0
divsd %xmm1, %xmm0
callq 0x51e0
cvttsd2si %xmm0, %eax
movl %eax, 0x73c(%rsp)
movq 0x1828(%rsp), %rdi
leaq 0x73c(%rsp), %rsi
callq 0x10250
movq %rax, 0x128(%rsp)
jmp 0xd464
movq 0x128(%rsp), %rax
movq %rax, 0x730(%rsp)
movq 0x1828(%rsp), %rdi
callq 0x102a0
movq %rax, 0x728(%rsp)
leaq 0x730(%rsp), %rdi
leaq 0x728(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xd4a7
jmp 0xd59a
movq 0x1828(%rsp), %rax
movq %rax, 0x120(%rsp)
movl $0x1, 0x714(%rsp)
leaq 0x718(%rsp), %rdi
leaq 0x73c(%rsp), %rsi
leaq 0x714(%rsp), %rdx
callq 0x10320
jmp 0xd4e1
movq 0x120(%rsp), %rdi
leaq 0x718(%rsp), %rsi
callq 0x102d0
movb %dl, 0x117(%rsp)
movq %rax, 0x118(%rsp)
jmp 0xd507
movb 0x117(%rsp), %al
movq 0x118(%rsp), %rcx
movq %rcx, 0x700(%rsp)
movb %al, 0x708(%rsp)
movq 0x1820(%rsp), %rax
movq %rax, 0x108(%rsp)
leaq 0x6f0(%rsp), %rdi
leaq 0x73c(%rsp), %rsi
leaq 0x1724(%rsp), %rdx
callq 0x10350
jmp 0xd554
movq 0x108(%rsp), %rdi
leaq 0x6f0(%rsp), %rsi
callq 0x102d0
movb %dl, 0xff(%rsp)
movq %rax, 0x100(%rsp)
jmp 0xd57a
movb 0xff(%rsp), %al
movq 0x100(%rsp), %rcx
movq %rcx, 0x6e0(%rsp)
movb %al, 0x6e8(%rsp)
jmp 0xd5f7
leaq 0x730(%rsp), %rdi
callq 0x10380
movq 0x8(%rax), %rcx
incq %rcx
movq %rcx, 0x8(%rax)
movslq 0x1724(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0x1820(%rsp), %rdi
leaq 0x73c(%rsp), %rsi
callq 0x103a0
movq %rax, 0xf0(%rsp)
jmp 0xd5e1
movq 0xf0(%rsp), %rax
movq 0xe8(%rsp), %rcx
addq (%rax), %rcx
movq %rcx, (%rax)
leaq 0x6d8(%rsp), %rdi
callq 0x10490
movq 0x1860(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0x17b0(%rsp), %rdi
movl $0x1, %esi
callq 0x88f0
movq 0xd8(%rsp), %rdi
movq %rax, %rsi
callq 0x104b0
movq %rax, 0xe0(%rsp)
jmp 0xd640
movq 0xe0(%rsp), %rax
movq %rax, 0x6d0(%rsp)
movq 0x6d0(%rsp), %rax
movq %rax, 0x6d8(%rsp)
movq 0x1860(%rsp), %rdi
callq 0x10500
movq %rax, 0x6c8(%rsp)
leaq 0x6d8(%rsp), %rdi
leaq 0x6c8(%rsp), %rsi
callq 0x104e0
testb $0x1, %al
jne 0xd693
jmp 0xd753
movq 0x1860(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0x17b0(%rsp), %rdi
movl $0x1, %esi
callq 0x88f0
movq %rax, %rsi
movl $0x1, 0x69c(%rsp)
leaq 0x6a0(%rsp), %rdi
leaq 0x69c(%rsp), %rdx
callq 0x10580
jmp 0xd6da
movq 0xd0(%rsp), %rdi
leaq 0x6a0(%rsp), %rsi
callq 0x10530
movb %dl, 0xc7(%rsp)
movq %rax, 0xc8(%rsp)
jmp 0xd700
movb 0xc7(%rsp), %al
movq 0xc8(%rsp), %rcx
movq %rcx, 0x688(%rsp)
movb %al, 0x690(%rsp)
leaq 0x6a0(%rsp), %rdi
callq 0x105c0
jmp 0xd79e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x6a0(%rsp), %rdi
callq 0x105c0
jmp 0xdb81
movq 0x1860(%rsp), %rax
movq %rax, 0xb0(%rsp)
leaq 0x17b0(%rsp), %rdi
movl $0x1, %esi
callq 0x88f0
movq 0xb0(%rsp), %rdi
movq %rax, %rsi
callq 0x105d0
movq %rax, 0xb8(%rsp)
jmp 0xd78f
movq 0xb8(%rsp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq 0x680(%rsp), %rdi
callq 0x106c0
movq 0x1818(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
callq 0x10250
movq %rax, 0xa8(%rsp)
jmp 0xd7ca
movq 0xa8(%rsp), %rax
movq %rax, 0x678(%rsp)
movq 0x678(%rsp), %rax
movq %rax, 0x680(%rsp)
movq 0x1818(%rsp), %rdi
callq 0x102a0
movq %rax, 0x670(%rsp)
leaq 0x680(%rsp), %rdi
leaq 0x670(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xd81d
jmp 0xd928
movq 0x1818(%rsp), %rax
movq %rax, 0xa0(%rsp)
movl $0x1, 0x65c(%rsp)
leaq 0x660(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
leaq 0x65c(%rsp), %rdx
callq 0x10320
jmp 0xd857
movq 0xa0(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0x102d0
movb %dl, 0x97(%rsp)
movq %rax, 0x98(%rsp)
jmp 0xd87d
movb 0x97(%rsp), %al
movq 0x98(%rsp), %rcx
movq %rcx, 0x648(%rsp)
movb %al, 0x650(%rsp)
movq 0x1850(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x1750(%rsp), %rax
movq 0x1758(%rsp), %rcx
subq %rcx, %rax
incq %rax
movq %rax, 0x630(%rsp)
leaq 0x638(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
leaq 0x630(%rsp), %rdx
callq 0x106e0
jmp 0xd8e8
movq 0x88(%rsp), %rdi
leaq 0x638(%rsp), %rsi
callq 0x102d0
movb %dl, 0x7f(%rsp)
movq %rax, 0x80(%rsp)
jmp 0xd90b
movb 0x7f(%rsp), %al
movq 0x80(%rsp), %rcx
movq %rcx, 0x620(%rsp)
movb %al, 0x628(%rsp)
jmp 0xd999
movq 0x1818(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
callq 0x103a0
movq %rax, 0x70(%rsp)
jmp 0xd944
movq 0x70(%rsp), %rax
movq (%rax), %rcx
incq %rcx
movq %rcx, (%rax)
movq 0x1750(%rsp), %rax
movq 0x1758(%rsp), %rcx
subq %rcx, %rax
incq %rax
movq %rax, 0x60(%rsp)
movq 0x1850(%rsp), %rdi
leaq 0x172c(%rsp), %rsi
callq 0x103a0
movq %rax, 0x68(%rsp)
jmp 0xd989
movq 0x68(%rsp), %rax
movq 0x60(%rsp), %rcx
addq (%rax), %rcx
movq %rcx, (%rax)
leaq 0x618(%rsp), %rdi
callq 0x106c0
leaq 0x610(%rsp), %rdi
callq 0x106c0
leaq 0x608(%rsp), %rdi
callq 0x106c0
leaq 0x1030(%rsp), %rdi
callq 0x10710
movq %rax, 0x600(%rsp)
movq 0x600(%rsp), %rax
movq %rax, 0x618(%rsp)
leaq 0x1030(%rsp), %rdi
callq 0x102a0
movq %rax, 0x5f8(%rsp)
movq 0x5f8(%rsp), %rax
movq %rax, 0x610(%rsp)
leaq 0x618(%rsp), %rdi
leaq 0x610(%rsp), %rsi
callq 0x10740
testb $0x1, %al
jne 0xda28
jmp 0xdb72
movq 0x1858(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x618(%rsp), %rdi
callq 0x10380
movq 0x50(%rsp), %rdi
movq %rax, %rsi
callq 0x10250
movq %rax, 0x58(%rsp)
jmp 0xda56
movq 0x58(%rsp), %rax
movq %rax, 0x5f0(%rsp)
movq 0x5f0(%rsp), %rax
movq %rax, 0x608(%rsp)
movq 0x1858(%rsp), %rdi
callq 0x102a0
movq %rax, 0x5e8(%rsp)
leaq 0x608(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
callq 0x10280
testb $0x1, %al
jne 0xdaa6
jmp 0xdb26
movq 0x1858(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x618(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x10380
movq 0x40(%rsp), %rdi
movq %rax, 0x48(%rsp)
callq 0x10380
movq 0x48(%rsp), %rsi
movq %rax, %rdx
addq $0x8, %rdx
leaq 0x5d8(%rsp), %rdi
callq 0x10760
jmp 0xdaef
movq 0x38(%rsp), %rdi
leaq 0x5d8(%rsp), %rsi
callq 0x102d0
movb %dl, 0x2f(%rsp)
movq %rax, 0x30(%rsp)
jmp 0xdb0c
movb 0x2f(%rsp), %al
movq 0x30(%rsp), %rcx
movq %rcx, 0x5c8(%rsp)
movb %al, 0x5d0(%rsp)
jmp 0xdb56
leaq 0x618(%rsp), %rdi
callq 0x10380
movq 0x8(%rax), %rax
movq %rax, 0x20(%rsp)
leaq 0x608(%rsp), %rdi
callq 0x10380
movq 0x20(%rsp), %rcx
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
leaq 0x618(%rsp), %rdi
xorl %esi, %esi
callq 0x10790
movq %rax, 0x5c0(%rsp)
jmp 0xda0a
leaq 0x7f8(%rsp), %rdi
callq 0x5350
jmp 0xdb93
leaq 0x7f8(%rsp), %rdi
callq 0x5350
jmp 0xdead
leaq 0x1030(%rsp), %rdi
callq 0x107d0
movl $0x0, 0x172c(%rsp)
leaq 0x59f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x57c0
movq 0x18(%rsp), %rdx
leaq 0x5cfcb(%rip), %rsi     # 0x6ab94
leaq 0x5a0(%rsp), %rdi
callq 0x6880
jmp 0xdbd8
leaq 0x1598(%rsp), %rdi
leaq 0x5a0(%rsp), %rsi
callq 0x5510
jmp 0xdbef
leaq 0x5a0(%rsp), %rdi
callq 0x58b8
leaq 0x59f(%rsp), %rdi
callq 0x54d0
leaq 0x577(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x57c0
movq 0x10(%rsp), %rdx
leaq 0x5cf6d(%rip), %rsi     # 0x6ab94
leaq 0x578(%rsp), %rdi
callq 0x6880
jmp 0xdc36
leaq 0x13e8(%rsp), %rdi
leaq 0x578(%rsp), %rsi
callq 0x5510
jmp 0xdc4d
leaq 0x578(%rsp), %rdi
callq 0x58b8
leaq 0x577(%rsp), %rdi
callq 0x54d0
leaq 0x54f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x57c0
movq 0x8(%rsp), %rdx
leaq 0x5cf0f(%rip), %rsi     # 0x6ab94
leaq 0x550(%rsp), %rdi
callq 0x6880
jmp 0xdc94
leaq 0x1238(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x5510
jmp 0xdcab
leaq 0x550(%rsp), %rdi
callq 0x58b8
leaq 0x54f(%rsp), %rdi
callq 0x54d0
leaq 0x527(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x57c0
movq (%rsp), %rdx
leaq 0x5ceb3(%rip), %rsi     # 0x6ab94
leaq 0x528(%rsp), %rdi
callq 0x6880
jmp 0xdcf0
leaq 0x1088(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0x5510
jmp 0xdd07
leaq 0x528(%rsp), %rdi
callq 0x58b8
leaq 0x527(%rsp), %rdi
callq 0x54d0
movq 0x1770(%rsp), %rax
movq %rax, 0x1810(%rsp)
leaq 0x1030(%rsp), %rdi
callq 0xfe30
leaq 0x1088(%rsp), %rdi
callq 0x5350
leaq 0x1238(%rsp), %rdi
callq 0x5350
leaq 0x13e8(%rsp), %rdi
callq 0x5350
leaq 0x1598(%rsp), %rdi
callq 0x5350
leaq 0x17b0(%rsp), %rdi
callq 0x8910
leaq 0x17c8(%rsp), %rdi
callq 0x58b8
jmp 0xadca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xddc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x5a0(%rsp), %rdi
callq 0x58b8
leaq 0x59f(%rsp), %rdi
callq 0x54d0
jmp 0xdead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xde11
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x578(%rsp), %rdi
callq 0x58b8
leaq 0x577(%rsp), %rdi
callq 0x54d0
jmp 0xdead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xde5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x550(%rsp), %rdi
callq 0x58b8
leaq 0x54f(%rsp), %rdi
callq 0x54d0
jmp 0xdead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
jmp 0xdea0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x17a0(%rsp)
movl %eax, 0x179c(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x58b8
leaq 0x527(%rsp), %rdi
callq 0x54d0
leaq 0x1030(%rsp), %rdi
callq 0xfe30
leaq 0x1088(%rsp), %rdi
callq 0x5350
leaq 0x1238(%rsp), %rdi
callq 0x5350
leaq 0x13e8(%rsp), %rdi
callq 0x5350
leaq 0x1598(%rsp), %rdi
callq 0x5350
leaq 0x17b0(%rsp), %rdi
callq 0x8910
leaq 0x17c8(%rsp), %rdi
callq 0x58b8
jmp 0xdf76
movq 0x770b7(%rip), %rdi     # 0x84fc8
leaq 0x58f8e(%rip), %rsi     # 0x66ea6
callq 0x5460
movq 0x518(%rsp), %rsi
movq %rax, %rdi
callq 0x53e0
movq %rax, %rdi
leaq 0x58f79(%rip), %rsi     # 0x66eb0
callq 0x5460
movq %rax, %rdi
movq 0x17e8(%rsp), %rsi
callq 0x5800
movq %rax, %rdi
leaq 0x58f60(%rip), %rsi     # 0x66eb6
callq 0x5460
movq %rax, %rdi
movq 0x7704b(%rip), %rsi     # 0x84fb0
callq 0x54b0
movb $0x1, %al
andb $0x1, %al
addq $0x1848, %rsp           # imm = 0x1848
retq
movq 0x17a0(%rsp), %rdi
callq 0x57b0
nopw %cs:(%rax,%rax)