// File: suhasjains[P]AMR-Solver/src/octreegrid.cpp
// Function: myOctree::set_root_neighbours()
void set_root_neighbours() {

	create_list_of_root_nodes();

	for (std::list<Octree*>::iterator i = root_nodes.begin(), end = root_nodes.end(); i != end; ++i) {

		double xmax = (*i)->x_max;			
		double ymax = (*i)->y_max;			
		double zmax = (*i)->z_max;			
		double xmin = (*i)->x_min;			
		double ymin = (*i)->y_min;			
		double zmin = (*i)->z_min;

		for (std::list<Octree*>::iterator j = root_nodes.begin(), end = root_nodes.end(); j != end; ++j) {
			/*change it to xmax_nbr*/
			double x_max = (*j)->x_max;			
			double y_max = (*j)->y_max;			
			double z_max = (*j)->z_max;			
			double x_min = (*j)->x_min;			
			double y_min = (*j)->y_min;			
			double z_min = (*j)->z_min;
	
		//	if(xmax==x_min&&ymax==y_max&&zmax==z_max)
		//		(*i)->east = (*j);	

		//	if(xmin==x_max&&ymax==y_max&&zmax==z_max)
		//		(*i)->west = (*j);	
		//	
		//	if(xmax==x_max&&ymax==y_min&&zmax==z_max)
		//		(*i)->north = (*j);	
		//		
		//	if(xmax==x_max&&ymin==y_max&&zmax==z_max)
		//		(*i)->south = (*j);	
		//	
		//	if(xmax==x_max&&ymax==y_max&&zmax==z_min)
		//		(*i)->top = (*j);	
		//	
		//	if(xmax==x_max&&ymax==y_max&&zmin==z_max)
		//		(*i)->bottom = (*j);	
			if(xmax==x_min&&ymax==y_max&&zmax==z_max)
				(*i)->neighbour[XDIR][RIGHT] = (*j);	

			if(xmin==x_max&&ymax==y_max&&zmax==z_max)
				(*i)->neighbour[XDIR][LEFT] = (*j);	
			
			if(xmax==x_max&&ymax==y_min&&zmax==z_max)
				(*i)->neighbour[YDIR][RIGHT] = (*j);	
				
			if(xmax==x_max&&ymin==y_max&&zmax==z_max)
				(*i)->neighbour[YDIR][LEFT] = (*j);	
			
			if(xmax==x_max&&ymax==y_max&&zmax==z_min)
				(*i)->neighbour[ZDIR][RIGHT] = (*j);	
			
			if(xmax==x_max&&ymax==y_max&&zmin==z_max)
				(*i)->neighbour[ZDIR][LEFT] = (*j);	
				
				
		}			
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
callq 0x49c0
leaq 0x21161(%rip), %rdi     # 0x262c8
callq 0x4490
movq %rax, -0x8(%rbp)
leaq 0x21151(%rip), %rdi     # 0x262c8
callq 0x44c0
movq %rax, -0x10(%rbp)
leaq -0x8(%rbp), %rdi
leaq -0x10(%rbp), %rsi
callq 0x44f0
testb $0x1, %al
jne 0x5196
jmp 0x54fe
leaq -0x8(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x70(%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x80(%rax), %xmm0
movsd %xmm0, -0x20(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x90(%rax), %xmm0
movsd %xmm0, -0x28(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x68(%rax), %xmm0
movsd %xmm0, -0x30(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x78(%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x88(%rax), %xmm0
movsd %xmm0, -0x40(%rbp)
leaq 0x2109e(%rip), %rdi     # 0x262c8
callq 0x4490
movq %rax, -0x48(%rbp)
leaq 0x2108e(%rip), %rdi     # 0x262c8
callq 0x44c0
movq %rax, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x44f0
testb $0x1, %al
jne 0x5259
jmp 0x54ee
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x70(%rax), %xmm0
movsd %xmm0, -0x58(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x80(%rax), %xmm0
movsd %xmm0, -0x60(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x90(%rax), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x68(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x78(%rax), %xmm0
movsd %xmm0, -0x78(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movsd 0x88(%rax), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x18(%rbp), %xmm0
ucomisd -0x70(%rbp), %xmm0
jne 0x533a
jp 0x533a
movsd -0x20(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jne 0x533a
jp 0x533a
movsd -0x28(%rbp), %xmm0
ucomisd -0x68(%rbp), %xmm0
jne 0x533a
jp 0x533a
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movq %rax, -0x88(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq -0x88(%rbp), %rcx
movq (%rax), %rax
movq %rcx, 0x8(%rax)
movsd -0x30(%rbp), %xmm0
ucomisd -0x58(%rbp), %xmm0
jne 0x538e
jp 0x538e
movsd -0x20(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jne 0x538e
jp 0x538e
movsd -0x28(%rbp), %xmm0
ucomisd -0x68(%rbp), %xmm0
jne 0x538e
jp 0x538e
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movq %rax, -0x90(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq -0x90(%rbp), %rcx
movq (%rax), %rax
movq %rcx, 0x10(%rax)
movsd -0x18(%rbp), %xmm0
ucomisd -0x58(%rbp), %xmm0
jne 0x53e2
jp 0x53e2
movsd -0x20(%rbp), %xmm0
ucomisd -0x78(%rbp), %xmm0
jne 0x53e2
jp 0x53e2
movsd -0x28(%rbp), %xmm0
ucomisd -0x68(%rbp), %xmm0
jne 0x53e2
jp 0x53e2
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movq %rax, -0x98(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq -0x98(%rbp), %rcx
movq (%rax), %rax
movq %rcx, 0x18(%rax)
movsd -0x18(%rbp), %xmm0
ucomisd -0x58(%rbp), %xmm0
jne 0x5436
jp 0x5436
movsd -0x38(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jne 0x5436
jp 0x5436
movsd -0x28(%rbp), %xmm0
ucomisd -0x68(%rbp), %xmm0
jne 0x5436
jp 0x5436
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq -0xa0(%rbp), %rcx
movq (%rax), %rax
movq %rcx, 0x20(%rax)
movsd -0x18(%rbp), %xmm0
ucomisd -0x58(%rbp), %xmm0
jne 0x548a
jp 0x548a
movsd -0x20(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jne 0x548a
jp 0x548a
movsd -0x28(%rbp), %xmm0
ucomisd -0x80(%rbp), %xmm0
jne 0x548a
jp 0x548a
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq -0xa8(%rbp), %rcx
movq (%rax), %rax
movq %rcx, 0x28(%rax)
movsd -0x18(%rbp), %xmm0
ucomisd -0x58(%rbp), %xmm0
jne 0x54de
jp 0x54de
movsd -0x20(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jne 0x54de
jp 0x54de
movsd -0x40(%rbp), %xmm0
ucomisd -0x68(%rbp), %xmm0
jne 0x54de
jp 0x54de
leaq -0x48(%rbp), %rdi
callq 0x4520
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x4520
movq -0xb0(%rbp), %rcx
movq (%rax), %rax
movq %rcx, 0x30(%rax)
jmp 0x54e0
leaq -0x48(%rbp), %rdi
callq 0x4550
jmp 0x5243
jmp 0x54f0
leaq -0x8(%rbp), %rdi
callq 0x4550
jmp 0x5180
addq $0xb0, %rsp
popq %rbp
retq
nopw (%rax,%rax)