// File: /workspace/github_cpp_makefile_star2_O1/schneebergerlab[P]GameteBinning/asPollinator_1.0.cpp
// Function: get_break_pos(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, unsigned long*, double*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::map<unsigned long, ALLELE, std::less<unsigned long>, std::allocator<std::pair<unsigned long const, ALLELE>>>)
string get_break_pos(string           poPat, 
                     string          pmflag,
                     int           pollenid,
                     unsigned long*   leftp, 
                     double*          score,
                     string                     contigname,
                     map<unsigned long, ALLELE> contigmarker)
{
    // used after 20191101
    // poPat: is the pollen PM pattern sequence
    // leftp : would be the i-th   marker position along the contig
    // rightp: would be the i+1-th marker position along the contig
    // score : would be score for the reported co
    // minimum number of markers hard-coded: at least 3
    //
    string pmstring = "";
    string poPatbk  = poPat;
    poPatbk.erase(std::remove(poPatbk.begin(), poPatbk.end(), 'u'), poPatbk.end()); // remove non-effective marekers with value: 'u'
    if(poPatbk.size()==0) 
    {
        pmstring = "UU";                // not sure on co
        *leftp   = 0;
        *score   = 0;
        cout << "   Check2rm: " << poPat << " ---- determined as "  << pmstring << " for pollen " << pollenid << "_x\t0_" << pmflag 
             << " (no effective markers) "                          << endl; 
        return pmstring;
    }
    if(poPatbk.size()==1)
    {
        if(poPatbk.compare("M")==0)
        {
            pmstring = "MM";
        }else
        if(poPatbk.compare("P")==0)
        {
            pmstring = "PP";
        }else ;
        *leftp   = 0; // no co
        *score   = 0; // no co     
        cout << "   Check2rm: " << poPat  << " ---- determined as "  << pmstring << " for pollen " << pollenid << "_x\t0_" << pmflag 
             << " ( 1 effective marker) "                            << endl; 
        return pmstring;  
    }
    //
    *score        = 0.0;
    size_t c1Lef  = 0;   // Left  P cnt for highest score
    size_t c2Lef  = 0;   // Left  M cnt for highest score
    size_t c1Rig  = 0;   // right P cnt for highest score
    size_t c2Rig  = 0;   // right M cnt for highest score
    for(size_t mi = 1; mi <= poPat.size()-1; mi ++) // later control on number of markers, and no need checking all pos.
    {
        string strLef = poPat.substr(0, mi); // val @ pos of 0,...,mi-1
        string strRig = poPat.substr(mi);    // val @ pos of mi,mi+1,...
        // current break point: note: 'u' excluded from consideration
        size_t c1Leftmp  = std::count(strLef.begin(), strLef.end(), 'P'); // Left  P
        size_t c2Leftmp  = std::count(strLef.begin(), strLef.end(), 'M'); // Left  M
        size_t c1Rigtmp  = std::count(strRig.begin(), strRig.end(), 'P'); // Right P
        size_t c2Rigtmp  = std::count(strRig.begin(), strRig.end(), 'M'); // Right M
        //
        double af1Leftmp = (double)c1Leftmp*1.0/(c1Leftmp+c2Leftmp);
        double af2Leftmp = (double)c2Leftmp*1.0/(c1Leftmp+c2Leftmp);        
        double af1Rigtmp = (double)c1Rigtmp*1.0/(c1Rigtmp+c2Rigtmp);
        double af2Rigtmp = (double)c2Rigtmp*1.0/(c1Rigtmp+c2Rigtmp);
        //
        double score1 = af1Leftmp * af2Rigtmp; // left as P right as M
        double score2 = af2Leftmp * af1Rigtmp; // left as M right as P
        double scotmp = score1>score2?score1:score2;   
        if(scotmp >= *score)
        {
            *score  = scotmp;
            *leftp  = mi;  // (*leftp)-th marker is the left break marker, (*leftp+1) is the right break marker; 1-based positioning
            if(score1>score2)
            { 
                pmstring  = "PM";
            }else
            {
                pmstring  = "MP";
            }  
            //
            c1Lef  = c1Leftmp;
            c2Lef  = c2Leftmp;
            c1Rig  = c1Rigtmp;
            c2Rig  = c2Rigtmp;                     
        }
    }
    // 
    string checkfrom = "";
    // control on marker number: MuMMMMuuuuuuPuPPPu
    if(*score > 0 && poPatbk.size()<10)
    {
        // from cluster "M"; 
        if(pmflag.compare("M")    == 0)
        {
            // found "P" on left end;            
            if(pmstring.compare("PM") == 0)
            { 
               // at least 1 effective "P"; at least 1/3 "P"; first position was "P"
               if((poPatbk.substr(0, 1)).compare("P") == 0 && 
                  c1Lef > 0 && c1Lef >= poPatbk.size()/3.0)
                {
                    checkfrom = "1";
                }else
                {
                    pmstring  = "MM";
                    *leftp    = 0; // no co    
                    //*score  = 0; // no co   
                    checkfrom = "2";
                }
            }
            // found "P" on right end
            if(pmstring.compare("MP") == 0)
            {
               // at least 1 effective "P"; at least 1/3 "P"; last position was "P"                
                if((poPatbk.substr(poPatbk.size()-1, 1)).compare("P") == 0 && 
                   c1Rig > 0 && c1Rig >= poPatbk.size()/3.0)
                {
                    checkfrom = "3";
                }else
                {
                    pmstring = "MM";
                    *leftp   = 0; // no co
                    //*score  = 0; // no co 
                    checkfrom = "4";
                }
            }
        }
        // from cluster "P" 
        if(pmflag.compare("P")    == 0)
        {
            // but found "M" on left end
            if(pmstring.compare("MP") == 0 )
            {            
               // at least 1 effective "M"; at least 1/3 "M"; first position was "M"
                if((poPatbk.substr(0, 1)).compare("M") == 0 && 
                   c2Lef > 0 && c2Lef >= poPatbk.size()/3.0)
                {
                    checkfrom = "5";
                }else
                {
                    pmstring = "PP";
                    *leftp   = 0; // no co
                    //*score  = 0; // no co    
                    checkfrom = "6";
                }
            }
            // but found "M" on right end
            if(pmstring.compare("PM") == 0)
            {            
               // at least 1 effective "M"; at least 1/3 "M"; last position was "M"
                if((poPatbk.substr(poPatbk.size()-1, 1)).compare("M") == 0 &&     
                   c2Rig > 0 && c2Rig >= poPatbk.size()/3.0)
                {
                    checkfrom = "7";
                }else
                {
                    pmstring = "PP";
                    *leftp   = 0; // no co
                    //*score  = 0; // no co 
                    checkfrom = "8";
                }
            }
        }                
        //
    }else
    if(*score>=minCOscore && poPatbk.size()>10)
    {
        // from cluster "M" 
        if(pmflag.compare("M")    == 0)
        {        
            // but found "P" on left end 
            if(pmstring.compare("PM") == 0)
            {            
                // and at least 5 effective "P" and first position was "P"
                if((poPatbk.substr(0, 1)).compare("P") == 0 && c1Lef >= 5 )
                {
                    checkfrom = "9";
                }else
                {
                    pmstring = "MM";
                    *leftp   = 0;  // no co
                    //*score  = 0; // no co
                    checkfrom = "10";
                }
            }
            // but found "P" on right end
            if(pmstring.compare("MP") == 0)
            {
                // and at least 5 effective "P" and last position was "P"
                if((poPatbk.substr(poPatbk.size()-1, 1)).compare("P") == 0 && c1Rig >= 5 )
                {
                    checkfrom = "11";
                }else
                {
                    pmstring = "MM";
                    *leftp   = 0;  // no co
                    //*score  = 0; // no co 
                    checkfrom = "12";
                }
            }
        }
        // from cluster "P"
        if(pmflag.compare("P")    == 0)
        {        
            // but found "M" on left end 
            if(pmstring.compare("MP") == 0)
            {            
                // and at least 5 effective "M" and first position was "M"
                if((poPatbk.substr(0, 1)).compare("M") == 0 && c2Lef >= 5)
                {
                    checkfrom = "13";
                }else
                {
                    pmstring = "PP";
                    *leftp   = 0; // no co
                    //*score  = 0; // no co
                    checkfrom = "14";
                }
            }
            // from cluster "P" but found "M" on left end and effective last  position was "M"
            if(pmstring.compare("PM") == 0)
            {            
                if((poPatbk.substr(poPatbk.size()-1, 1)).compare("M") == 0 && c2Rig >= 5)
                {
                    ;
                }else
                {
                    pmstring = "PP";
                    *leftp   = 0; // no co
                    //*score  = 0; // no co
                    checkfrom = "15";
                }
            }
        }       
    }else
    {
        if(pmflag.compare("M") == 0)
        {
            pmstring     = "MM";
            checkfrom = "16";
        }else
        if(pmflag.compare("P") == 0)
        {
            pmstring     = "PP";
            checkfrom = "17";
        }
        *leftp   = 0; // no co
        //*score = 0; // no co  
    }
    //
    cout << "   Check2rm: " << poPat  << " ---- determined as "  << pmstring << " for pollen " << pollenid << "_x\t0_" << pmflag 
         << " (CO after "   << *leftp << "th marker: score "     << *score   << " - case "     << checkfrom << " ) "; // *** 
    // output co interval
    if(*leftp != 0)
    {
        int leftindex  = *leftp-1;
        while(leftindex>0)
        {
            if(poPat.substr(leftindex, 1).compare("u") == 0)
            {
                leftindex --;
            }else
            {
                break;
            }
        }
        int rightindex = *leftp;
        while(rightindex<poPat.size()-1)
        {
            if(poPat.substr(rightindex, 1).compare("u") == 0)
            {
                rightindex ++;
            }else
            {
                break;
            }
        }
        // output CO real positions of markers: increase to 1-based positioning <= leftindex+1; real position in poPat
        unsigned long leftmarker  = recover_real_marker_pos(leftindex+1,  contigmarker);
        unsigned long rightmarker = recover_real_marker_pos(rightindex+1, contigmarker);
        cout << " (CO interval " 
             << contigname 
             << " "
             << leftindex+1  << "th.mkr=" << leftmarker 
             << "-"
             << rightindex+1 << "th.mkr=" << rightmarker
             << ", size="
             << rightmarker - leftmarker + 1 << ")"
             << endl;
    }else
    {
        cout <<  endl; // to end ***
    }
    return pmstring;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
movq %r9, 0x38(%rsp)
movq %r8, 0x10(%rsp)
movl %ecx, %ebp
movq %rdx, %r15
movq %rsi, %r14
leaq 0x10(%rdi), %rbx
movq %rbx, (%rdi)
leaq 0x9921(%rip), %rdx      # 0x19ec9
movq %rdi, 0x8(%rsp)
movq %rdx, %rsi
callq 0x16622
leaq 0x50(%rsp), %rax
movq %rax, -0x10(%rax)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x40(%rsp), %rdi
callq 0x16592
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
addq %rdi, %rsi
leaq 0x68(%rsp), %rdx
movb $0x75, (%rdx)
callq 0x17879
movq %rax, %rcx
subq 0x40(%rsp), %rcx
movq %rcx, 0x48(%rsp)
movb $0x0, (%rax)
movq 0x48(%rsp), %rax
cmpq $0x1, %rax
je 0x10710
testq %rax, %rax
jne 0x1074e
movq 0x8(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x9491(%rip), %rcx      # 0x19ab5
movl $0x2, %r8d
xorl %esi, %esi
callq 0x33a0
xorl %eax, %eax
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
movq 0x38(%rsp), %rcx
movq %rax, (%rcx)
movq 0x1098e(%rip), %rdi     # 0x20fd8
leaq 0x94f7(%rip), %rsi      # 0x19b48
movl $0xd, %edx
callq 0x32f0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x1096f(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %r14
leaq 0x94de(%rip), %rsi      # 0x19b56
movl $0x14, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0x32f0
movq %rax, %r14
leaq 0x94fa(%rip), %rsi      # 0x19b9d
movl $0xc, %edx
movq %rax, %rdi
callq 0x32f0
movq %r14, %rdi
movl %ebp, %esi
callq 0x3430
movq %rax, %r14
leaq 0x94e6(%rip), %rsi      # 0x19baa
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %r14, %rdi
callq 0x32f0
movq %rax, %r14
leaq 0x94c6(%rip), %rsi      # 0x19bb0
movl $0x18, %edx
movq %rax, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
jmp 0x10d4c
leaq 0x9484(%rip), %rsi      # 0x19b9b
leaq 0x40(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
je 0x10c55
leaq 0x9452(%rip), %rsi      # 0x19b82
leaq 0x40(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x10c72
leaq 0x9483(%rip), %rcx      # 0x19bcc
jmp 0x10c5c
movl %ebp, 0xcc(%rsp)
movq %r15, 0x60(%rsp)
movq %rbx, 0x88(%rsp)
movq 0x38(%rsp), %rax
movq $0x0, (%rax)
cmpq $0x1, 0x8(%r14)
movq %r14, 0xc0(%rsp)
jne 0x107a9
movq $0x0, 0xb0(%rsp)
movq $0x0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
xorl %r15d, %r15d
jmp 0x10a2a
movl $0x1, %ebp
xorl %r15d, %r15d
movq $0x0, 0xa0(%rsp)
movq $0x0, 0x90(%rsp)
movq $0x0, 0xb0(%rsp)
leaq 0x68(%rsp), %rdi
movq %r14, %rsi
xorl %edx, %edx
movq %rbp, %rcx
callq 0x32b0
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
movq %rbp, %rdx
movq $-0x1, %rcx
callq 0x32b0
movq 0x68(%rsp), %rax
movq 0x70(%rsp), %rcx
testq %rcx, %rcx
je 0x10829
xorl %edx, %edx
xorl %r12d, %r12d
xorl %esi, %esi
cmpb $0x50, (%rax,%rdx)
sete %sil
addq %rsi, %r12
incq %rdx
cmpq %rdx, %rcx
jne 0x10812
jmp 0x1082c
xorl %r12d, %r12d
testq %rcx, %rcx
je 0x1084d
xorl %edx, %edx
xorl %r13d, %r13d
xorl %esi, %esi
cmpb $0x4d, (%rax,%rdx)
sete %sil
addq %rsi, %r13
incq %rdx
cmpq %rdx, %rcx
jne 0x10836
jmp 0x10850
xorl %r13d, %r13d
movq 0x18(%rsp), %rax
movq 0x20(%rsp), %rcx
testq %rcx, %rcx
je 0x1087a
xorl %edx, %edx
xorl %ebx, %ebx
xorl %esi, %esi
cmpb $0x50, (%rax,%rdx)
sete %sil
addq %rsi, %rbx
incq %rdx
cmpq %rdx, %rcx
jne 0x10863
jmp 0x1087c
xorl %ebx, %ebx
testq %rcx, %rcx
je 0x1089d
xorl %edx, %edx
xorl %r14d, %r14d
xorl %esi, %esi
cmpb $0x4d, (%rax,%rdx)
sete %sil
addq %rsi, %r14
incq %rdx
cmpq %rdx, %rcx
jne 0x10886
jmp 0x108a0
xorl %r14d, %r14d
movq %r14, %xmm0
movq %r12, %xmm1
movdqa %xmm1, %xmm2
punpcklqdq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0]
movdqa %xmm2, %xmm0
movq %r13, %xmm3
shufps $0xe4, %xmm2, %xmm3     # xmm3 = xmm3[0,1],xmm2[2,3]
movdqa 0x8779(%rip), %xmm5     # 0x19040
pand %xmm5, %xmm2
movdqa 0x877d(%rip), %xmm6     # 0x19050
por %xmm6, %xmm2
psrlq $0x20, %xmm0
movdqa 0x877c(%rip), %xmm7     # 0x19060
por %xmm7, %xmm0
movapd 0x877f(%rip), %xmm8     # 0x19070
subpd %xmm8, %xmm0
addpd %xmm2, %xmm0
movq %r13, %xmm2
movq %rbx, %xmm4
punpcklqdq %xmm4, %xmm1    # xmm1 = xmm1[0],xmm4[0]
paddq %xmm3, %xmm1
punpcklqdq %xmm4, %xmm2    # xmm2 = xmm2[0],xmm4[0]
movdqa %xmm2, %xmm3
pand %xmm5, %xmm3
por %xmm6, %xmm3
psrlq $0x20, %xmm2
por %xmm7, %xmm2
subpd %xmm8, %xmm2
addpd %xmm3, %xmm2
movdqa %xmm1, %xmm3
pand %xmm5, %xmm3
por %xmm6, %xmm3
psrlq $0x20, %xmm1
por %xmm7, %xmm1
subpd %xmm8, %xmm1
addpd %xmm3, %xmm1
divpd %xmm1, %xmm2
divpd %xmm1, %xmm0
movapd %xmm0, %xmm1
unpcklpd %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0]
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
mulpd %xmm1, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
movapd %xmm0, %xmm2
maxsd %xmm1, %xmm2
movq 0x38(%rsp), %rax
ucomisd (%rax), %xmm2
jb 0x109d7
ucomisd %xmm1, %xmm0
movq 0x38(%rsp), %rax
movsd %xmm2, (%rax)
movq 0x10(%rsp), %rax
movq %rbp, (%rax)
leaq 0x924f(%rip), %rcx      # 0x19bea
leaq 0x9245(%rip), %rax      # 0x19be7
cmovaq %rax, %rcx
movq 0x8(%rsp), %rdi
movq 0x8(%rdi), %rdx
movl $0x2, %r8d
xorl %esi, %esi
callq 0x33a0
movq %r14, 0xb0(%rsp)
movq %rbx, 0x90(%rsp)
movq %r13, 0xa0(%rsp)
movq %r12, %r15
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x109f3
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
movq 0xc0(%rsp), %r14
je 0x10a17
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3290
incq %rbp
movq 0x8(%r14), %rax
decq %rax
cmpq %rax, %rbp
jbe 0x107d5
leaq 0x78(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x948f(%rip), %rdx      # 0x19ec9
leaq 0x68(%rsp), %rdi
movq %rdx, %rsi
callq 0x16622
movl 0xcc(%rsp), %ebp
movq 0x38(%rsp), %rax
movsd (%rax), %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jbe 0x10b7b
cmpq $0x9, 0x48(%rsp)
ja 0x10b7b
leaq 0x9123(%rip), %rsi      # 0x19b9b
movq 0x60(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x10f77
leaq 0x9156(%rip), %rsi      # 0x19be7
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x10e37
leaq 0x18(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl $0x1, %ecx
xorl %edx, %edx
callq 0x32b0
leaq 0x90c2(%rip), %rsi      # 0x19b82
leaq 0x18(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x10dee
testq %r15, %r15
je 0x10dee
movq %r15, %xmm0
movq 0x8528(%rip), %xmm1     # 0x19010
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x852c(%rip), %xmm2     # 0x19020
subpd %xmm2, %xmm0
movq 0x48(%rsp), %xmm3
punpckldq %xmm1, %xmm3    # xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
subpd %xmm2, %xmm3
movapd %xmm3, %xmm2
unpckhpd %xmm3, %xmm2            # xmm2 = xmm2[1],xmm3[1]
addsd %xmm3, %xmm2
divsd 0x858e(%rip), %xmm2     # 0x190b0
addsd %xmm0, %xmm1
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10b65
movq 0x28(%rsp), %rsi
incq %rsi
movapd %xmm1, 0xd0(%rsp)
movapd %xmm2, 0xe0(%rsp)
callq 0x3290
movapd 0xe0(%rsp), %xmm2
movapd 0xd0(%rsp), %xmm1
ucomisd %xmm2, %xmm1
jb 0x10e09
leaq 0x907f(%rip), %rsi      # 0x19bf5
jmp 0x10e2d
movsd 0x106dd(%rip), %xmm0    # 0x21260
movsd %xmm0, 0xd0(%rsp)
movq 0x48(%rsp), %rbx
leaq 0x9003(%rip), %rsi      # 0x19b9b
movq 0x60(%rsp), %rdi
movsd %xmm1, 0xe0(%rsp)
callq 0x30b0
movsd 0xe0(%rsp), %xmm0
ucomisd 0xd0(%rsp), %xmm0
jb 0x10d64
cmpq $0xb, %rbx
jb 0x10d64
testl %eax, %eax
jne 0x112db
leaq 0x900b(%rip), %rsi      # 0x19be7
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x1122b
leaq 0x18(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl $0x1, %ecx
xorl %edx, %edx
callq 0x32b0
leaq 0x8f77(%rip), %rsi      # 0x19b82
leaq 0x18(%rsp), %r12
movq %r12, %rdi
callq 0x30b0
testl %eax, %eax
sete %al
cmpq $0x5, %r15
setae %bl
andb %al, %bl
movq (%r12), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x10c41
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
testb %bl, %bl
je 0x111fd
leaq 0x8f9f(%rip), %rsi      # 0x19bef
jmp 0x11221
leaq 0x8f6d(%rip), %rcx      # 0x19bc9
movq 0x8(%rsp), %rdi
movq 0x8(%rdi), %rdx
movl $0x2, %r8d
xorl %esi, %esi
callq 0x33a0
xorl %eax, %eax
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
movq 0x38(%rsp), %rcx
movq %rax, (%rcx)
movq 0x1034d(%rip), %rdi     # 0x20fd8
leaq 0x8eb6(%rip), %rsi      # 0x19b48
movl $0xd, %edx
callq 0x32f0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x1032e(%rip), %rdi     # 0x20fd8
callq 0x32f0
movq %rax, %r14
leaq 0x8e9d(%rip), %rsi      # 0x19b56
movl $0x14, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0x32f0
movq %rax, %r14
leaq 0x8eb9(%rip), %rsi      # 0x19b9d
movl $0xc, %edx
movq %rax, %rdi
callq 0x32f0
movq %r14, %rdi
movl %ebp, %esi
callq 0x3430
movq %rax, %r14
leaq 0x8ea5(%rip), %rsi      # 0x19baa
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %r14, %rdi
callq 0x32f0
movq %rax, %r14
leaq 0x8ea4(%rip), %rsi      # 0x19bcf
movl $0x17, %edx
movq %rax, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31b0
jmp 0x1188f
testl %eax, %eax
je 0x10da3
leaq 0x8e13(%rip), %rsi      # 0x19b82
movq 0x60(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x10ddd
movq 0x8(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8e3f(%rip), %rcx      # 0x19bcc
movl $0x2, %r8d
xorl %esi, %esi
callq 0x33a0
leaq 0x8e65(%rip), %rcx      # 0x19c06
jmp 0x10dc7
movq 0x8(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x8e16(%rip), %rcx      # 0x19bc9
movl $0x2, %r8d
xorl %esi, %esi
callq 0x33a0
leaq 0x8e3c(%rip), %rcx      # 0x19c03
leaq 0x68(%rsp), %rdi
movq 0x8(%rdi), %rdx
movl $0x2, %r8d
xorl %esi, %esi
callq 0x33a0
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
jmp 0x11446
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10e09
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x8db9(%rip), %rsi      # 0x19bc9
movq 0x8(%rsp), %rdi
callq 0x3330
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
leaq 0x8dcb(%rip), %rsi      # 0x19bf8
leaq 0x68(%rsp), %rdi
callq 0x3330
leaq 0x8dac(%rip), %rsi      # 0x19bea
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x10f77
leaq 0x40(%rsp), %rsi
movq 0x8(%rsi), %rdx
decq %rdx
leaq 0x18(%rsp), %rdi
movl $0x1, %ecx
callq 0x32b0
leaq 0x8d10(%rip), %rsi      # 0x19b82
leaq 0x18(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x10f2e
cmpq $0x0, 0x90(%rsp)
je 0x10f2e
movsd 0x90(%rsp), %xmm0
movsd 0x816c(%rip), %xmm1     # 0x19010
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x8171(%rip), %xmm2     # 0x19020
subpd %xmm2, %xmm0
movsd 0x48(%rsp), %xmm3
unpcklps %xmm1, %xmm3            # xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
subpd %xmm2, %xmm3
movapd %xmm3, %xmm2
unpckhpd %xmm3, %xmm2            # xmm2 = xmm2[1],xmm3[1]
addsd %xmm3, %xmm2
divsd 0x81d4(%rip), %xmm2     # 0x190b0
addsd %xmm0, %xmm1
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10f1f
movq 0x28(%rsp), %rsi
incq %rsi
movapd %xmm1, 0x90(%rsp)
movapd %xmm2, 0xd0(%rsp)
callq 0x3290
movapd 0xd0(%rsp), %xmm2
movapd 0x90(%rsp), %xmm1
ucomisd %xmm2, %xmm1
jb 0x10f49
leaq 0x8ccf(%rip), %rsi      # 0x19bfb
jmp 0x10f6d
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10f49
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x8c79(%rip), %rsi      # 0x19bc9
movq 0x8(%rsp), %rdi
callq 0x3330
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
leaq 0x8c91(%rip), %rsi      # 0x19bfe
leaq 0x68(%rsp), %rdi
callq 0x3330
leaq 0x8c04(%rip), %rsi      # 0x19b82
movq 0x60(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x11446
leaq 0x8c53(%rip), %rsi      # 0x19bea
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x110cb
leaq 0x18(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl $0x1, %ecx
xorl %edx, %edx
callq 0x32b0
leaq 0x8bd5(%rip), %rsi      # 0x19b9b
leaq 0x18(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x11082
cmpq $0x0, 0xa0(%rsp)
je 0x11082
movsd 0xa0(%rsp), %xmm0
movsd 0x8018(%rip), %xmm1     # 0x19010
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x801d(%rip), %xmm2     # 0x19020
subpd %xmm2, %xmm0
movsd 0x48(%rsp), %xmm3
unpcklps %xmm1, %xmm3            # xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
subpd %xmm2, %xmm3
movapd %xmm3, %xmm2
unpckhpd %xmm3, %xmm2            # xmm2 = xmm2[1],xmm3[1]
addsd %xmm3, %xmm2
divsd 0x8080(%rip), %xmm2     # 0x190b0
addsd %xmm0, %xmm1
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11073
movq 0x28(%rsp), %rsi
incq %rsi
movapd %xmm1, 0xa0(%rsp)
movapd %xmm2, 0x90(%rsp)
callq 0x3290
movapd 0x90(%rsp), %xmm2
movapd 0xa0(%rsp), %xmm1
ucomisd %xmm2, %xmm1
jb 0x1109d
leaq 0x8b81(%rip), %rsi      # 0x19c01
jmp 0x110c1
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1109d
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x8b28(%rip), %rsi      # 0x19bcc
movq 0x8(%rsp), %rdi
callq 0x3330
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
leaq 0x8b43(%rip), %rsi      # 0x19c04
leaq 0x68(%rsp), %rdi
callq 0x3330
leaq 0x8b15(%rip), %rsi      # 0x19be7
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x11446
leaq 0x40(%rsp), %rsi
movq 0x8(%rsi), %rdx
decq %rdx
leaq 0x18(%rsp), %rdi
movl $0x1, %ecx
callq 0x32b0
leaq 0x8a95(%rip), %rsi      # 0x19b9b
leaq 0x18(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x111c5
cmpq $0x0, 0xb0(%rsp)
je 0x111c5
movsd 0xb0(%rsp), %xmm0
movsd 0x7ed8(%rip), %xmm1     # 0x19010
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x7edd(%rip), %xmm2     # 0x19020
subpd %xmm2, %xmm0
movsd 0x48(%rsp), %xmm3
unpcklps %xmm1, %xmm3            # xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
subpd %xmm2, %xmm3
movapd %xmm3, %xmm2
unpckhpd %xmm3, %xmm2            # xmm2 = xmm2[1],xmm3[1]
addsd %xmm3, %xmm2
divsd 0x7f40(%rip), %xmm2     # 0x190b0
addsd %xmm0, %xmm1
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x111b3
movq 0x28(%rsp), %rsi
incq %rsi
movapd %xmm1, 0xb0(%rsp)
movapd %xmm2, 0xa0(%rsp)
callq 0x3290
movapd 0xa0(%rsp), %xmm2
movapd 0xb0(%rsp), %xmm1
ucomisd %xmm2, %xmm1
jb 0x111e0
leaq 0x8a47(%rip), %rsi      # 0x19c07
jmp 0x1143c
leaq 0x28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x111e0
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x89e5(%rip), %rsi      # 0x19bcc
movq 0x8(%rsp), %rdi
callq 0x3330
leaq 0x89f5(%rip), %rsi      # 0x19bed
jmp 0x11430
leaq 0x89c5(%rip), %rsi      # 0x19bc9
movq 0x8(%rsp), %rdi
callq 0x3330
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
leaq 0x89d0(%rip), %rsi      # 0x19bf1
leaq 0x68(%rsp), %rdi
callq 0x3330
leaq 0x89b8(%rip), %rsi      # 0x19bea
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x112db
leaq 0x40(%rsp), %rsi
movq 0x8(%rsi), %rdx
decq %rdx
leaq 0x18(%rsp), %rdi
movl $0x1, %ecx
callq 0x32b0
leaq 0x891c(%rip), %rsi      # 0x19b82
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
sete %al
cmpq $0x5, 0x90(%rsp)
setae %bl
andb %al, %bl
movq (%r15), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x112a0
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
testb %bl, %bl
je 0x112ad
leaq 0x8949(%rip), %rsi      # 0x19bf4
jmp 0x112d1
leaq 0x8915(%rip), %rsi      # 0x19bc9
movq 0x8(%rsp), %rdi
callq 0x3330
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
leaq 0x8926(%rip), %rsi      # 0x19bf7
leaq 0x68(%rsp), %rdi
callq 0x3330
leaq 0x88a0(%rip), %rsi      # 0x19b82
movq 0x60(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x11446
leaq 0x88ef(%rip), %rsi      # 0x19bea
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x1139f
leaq 0x18(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl $0x1, %ecx
xorl %edx, %edx
callq 0x32b0
leaq 0x8871(%rip), %rsi      # 0x19b9b
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
sete %al
cmpq $0x5, 0xa0(%rsp)
setae %bl
andb %al, %bl
movq (%r15), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x11364
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
testb %bl, %bl
je 0x11371
leaq 0x888b(%rip), %rsi      # 0x19bfa
jmp 0x11395
leaq 0x8854(%rip), %rsi      # 0x19bcc
movq 0x8(%rsp), %rdi
callq 0x3330
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
leaq 0x8868(%rip), %rsi      # 0x19bfd
leaq 0x68(%rsp), %rdi
callq 0x3330
leaq 0x8841(%rip), %rsi      # 0x19be7
movq 0x8(%rsp), %rdi
callq 0x30b0
testl %eax, %eax
jne 0x11446
leaq 0x40(%rsp), %rsi
movq 0x8(%rsi), %rdx
decq %rdx
leaq 0x18(%rsp), %rdi
movl $0x1, %ecx
callq 0x32b0
leaq 0x87c1(%rip), %rsi      # 0x19b9b
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
sete %al
cmpq $0x5, 0xb0(%rsp)
setae %bl
andb %al, %bl
movq (%r15), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x11414
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
testb %bl, %bl
jne 0x11446
leaq 0x87ad(%rip), %rsi      # 0x19bcc
movq 0x8(%rsp), %rdi
callq 0x3330
leaq 0x87d0(%rip), %rsi      # 0x19c00
movq 0x10(%rsp), %rax
movq $0x0, (%rax)
leaq 0x68(%rsp), %rdi
callq 0x3330
movq 0xfb8b(%rip), %rdi      # 0x20fd8
leaq 0x86f4(%rip), %rsi      # 0x19b48
movl $0xd, %edx
callq 0x32f0
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0xfb6c(%rip), %r12      # 0x20fd8
movq %r12, %rdi
callq 0x32f0
movq %rax, %r15
leaq 0x86d8(%rip), %rsi      # 0x19b56
movl $0x14, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x8(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r15, %rdi
callq 0x32f0
movq %rax, %r15
leaq 0x86f4(%rip), %rsi      # 0x19b9d
movl $0xc, %edx
movq %rax, %rdi
callq 0x32f0
movq %r15, %rdi
movl %ebp, %esi
callq 0x3430
movq %rax, %r15
leaq 0x86e0(%rip), %rsi      # 0x19baa
movl $0x5, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x60(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r15, %rdi
callq 0x32f0
movq %rax, %r15
leaq 0x8714(%rip), %rsi      # 0x19c09
movl $0xb, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq %r15, %rdi
callq 0x31a0
movq %rax, %r15
leaq 0x86f9(%rip), %rsi      # 0x19c15
movl $0x11, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x38(%rsp), %rax
movsd (%rax), %xmm0
movq %r15, %rdi
callq 0x33e0
movq %rax, %r15
leaq 0x86e3(%rip), %rsi      # 0x19c27
movl $0x8, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %r15, %rdi
callq 0x32f0
leaq 0x86c6(%rip), %rsi      # 0x19c30
movl $0x3, %edx
movq %rax, %rdi
callq 0x32f0
movq 0x10(%rsp), %rax
movq (%rax), %r15
testq %r15, %r15
je 0x1160e
movl %r15d, %ebx
leal -0x1(%r15), %eax
movl %eax, %r14d
sarl $0x1f, %r14d
andl %eax, %r14d
incl %r14d
incl %r15d
decq %rbx
leaq 0x18(%rsp), %r13
leaq 0x8505(%rip), %rbp      # 0x19ab3
leal -0x2(%r15), %eax
testl %eax, %eax
jle 0x1163f
movl %ebx, %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
movl $0x1, %ecx
movq %r13, %rdi
movq 0xc0(%rsp), %rsi
callq 0x32b0
movq %r13, %rdi
movq %rbp, %rsi
callq 0x30b0
movl %eax, %r12d
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x11601
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
decl %r15d
decq %rbx
testl %r12d, %r12d
je 0x115ae
jmp 0x11642
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq 0xf9ab(%rip), %rdi      # 0x20fd8
callq 0x3030
movq %rax, %rdi
callq 0x31b0
jmp 0x11873
movl %r14d, %r15d
movq 0x10(%rsp), %rax
movq (%rax), %r13
movslq %r13d, %rax
movq 0xc0(%rsp), %r14
movq 0x8(%r14), %rcx
decq %rcx
cmpq %rax, %rcx
jbe 0x116bf
leaq 0x18(%rsp), %rbp
leaq 0x8446(%rip), %r12      # 0x19ab3
movq %rax, %r13
movl $0x1, %ecx
movq %rbp, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x32b0
movq %rbp, %rdi
movq %r12, %rsi
callq 0x30b0
movl %eax, %ebx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x116ac
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
testl %ebx, %ebx
jne 0x116bf
incq %r13
movq 0x8(%r14), %rax
decq %rax
cmpq %r13, %rax
ja 0x11670
leaq 0x128(%rsp), %rdi
movq 0x198(%rsp), %rsi
callq 0x14f5a
leaq 0x130(%rsp), %rbx
movq 0x10(%rbx), %rax
movl $0x1, %ebp
cmpl %ebp, %r15d
jne 0x116ee
movq 0x20(%rax), %r14
movq %rax, %rdi
callq 0x31c0
incl %ebp
cmpq %rbx, %rax
jne 0x116e5
leaq 0x128(%rsp), %rdi
callq 0x15788
leaq 0xf8(%rsp), %rdi
movq 0x198(%rsp), %rsi
callq 0x14f5a
leal 0x1(%r13), %ebp
leaq 0x100(%rsp), %rbx
movq 0x10(%rbx), %rax
subl $0x1, %r13d
jae 0x11739
movq 0x20(%rax), %r12
movq %rax, %rdi
callq 0x31c0
cmpq %rbx, %rax
jne 0x1172f
leaq 0xf8(%rsp), %rdi
callq 0x15788
movq 0xf87e(%rip), %rdi      # 0x20fd8
leaq 0x84d3(%rip), %rsi      # 0x19c34
movl $0xe, %edx
callq 0x32f0
movq 0x190(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0xf857(%rip), %rdi      # 0x20fd8
callq 0x32f0
movq %rax, %r13
leaq 0x84a2(%rip), %rsi      # 0x19c32
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq %r13, %rdi
movl %r15d, %esi
callq 0x3430
movq %rax, %r15
leaq 0x8491(%rip), %rsi      # 0x19c43
movl $0x7, %edx
movq %rax, %rdi
callq 0x32f0
movq %r15, %rdi
movq %r14, %rsi
callq 0x31a0
movq %rax, %r15
leaq 0x8477(%rip), %rsi      # 0x19c4b
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq %r15, %rdi
movl %ebp, %esi
callq 0x3430
movq %rax, %r15
leaq 0x844e(%rip), %rsi      # 0x19c43
movl $0x7, %edx
movq %rax, %rdi
callq 0x32f0
movq %r15, %rdi
movq %r12, %rsi
callq 0x31a0
movq %rax, %r15
leaq 0x8436(%rip), %rsi      # 0x19c4d
movl $0x7, %edx
movq %rax, %rdi
callq 0x32f0
subq %r14, %r12
incq %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x31a0
movq %rax, %r14
leaq 0x881e(%rip), %rsi      # 0x1a05d
movl $0x1, %edx
movq %rax, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31b0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x1188f
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x118ab
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rax
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x11910
jmp 0x11910
jmp 0x11910
jmp 0x11910
jmp 0x11910
jmp 0x11910
jmp 0x11910
jmp 0x11910
jmp 0x11910
jmp 0x11939
jmp 0x11931
movq %rbx, 0x88(%rsp)
movq %rax, %r14
jmp 0x11958
jmp 0x11910
movq %rax, %r14
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x11913
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x11913
jmp 0x11910
jmp 0x11910
jmp 0x11939
jmp 0x11910
movq %rax, %r14
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x1193c
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x1193c
movq %rbx, 0x88(%rsp)
movq %rax, %r14
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x11958
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rax
movq (%rax), %rdi
cmpq 0x88(%rsp), %rdi
je 0x1197d
movq 0x88(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3290
movq %r14, %rdi
callq 0x3460