// File: jamesliu516[P]amrdg2d/face_vec.cpp
// Function: face_vec()
void face_vec()
{  
    //map<OctCell *, cellEdgeBool>::size_type cnt0;

    OctCell *pcell0;
    OctCell *pcell1;   
    Face fff0;

    Node *current;
    current = HeadListAllGrid;   

    //   int cnt=0;

    faces_comp.clear();
    while(current != NULL) {
        //-------
        if(current->flg<=2) {
            pcell0=current->cell;             
            //south neighbor
            pcell1=SouthNeighbor(pcell0);           
            if(pcell1->reflag==0) {
                if(pcell0->level==pcell1->level) {
                    if(cellEbools[pcell0].bEdge[0]==false
                        && cellEbools[pcell1].bEdge[2]==false){ 
                        cellEbools[pcell0].bEdge[0]=true;
                        cellEbools[pcell1].bEdge[2]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=0.0;
                        fff0.nml[1]=-1.0;

                        fff0.area=pcell0->dx;

                        fff0.gs_pt[0][1]=fff0.gs_pt[1][1]=fff0.gs_pt[2][1]=pcell0->yc1-0.5*pcell0->dy;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][0]=gspt[ii]*0.5*pcell0->dx+pcell0->xc1;

                        faces.push_back(fff0);
                    }
                }
                else if(pcell0->level!=pcell1->level){
                    if(cellEbools[pcell0].bEdge[0]==false) {
                        cellEbools[pcell0].bEdge[0]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=0.0;
                        fff0.nml[1]=-1.0;

                        fff0.bHang=true;
                        fff0.area=pcell0->dx;

                        fff0.gs_pt[0][1]=fff0.gs_pt[1][1]=fff0.gs_pt[2][1]=pcell0->yc1-0.5*pcell0->dy;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][0]=gspt[ii]*0.5*pcell0->dx+pcell0->xc1;

                        faces.push_back(fff0);                       
                    } 
                }
            }  


            //east neighbor
            pcell1=EastNeighbor(pcell0);           
            if(pcell1->reflag==0) {
                if(pcell0->level==pcell1->level) {
                    if(cellEbools[pcell0].bEdge[1]==false && cellEbools[pcell1].bEdge[3]==false){ 
                        cellEbools[pcell0].bEdge[1]=true;
                        cellEbools[pcell1].bEdge[3]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=1.0;
                        fff0.nml[1]=0.0;

                        fff0.area=pcell0->dy;
                        fff0.gs_pt[0][0]=fff0.gs_pt[1][0]=fff0.gs_pt[2][0]=pcell0->xc1+0.5*pcell0->dx;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][1]=gspt[ii]*0.5*pcell0->dy+pcell0->yc1;  

                        faces.push_back(fff0);
                    }
                }
                else if(pcell0->level!=pcell1->level){
                    if(cellEbools[pcell0].bEdge[1]==false) {
                        cellEbools[pcell0].bEdge[1]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=1.0;
                        fff0.nml[1]=0.0;
                        fff0.area=pcell0->dy;
                        fff0.bHang=true;

                        fff0.gs_pt[0][0]=fff0.gs_pt[1][0]=fff0.gs_pt[2][0]=pcell0->xc1+0.5*pcell0->dx;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][1]=gspt[ii]*0.5*pcell0->dy+pcell0->yc1;  

                        faces.push_back(fff0);                       
                    } 
                }
            }            

            //north neighbor
            pcell1=NorthNeighbor(pcell0);           
            if(pcell1->reflag==0) {
                if(pcell0->level==pcell1->level) {
                    if(cellEbools[pcell0].bEdge[2]==false && cellEbools[pcell1].bEdge[0]==false){ 
                        cellEbools[pcell0].bEdge[2]=true;
                        cellEbools[pcell1].bEdge[0]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=0.0;
                        fff0.nml[1]=1.0;
                        fff0.area=pcell0->dx;                     
                        fff0.gs_pt[0][1]=fff0.gs_pt[1][1]=fff0.gs_pt[2][1]=pcell0->yc1+0.5*pcell0->dy;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][0]=gspt[ii]*0.5*pcell0->dx+pcell0->xc1;                     

                        faces.push_back(fff0);
                    }
                }
                else if(pcell0->level!=pcell1->level){
                    if(cellEbools[pcell0].bEdge[2]==false) {
                        cellEbools[pcell0].bEdge[2]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=0.0;
                        fff0.nml[1]=1.0;
                        fff0.bHang=true;
                        fff0.area=pcell0->dx;
                        fff0.gs_pt[0][1]=fff0.gs_pt[1][1]=fff0.gs_pt[2][1]=pcell0->yc1+0.5*pcell0->dy;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][0]=gspt[ii]*0.5*pcell0->dx+pcell0->xc1;   

                        faces.push_back(fff0);                       
                    } 
                }
            }                  

            //west neighbor
            pcell1=WestNeighbor(pcell0);           
            if(pcell1->reflag==0) {
                if(pcell0->level==pcell1->level) {
                    if(cellEbools[pcell0].bEdge[3]==false && cellEbools[pcell1].bEdge[1]==false){ 
                        cellEbools[pcell0].bEdge[3]=true;
                        cellEbools[pcell1].bEdge[1]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=-1.0;
                        fff0.nml[1]=0.0;
                        fff0.area=pcell0->dy;
                        fff0.gs_pt[0][0]=fff0.gs_pt[1][0]=fff0.gs_pt[2][0]=pcell0->xc1-0.5*pcell0->dx;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][1]=gspt[ii]*0.5*pcell0->dy+pcell0->yc1; 

                        faces.push_back(fff0);
                    }
                }
                else if(pcell0->level!=pcell1->level){
                    if(cellEbools[pcell0].bEdge[3]==false) {
                        cellEbools[pcell0].bEdge[3]=true;
                        fff0.parent=pcell0;
                        fff0.neighbor=pcell1;
                        fff0.nml[0]=-1.0;
                        fff0.nml[1]=0.0;
                        fff0.bHang=true;
                        fff0.area=pcell0->dy;                       
                        fff0.gs_pt[0][0]=fff0.gs_pt[1][0]=fff0.gs_pt[2][0]=pcell0->xc1-0.5*pcell0->dx;
                        for(int ii=0;ii<3;++ii) fff0.gs_pt[ii][1]=gspt[ii]*0.5*pcell0->dy+pcell0->yc1; 

                        faces.push_back(fff0);                       
                    } 
                }
            }                
        }
        //========
        //   cout<<cnt<<endl;
        current = current->next;
    }   
    cout<<"Total face: "<<faces.size()<<endl;
    cellEbools.clear();

    for(vector<Face>::size_type isz=0; isz!=faces.size(); ++isz){
        if(!(faces[isz].parent->flag==-1&&faces[isz].neighbor->flag==-1)) {
            faces_comp.push_back(faces[isz]);
        }
    }
    /*
#ifdef RES_SMOOTH
    OctCell *pc0, *pc1;
    for(vector<Face>::size_type isz=0; isz!=faces_comp.size(); ++isz){
            pc0=faces_comp[isz].parent;
            pc1=faces_comp[isz].neighbor;
            if(pc0->flag==0) pc1->p_node->n_nb+=1;
            if(pc1->flag==0) pc0->p_node->n_nb+=1;
    }
#endif
*/
    faces.clear();
    cout<<"Total face will be solved: "<<faces_comp.size()<<endl;      
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
leaq 0x48(%rsp), %rdi
callq 0x5490
leaq 0x3ead8(%rip), %rax     # 0x506a0
movq (%rax), %rax
movq %rax, 0x40(%rsp)
leaq 0x3eb39(%rip), %rdi     # 0x50710
callq 0x13170
cmpq $0x0, 0x40(%rsp)
je 0x129e5
movq 0x40(%rsp), %rax
movswl (%rax), %eax
cmpl $0x2, %eax
jg 0x129d2
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x110(%rsp)
movq 0x110(%rsp), %rdi
callq 0x11a00
movq %rax, 0x108(%rsp)
movq 0x108(%rsp), %rax
movswl 0x1fc(%rax), %eax
cmpl $0x0, %eax
jne 0x11f7b
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
jne 0x11df3
leaq 0x3eac4(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x11dee
leaq 0x3eaa0(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb 0x2(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x11dee
leaq 0x3ea7b(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, (%rax)
leaq 0x3ea64(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb $0x1, 0x2(%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x2d690(%rip), %xmm0    # 0x3f390
movsd %xmm0, 0x60(%rsp)
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd 0x2d3f1(%rip), %xmm2    # 0x3f138
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x90(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm0, 0x70(%rsp)
movl $0x0, 0x3c(%rsp)
cmpl $0x3, 0x3c(%rsp)
jge 0x11ddd
movslq 0x3c(%rsp), %rcx
movsd 0x2d3bd(%rip), %xmm0    # 0x3f140
leaq 0x2d626(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x3c(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, (%rax)
movl 0x3c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x3c(%rsp)
jmp 0x11d6f
leaq 0x3e914(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x11f79
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
je 0x11f77
leaq 0x3e908(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x11f75
leaq 0x3e8e4(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, (%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x2d511(%rip), %xmm0    # 0x3f390
movsd %xmm0, 0x60(%rsp)
movb $0x1, 0x100(%rsp)
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd 0x2d26a(%rip), %xmm2    # 0x3f138
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x90(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm0, 0x70(%rsp)
movl $0x0, 0x38(%rsp)
cmpl $0x3, 0x38(%rsp)
jge 0x11f64
movslq 0x38(%rsp), %rcx
movsd 0x2d236(%rip), %xmm0    # 0x3f140
leaq 0x2d49f(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x38(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, (%rax)
movl 0x38(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x38(%rsp)
jmp 0x11ef6
leaq 0x3e78d(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x11f77
jmp 0x11f79
jmp 0x11f7b
movq 0x110(%rsp), %rdi
callq 0x118d0
movq %rax, 0x108(%rsp)
movq 0x108(%rsp), %rax
movswl 0x1fc(%rax), %eax
cmpl $0x0, %eax
jne 0x122ec
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
jne 0x12164
leaq 0x3e753(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb 0x1(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1215f
leaq 0x3e72e(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb 0x3(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x1215f
leaq 0x3e709(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, 0x1(%rax)
leaq 0x3e6f1(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb $0x1, 0x3(%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
movsd 0x2cfee(%rip), %xmm0    # 0x3f058
movsd %xmm0, 0x58(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd 0x2d086(%rip), %xmm2    # 0x3f140
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movsd %xmm0, 0x78(%rsp)
movsd %xmm0, 0x68(%rsp)
movl $0x0, 0x34(%rsp)
cmpl $0x3, 0x34(%rsp)
jge 0x1214e
movslq 0x34(%rsp), %rcx
movsd 0x2d04d(%rip), %xmm0    # 0x3f140
leaq 0x2d2b6(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x34(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, 0x8(%rax)
movl 0x34(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x34(%rsp)
jmp 0x120df
leaq 0x3e5a3(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x122ea
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
je 0x122e8
leaq 0x3e597(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb 0x1(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x122e6
leaq 0x3e572(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, 0x1(%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
movsd 0x2ce6f(%rip), %xmm0    # 0x3f058
movsd %xmm0, 0x58(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movb $0x1, 0x100(%rsp)
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd 0x2ceff(%rip), %xmm2    # 0x3f140
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movsd %xmm0, 0x78(%rsp)
movsd %xmm0, 0x68(%rsp)
movl $0x0, 0x30(%rsp)
cmpl $0x3, 0x30(%rsp)
jge 0x122d5
movslq 0x30(%rsp), %rcx
movsd 0x2cec6(%rip), %xmm0    # 0x3f140
leaq 0x2d12f(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x30(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, 0x8(%rax)
movl 0x30(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x30(%rsp)
jmp 0x12266
leaq 0x3e41c(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x122e8
jmp 0x122ea
jmp 0x122ec
movq 0x110(%rsp), %rdi
callq 0x11670
movq %rax, 0x108(%rsp)
movq 0x108(%rsp), %rax
movswl 0x1fc(%rax), %eax
cmpl $0x0, %eax
jne 0x1265f
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
jne 0x124d5
leaq 0x3e3e2(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb 0x2(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x124d0
leaq 0x3e3bd(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x124d0
leaq 0x3e399(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, 0x2(%rax)
leaq 0x3e381(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb $0x1, (%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x2cc76(%rip), %xmm0    # 0x3f058
movsd %xmm0, 0x60(%rsp)
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd 0x2cd17(%rip), %xmm2    # 0x3f140
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x90(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm0, 0x70(%rsp)
movl $0x0, 0x2c(%rsp)
cmpl $0x3, 0x2c(%rsp)
jge 0x124bf
movslq 0x2c(%rsp), %rcx
movsd 0x2ccdb(%rip), %xmm0    # 0x3f140
leaq 0x2cf44(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x2c(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, (%rax)
movl 0x2c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2c(%rsp)
jmp 0x12451
leaq 0x3e232(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x1265d
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
je 0x1265b
leaq 0x3e226(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb 0x2(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x12659
leaq 0x3e201(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, 0x2(%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x2caf5(%rip), %xmm0    # 0x3f058
movsd %xmm0, 0x60(%rsp)
movb $0x1, 0x100(%rsp)
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd 0x2cb8e(%rip), %xmm2    # 0x3f140
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x90(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm0, 0x70(%rsp)
movl $0x0, 0x28(%rsp)
cmpl $0x3, 0x28(%rsp)
jge 0x12648
movslq 0x28(%rsp), %rcx
movsd 0x2cb52(%rip), %xmm0    # 0x3f140
leaq 0x2cdbb(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x28(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, (%rax)
movl 0x28(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x28(%rsp)
jmp 0x125da
leaq 0x3e0a9(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x1265b
jmp 0x1265d
jmp 0x1265f
movq 0x110(%rsp), %rdi
callq 0x117a0
movq %rax, 0x108(%rsp)
movq 0x108(%rsp), %rax
movswl 0x1fc(%rax), %eax
cmpl $0x0, %eax
jne 0x129d0
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
jne 0x12848
leaq 0x3e06f(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb 0x3(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x12843
leaq 0x3e04a(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb 0x1(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x12843
leaq 0x3e025(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, 0x3(%rax)
leaq 0x3e00d(%rip), %rdi     # 0x50728
leaq 0x108(%rsp), %rsi
callq 0x13190
movb $0x1, 0x1(%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
movsd 0x2cc42(%rip), %xmm0    # 0x3f390
movsd %xmm0, 0x58(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd 0x2c99a(%rip), %xmm2    # 0x3f138
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movsd %xmm0, 0x78(%rsp)
movsd %xmm0, 0x68(%rsp)
movl $0x0, 0x24(%rsp)
cmpl $0x3, 0x24(%rsp)
jge 0x12832
movslq 0x24(%rsp), %rcx
movsd 0x2c969(%rip), %xmm0    # 0x3f140
leaq 0x2cbd2(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x24(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, 0x8(%rax)
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x24(%rsp)
jmp 0x127c3
leaq 0x3debf(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x129ce
movq 0x110(%rsp), %rax
movswl 0x1f8(%rax), %eax
movq 0x108(%rsp), %rcx
movswl 0x1f8(%rcx), %ecx
cmpl %ecx, %eax
je 0x129cc
leaq 0x3deb3(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb 0x3(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x129ca
leaq 0x3de8e(%rip), %rdi     # 0x50728
leaq 0x110(%rsp), %rsi
callq 0x13190
movb $0x1, 0x3(%rax)
movq 0x110(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
movsd 0x2cac3(%rip), %xmm0    # 0x3f390
movsd %xmm0, 0x58(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x60(%rsp)
movb $0x1, 0x100(%rsp)
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xf8(%rsp)
movq 0x110(%rsp), %rax
movsd 0x278(%rax), %xmm1
movq 0x110(%rsp), %rax
movsd 0x288(%rax), %xmm0
movsd 0x2c813(%rip), %xmm2    # 0x3f138
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x88(%rsp)
movsd %xmm0, 0x78(%rsp)
movsd %xmm0, 0x68(%rsp)
movl $0x0, 0x20(%rsp)
cmpl $0x3, 0x20(%rsp)
jge 0x129b9
movslq 0x20(%rsp), %rcx
movsd 0x2c7e2(%rip), %xmm0    # 0x3f140
leaq 0x2ca4b(%rip), %rax     # 0x3f3b0
mulsd (%rax,%rcx,8), %xmm0
movq 0x110(%rsp), %rax
movsd 0x290(%rax), %xmm2
movq 0x110(%rsp), %rax
movsd 0x280(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
leaq 0x48(%rsp), %rax
addq $0x20, %rax
movslq 0x20(%rsp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movsd %xmm0, 0x8(%rax)
movl 0x20(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x20(%rsp)
jmp 0x1294a
leaq 0x3dd38(%rip), %rdi     # 0x506f8
leaq 0x48(%rsp), %rsi
callq 0x13290
jmp 0x129cc
jmp 0x129ce
jmp 0x129d0
jmp 0x129d2
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x40(%rsp)
jmp 0x11bdc
movq 0x385e4(%rip), %rdi     # 0x4afd0
leaq 0x2c9d5(%rip), %rsi     # 0x3f3c8
callq 0x3240
movq %rax, 0x10(%rsp)
leaq 0x3dcf4(%rip), %rdi     # 0x506f8
callq 0x13310
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x30a0
movq %rax, %rdi
movq 0x38598(%rip), %rsi     # 0x4afb8
callq 0x3290
leaq 0x3dcfc(%rip), %rdi     # 0x50728
callq 0x13330
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x3dcad(%rip), %rdi     # 0x506f8
callq 0x13310
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
je 0x12ad3
movq 0x18(%rsp), %rsi
leaq 0x3dc8f(%rip), %rdi     # 0x506f8
callq 0x13340
movq (%rax), %rax
movswl 0x1b0(%rax), %eax
cmpl $-0x1, %eax
jne 0x12a9e
movq 0x18(%rsp), %rsi
leaq 0x3dc6f(%rip), %rdi     # 0x506f8
callq 0x13340
movq 0x8(%rax), %rax
movswl 0x1b0(%rax), %eax
cmpl $-0x1, %eax
je 0x12abe
movq 0x18(%rsp), %rsi
leaq 0x3dc4e(%rip), %rdi     # 0x506f8
callq 0x13340
movq %rax, %rsi
leaq 0x3dc57(%rip), %rdi     # 0x50710
callq 0x13290
jmp 0x12ac0
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x12a3a
leaq 0x3dc1e(%rip), %rdi     # 0x506f8
callq 0x13170
movq 0x384ea(%rip), %rdi     # 0x4afd0
leaq 0x2c8e8(%rip), %rsi     # 0x3f3d5
callq 0x3240
movq %rax, (%rsp)
leaq 0x3dc13(%rip), %rdi     # 0x50710
callq 0x13310
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x30a0
movq %rax, %rdi
movq 0x384a0(%rip), %rsi     # 0x4afb8
callq 0x3290
addq $0x118, %rsp            # imm = 0x118
retq
nopw %cs:(%rax,%rax)