// File: /workspace/github_cpp_makefile_star2_O1/jamesliu516[P]amrdg2d/farfield_boundary.cpp
// Function: getInletOutletBndry_1(bodygridclass*, int)
void getInletOutletBndry_1(OctCell *ghostcell, int in2out)
{
    double nx,ny;
    double speed, a, vbn=0.0;
    PXYZ symtrcpt; 
    PXYZ ghostpt, plsA, plsB;
    int i1,j1;

    //Rieman problem������
    //    double dil,dir,ui,prei;
    JBBL jb1,jb2; 

    SHBL sh;

    //	OctCell *leafp;
    OctCell *pincell=NULL;
    vector< OctCell * > grid;


    ghostpt.x = ghostcell->xc1;
    ghostpt.y = ghostcell->yc1;	
    if(in2out==0){
        symtrcpt.x=2.0*xInlet-ghostpt.x;
        symtrcpt.y=ghostpt.y;
        nx=1.0;
        ny=0.0;
    }
    else {
        symtrcpt.x=2.0*xOutlet-ghostpt.x;
        symtrcpt.y=ghostpt.y;
        nx=-1.0;
        ny=0.0;
    }
    getGridIndex2(ghostcell, &symtrcpt, pincell);
    findIntpltCell(pincell, ghostpt, symtrcpt, grid);
    chazhi4smtrictPshbl(grid, symtrcpt, jb1); 

    a = sqrt(GAMMA * jb1.p / jb1.q);

    speed = jb1.u * nx + jb1.v * ny;

    if(speed > 0.0 && fabs(speed) >= a)  //inflow
    {
        jb2.q=initQ;
        jb2.p=initP;
        jb2.u=uFree;
        jb2.v=vFree;

        jbblToShbl(&jb2, &sh);

        ghostcell->dof[0][0] = sh.q;
        ghostcell->dof[1][0]= sh.qu;
        ghostcell->dof[2][0]= sh.qv;
        ghostcell->dof[3][0]= sh.te;
        for( i1=0; i1<4; ++i1) 
            for(j1=1; j1<nDOF; ++j1)
                ghostcell->dof[i1][j1]=0.0;

    }
    else if(speed > 0.0 && fabs(speed) < a) //inflow
    {

        jb2.p = 0.5 * (initP + jb1.p) + 0.5 * jb1.q * a * (nx * (uFree - jb1.u) + ny * (vFree - jb1.v));
        vbn = 0.5 / (jb1.q * a) *  (initP - jb1.p) + 0.5 * (nx * (uFree + jb1.u) + ny * (vFree + jb1.v));

        jb2.q = initQ * pow(jb2.p/initP, 1./GAMMA);

        jb2.u = uFree + (vbn - (uFree * nx + vFree * ny )) * nx;
        jb2.v = vFree + (vbn - (uFree * nx + vFree * ny )) * ny;

        jbblToShbl(&jb2, &sh);

        ghostcell->dof[0][0] = sh.q;
        ghostcell->dof[1][0]= sh.qu;
        ghostcell->dof[2][0]= sh.qv;
        ghostcell->dof[3][0]= sh.te;
        for(i1=0; i1<4; ++i1) 
            for(j1=1; j1<nDOF; ++j1)
                ghostcell->dof[i1][j1]=0.0;

    }
    else if(speed <= 0.0 && fabs(speed) >= a) //outflow
    {
        jb2.q=jb1.q;
        jb2.p=jb1.p;
        jb2.u=jb1.u;
        jb2.v=jb1.v;

        jbblToShbl(&jb2, &sh);

        ghostcell->dof[0][0] = sh.q;
        ghostcell->dof[1][0]= sh.qu;
        ghostcell->dof[2][0]= sh.qv;
        ghostcell->dof[3][0]= sh.te;
        for(i1=0; i1<4; ++i1) 
            for(j1=1; j1<nDOF; ++j1)
                ghostcell->dof[i1][j1]=0.0;

    }
    else if(speed <= 0.0 && fabs(speed) < a) //outflow
    {

        jb2.p = 0.5 * (initP + jb1.p) + 0.5 * jb1.q * a * (nx * (uFree - jb1.u) + ny * (vFree - jb1.v));
        vbn = 0.5 / (jb1.q * a) *  (initP - jb1.p) + 0.5 * (nx * (uFree + jb1.u) + ny * (vFree + jb1.v));
        jb2.q = jb1.q * pow(jb2.p/jb1.p, 1./GAMMA);

        jb2.u = jb1.u + (vbn - (jb1.u * nx + jb1.v * ny)) * nx;

        jb2.v = jb1.v + (vbn - (jb1.u * nx + jb1.v * ny)) * ny;


        jbblToShbl(&jb2, &sh);

        ghostcell->dof[0][0] = sh.q;
        ghostcell->dof[1][0]= sh.qu;
        ghostcell->dof[2][0]= sh.qv;
        ghostcell->dof[3][0]= sh.te;
        for(i1=0; i1<4; ++i1) 
            for( j1=1; j1<nDOF; ++j1)
                ghostcell->dof[i1][j1]=0.0;

    }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0xa0, %rsp
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movaps %xmm0, 0x90(%rsp)
movaps %xmm0, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
xorl %eax, %eax
movq %rax, 0x48(%rsp)
movq %rax, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movupd 0x278(%rdi), %xmm0
movapd %xmm0, 0x90(%rsp)
xorl %r14d, %r14d
movsd 0x8e84(%rip), %xmm1     # 0x1e970
testl %esi, %esi
sete %bpl
jne 0x15afc
movsd 0x8e7c(%rip), %xmm1     # 0x1e978
subsd %xmm0, %xmm1
leaq 0x70(%rsp), %rsi
movsd %xmm1, (%rsi)
movhpd %xmm0, 0x8(%rsi)
leaq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x12f8f
movq 0x48(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x70(%rsp), %rdx
leaq 0x50(%rsp), %rcx
callq 0x132be
leaq 0x50(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x20(%rsp), %rdx
callq 0x13da5
movb %bpl, %r14b
leaq 0x8e3b(%rip), %rax      # 0x1e990
movsd 0x38(%rsp), %xmm0
mulsd 0x864d(%rip), %xmm0     # 0x1e1b0
divsd 0x20(%rsp), %xmm0
movsd (%rax,%r14,8), %xmm8
xorpd %xmm4, %xmm4
ucomisd %xmm4, %xmm0
jb 0x15b7f
sqrtsd %xmm0, %xmm0
jmp 0x15b96
movsd %xmm8, 0x8(%rsp)
callq 0x31b0
xorpd %xmm4, %xmm4
movsd 0x8(%rsp), %xmm8
movsd 0x28(%rsp), %xmm7
movsd 0x30(%rsp), %xmm1
movapd %xmm1, %xmm3
mulsd %xmm4, %xmm3
movapd %xmm7, %xmm2
mulsd %xmm8, %xmm2
addsd %xmm3, %xmm2
ucomisd %xmm4, %xmm2
jbe 0x15c38
ucomisd %xmm0, %xmm2
jb 0x15c38
movsd 0x229dd(%rip), %xmm0    # 0x385a8
divsd 0x85d5(%rip), %xmm0     # 0x1e1a8
addsd 0x8cc5(%rip), %xmm0     # 0x1e8a0
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x30(%rbx)
movabsq $0x4024000000000000, %rax # imm = 0x4024000000000000
movq %rax, 0x60(%rbx)
movq $0x0, 0x90(%rbx)
movsd %xmm0, 0xc0(%rbx)
movl $0x38, %eax
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rbx,%rax)
movupd %xmm0, (%rbx,%rax)
movq $0x0, 0x20(%rbx,%rax)
addq $0x30, %rax
cmpq $0xf8, %rax
jne 0x15c13
jmp 0x1605e
xorpd %xmm3, %xmm3
ucomisd %xmm3, %xmm2
jbe 0x15df0
ucomisd %xmm2, %xmm0
jbe 0x15df0
movsd 0x22950(%rip), %xmm2    # 0x385a8
movsd 0x20(%rsp), %xmm3
movsd 0x38(%rsp), %xmm4
movapd %xmm2, %xmm9
addsd %xmm4, %xmm9
movsd 0x84d1(%rip), %xmm10    # 0x1e148
movapd %xmm3, %xmm5
mulsd %xmm10, %xmm5
mulsd %xmm0, %xmm5
movsd 0x8ce3(%rip), %xmm11    # 0x1e970
movapd %xmm11, %xmm6
movapd %xmm11, %xmm13
subsd %xmm7, %xmm6
xorpd %xmm12, %xmm12
movapd %xmm7, %xmm11
xorpd %xmm7, %xmm7
subsd %xmm1, %xmm7
mulsd %xmm12, %xmm7
mulsd %xmm8, %xmm6
addsd %xmm7, %xmm6
mulsd %xmm5, %xmm6
mulsd %xmm10, %xmm9
addsd %xmm6, %xmm9
movsd %xmm9, 0x10(%rsp)
mulsd %xmm3, %xmm0
movapd %xmm10, %xmm3
divsd %xmm0, %xmm3
movapd %xmm9, %xmm0
divsd %xmm2, %xmm0
subsd %xmm4, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm13, %xmm11
xorpd %xmm3, %xmm3
addsd %xmm3, %xmm1
mulsd %xmm3, %xmm1
mulsd %xmm8, %xmm11
addsd %xmm1, %xmm11
mulsd %xmm10, %xmm11
addsd %xmm2, %xmm11
movsd %xmm11, 0x18(%rsp)
movsd 0x8b46(%rip), %xmm1     # 0x1e868
movsd %xmm8, 0x8(%rsp)
callq 0x3360
movsd 0x8(%rsp), %xmm4
movapd %xmm4, %xmm1
movsd 0x8c30(%rip), %xmm2     # 0x1e970
mulsd %xmm2, %xmm1
xorpd %xmm5, %xmm5
addsd %xmm5, %xmm1
movsd 0x18(%rsp), %xmm3
subsd %xmm1, %xmm3
mulsd %xmm3, %xmm4
addsd %xmm2, %xmm4
mulsd %xmm5, %xmm3
xorpd %xmm1, %xmm1
addsd %xmm1, %xmm3
movapd %xmm3, %xmm5
movapd %xmm0, %xmm1
movsd 0x83ce(%rip), %xmm2     # 0x1e148
mulsd %xmm0, %xmm2
movsd %xmm0, 0x30(%rbx)
mulsd %xmm4, %xmm0
mulsd %xmm3, %xmm1
movsd 0x10(%rsp), %xmm3
divsd 0x840f(%rip), %xmm3     # 0x1e1a8
mulsd %xmm5, %xmm5
mulsd %xmm4, %xmm4
addsd %xmm5, %xmm4
mulsd %xmm2, %xmm4
addsd %xmm3, %xmm4
movsd %xmm0, 0x60(%rbx)
movsd %xmm1, 0x90(%rbx)
movsd %xmm4, 0xc0(%rbx)
movl $0x38, %eax
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rbx,%rax)
movupd %xmm0, (%rbx,%rax)
movq $0x0, 0x20(%rbx,%rax)
addq $0x30, %rax
cmpq $0xf8, %rax
jne 0x15dcb
jmp 0x1605e
ucomisd %xmm2, %xmm3
movapd 0x83c4(%rip), %xmm3     # 0x1e1c0
andpd %xmm2, %xmm3
jb 0x15e9c
ucomisd %xmm0, %xmm3
jb 0x15e9c
movsd 0x20(%rsp), %xmm0
movsd 0x38(%rsp), %xmm2
movapd %xmm7, %xmm3
mulsd %xmm0, %xmm3
movapd %xmm1, %xmm4
mulsd %xmm0, %xmm4
divsd 0x8374(%rip), %xmm2     # 0x1e1a8
movsd 0x830c(%rip), %xmm5     # 0x1e148
mulsd %xmm0, %xmm5
mulsd %xmm1, %xmm1
mulsd %xmm7, %xmm7
addsd %xmm1, %xmm7
mulsd %xmm5, %xmm7
addsd %xmm2, %xmm7
movsd %xmm0, 0x30(%rbx)
movsd %xmm3, 0x60(%rbx)
movsd %xmm4, 0x90(%rbx)
movsd %xmm7, 0xc0(%rbx)
movl $0x38, %eax
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rbx,%rax)
movupd %xmm0, (%rbx,%rax)
movq $0x0, 0x20(%rbx,%rax)
addq $0x30, %rax
cmpq $0xf8, %rax
jne 0x15e77
jmp 0x1605e
ucomisd %xmm2, %xmm4
jb 0x1605e
ucomisd %xmm3, %xmm0
jbe 0x1605e
movsd 0x226f0(%rip), %xmm3    # 0x385a8
movsd 0x20(%rsp), %xmm5
movsd 0x38(%rsp), %xmm2
movapd %xmm3, %xmm10
addsd %xmm2, %xmm10
movsd 0x8271(%rip), %xmm11    # 0x1e148
movapd %xmm5, %xmm4
movapd %xmm5, %xmm13
movsd %xmm5, 0x88(%rsp)
mulsd %xmm11, %xmm4
mulsd %xmm0, %xmm4
movsd 0x8a75(%rip), %xmm9     # 0x1e970
movapd %xmm9, %xmm5
subsd %xmm7, %xmm5
xorpd %xmm12, %xmm12
xorpd %xmm6, %xmm6
subsd %xmm1, %xmm6
mulsd %xmm12, %xmm6
mulsd %xmm8, %xmm5
addsd %xmm6, %xmm5
mulsd %xmm4, %xmm5
mulsd %xmm11, %xmm10
addsd %xmm5, %xmm10
movsd %xmm10, 0x10(%rsp)
mulsd %xmm13, %xmm0
movapd %xmm11, %xmm4
divsd %xmm0, %xmm4
subsd %xmm2, %xmm3
mulsd %xmm4, %xmm3
addsd %xmm9, %xmm7
xorpd %xmm0, %xmm0
addsd %xmm0, %xmm1
mulsd %xmm0, %xmm1
mulsd %xmm8, %xmm7
addsd %xmm1, %xmm7
mulsd %xmm11, %xmm7
addsd %xmm3, %xmm7
movsd %xmm7, 0x18(%rsp)
movapd %xmm10, %xmm0
divsd %xmm2, %xmm0
movsd 0x88e4(%rip), %xmm1     # 0x1e868
movsd %xmm8, 0x8(%rsp)
callq 0x3360
mulsd 0x88(%rsp), %xmm0
movsd 0x28(%rsp), %xmm1
movsd 0x30(%rsp), %xmm2
movapd %xmm2, %xmm3
xorpd %xmm6, %xmm6
mulsd %xmm6, %xmm3
movapd %xmm1, %xmm4
movsd 0x8(%rsp), %xmm5
mulsd %xmm5, %xmm4
addsd %xmm3, %xmm4
movsd 0x18(%rsp), %xmm3
subsd %xmm4, %xmm3
mulsd %xmm3, %xmm5
addsd %xmm1, %xmm5
mulsd %xmm6, %xmm3
addsd %xmm2, %xmm3
movapd %xmm3, %xmm4
movapd %xmm0, %xmm1
movsd 0x815b(%rip), %xmm3     # 0x1e148
mulsd %xmm0, %xmm3
movsd %xmm0, 0x30(%rbx)
mulsd %xmm5, %xmm0
mulsd %xmm4, %xmm1
movsd 0x10(%rsp), %xmm2
divsd 0x819c(%rip), %xmm2     # 0x1e1a8
mulsd %xmm4, %xmm4
mulsd %xmm5, %xmm5
addsd %xmm4, %xmm5
mulsd %xmm3, %xmm5
addsd %xmm2, %xmm5
movsd %xmm0, 0x60(%rbx)
movsd %xmm1, 0x90(%rbx)
movsd %xmm5, 0xc0(%rbx)
movl $0x38, %eax
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rbx,%rax)
movupd %xmm0, (%rbx,%rax)
movq $0x0, 0x20(%rbx,%rax)
addq $0x30, %rax
cmpq $0xf8, %rax
jne 0x1603e
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x16075
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
addq $0xa0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x1609b
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x3220
movq %rbx, %rdi
callq 0x3370