// File: /workspace/github_cpp_makefile_star2_O3/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xf8, %rsp
leaq 0x10(%rsp), %rdi
callq 0x47d2
leaq 0x20784(%rip), %rax     # 0x29610
movq (%rax), %r12
leaq 0x207ea(%rip), %rbx     # 0x29680
movq (%rbx), %rax
cmpq %rax, 0x8(%rbx)
je 0x8ea3
movq %rax, 0x8(%rbx)
testq %r12, %r12
je 0x9733
leaq 0x207e5(%rip), %r14     # 0x29698
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
movhpd 0x144e5(%rip), %xmm1    # xmm1 = xmm1[0],mem[0]
movapd %xmm1, 0xd0(%rsp)
leaq 0x144dd(%rip), %rbp     # 0x1d3b0
movhpd 0x142c5(%rip), %xmm0    # xmm0 = xmm0[0],mem[0]
movapd %xmm0, 0xe0(%rsp)
cmpw $0x2, (%r12)
jg 0x8f5d
movq 0x8(%r12), %rdi
movq %rdi, (%rsp)
callq 0x8db8
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x8f70
movq (%rsp), %rdi
callq 0x8d37
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x906f
movq (%rsp), %rdi
callq 0x8c30
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x916c
movq (%rsp), %rdi
callq 0x8cb4
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x9267
movq 0x10(%r12), %r12
testq %r12, %r12
jne 0x8ee4
jmp 0x9733
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r13d
movzwl 0x1f8(%rax), %r15d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb (%rax), %al
cmpw %r15w, %r13w
jne 0x9368
testb %al, %al
jne 0x8f09
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
cmpb $0x0, 0x2(%rax)
jne 0x8f09
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb $0x1, %r15b
movb %r15b, (%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
movb %r15b, 0x2(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movaps 0xd0(%rsp), %xmm0
movups %xmm0, 0x20(%rsp)
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x290(%rax), %xmm0
mulsd 0x14123(%rip), %xmm0    # 0x1d140
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd 0x14107(%rip), %xmm1    # 0x1d148
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x9041
jmp 0x9414
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r13d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb 0x1(%rax), %al
cmpw %r13w, %r15w
jne 0x944b
testb %al, %al
jne 0x8f25
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
cmpb $0x0, 0x3(%rax)
jne 0x8f25
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb $0x1, %r15b
movb %r15b, 0x1(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
movb %r15b, 0x3(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x140a8(%rip), %xmm0    # 0x1d1a0
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
movsd 0x1402a(%rip), %xmm1    # 0x1d148
mulsd %xmm1, %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x913e
jmp 0x94f4
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r13d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb 0x2(%rax), %al
cmpw %r13w, %r15w
jne 0x952b
testb %al, %al
jne 0x8f41
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
cmpb $0x0, (%rax)
jne 0x8f41
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb $0x1, %r15b
movb %r15b, 0x2(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
movb %r15b, (%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movaps 0xe0(%rsp), %xmm0
movups %xmm0, 0x20(%rsp)
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x290(%rax), %xmm0
movsd 0x13f2f(%rip), %xmm1    # 0x1d148
mulsd %xmm1, %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x9239
jmp 0x95d4
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r13d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb 0x3(%rax), %al
cmpw %r13w, %r15w
jne 0x960b
testb %al, %al
jne 0x8f5d
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
cmpb $0x0, 0x1(%rax)
jne 0x8f5d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb $0x1, %r15b
movb %r15b, 0x3(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9c76
movsd 0x13e6f(%rip), %xmm1    # 0x1d148
movb %r15b, 0x1(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x140b0(%rip), %xmm0    # 0x1d3a8
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
mulsd 0x13e22(%rip), %xmm0    # 0x1d140
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x933a
jmp 0x96b8
testb %al, %al
jne 0x8f09
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb $0x1, %dl
movb %dl, (%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movaps 0xd0(%rsp), %xmm0
movups %xmm0, 0x20(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x290(%rax), %xmm0
mulsd 0x13d79(%rip), %xmm0    # 0x1d140
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd 0x13d5d(%rip), %xmm1    # 0x1d148
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x93eb
leaq 0x2024d(%rip), %rax     # 0x29668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x96eb
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x8f09
testb %al, %al
jne 0x8f25
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb $0x1, %dl
movb %dl, 0x1(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x13d22(%rip), %xmm0    # 0x1d1a0
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x288(%rax), %xmm0
movsd 0x13c9d(%rip), %xmm1    # 0x1d148
mulsd %xmm1, %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x94cb
leaq 0x2016d(%rip), %rax     # 0x29668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x96fd
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x8f25
testb %al, %al
jne 0x8f41
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movb $0x1, %dl
movb %dl, 0x2(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movaps 0xe0(%rsp), %xmm0
movups %xmm0, 0x20(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x288(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x290(%rax), %xmm0
movsd 0x13bbd(%rip), %xmm1    # 0x1d148
mulsd %xmm1, %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x95ab
leaq 0x2008d(%rip), %rax     # 0x29668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x970f
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x8f41
testb %al, %al
jne 0x8f5d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9c76
movsd 0x13b22(%rip), %xmm1    # 0x1d148
movb $0x1, %dl
movb %dl, 0x3(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x13d62(%rip), %xmm0    # 0x1d3a8
movups %xmm0, 0x20(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
mulsd 0x13acd(%rip), %xmm0    # 0x1d140
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
movsd (%rcx,%rbp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
cmpq $0x18, %rcx
jne 0x968f
leaq 0x1ffa9(%rip), %rax     # 0x29668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x9721
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x8f5d
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0x9f4e
jmp 0x8f09
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0x9f4e
jmp 0x8f25
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0x9f4e
jmp 0x8f41
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0x9f4e
jmp 0x8f5d
movq 0x1a88e(%rip), %r14     # 0x23fc8
leaq 0x13c87(%rip), %rsi     # 0x1d3c8
movl $0xc, %edx
movq %r14, %rdi
callq 0x3250
leaq 0x1ff13(%rip), %r12     # 0x29668
movq 0x8(%r12), %rsi
subq (%r12), %rsi
sarq $0x6, %rsi
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
imulq %r15, %rsi
movq %r14, %rdi
callq 0x3160
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3200
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3170
leaq 0x1feef(%rip), %rdi     # 0x29698
callq 0xa0f8
movq (%r12), %rax
movq 0x8(%r12), %rcx
cmpq %rax, %rcx
je 0x9837
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rax,%r14), %rcx
cmpw $-0x1, 0x1b0(%rcx)
jne 0x97df
movq 0x8(%rax,%r14), %rcx
cmpw $-0x1, 0x1b0(%rcx)
je 0x9811
addq %r14, %rax
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x9806
movl $0xc0, %edx
movq %rsi, %rdi
movq %rax, %rsi
callq 0x31c0
addq $0xc0, 0x8(%rbx)
jmp 0x9811
movq %rbx, %rdi
movq %rax, %rdx
callq 0x9f4e
incq %r13
movq (%r12), %rax
movq 0x8(%r12), %rcx
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x6, %rdx
imulq %r15, %rdx
addq $0xc0, %r14
cmpq %rdx, %r13
jne 0x97c2
cmpq %rax, %rcx
je 0x9841
movq %rax, 0x8(%r12)
movq 0x1a780(%rip), %r14     # 0x23fc8
leaq 0x13b86(%rip), %rsi     # 0x1d3d5
movl $0x1b, %edx
movq %r14, %rdi
callq 0x3250
movq 0x8(%rbx), %rsi
subq (%rbx), %rsi
sarq $0x6, %rsi
imulq %r15, %rsi
movq %r14, %rdi
callq 0x3160
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3170
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq