// File: /workspace/github_cpp_makefile_star2_O1/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 0x21641(%rip), %rax     # 0x2a610
movq (%rax), %r12
leaq 0x216a7(%rip), %rbx     # 0x2a680
movq (%rbx), %rax
cmpq %rax, 0x8(%rbx)
je 0x8fe6
movq %rax, 0x8(%rbx)
testq %r12, %r12
je 0x9876
leaq 0x216a2(%rip), %r14     # 0x2a698
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
movhpd 0x15382(%rip), %xmm1    # xmm1 = xmm1[0],mem[0]
movapd %xmm1, 0xd0(%rsp)
leaq 0x1537a(%rip), %rbp     # 0x1e390
movhpd 0x15182(%rip), %xmm0    # xmm0 = xmm0[0],mem[0]
movapd %xmm0, 0xe0(%rsp)
cmpw $0x2, (%r12)
jg 0x90a0
movq 0x8(%r12), %rdi
movq %rdi, (%rsp)
callq 0x8f00
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x90b3
movq (%rsp), %rdi
callq 0x8e7f
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x91b2
movq (%rsp), %rdi
callq 0x8d78
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x92af
movq (%rsp), %rdi
callq 0x8dfc
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x93aa
movq 0x10(%r12), %r12
testq %r12, %r12
jne 0x9027
jmp 0x9876
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r13d
movzwl 0x1f8(%rax), %r15d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb (%rax), %al
cmpw %r15w, %r13w
jne 0x94ab
testb %al, %al
jne 0x904c
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
cmpb $0x0, 0x2(%rax)
jne 0x904c
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb $0x1, %r15b
movb %r15b, (%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
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 0x14fe0(%rip), %xmm0    # 0x1e140
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd 0x14fc4(%rip), %xmm1    # 0x1e148
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 0x9184
jmp 0x9557
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r13d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb 0x1(%rax), %al
cmpw %r13w, %r15w
jne 0x958e
testb %al, %al
jne 0x9068
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
cmpb $0x0, 0x3(%rax)
jne 0x9068
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb $0x1, %r15b
movb %r15b, 0x1(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
movb %r15b, 0x3(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x14f65(%rip), %xmm0    # 0x1e1a0
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
movsd 0x14ee7(%rip), %xmm1    # 0x1e148
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 0x9281
jmp 0x9637
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r13d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb 0x2(%rax), %al
cmpw %r13w, %r15w
jne 0x966e
testb %al, %al
jne 0x9084
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
cmpb $0x0, (%rax)
jne 0x9084
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb $0x1, %r15b
movb %r15b, 0x2(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
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 0x14dec(%rip), %xmm1    # 0x1e148
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 0x937c
jmp 0x9717
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r13d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb 0x3(%rax), %al
cmpw %r13w, %r15w
jne 0x974e
testb %al, %al
jne 0x90a0
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
cmpb $0x0, 0x1(%rax)
jne 0x90a0
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb $0x1, %r15b
movb %r15b, 0x3(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9db4
movsd 0x14d2c(%rip), %xmm1    # 0x1e148
movb %r15b, 0x1(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x14f4d(%rip), %xmm0    # 0x1e388
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
mulsd 0x14cdf(%rip), %xmm0    # 0x1e140
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 0x947d
jmp 0x97fb
testb %al, %al
jne 0x904c
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
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 0x14c36(%rip), %xmm0    # 0x1e140
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd 0x14c1a(%rip), %xmm1    # 0x1e148
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 0x952e
leaq 0x2110a(%rip), %rax     # 0x2a668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x982e
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x904c
testb %al, %al
jne 0x9068
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movb $0x1, %dl
movb %dl, 0x1(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x14bdf(%rip), %xmm0    # 0x1e1a0
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x288(%rax), %xmm0
movsd 0x14b5a(%rip), %xmm1    # 0x1e148
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 0x960e
leaq 0x2102a(%rip), %rax     # 0x2a668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x9840
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x9068
testb %al, %al
jne 0x9084
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
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 0x14a7a(%rip), %xmm1    # 0x1e148
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 0x96ee
leaq 0x20f4a(%rip), %rax     # 0x2a668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x9852
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x9084
testb %al, %al
jne 0x90a0
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9db4
movsd 0x149df(%rip), %xmm1    # 0x1e148
movb $0x1, %dl
movb %dl, 0x3(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x14bff(%rip), %xmm0    # 0x1e388
movups %xmm0, 0x20(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
mulsd 0x1498a(%rip), %xmm0    # 0x1e140
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 0x97d2
leaq 0x20e66(%rip), %rax     # 0x2a668
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0x9864
movl $0xc0, %edx
movq %rsi, %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %r15
callq 0x31c0
addq $0xc0, 0x8(%r15)
jmp 0x90a0
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0xa08c
jmp 0x904c
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0xa08c
jmp 0x9068
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0xa08c
jmp 0x9084
movq %rax, %rdi
leaq 0x10(%rsp), %rdx
callq 0xa08c
jmp 0x90a0
movq 0x1b74b(%rip), %r14     # 0x24fc8
leaq 0x14b24(%rip), %rsi     # 0x1e3a8
movl $0xc, %edx
movq %r14, %rdi
callq 0x3250
leaq 0x20dd0(%rip), %r12     # 0x2a668
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 0x20dac(%rip), %rdi     # 0x2a698
callq 0xa236
movq (%r12), %rax
movq 0x8(%r12), %rcx
cmpq %rax, %rcx
je 0x997a
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rax,%r14), %rcx
cmpw $-0x1, 0x1b0(%rcx)
jne 0x9922
movq 0x8(%rax,%r14), %rcx
cmpw $-0x1, 0x1b0(%rcx)
je 0x9954
addq %r14, %rax
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x9949
movl $0xc0, %edx
movq %rsi, %rdi
movq %rax, %rsi
callq 0x31c0
addq $0xc0, 0x8(%rbx)
jmp 0x9954
movq %rbx, %rdi
movq %rax, %rdx
callq 0xa08c
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 0x9905
cmpq %rax, %rcx
je 0x9984
movq %rax, 0x8(%r12)
movq 0x1b63d(%rip), %r14     # 0x24fc8
leaq 0x14a23(%rip), %rsi     # 0x1e3b5
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