// File: /workspace/github_cpp_makefile_star2_O2/suhasjains[P]AMR-Solver/src/ghost.cpp
// Function: amrsolver::exchange_ghost_val(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void exchange_ghost_val(int level, std::string name) {

	myOctree::create_lists_of_level_nodes();

	if(level_nodes[level].empty()) {
		std::cerr << "Error!: No blocks to exchange ghost values in level " << level << std::endl; 
		exit(1);
	}

	for (std::list<Octree*>::iterator it = level_nodes[level].begin(), end = level_nodes[level].end(); it != end; ++it) {	

		for(int l = 0; l<scalar_fields.size() ; l++) {
			
			Field *f = (*it)->get_block_data()->scalarfields[l];

                        if( f->name == name ) {
			
				//exchanging ghost cells
				for (int m=0; m<3; m++) {
                        		for (int n=0; n<2; n++) {

						if((*it)->bc[m][n] == NONE && (*it)->neighbour[m][n] != NULL) {
				
										
							if(n==RIGHT && m==XDIR) {
						
								for(int i=nx_block+pad; i<f->Nx; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->val[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i-nx_block][j][k]; 
										}
									}
								}
							}
							if(n==LEFT && m==XDIR) {
						
								for(int i=0; i<pad; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->val[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i+nx_block][j][k]; 
										}
									}
								}	
							}
							if(n==RIGHT && m==YDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=ny_block+pad; j<f->Ny; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->val[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j-ny_block][k]; 
										}
									}
								}
							}
							if(n==LEFT && m==YDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=0; j<pad; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->val[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j+ny_block][k]; 
										}
									}
								}	
							}
							if(n==RIGHT && m==ZDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=nz_block+pad; k<f->Nz; k++) {
								
											f->val[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j][k-nz_block]; 
										}
									}
								}
							}
							if(n==LEFT && m==ZDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=0; k<pad; k++) {
								
											f->val[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j][k+nz_block]; 
										}
									}
								}	
							}
						}
                                   	}
                          	}
			}
		}
		
		for(int l = 0; l<vector_fields.size() ; l++) {
			
			VecField *f = (*it)->get_block_data()->vectorfields[l];

                        if( f->name == name ) {
			
				//exchanging ghost cells
				for (int m=0; m<3; m++) {
                        		for (int n=0; n<2; n++) {

						if((*it)->bc[m][n] == NONE && (*it)->neighbour[m][n] != NULL) {
										
						
							if(n==RIGHT && m==XDIR) {
						
								for(int i=nx_block+pad; i<f->Nx; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->x[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i-nx_block][j][k]; 
											f->y[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i-nx_block][j][k]; 
											f->z[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i-nx_block][j][k]; 
										}
									}
								}
							}
							if(n==LEFT && m==XDIR) {
						
								for(int i=0; i<pad; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->x[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i+nx_block][j][k]; 
											f->y[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i+nx_block][j][k]; 
											f->z[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i+nx_block][j][k]; 
										}
									}
								}	
							}
							if(n==RIGHT && m==YDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=ny_block+pad; j<f->Ny; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->x[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j-ny_block][k]; 
											f->y[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j-ny_block][k]; 
											f->z[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j-ny_block][k]; 
										}
									}
								}
							}
							if(n==LEFT && m==YDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=0; j<pad; j++) {
                                                        			for(int k=pad; k<nz_block+pad; k++) {
								
											f->x[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j+ny_block][k]; 
											f->y[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j+ny_block][k]; 
											f->z[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j+ny_block][k]; 
										}
									}
								}	
							}
							if(n==RIGHT && m==ZDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=nz_block+pad; k<f->Nz; k++) {
								
											f->x[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j][k-nz_block]; 
											f->y[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j][k-nz_block]; 
											f->z[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j][k-nz_block]; 
										}
									}
								}
							}
							if(n==LEFT && m==ZDIR) {
						
								for(int i=pad; i<nx_block+pad; i++) {
                                                			for(int j=pad; j<ny_block+pad; j++) {
                                                        			for(int k=0; k<pad; k++) {
								
											f->x[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j][k+nz_block]; 
											f->y[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j][k+nz_block]; 
											f->z[i][j][k] = \
							 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j][k+nz_block]; 
										}
									}
								}	
							}
						
						
						
						
						
						
						}
                                   	}
                          	}
			}
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, -0x78(%rbp)
movl %edi, %r14d
callq 0x2e8e
movslq %r14d, %rax
imulq $0x18, %rax, %rax
leaq 0xc57d(%rip), %rcx      # 0x13240
leaq (%rcx,%rax), %rdx
movq (%rcx,%rax), %r15
movq %rdx, -0x80(%rbp)
cmpq %rdx, %r15
jne 0x7cf8
movq 0xc311(%rip), %rdi      # 0x12ff0
leaq 0x851c(%rip), %rsi      # 0xf202
callq 0x21d0
movq %rax, %rdi
movl %r14d, %esi
callq 0x2310
movq %rax, %rdi
callq 0x2110
pushq $0x1
popq %rdi
callq 0x2220
xorl %r12d, %r12d
movq %r15, -0x50(%rbp)
leaq 0xc904(%rip), %rcx      # 0x13618
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x5, %rax
cmpq %r12, %rax
jbe 0x729f
movq 0x10(%r15), %rdi
callq 0x3db0
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %r13
leaq 0x18(%r13), %rdi
movq -0x78(%rbp), %rsi
callq 0x6c56
testb %al, %al
je 0x7293
xorl %ecx, %ecx
movq %r12, -0x30(%rbp)
cmpq $0x3, %rcx
je 0x7293
movq %rcx, %r14
shlq $0x4, %r14
xorl %edx, %edx
movq %r14, -0x38(%rbp)
movq %rcx, -0x40(%rbp)
cmpq $0x2, %rdx
je 0x728b
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
leaq (%rax,%rcx,8), %rcx
movq %rdx, -0x48(%rbp)
cmpl $0x0, 0x38(%rcx,%rdx,4)
je 0x6d9d
movq -0x48(%rbp), %rdx
incq %rdx
movq -0x40(%rbp), %rcx
jmp 0x6d6f
addq %r14, %rax
movq -0x48(%rbp), %rcx
cmpq $0x0, 0x8(%rax,%rcx,8)
je 0x6d90
movq -0x48(%rbp), %rax
orl -0x40(%rbp), %eax
je 0x71bf
movq -0x48(%rbp), %rcx
xorq $0x1, %rcx
movq -0x40(%rbp), %rax
movq %rcx, -0x58(%rbp)
orq %rcx, %rax
jne 0x6e86
leaq 0xc3f7(%rip), %rax      # 0x131d0
movl (%rax), %eax
xorl %ebx, %ebx
movslq %eax, %r15
cmpq %r15, %rbx
jge 0x6e86
movslq %ebx, %r12
leaq 0xc3e5(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %r14
addq %r14, %rcx
cmpq %rcx, %r15
jl 0x6e5d
jmp 0x6e7a
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x3db0
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xc3a9(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
addq %r12, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r13), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xc375(%rip), %rax      # 0x131d0
movl (%rax), %eax
leaq 0xc378(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r14
jl 0x6e03
incq %r15
jmp 0x6dec
incq %rbx
movq -0x38(%rbp), %r14
jmp 0x6ddd
movq -0x40(%rbp), %rbx
xorq $0x1, %rbx
movq %rbx, %rax
orq -0x48(%rbp), %rax
jne 0x6f66
leaq 0xc32e(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %r15
leaq 0xc326(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r15
jge 0x6f66
leaq 0xc311(%rip), %rcx      # 0x131d8
movl (%rcx), %ecx
addl %eax, %ecx
movslq %ecx, %r12
movslq 0x4(%r13), %rcx
cmpq %rcx, %r12
jge 0x6f5e
movslq %eax, %r14
leaq 0xc2f7(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r14
jge 0x6f52
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x3db0
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
leaq 0xc2b9(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movq %r12, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r13), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xc282(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x6ede
incq %r12
movq -0x38(%rbp), %r14
jmp 0x6ece
incq %r15
jmp 0x6ea7
orq -0x58(%rbp), %rbx
jne 0x7028
leaq 0xc259(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %rbx
leaq 0xc251(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %rbx
jge 0x7028
xorl %r15d, %r15d
movslq %eax, %r14
cmpq %r14, %r15
jge 0x701c
movslq %r15d, %r12
leaq 0xc232(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r14
jge 0x7014
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rdi
callq 0x3db0
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
leaq 0xc1f4(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
addq %r12, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r13), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xc1c0(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x6fa3
incq %r15
jmp 0x6f98
incq %rbx
movq -0x38(%rbp), %r14
jmp 0x6f7c
movq -0x40(%rbp), %rbx
xorq $0x2, %rbx
movq %rbx, %rax
orq -0x48(%rbp), %rax
jne 0x7104
leaq 0xc18c(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %r15
leaq 0xc184(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %r12
addq %r12, %rcx
cmpq %rcx, %r15
jge 0x7104
leaq 0xc16f(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r12
jge 0x70fc
leaq 0xc15a(%rip), %rcx      # 0x131dc
addl (%rcx), %eax
movslq %eax, %r14
movslq 0x8(%r13), %rax
cmpq %rax, %r14
jge 0x70e7
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rdi
callq 0x3db0
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
leaq 0xc11c(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r13), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
jmp 0x7087
incq %r12
leaq 0xc0df(%rip), %rax      # 0x131d0
movl (%rax), %eax
movq -0x38(%rbp), %r14
jmp 0x7062
incq %r15
jmp 0x7049
orq -0x58(%rbp), %rbx
movq -0x30(%rbp), %r12
jne 0x6d90
leaq 0xc0b7(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %rbx
leaq 0xc0af(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %r15
addq %r15, %rcx
cmpq %rcx, %rbx
jge 0x6d90
leaq 0xc09a(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r15
jge 0x71b7
xorl %r14d, %r14d
movslq %eax, %rcx
cmpq %rcx, %r14
jge 0x71ae
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x30(%rax), %rdi
callq 0x3db0
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
leaq 0xc059(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
addq %r14, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x10(%r13), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xc026(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x714f
incq %r15
movq -0x38(%rbp), %r14
jmp 0x7137
incq %rbx
jmp 0x711e
leaq 0xc00a(%rip), %rax      # 0x131d0
movl (%rax), %eax
leaq 0xc005(%rip), %rcx      # 0x131d4
movl (%rcx), %ecx
addl %eax, %ecx
movslq %ecx, %rbx
movslq (%r13), %rcx
cmpq %rcx, %rbx
jge 0x6db9
movslq %eax, %r15
leaq 0xbfeb(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %r12
addq %r12, %rcx
cmpq %rcx, %r15
jge 0x7283
leaq 0xbfd6(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r12
jge 0x727b
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
addq %r14, %rax
movq -0x48(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x3db0
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xbf90(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x10(%r13), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xbf59(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x71ff
incq %r15
jmp 0x71e6
incq %rbx
jmp 0x71d6
incq %rcx
jmp 0x6d54
incq %r12
movq -0x50(%rbp), %r15
jmp 0x6d0d
xorl %edx, %edx
leaq 0xc388(%rip), %rcx      # 0x13630
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x5, %rax
cmpq %rdx, %rax
jbe 0x7cf5
movq 0x10(%r15), %rdi
movq %rdx, %rbx
callq 0x3db0
movq 0x18(%rax), %rax
movq %rbx, -0x48(%rbp)
movq (%rax,%rbx,8), %r14
leaq 0x28(%r14), %rdi
movq -0x78(%rbp), %rsi
callq 0x6c56
testb %al, %al
je 0x7ce9
xorl %eax, %eax
movq %r14, -0x30(%rbp)
cmpq $0x3, %rax
je 0x7ce9
xorl %ecx, %ecx
movq %rax, -0x60(%rbp)
cmpq $0x2, %rcx
je 0x7ce1
movq %rcx, %rdx
movq %rax, %rcx
movq 0x10(%r15), %rax
leaq (%rax,%rcx,8), %rcx
movq %rdx, -0x58(%rbp)
cmpl $0x0, 0x38(%rcx,%rdx,4)
je 0x7333
movq -0x58(%rbp), %rcx
incq %rcx
movq -0x60(%rbp), %rax
movq -0x50(%rbp), %r15
jmp 0x72ff
movq -0x60(%rbp), %rcx
shlq $0x4, %rcx
movq %rcx, -0x38(%rbp)
addq %rcx, %rax
movq -0x58(%rbp), %rcx
cmpq $0x0, 0x8(%rax,%rcx,8)
je 0x7322
movq -0x58(%rbp), %rax
orl -0x60(%rbp), %eax
je 0x7b39
movq -0x58(%rbp), %rcx
movq %rcx, %rdx
xorq $0x1, %rdx
movq -0x60(%rbp), %rax
movq %rdx, -0x68(%rbp)
orq %rdx, %rax
jne 0x74ed
leaq 0xbe52(%rip), %rax      # 0x131d0
movl (%rax), %eax
xorl %edx, %edx
movslq %eax, %r15
cmpq %r15, %rdx
jge 0x74ed
movq %rdx, -0x40(%rbp)
movslq %edx, %rcx
movq %rcx, -0x38(%rbp)
leaq 0xbe38(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %r13
addq %r13, %rcx
cmpq %rcx, %r15
jl 0x74b8
jmp 0x74dd
movq -0x50(%rbp), %r12
movq 0x10(%r12), %rax
movq 0x10(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xbdf4(%rip), %r14      # 0x131d4
movslq (%r14), %rcx
movq -0x38(%rbp), %r14
addq %r14, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x40(%rbp), %rbx
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r13,8)
movq 0x10(%r12), %rax
movq 0x10(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r12
movq (%rax,%r12,8), %rax
movq 0x18(%rax), %rax
leaq 0xbd9d(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
addq %r14, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq -0x30(%rbp), %r14
movq 0x18(%r14), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r13,8)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rax
leaq 0xbd4f(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
addq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x20(%r14), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r13,8)
incq %r13
leaq 0xbd1a(%rip), %rax      # 0x131d0
movl (%rax), %eax
leaq 0xbd1d(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r13
jl 0x73b7
incq %r15
movq -0x30(%rbp), %r14
jmp 0x7399
movq -0x40(%rbp), %rdx
incq %rdx
movq -0x58(%rbp), %rcx
jmp 0x7382
movq -0x60(%rbp), %rax
xorq $0x1, %rax
movq %rax, -0x70(%rbp)
orq %rcx, %rax
jne 0x7692
leaq 0xbcc7(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %rdi
leaq 0xbcbf(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %rdi
jge 0x7692
movq %rdi, -0x40(%rbp)
leaq 0xbca6(%rip), %rcx      # 0x131d8
movl (%rcx), %ecx
addl %eax, %ecx
movslq %ecx, %rdx
movq -0x30(%rbp), %rcx
movslq 0x4(%rcx), %rcx
cmpq %rcx, %rdx
jge 0x7682
movq %rdx, -0x38(%rbp)
movslq %eax, %r13
leaq 0xbc84(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r13
jge 0x7676
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r15
movq (%rax,%r15,8), %rax
movq 0x10(%rax), %rax
movq -0x40(%rbp), %r12
movq (%rax,%r12,8), %rax
leaq 0xbc3e(%rip), %r14      # 0x131d8
movslq (%r14), %rcx
movq -0x38(%rbp), %rbx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r13,8), %xmm0
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r13,8)
movq -0x50(%rbp), %r14
movq 0x10(%r14), %rax
movq 0x18(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r12,8), %rax
leaq 0xbbe9(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r13,8), %xmm0
movq -0x30(%rbp), %r15
movq 0x18(%r15), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r13,8)
movq 0x10(%r14), %rax
movq 0x18(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r12,8), %rax
leaq 0xbb98(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x20(%r15), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r13,8)
incq %r13
leaq 0xbb61(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x7551
movq -0x38(%rbp), %rdx
incq %rdx
jmp 0x7539
movq -0x40(%rbp), %rdi
incq %rdi
movq -0x30(%rbp), %r14
jmp 0x750e
movq -0x70(%rbp), %rax
orq -0x68(%rbp), %rax
jne 0x7816
leaq 0xbb29(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %rbx
leaq 0xbb21(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %rbx
jge 0x7816
xorl %edi, %edi
movslq %eax, %r12
cmpq %r12, %rdi
jge 0x780a
movslq %edi, %rcx
movq %rcx, -0x40(%rbp)
movq %rdi, -0x38(%rbp)
leaq 0xbaf7(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r12
jge 0x7802
movq -0x50(%rbp), %r13
movq 0x10(%r13), %rax
movq 0x20(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
leaq 0xbab5(%rip), %r15      # 0x131d8
movslq (%r15), %rcx
movq -0x40(%rbp), %rdx
addq %rdx, %rcx
movq %rdx, %r14
movq (%rax,%rcx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r13), %rax
movq 0x20(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r15
movq (%rax,%r15,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%rbx,8), %rax
leaq 0xba5c(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
addq %r14, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x30(%rbp), %r14
movq 0x18(%r14), %rax
movq (%rax,%rbx,8), %rax
movq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r13), %rax
movq 0x20(%rax), %rdi
callq 0x3db0
movq -0x38(%rbp), %rdi
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%rbx,8), %rax
leaq 0xba0a(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
addq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%r14), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%rdi,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xb9d5(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x76de
incq %rdi
jmp 0x76c7
incq %rbx
movq -0x30(%rbp), %r14
jmp 0x76ac
movq -0x60(%rbp), %rax
xorq $0x2, %rax
movq %rax, -0x70(%rbp)
orq -0x58(%rbp), %rax
jne 0x79ba
leaq 0xb99d(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %rsi
leaq 0xb995(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %rdi
addq %rdi, %rcx
cmpq %rcx, %rsi
jge 0x79ba
movq %rsi, -0x40(%rbp)
leaq 0xb97c(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %rdi
jge 0x79b2
movq %rdi, -0x38(%rbp)
leaq 0xb963(%rip), %rcx      # 0x131dc
addl (%rcx), %eax
movslq %eax, %r12
movq -0x30(%rbp), %rax
movslq 0x8(%rax), %rax
cmpq %rax, %r12
jge 0x7995
movq -0x50(%rbp), %r13
movq 0x10(%r13), %rax
movq 0x28(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq -0x40(%rbp), %r15
movq (%rax,%r15,8), %rax
movq -0x38(%rbp), %rbx
movq (%rax,%rbx,8), %rax
leaq 0xb915(%rip), %r14      # 0x131dc
movslq (%r14), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r12,8), %xmm0
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r13), %rax
movq 0x28(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r14
movq (%rax,%r14,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
leaq 0xb8c3(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r12,8), %xmm0
movq -0x30(%rbp), %r13
movq 0x18(%r13), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
leaq 0xb871(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%r13), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
jmp 0x787e
movq -0x38(%rbp), %rdi
incq %rdi
leaq 0xb82d(%rip), %rax      # 0x131d0
movl (%rax), %eax
movq -0x30(%rbp), %r14
movq -0x40(%rbp), %rsi
jmp 0x7855
incq %rsi
jmp 0x7838
movq -0x70(%rbp), %rax
orq -0x68(%rbp), %rax
jne 0x7322
leaq 0xb801(%rip), %rax      # 0x131d0
movl (%rax), %eax
movslq %eax, %rsi
leaq 0xb7f9(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movslq %eax, %rdi
addq %rdi, %rcx
cmpq %rcx, %rsi
jge 0x7322
movq %rsi, -0x40(%rbp)
leaq 0xb7e0(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %rdi
jge 0x7b31
movq %rdi, -0x38(%rbp)
xorl %r12d, %r12d
movslq %eax, %rcx
cmpq %rcx, %r12
jge 0x7b1d
movq -0x50(%rbp), %r13
movq 0x10(%r13), %rax
movq 0x30(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq -0x40(%rbp), %r15
movq (%rax,%r15,8), %rax
movq -0x38(%rbp), %rbx
movq (%rax,%rbx,8), %rax
leaq 0xb787(%rip), %r14      # 0x131dc
movslq (%r14), %rcx
addq %r12, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r13), %rax
movq 0x30(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r14
movq (%rax,%r14,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
leaq 0xb73a(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
addq %r12, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x30(%rbp), %r13
movq 0x18(%r13), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x30(%rax), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
leaq 0xb6ed(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
addq %r12, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x20(%r13), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xb6ba(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x7a11
movq -0x38(%rbp), %rdi
incq %rdi
movq -0x30(%rbp), %r14
movq -0x40(%rbp), %rsi
jmp 0x79f1
incq %rsi
jmp 0x79d4
leaq 0xb690(%rip), %rax      # 0x131d0
movl (%rax), %eax
leaq 0xb68b(%rip), %rcx      # 0x131d4
movl (%rcx), %ecx
addl %eax, %ecx
movslq %ecx, %rdx
movslq (%r14), %rcx
cmpq %rcx, %rdx
jge 0x735b
movq %rdx, -0x68(%rbp)
movslq %eax, %rdx
leaq 0xb66e(%rip), %rcx      # 0x131d8
movslq (%rcx), %rcx
movslq %eax, %r12
addq %r12, %rcx
cmpq %rcx, %rdx
jge 0x7cd1
movq %rdx, -0x40(%rbp)
leaq 0xb655(%rip), %rcx      # 0x131dc
movslq (%rcx), %rcx
movslq %eax, %rdx
addq %rcx, %rdx
cmpq %rdx, %r12
jge 0x7cc5
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x38(%rbp), %r15
addq %r15, %rax
movq -0x58(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
movq %rcx, %r13
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xb604(%rip), %r14      # 0x131d4
movslq (%r14), %rcx
movq -0x68(%rbp), %rbx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq -0x40(%rbp), %r14
movq (%rax,%r14,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
addq %r15, %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r15
movq (%rax,%r15,8), %rax
movq 0x18(%rax), %rax
leaq 0xb5a3(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%r14,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x30(%rbp), %r13
movq 0x18(%r13), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x38(%rbp), %rax
movq -0x58(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x3db0
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rax
leaq 0xb549(%rip), %rcx      # 0x131d4
movslq (%rcx), %rcx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%r14,8), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%r13), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xb512(%rip), %rax      # 0x131d0
movl (%rax), %eax
jmp 0x7b80
movq -0x40(%rbp), %rdx
incq %rdx
jmp 0x7b63
movq -0x68(%rbp), %rdx
incq %rdx
movq -0x30(%rbp), %r14
jmp 0x7b50
incq %rax
jmp 0x72ef
movq -0x48(%rbp), %rdx
incq %rdx
jmp 0x72a1
movq (%r15), %r15
cmpq -0x80(%rbp), %r15
jne 0x6d06
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq