// File: /workspace/github_cpp_makefile_star2_O2/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 0x45a4
leaq 0x1ff2c(%rip), %rax     # 0x28610
leaq 0x1ff95(%rip), %rcx     # 0x28680
movq (%rcx), %rdx
cmpq %rdx, 0x8(%rcx)
je 0x86f8
movq %rdx, 0x8(%rcx)
movq (%rax), %rbp
leaq 0x1ff96(%rip), %r14     # 0x28698
xorpd %xmm0, %xmm0
xorpd %xmm1, %xmm1
movhpd 0x12cee(%rip), %xmm1    # xmm1 = xmm1[0],mem[0]
movapd %xmm1, 0xd0(%rsp)
leaq 0x12cee(%rip), %r13     # 0x1b410
leaq 0x1ff3f(%rip), %rbx     # 0x28668
movhpd 0x12aef(%rip), %xmm0    # xmm0 = xmm0[0],mem[0]
movapd %xmm0, 0xe0(%rsp)
testq %rbp, %rbp
je 0x8ece
cmpw $0x2, (%rbp)
jg 0x87ba
movq 0x8(%rbp), %rdi
movq %rdi, (%rsp)
callq 0x8610
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x87c3
movq (%rsp), %rdi
callq 0x858f
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x88c4
movq (%rsp), %rdi
callq 0x8488
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x89c3
movq (%rsp), %rdi
callq 0x850c
movq %rax, 0x8(%rsp)
cmpw $0x0, 0x1fc(%rax)
je 0x8ac0
movq 0x10(%rbp), %rbp
jmp 0x873a
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r12d
movzwl 0x1f8(%rax), %r15d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb (%rax), %al
cmpw %r15w, %r12w
jne 0x8bc3
testb %al, %al
jne 0x8766
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
cmpb $0x0, 0x2(%rax)
jne 0x8766
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb $0x1, %r15b
movb %r15b, (%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
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 0x12900(%rip), %xmm0    # 0x1b170
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd 0x128e4(%rip), %xmm1    # 0x1b178
cmpq $0x18, %rcx
je 0x8e86
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8894
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r12d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb 0x1(%rax), %al
cmpw %r12w, %r15w
jne 0x8c76
testb %al, %al
jne 0x8782
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
cmpb $0x0, 0x3(%rax)
jne 0x8782
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb $0x1, %r15b
movb %r15b, 0x1(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
movb %r15b, 0x3(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x128d3(%rip), %xmm0    # 0x1b220
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
movsd 0x12805(%rip), %xmm1    # 0x1b178
mulsd %xmm1, %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
cmpq $0x18, %rcx
je 0x8e98
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8993
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r12d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb 0x2(%rax), %al
cmpw %r12w, %r15w
jne 0x8d26
testb %al, %al
jne 0x879e
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
cmpb $0x0, (%rax)
jne 0x879e
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb $0x1, %r15b
movb %r15b, 0x2(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
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 0x12708(%rip), %xmm1    # 0x1b178
mulsd %xmm1, %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
cmpq $0x18, %rcx
je 0x8eaa
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8a90
movq (%rsp), %rcx
movzwl 0x1f8(%rcx), %r15d
movzwl 0x1f8(%rax), %r12d
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb 0x3(%rax), %al
cmpw %r12w, %r15w
jne 0x8dd6
testb %al, %al
jne 0x87ba
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
cmpb $0x0, 0x1(%rax)
jne 0x87ba
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb $0x1, %r15b
movb %r15b, 0x3(%rax)
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x9244
movsd 0x12646(%rip), %xmm1    # 0x1b178
movb %r15b, 0x1(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x128af(%rip), %xmm0    # 0x1b400
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
mulsd 0x125f9(%rip), %xmm0    # 0x1b170
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
cmpq $0x18, %rcx
je 0x8ebc
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8b93
testb %al, %al
jne 0x8766
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
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 0x1254e(%rip), %xmm0    # 0x1b170
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
movsd 0x12532(%rip), %xmm1    # 0x1b178
cmpq $0x18, %rcx
je 0x8e86
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8c46
testb %al, %al
jne 0x8782
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movb $0x1, %dl
movb %dl, 0x1(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x12577(%rip), %xmm0    # 0x1b220
movups %xmm0, 0x20(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x288(%rax), %xmm0
movsd 0x124a2(%rip), %xmm1    # 0x1b178
mulsd %xmm1, %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
cmpq $0x18, %rcx
je 0x8e98
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8cf6
testb %al, %al
jne 0x879e
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
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 0x123f2(%rip), %xmm1    # 0x1b178
mulsd %xmm1, %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x38(%rsp)
xorl %ecx, %ecx
cmpq $0x18, %rcx
je 0x8eaa
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x288(%rax), %xmm0
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x30(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8da6
testb %al, %al
jne 0x87ba
movq %r14, %rdi
movq %rsp, %rsi
callq 0x9244
movsd 0x12387(%rip), %xmm1    # 0x1b178
movb $0x1, %dl
movb %dl, 0x3(%rax)
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, 0x18(%rsp)
movsd 0x125ef(%rip), %xmm0    # 0x1b400
movups %xmm0, 0x20(%rsp)
movb %dl, 0xc8(%rsp)
movsd 0x290(%rax), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0x288(%rax), %xmm0
mulsd 0x12332(%rip), %xmm0    # 0x1b170
addsd 0x278(%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
xorl %ecx, %ecx
cmpq $0x18, %rcx
je 0x8ebc
movsd (%rcx,%r13), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x290(%rax), %xmm0
addsd 0x280(%rax), %xmm0
movsd %xmm0, 0x38(%rsp,%rcx,2)
addq $0x8, %rcx
jmp 0x8e5a
movq %rbx, %rdi
leaq 0x10(%rsp), %rsi
callq 0x9294
jmp 0x8766
movq %rbx, %rdi
leaq 0x10(%rsp), %rsi
callq 0x9294
jmp 0x8782
movq %rbx, %rdi
leaq 0x10(%rsp), %rsi
callq 0x9294
jmp 0x879e
movq %rbx, %rdi
leaq 0x10(%rsp), %rsi
callq 0x9294
jmp 0x87ba
movq 0x1a0eb(%rip), %rdi     # 0x22fc0
leaq 0x1254c(%rip), %rsi     # 0x1b428
callq 0x31d0
movq %rax, %rdi
movq 0x8(%rbx), %rax
subq (%rbx), %rax
movl $0xc0, %r15d
cqto
idivq %r15
movq %rax, %rsi
callq 0x3140
movq %rax, %rdi
callq 0x30d0
leaq 0x1f78b(%rip), %rdi     # 0x28698
callq 0x97ac
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
xorl %r12d, %r12d
leaq 0x1f75d(%rip), %r14     # 0x28680
xorl %r13d, %r13d
movq %rcx, %rax
subq %rsi, %rax
cqto
idivq %r15
cmpq %rax, %r13
je 0x8f71
movq (%rsi,%r12), %rax
cmpw $-0x1, 0x1b0(%rax)
jne 0x8f53
movq 0x8(%rsi,%r12), %rax
cmpw $-0x1, 0x1b0(%rax)
je 0x8f65
addq %r12, %rsi
movq %r14, %rdi
callq 0x9294
movq (%rbx), %rsi
movq 0x8(%rbx), %rcx
incq %r13
addq $0xc0, %r12
jmp 0x8f26
cmpq %rsi, %rcx
je 0x8f7a
movq %rsi, 0x8(%rbx)
movq 0x1a03f(%rip), %rdi     # 0x22fc0
leaq 0x124ad(%rip), %rsi     # 0x1b435
callq 0x31d0
movq %rax, %rdi
movq 0x8(%r14), %rax
subq (%r14), %rax
movl $0xc0, %ecx
cqto
idivq %rcx
movq %rax, %rsi
callq 0x3140
movq %rax, %rdi
callq 0x30d0
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq