// File: /workspace/github_cpp_makefile_star2_O2/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, -0x38(%rbp)
movl %r8d, -0x34(%rbp)
movl %ecx, -0x30(%rbp)
movl %edx, -0x2c(%rbp)
movq %rsi, %r13
movq %rdi, %rbx
movl 0x38(%rbp), %r14d
movl 0x30(%rbp), %r15d
movl 0x28(%rbp), %r12d
callq 0x3db0
testl %r12d, %r12d
je 0x820b
cmpl $0x1, %r12d
jne 0x82e9
testl %r15d, %r15d
je 0x826b
cmpl $0x1, %r15d
jne 0x82e9
testl %r14d, %r14d
je 0x82f2
cmpl $0x1, %r14d
jne 0x82e9
leaq 0xb47f(%rip), %rax      # 0x13648
movl (%rax), %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
movl %eax, %r10d
leaq 0xb471(%rip), %rax      # 0x1364c
movl (%rax), %eax
cltd
idivl %ecx
movl %eax, %r11d
leaq 0xb466(%rip), %rax      # 0x13650
movl (%rax), %eax
cltd
idivl %ecx
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq %rax
pushq %r11
jmp 0x8327
testl %r15d, %r15d
je 0x82b1
cmpl $0x1, %r15d
jne 0x82e9
testl %r14d, %r14d
je 0x832b
cmpl $0x1, %r14d
jne 0x82e9
leaq 0xb414(%rip), %rax      # 0x1364c
movl (%rax), %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
movl %eax, %r10d
leaq 0xb406(%rip), %rax      # 0x13650
movl (%rax), %eax
cltd
idivl %ecx
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq %rax
pushq %r10
jmp 0x8395
testl %r14d, %r14d
je 0x8353
cmpl $0x1, %r14d
jne 0x82e9
leaq 0xb3c7(%rip), %rax      # 0x13648
movl (%rax), %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
movl %eax, %r10d
leaq 0xb3bd(%rip), %rax      # 0x13650
movl (%rax), %eax
cltd
idivl %ecx
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq %rax
pushq $0x0
jmp 0x8327
testl %r14d, %r14d
je 0x837d
cmpl $0x1, %r14d
jne 0x82e9
leaq 0xb389(%rip), %rax      # 0x13650
movl (%rax), %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq %rax
jmp 0x8393
addq $0x18, %rsp
jmp 0x83ac
leaq 0xb34f(%rip), %rax      # 0x13648
movl (%rax), %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
movl %eax, %r10d
leaq 0xb341(%rip), %rax      # 0x1364c
movl (%rax), %eax
cltd
idivl %ecx
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq $0x0
pushq %rax
pushq %r10
jmp 0x8397
leaq 0xb31a(%rip), %rax      # 0x1364c
movl (%rax), %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq $0x0
pushq %rax
jmp 0x8395
leaq 0xb2ee(%rip), %rax      # 0x13648
movl (%rax), %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq $0x0
pushq $0x0
pushq %rax
jmp 0x8397
movq %rbx, %rdi
movq %r13, %rsi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movl -0x34(%rbp), %r8d
movl -0x38(%rbp), %r9d
pushq $0x0
pushq $0x0
pushq $0x0
movl 0x20(%rbp), %eax
pushq %rax
movl 0x18(%rbp), %eax
pushq %rax
movl 0x10(%rbp), %eax
pushq %rax
callq 0x7d11
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq