// File: /workspace/github_cpp_makefile_star2_O1/suhasjains[P]AMR-Solver/src/ghost.cpp
// Function: amrsolver::prolongate_for_multilevel_ghost_exchange_at(myOctree::Octree*, myOctree::Octree*, int, int, int, int, int, int, int, int, int, int)
void prolongate_for_multilevel_ghost_exchange_at(Octree* node, Octree* par_neigh, int l, int i, int j, int k, int iv, int jv, int kv, int loc_x, int loc_y, int loc_z) {

	Block* b =node->get_block_data(); 

	if(loc_x==1) {
    		if(loc_y==1) {
                  	if(loc_z==1) {
                       		prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,b->iNx/2,b->iNy/2,b->iNz/2);
      	           	}
         		else if(loc_z==0) {
                         	prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,b->iNx/2,b->iNy/2,0);
                 	}
          	}
                else if(loc_y==0) {
                	if(loc_z==1) {
                       		prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,b->iNx/2,0,b->iNz/2);
                   	}
                 	else if(loc_z==0) {
                        	prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,b->iNx/2,0,0);
                    	}
      		}
        }
	if(loc_x==0) {
            	if(loc_y==1) {
               		if(loc_z==1) {
                    		prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,0,b->iNy/2,b->iNz/2);
                   	}
          		else if(loc_z==0) {
                        	prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,0,b->iNy/2,0);
                  	}
            	}
    		else if(loc_y==0) {
         		if(loc_z==1) {
          			prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,0,0,b->iNz/2);
            		}
           		else if(loc_z==0) {
                  		prolongate_multilevel_ghost_exchange_for_child(node, par_neigh,l,i,j,k,iv, jv, kv,0,0,0);
           		}
    		}
        }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r9d, -0x34(%rbp)
movl %r8d, -0x30(%rbp)
movl %ecx, -0x2c(%rbp)
movl %edx, %r12d
movq %rsi, %r13
movq %rdi, %rbx
movl 0x30(%rbp), %r14d
movl 0x28(%rbp), %r15d
callq 0x4064
testl %r15d, %r15d
je 0x8de2
cmpl $0x1, %r15d
jne 0x8e8c
testl %r14d, %r14d
je 0x8cf4
cmpl $0x1, %r14d
jne 0x8dd9
movl 0x38(%rbp), %eax
testl %eax, %eax
je 0x8d4e
cmpl $0x1, %eax
jne 0x8dd9
leaq 0xc9b9(%rip), %rax      # 0x15658
movl (%rax), %ecx
movl %ecx, %eax
shrl $0x1f, %eax
addl %ecx, %eax
sarl %eax
leaq 0xc9ab(%rip), %rcx      # 0x1565c
movl (%rcx), %ecx
movl %ecx, %r10d
shrl $0x1f, %r10d
addl %ecx, %r10d
sarl %r10d
leaq 0xc999(%rip), %rcx      # 0x15660
movl (%rcx), %ecx
movl %ecx, %r11d
shrl $0x1f, %r11d
addl %ecx, %r11d
sarl %r11d
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq %r11
pushq %r10
pushq %rax
jmp 0x8dc4
movl 0x38(%rbp), %eax
testl %eax, %eax
je 0x8d94
cmpl $0x1, %eax
jne 0x8dd9
leaq 0xc949(%rip), %rax      # 0x15658
movl (%rax), %eax
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
leaq 0xc93b(%rip), %rax      # 0x15660
movl (%rax), %eax
movl %eax, %r11d
shrl $0x1f, %r11d
addl %eax, %r11d
sarl %r11d
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq %r11
pushq $0x0
jmp 0x8dc2
leaq 0xc903(%rip), %rax      # 0x15658
movl (%rax), %eax
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
leaq 0xc8f1(%rip), %rax      # 0x1565c
movl (%rax), %eax
movl %eax, %r11d
shrl $0x1f, %r11d
addl %eax, %r11d
sarl %r11d
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq $0x0
pushq %r11
jmp 0x8dc2
leaq 0xc8bd(%rip), %rax      # 0x15658
movl (%rax), %eax
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
xorl %eax, %eax
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq %rax
pushq %rax
pushq %r10
movl 0x20(%rbp), %eax
pushq %rax
movl 0x18(%rbp), %eax
pushq %rax
movl 0x10(%rbp), %eax
pushq %rax
callq 0x8709
addq $0x30, %rsp
testl %r15d, %r15d
jne 0x8e8c
testl %r14d, %r14d
je 0x8e50
cmpl $0x1, %r14d
jne 0x8e8c
movl 0x38(%rbp), %eax
testl %eax, %eax
je 0x8e92
cmpl $0x1, %eax
jne 0x8e8c
leaq 0xc850(%rip), %rax      # 0x1565c
movl (%rax), %eax
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
leaq 0xc83e(%rip), %rax      # 0x15660
movl (%rax), %eax
movl %eax, %r11d
shrl $0x1f, %r11d
addl %eax, %r11d
sarl %r11d
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq %r11
pushq %r10
pushq $0x0
jmp 0x8edc
movl 0x38(%rbp), %eax
testl %eax, %eax
je 0x8ec3
cmpl $0x1, %eax
jne 0x8e8c
leaq 0xc7fd(%rip), %rax      # 0x15660
movl (%rax), %eax
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
xorl %eax, %eax
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq %r10
jmp 0x8eda
addq $0x18, %rsp
jmp 0x8ef1
leaq 0xc7c3(%rip), %rax      # 0x1565c
movl (%rax), %eax
movl %eax, %r10d
shrl $0x1f, %r10d
addl %eax, %r10d
sarl %r10d
xorl %eax, %eax
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq %rax
pushq %r10
jmp 0x8edb
xorl %eax, %eax
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %r8d
movl -0x34(%rbp), %r9d
pushq %rax
pushq %rax
pushq %rax
movl 0x20(%rbp), %eax
pushq %rax
movl 0x18(%rbp), %eax
pushq %rax
movl 0x10(%rbp), %eax
pushq %rax
callq 0x8709
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq