// File: /workspace/github_cpp_makefile_star2_O3/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 0x1b989
movl %esi, %eax
leaq 0x276f(%rip), %rcx      # 0x1dd40
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %eax, %eax
movsd 0x1b5c(%rip), %xmm0     # 0x1d140
movsd 0x21d4(%rip), %xmm1     # 0x1d7c0
movsd 0x271c(%rip), %xmm2     # 0x1dd10
movsd 0x1b4c(%rip), %xmm3     # 0x1d148
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 0x1b5fc
jmp 0x1b989
xorl %eax, %eax
movsd 0x1a73(%rip), %xmm0     # 0x1d148
movsd 0x20e3(%rip), %xmm1     # 0x1d7c0
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 0x1b6dd
jmp 0x1b989
xorl %eax, %eax
movsd 0x198a(%rip), %xmm0     # 0x1d140
movsd 0x198a(%rip), %xmm1     # 0x1d148
movsd 0x254a(%rip), %xmm2     # 0x1dd10
movsd 0x1ff2(%rip), %xmm3     # 0x1d7c0
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 0x1b7ce
jmp 0x1b989
xorl %eax, %eax
movsd 0x18a1(%rip), %xmm0     # 0x1d148
movsd 0x1891(%rip), %xmm1     # 0x1d140
movsd 0x2459(%rip), %xmm2     # 0x1dd10
movsd 0x1f01(%rip), %xmm3     # 0x1d7c0
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 0x1b8bf
retq