// File: /workspace/github_cpp_makefile_star2_O1/jamesliu516[P]amrdg2d/solveAMR.cpp
// Function: son_cell_value(bodygridclass*, int, bodygridclass*)
void son_cell_value(OctCell *pp, int nson, OctCell *pson)
{
    switch(nson) {
    case 0:
        for(int i=0;i<4;++i){
            pson->dof[i][0]=pp->dof[i][0]-0.5*pp->dof[i][1]
                -0.5*pp->dof[i][2]+0.25*pp->dof[i][3];

            pson->dof[i][1]=0.5*pp->dof[i][1]-0.25*pp->dof[i][3]
                -0.5*pp->dof[i][4];


            pson->dof[i][2]=0.5*pp->dof[i][2]-0.25*pp->dof[i][3]
                -0.5*pp->dof[i][5];

            pson->dof[i][3]=0.25*pp->dof[i][3];

            pson->dof[i][4]=0.25*pp->dof[i][4];
            pson->dof[i][5]=0.25*pp->dof[i][5];
        }
        break;
    case 1:
        for(int i=0;i<4;++i){
            pson->dof[i][0]=pp->dof[i][0]+0.5*pp->dof[i][1]
                -0.5*pp->dof[i][2]-0.25*pp->dof[i][3];

            pson->dof[i][1]=0.5*pp->dof[i][1]-0.25*pp->dof[i][3]
                +0.5*pp->dof[i][4];


            pson->dof[i][2]=0.5*pp->dof[i][2]+0.25*pp->dof[i][3]
                -0.5*pp->dof[i][5];

            pson->dof[i][3]=0.25*pp->dof[i][3];

            pson->dof[i][4]=0.25*pp->dof[i][4];
            pson->dof[i][5]=0.25*pp->dof[i][5];
        }
        break;
    case 2:
        for(int i=0;i<4;++i){
            pson->dof[i][0]=pp->dof[i][0]+0.5*pp->dof[i][1]
                +0.5*pp->dof[i][2]+0.25*pp->dof[i][3];

            pson->dof[i][1]=0.5*pp->dof[i][1]+0.25*pp->dof[i][3]
                +0.5*pp->dof[i][4];


            pson->dof[i][2]=0.5*pp->dof[i][2]+0.25*pp->dof[i][3]
                +0.5*pp->dof[i][5];

            pson->dof[i][3]=0.25*pp->dof[i][3];

            pson->dof[i][4]=0.25*pp->dof[i][4];
            pson->dof[i][5]=0.25*pp->dof[i][5];
        }
        break;
    case 3:
        for(int i=0;i<4;++i){
            pson->dof[i][0]=pp->dof[i][0]-0.5*pp->dof[i][1]
                +0.5*pp->dof[i][2]-0.25*pp->dof[i][3];

            pson->dof[i][1]=0.5*pp->dof[i][1]+0.25*pp->dof[i][3]
                -0.5*pp->dof[i][4];


            pson->dof[i][2]=0.5*pp->dof[i][2]-0.25*pp->dof[i][3]
                +0.5*pp->dof[i][5];

            pson->dof[i][3]=0.25*pp->dof[i][3];

            pson->dof[i][4]=0.25*pp->dof[i][4];
            pson->dof[i][5]=0.25*pp->dof[i][5];
        }
        break;
    }
}

// Assembly:
cmpl $0x3, %esi
ja 0x1bea7
movl %esi, %eax
leaq 0x3249(%rip), %rcx      # 0x1ed38
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %eax, %eax
movsd 0x263e(%rip), %xmm0     # 0x1e140
movsd 0x2cd6(%rip), %xmm1     # 0x1e7e0
movsd 0x31f6(%rip), %xmm2     # 0x1ed08
movsd 0x262e(%rip), %xmm3     # 0x1e148
movsd 0x38(%rdi,%rax), %xmm4
mulsd %xmm0, %xmm4
addsd 0x30(%rdi,%rax), %xmm4
movsd 0x40(%rdi,%rax), %xmm5
mulsd %xmm0, %xmm5
addsd %xmm4, %xmm5
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm1, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x30(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm2, %xmm4
movsd 0x38(%rdi,%rax), %xmm5
mulsd %xmm3, %xmm5
addsd %xmm4, %xmm5
movsd 0x50(%rdi,%rax), %xmm4
mulsd %xmm0, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x38(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm2, %xmm4
movsd 0x40(%rdi,%rax), %xmm5
mulsd %xmm3, %xmm5
addsd %xmm4, %xmm5
movsd 0x58(%rdi,%rax), %xmm4
mulsd %xmm0, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x40(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm1, %xmm4
movsd %xmm4, 0x48(%rdx,%rax)
movsd 0x50(%rdi,%rax), %xmm4
mulsd %xmm1, %xmm4
movsd %xmm4, 0x50(%rdx,%rax)
movsd 0x58(%rdi,%rax), %xmm4
mulsd %xmm1, %xmm4
movsd %xmm4, 0x58(%rdx,%rax)
addq $0x30, %rax
cmpq $0xc0, %rax
jne 0x1bb1a
jmp 0x1bea7
xorl %eax, %eax
movsd 0x2555(%rip), %xmm0     # 0x1e148
movsd 0x2be5(%rip), %xmm1     # 0x1e7e0
movsd 0x38(%rdi,%rax), %xmm2
mulsd %xmm0, %xmm2
addsd 0x30(%rdi,%rax), %xmm2
movsd 0x40(%rdi,%rax), %xmm3
mulsd %xmm0, %xmm3
addsd %xmm2, %xmm3
movsd 0x48(%rdi,%rax), %xmm2
mulsd %xmm1, %xmm2
addsd %xmm3, %xmm2
movsd %xmm2, 0x30(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm2
mulsd %xmm1, %xmm2
movsd 0x38(%rdi,%rax), %xmm3
mulsd %xmm0, %xmm3
addsd %xmm2, %xmm3
movsd 0x50(%rdi,%rax), %xmm2
mulsd %xmm0, %xmm2
addsd %xmm3, %xmm2
movsd %xmm2, 0x38(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm2
mulsd %xmm1, %xmm2
movsd 0x40(%rdi,%rax), %xmm3
mulsd %xmm0, %xmm3
addsd %xmm2, %xmm3
movsd 0x58(%rdi,%rax), %xmm2
mulsd %xmm0, %xmm2
addsd %xmm3, %xmm2
movsd %xmm2, 0x40(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm2
mulsd %xmm1, %xmm2
movsd %xmm2, 0x48(%rdx,%rax)
movsd 0x50(%rdi,%rax), %xmm2
mulsd %xmm1, %xmm2
movsd %xmm2, 0x50(%rdx,%rax)
movsd 0x58(%rdi,%rax), %xmm2
mulsd %xmm1, %xmm2
movsd %xmm2, 0x58(%rdx,%rax)
addq $0x30, %rax
cmpq $0xc0, %rax
jne 0x1bbfb
jmp 0x1bea7
xorl %eax, %eax
movsd 0x246c(%rip), %xmm0     # 0x1e140
movsd 0x246c(%rip), %xmm1     # 0x1e148
movsd 0x3024(%rip), %xmm2     # 0x1ed08
movsd 0x2af4(%rip), %xmm3     # 0x1e7e0
movsd 0x38(%rdi,%rax), %xmm4
mulsd %xmm0, %xmm4
addsd 0x30(%rdi,%rax), %xmm4
movsd 0x40(%rdi,%rax), %xmm5
mulsd %xmm1, %xmm5
addsd %xmm4, %xmm5
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm2, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x30(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd 0x38(%rdi,%rax), %xmm5
mulsd %xmm1, %xmm5
addsd %xmm4, %xmm5
movsd 0x50(%rdi,%rax), %xmm4
mulsd %xmm0, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x38(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm2, %xmm4
movsd 0x40(%rdi,%rax), %xmm5
mulsd %xmm1, %xmm5
addsd %xmm4, %xmm5
movsd 0x58(%rdi,%rax), %xmm4
mulsd %xmm1, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x40(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, 0x48(%rdx,%rax)
movsd 0x50(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, 0x50(%rdx,%rax)
movsd 0x58(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, 0x58(%rdx,%rax)
addq $0x30, %rax
cmpq $0xc0, %rax
jne 0x1bcec
jmp 0x1bea7
xorl %eax, %eax
movsd 0x2383(%rip), %xmm0     # 0x1e148
movsd 0x2373(%rip), %xmm1     # 0x1e140
movsd 0x2f33(%rip), %xmm2     # 0x1ed08
movsd 0x2a03(%rip), %xmm3     # 0x1e7e0
movsd 0x38(%rdi,%rax), %xmm4
mulsd %xmm0, %xmm4
addsd 0x30(%rdi,%rax), %xmm4
movsd 0x40(%rdi,%rax), %xmm5
mulsd %xmm1, %xmm5
addsd %xmm4, %xmm5
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm2, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x30(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm2, %xmm4
movsd 0x38(%rdi,%rax), %xmm5
mulsd %xmm0, %xmm5
addsd %xmm4, %xmm5
movsd 0x50(%rdi,%rax), %xmm4
mulsd %xmm0, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x38(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd 0x40(%rdi,%rax), %xmm5
mulsd %xmm0, %xmm5
addsd %xmm4, %xmm5
movsd 0x58(%rdi,%rax), %xmm4
mulsd %xmm1, %xmm4
addsd %xmm5, %xmm4
movsd %xmm4, 0x40(%rdx,%rax)
movsd 0x48(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, 0x48(%rdx,%rax)
movsd 0x50(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, 0x50(%rdx,%rax)
movsd 0x58(%rdi,%rax), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, 0x58(%rdx,%rax)
addq $0x30, %rax
cmpq $0xc0, %rax
jne 0x1bddd
retq