// File: /workspace/github_cpp_makefile_star2_O3/jamesliu516[P]amrdg2d/solveAMR.cpp
// Function: creatsolcoarseparent(bodygridclass*, bodygridclass**)
void creatsolcoarseparent(OctCell *parent,OctCell *pp[4])
{
    for(int i=0;i<4;++i) {
        parent->dof[i][0]=0.25*(pp[0]->dof[i][0]+pp[1]->dof[i][0]
            +pp[2]->dof[i][0]+pp[3]->dof[i][0]);
      
        parent->dof[i][1]=0.125*(pp[0]->dof[i][1]+pp[1]->dof[i][1]
            +pp[2]->dof[i][1]+pp[3]->dof[i][1])
            +0.375*(-pp[0]->dof[i][0]+pp[1]->dof[i][0]
                -pp[3]->dof[i][0]+pp[2]->dof[i][0]);

        parent->dof[i][2]=0.125*(pp[0]->dof[i][2]+pp[1]->dof[i][2]
            +pp[2]->dof[i][2]+pp[3]->dof[i][2])
            +0.375*(-pp[0]->dof[i][0]-pp[1]->dof[i][0]
                +pp[3]->dof[i][0]+pp[2]->dof[i][0]);

        parent->dof[i][3]=0.0625*(pp[0]->dof[i][3]+pp[1]->dof[i][3]
            +pp[2]->dof[i][3]+pp[3]->dof[i][3])
            +0.1875*(-pp[0]->dof[i][2]+pp[1]->dof[i][2]
                -pp[3]->dof[i][2]+pp[2]->dof[i][2])
            +0.1875*(-pp[0]->dof[i][1]-pp[1]->dof[i][1]
                +pp[3]->dof[i][1]+pp[2]->dof[i][1])
            +0.5625*(pp[0]->dof[i][0]-pp[1]->dof[i][0]
                -pp[3]->dof[i][0]+pp[2]->dof[i][0]);

        parent->dof[i][4]=0.0625*(pp[0]->dof[i][4]+pp[1]->dof[i][4]
            +pp[2]->dof[i][4]+pp[3]->dof[i][4])
            +0.46875*(-pp[0]->dof[i][1]+pp[1]->dof[i][1]
                -pp[3]->dof[i][1]+pp[2]->dof[i][1]);

        parent->dof[i][5]=0.0625*(pp[0]->dof[i][5]+pp[1]->dof[i][5]
            +pp[2]->dof[i][5]+pp[3]->dof[i][5])
            +0.46875*(-pp[0]->dof[i][2]-pp[1]->dof[i][2]
                +pp[3]->dof[i][2]+pp[2]->dof[i][2]);
    }
    parent->level0=pp[0]->level0;
    for(int i=0; i<4;++i){
        parent->children[i]=NULL;
      if(pp[i]!=NULL)delete pp[i];//TODO
//        if(pp[i]!=NULL)ColCoa.insert(pp[i]);//TODO
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rax
movq 0x8(%rsi), %rcx
movq 0x10(%rsi), %rdx
movq 0x18(%rsi), %rsi
xorl %edi, %edi
movsd 0x1b7e(%rip), %xmm0     # 0x1d7c0
movsd 0x20ce(%rip), %xmm1     # 0x1dd18
movsd 0x1a16(%rip), %xmm2     # 0x1d668
movapd 0x1446(%rip), %xmm3     # 0x1d0a0
movsd 0x20be(%rip), %xmm4     # 0x1dd20
movsd 0x20be(%rip), %xmm5     # 0x1dd28
movsd 0x20be(%rip), %xmm6     # 0x1dd30
movsd 0x20be(%rip), %xmm7     # 0x1dd38
movsd 0x30(%rax,%rdi), %xmm8
addsd 0x30(%rcx,%rdi), %xmm8
addsd 0x30(%rdx,%rdi), %xmm8
addsd 0x30(%rsi,%rdi), %xmm8
mulsd %xmm0, %xmm8
movsd %xmm8, 0x30(%r14,%rdi)
movsd 0x38(%rax,%rdi), %xmm8
addsd 0x38(%rcx,%rdi), %xmm8
addsd 0x38(%rdx,%rdi), %xmm8
addsd 0x38(%rsi,%rdi), %xmm8
movsd 0x30(%rcx,%rdi), %xmm9
subsd 0x30(%rax,%rdi), %xmm9
subsd 0x30(%rsi,%rdi), %xmm9
addsd 0x30(%rdx,%rdi), %xmm9
mulsd %xmm1, %xmm9
mulsd %xmm2, %xmm8
addsd %xmm9, %xmm8
movsd %xmm8, 0x38(%r14,%rdi)
movsd 0x40(%rax,%rdi), %xmm8
addsd 0x40(%rcx,%rdi), %xmm8
addsd 0x40(%rdx,%rdi), %xmm8
addsd 0x40(%rsi,%rdi), %xmm8
movsd 0x30(%rax,%rdi), %xmm9
xorpd %xmm3, %xmm9
subsd 0x30(%rcx,%rdi), %xmm9
addsd 0x30(%rsi,%rdi), %xmm9
addsd 0x30(%rdx,%rdi), %xmm9
mulsd %xmm1, %xmm9
mulsd %xmm2, %xmm8
addsd %xmm9, %xmm8
movsd %xmm8, 0x40(%r14,%rdi)
movsd 0x48(%rax,%rdi), %xmm8
addsd 0x48(%rcx,%rdi), %xmm8
addsd 0x48(%rdx,%rdi), %xmm8
addsd 0x48(%rsi,%rdi), %xmm8
movsd 0x40(%rcx,%rdi), %xmm9
subsd 0x40(%rax,%rdi), %xmm9
subsd 0x40(%rsi,%rdi), %xmm9
addsd 0x40(%rdx,%rdi), %xmm9
mulsd %xmm4, %xmm9
mulsd %xmm5, %xmm8
movsd 0x38(%rax,%rdi), %xmm10
xorpd %xmm3, %xmm10
subsd 0x38(%rcx,%rdi), %xmm10
addsd 0x38(%rsi,%rdi), %xmm10
addsd %xmm9, %xmm8
addsd 0x38(%rdx,%rdi), %xmm10
mulsd %xmm4, %xmm10
addsd %xmm8, %xmm10
movsd 0x30(%rax,%rdi), %xmm8
subsd 0x30(%rcx,%rdi), %xmm8
subsd 0x30(%rsi,%rdi), %xmm8
addsd 0x30(%rdx,%rdi), %xmm8
mulsd %xmm6, %xmm8
addsd %xmm10, %xmm8
movsd %xmm8, 0x48(%r14,%rdi)
movsd 0x50(%rax,%rdi), %xmm8
addsd 0x50(%rcx,%rdi), %xmm8
addsd 0x50(%rdx,%rdi), %xmm8
addsd 0x50(%rsi,%rdi), %xmm8
movsd 0x38(%rcx,%rdi), %xmm9
subsd 0x38(%rax,%rdi), %xmm9
subsd 0x38(%rsi,%rdi), %xmm9
addsd 0x38(%rdx,%rdi), %xmm9
mulsd %xmm7, %xmm9
mulsd %xmm5, %xmm8
addsd %xmm9, %xmm8
movsd %xmm8, 0x50(%r14,%rdi)
movsd 0x58(%rax,%rdi), %xmm8
addsd 0x58(%rcx,%rdi), %xmm8
addsd 0x58(%rdx,%rdi), %xmm8
addsd 0x58(%rsi,%rdi), %xmm8
movsd 0x40(%rax,%rdi), %xmm9
xorpd %xmm3, %xmm9
subsd 0x40(%rcx,%rdi), %xmm9
addsd 0x40(%rsi,%rdi), %xmm9
addsd 0x40(%rdx,%rdi), %xmm9
mulsd %xmm7, %xmm9
mulsd %xmm5, %xmm8
addsd %xmm9, %xmm8
movsd %xmm8, 0x58(%r14,%rdi)
addq $0x30, %rdi
cmpq $0xc0, %rdi
jne 0x1bc7a
movq (%rbx), %rax
movzwl 0x1fa(%rax), %eax
movw %ax, 0x1fa(%r14)
xorl %r15d, %r15d
movq $0x0, 0x258(%r14,%r15,8)
movq (%rbx,%r15,8), %rdi
testq %rdi, %rdi
je 0x1bec8
movl $0x360, %esi            # imm = 0x360
callq 0x3220
incq %r15
cmpq $0x4, %r15
jne 0x1bea9
popq %rbx
popq %r14
popq %r15
retq