// File: /workspace/github_cpp_makefile_star2_O2/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 0x195db
movl %esi, %eax
leaq 0x2aa2(%rip), %rcx      # 0x1bcc0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %eax, %eax
movsd 0x1f3f(%rip), %xmm0     # 0x1b170
movsd 0x25f7(%rip), %xmm1     # 0x1b830
movsd 0x2887(%rip), %xmm2     # 0x1bac8
movsd 0x1f2f(%rip), %xmm3     # 0x1b178
cmpq $0xc0, %rax
je 0x195db
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
jmp 0x19249
xorl %eax, %eax
movsd 0x1e56(%rip), %xmm0     # 0x1b178
movsd 0x2506(%rip), %xmm1     # 0x1b830
cmpq $0xc0, %rax
je 0x195db
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
jmp 0x1932a
xorl %eax, %eax
movsd 0x1d6d(%rip), %xmm0     # 0x1b170
movsd 0x1d6d(%rip), %xmm1     # 0x1b178
movsd 0x26b5(%rip), %xmm2     # 0x1bac8
movsd 0x2415(%rip), %xmm3     # 0x1b830
cmpq $0xc0, %rax
je 0x195db
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
jmp 0x1941b
xorl %eax, %eax
movsd 0x1c84(%rip), %xmm0     # 0x1b178
movsd 0x1c74(%rip), %xmm1     # 0x1b170
movsd 0x25c4(%rip), %xmm2     # 0x1bac8
movsd 0x2324(%rip), %xmm3     # 0x1b830
cmpq $0xc0, %rax
je 0x195db
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
jmp 0x1950c
retq