// File: /workspace/github_cpp_makefile_star2_O1/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, -0x70(%rbp)
movl %edi, %r14d
callq 0x3010
movslq %r14d, %rax
leaq (%rax,%rax,2), %rax
leaq 0xde91(%rip), %rcx      # 0x15250
leaq (%rcx,%rax,8), %rax
movq (%rax), %r10
movq %rax, -0x80(%rbp)
cmpq %rax, %r10
je 0x86d9
leaq 0xde06(%rip), %r15      # 0x151e0
leaq 0xde07(%rip), %r13      # 0x151e8
leaq 0xe240(%rip), %rcx      # 0x15628
movq 0x8(%rcx), %rax
cmpq (%rcx), %rax
movq %r10, -0x30(%rbp)
je 0x7b13
xorl %ebx, %ebx
movq 0x10(%r10), %rdi
movq %r10, %r14
callq 0x4064
movq %r14, %r10
movq 0x10(%rax), %rax
movq %rbx, -0x58(%rbp)
movq (%rax,%rbx,8), %rdi
movq 0x20(%rdi), %rdx
movq -0x70(%rbp), %rax
cmpq 0x8(%rax), %rdx
movq %r15, %rsi
jne 0x7aee
testq %rdx, %rdx
movq %rdi, -0x38(%rbp)
je 0x745a
movq -0x70(%rbp), %rax
movq (%rax), %rsi
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x2210
movq %r14, %r10
movq -0x38(%rbp), %rdi
movq %r15, %rsi
testl %eax, %eax
jne 0x7aee
movq $0x0, -0x60(%rbp)
xorl %r8d, %r8d
movq 0x10(%r10), %rax
movq -0x60(%rbp), %rcx
leaq (%rax,%rcx,8), %rcx
cmpl $0x0, 0x38(%rcx,%r8,4)
je 0x748a
leaq 0x1(%r8), %rax
testq %r8, %r8
movq %rax, %r8
je 0x7465
jmp 0x7ad9
movq -0x60(%rbp), %r9
shlq $0x4, %r9
addq %r9, %rax
cmpq $0x0, 0x8(%rax,%r8,8)
je 0x7479
movl %r8d, %eax
orl -0x60(%rbp), %eax
leaq 0xdd42(%rip), %r11      # 0x151ec
movq %r8, -0x50(%rbp)
movq %r9, -0x40(%rbp)
jne 0x75a2
leaq 0xdd25(%rip), %rax      # 0x151e4
movslq (%rax), %r12
movslq (%rsi), %rax
leal (%rax,%r12), %ecx
cmpl (%rdi), %ecx
jge 0x75a2
addq %rax, %r12
cmpl $0x0, (%r13)
jle 0x758c
movl (%rsi), %eax
movslq %eax, %rbx
movl (%rsi), %ecx
addl (%r11), %ecx
cmpl %ecx, %eax
movq %rsi, %r13
movq %r11, %r14
jge 0x7569
movslq %eax, %r15
movq 0x10(%r10), %rax
addq %r9, %rax
movq 0x8(%rax,%r8,8), %rdi
callq 0x4064
movq -0x30(%rbp), %r10
movq -0x40(%rbp), %r9
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %rdi
movq 0x10(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xdcb6(%rip), %rcx      # 0x151e4
movslq (%rcx), %rcx
movq %r12, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%rbx,8), %rax
movsd (%rax,%r15,8), %xmm0
movq 0x10(%rdi), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r15,8)
incq %r15
movslq (%r14), %rax
movslq (%r13), %rcx
addq %rax, %rcx
cmpq %rcx, %r15
jl 0x74f6
incq %rbx
leaq 0xdc75(%rip), %rax      # 0x151e8
movslq (%rax), %rcx
movslq (%r13), %rax
addq %rax, %rcx
cmpq %rcx, %rbx
movq %r13, %rsi
movq %r14, %r11
jl 0x74e4
incq %r12
movslq (%rdi), %rax
cmpq %rax, %r12
leaq 0xdc4c(%rip), %r13      # 0x151e8
jl 0x74d4
movq %r8, %rax
xorq $0x1, %rax
orq -0x60(%rbp), %rax
sete %al
movl (%rsi), %ecx
testl %ecx, %ecx
setg %dl
andb %al, %dl
cmpb $0x1, %dl
jne 0x76c4
xorl %edx, %edx
movq %rdx, -0x68(%rbp)
movl (%rsi), %eax
movl (%r13), %edx
addl %eax, %edx
cmpl %edx, %ecx
movq -0x68(%rbp), %rdx
jge 0x76ae
movslq %ecx, %rbx
movslq %edx, %rcx
movq %rcx, -0x78(%rbp)
movl (%rsi), %ecx
addl (%r11), %ecx
cmpl %ecx, %eax
leaq 0xdbf0(%rip), %r12      # 0x151e4
movq -0x58(%rbp), %r14
jge 0x7692
movslq %eax, %r15
movq %rbx, -0x48(%rbp)
movq 0x10(%r10), %rax
addq %r9, %rax
movq 0x8(%rax,%r8,8), %rdi
movq %r11, %r13
movq %r14, %rbx
movq %r12, %r14
movq %rsi, %r12
callq 0x4064
movq %r12, %rsi
movq %r14, %r12
movq %rbx, %r14
movq -0x48(%rbp), %rbx
movq %r13, %r11
movq -0x78(%rbp), %r13
movq -0x68(%rbp), %rdx
movq -0x30(%rbp), %r10
movq -0x40(%rbp), %r9
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %rdi
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x10(%rax), %rax
movslq (%r12), %rcx
addq %r13, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%rbx,8), %rax
movsd (%rax,%r15,8), %xmm0
movq 0x10(%rdi), %rax
movq (%rax,%rdx,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r15,8)
incq %r15
movslq (%r11), %rax
movslq (%rsi), %rcx
addq %rax, %rcx
cmpq %rcx, %r15
jl 0x7605
incq %rbx
leaq 0xdb4c(%rip), %rax      # 0x151e8
movslq (%rax), %rcx
movslq (%rsi), %rax
addq %rax, %rcx
cmpq %rcx, %rbx
jl 0x75e6
incq %rdx
movslq (%rsi), %rcx
cmpq %rcx, %rdx
leaq 0xdb2a(%rip), %r13      # 0x151e8
jl 0x75c4
cmpq $0x1, -0x60(%rbp)
jne 0x77cb
testq %r8, %r8
jne 0x77cb
leaq 0xdb05(%rip), %rax      # 0x151e4
cmpl $0x0, (%rax)
jle 0x77cb
movl (%rsi), %eax
movslq %eax, %r14
movslq (%r13), %rcx
leal (%rcx,%rax), %edx
cmpl 0x4(%rdi), %edx
jge 0x77af
movslq %eax, %rbx
addq %rcx, %rbx
cmpl $0x0, (%r11)
jle 0x779f
movslq (%rsi), %r15
movq 0x10(%r10), %rax
addq %r9, %rax
movq 0x8(%rax,%r8,8), %rdi
movq %rbx, %r12
movq %r14, %rbx
movq %r13, %r14
movq %rsi, %r13
callq 0x4064
movq -0x30(%rbp), %r10
movq -0x40(%rbp), %r9
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %rdi
movq %r13, %rsi
movq %r14, %r13
movq %rbx, %r14
movq %r12, %rbx
movq -0x58(%rbp), %r12
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movslq (%r13), %rcx
movq %rbx, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
leaq 0xda7a(%rip), %r11      # 0x151ec
movsd (%rax,%r15,8), %xmm0
movq 0x10(%rdi), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r15,8)
incq %r15
movslq (%r11), %rax
movslq (%rsi), %rcx
addq %rax, %rcx
cmpq %rcx, %r15
jl 0x7710
incq %rbx
movslq 0x4(%rdi), %rax
cmpq %rax, %rbx
jl 0x7703
incq %r14
leaq 0xda2b(%rip), %rax      # 0x151e4
movslq (%rax), %rcx
movslq (%rsi), %rax
addq %rax, %rcx
cmpq %rcx, %r14
jl 0x76ed
cmpq $0x1, -0x60(%rbp)
leaq 0xda0d(%rip), %rdx      # 0x151e4
jne 0x78cc
cmpq $0x1, %r8
jne 0x78cc
cmpl $0x0, (%rdx)
jle 0x78cc
movslq (%rsi), %rbx
movl (%rsi), %eax
testl %eax, %eax
jle 0x78b0
xorl %r12d, %r12d
movq %rbx, -0x68(%rbp)
movl (%rsi), %ecx
addl (%r11), %ecx
cmpl %ecx, %eax
movq -0x30(%rbp), %rdx
movq %r11, %r15
jge 0x789e
movslq %eax, %r13
movslq %r12d, %rax
movq %rax, -0x48(%rbp)
movq 0x10(%rdx), %rax
addq %r9, %rax
movq 0x8(%rax,%r8,8), %rdi
movq %rsi, %r14
movq %rdx, %rbx
callq 0x4064
movq %rbx, %rdx
movq -0x68(%rbp), %rbx
movq %r14, %rsi
movq -0x58(%rbp), %r14
leaq 0xd99a(%rip), %rcx      # 0x151e8
movq -0x40(%rbp), %r9
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %rdi
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movslq (%rcx), %rcx
addq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x10(%rdi), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r13,8)
incq %r13
movslq (%r15), %rax
movslq (%rsi), %rcx
addq %rax, %rcx
cmpq %rcx, %r13
jl 0x7822
incq %r12
movslq (%rsi), %rax
cmpq %rax, %r12
movq %r15, %r11
jl 0x7804
incq %rbx
leaq 0xd92a(%rip), %rdx      # 0x151e4
movslq (%rdx), %rax
movslq (%rsi), %rcx
addq %rax, %rcx
cmpq %rcx, %rbx
jl 0x77f3
cmpq $0x2, -0x60(%rbp)
leaq 0xd910(%rip), %r13      # 0x151e8
jne 0x79d4
testq %r8, %r8
jne 0x79d4
cmpl $0x0, (%rdx)
jle 0x79d4
movl (%rsi), %ecx
movslq %ecx, %r10
movl (%rsi), %eax
movl (%r13), %edx
addl %eax, %edx
cmpl %edx, %ecx
jge 0x79b8
movslq %ecx, %rbx
movslq (%r11), %rcx
leal (%rcx,%rax), %edx
cmpl 0x8(%rdi), %edx
movq -0x30(%rbp), %r15
movq -0x58(%rbp), %r12
jge 0x7994
movslq %eax, %r13
addq %rcx, %r13
movq %rbx, -0x48(%rbp)
movq 0x10(%r15), %rax
addq %r9, %rax
movq 0x8(%rax,%r8,8), %rdi
movq %r11, %r14
movq %r10, %rbx
callq 0x4064
movq %rbx, %r10
movq -0x48(%rbp), %rbx
movq %r14, %r11
movq -0x40(%rbp), %r9
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %rdi
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r10,8), %rax
movq (%rax,%rbx,8), %rax
movslq (%r14), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r13,8), %xmm0
movq 0x10(%rdi), %rax
movq (%rax,%r10,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r13,8)
incq %r13
movslq 0x8(%rdi), %rax
cmpq %rax, %r13
jl 0x7925
incq %rbx
leaq 0xd84a(%rip), %r13      # 0x151e8
movslq (%r13), %rcx
leaq 0xd837(%rip), %rsi      # 0x151e0
movslq (%rsi), %rax
addq %rax, %rcx
cmpq %rcx, %rbx
jl 0x7908
incq %r10
leaq 0xd822(%rip), %rax      # 0x151e4
movslq (%rax), %rax
movslq (%rsi), %rcx
addq %rcx, %rax
cmpq %rax, %r10
jl 0x78f5
cmpq $0x2, -0x60(%rbp)
movq -0x30(%rbp), %r10
jne 0x7479
cmpq $0x1, %r8
jne 0x7479
leaq 0xd7f0(%rip), %rax      # 0x151e4
cmpl $0x0, (%rax)
jle 0x7479
movl (%rsi), %eax
movslq %eax, %r11
movl (%rsi), %ecx
addl (%r13), %ecx
cmpl %ecx, %eax
jge 0x7ab8
movslq %eax, %rbx
cmpl $0x0, (%rsi)
leaq 0xd7cf(%rip), %r12      # 0x151ec
jle 0x7a9b
xorl %r15d, %r15d
movq %rbx, -0x48(%rbp)
movq 0x10(%r10), %rax
addq %r9, %rax
movq 0x8(%rax,%r8,8), %rdi
movq %rsi, %r13
movq %r10, %r14
movq %r11, %rbx
callq 0x4064
movq %rbx, %r11
movq -0x48(%rbp), %rbx
movq %r14, %r10
movq -0x58(%rbp), %r14
movq -0x40(%rbp), %r9
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %rdi
movq %r13, %rsi
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r11,8), %rax
movq (%rax,%rbx,8), %rax
movslq (%r12), %rcx
addq %r15, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x10(%rdi), %rax
movq (%rax,%r11,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r15,8)
incq %r15
movslq (%r13), %rax
cmpq %rax, %r15
jl 0x7a26
incq %rbx
leaq 0xd743(%rip), %r13      # 0x151e8
movslq (%r13), %rax
movslq (%rsi), %rcx
addq %rax, %rcx
cmpq %rcx, %rbx
jl 0x7a13
incq %r11
leaq 0xd722(%rip), %rax      # 0x151e4
movslq (%rax), %rcx
movslq (%rsi), %rax
addq %rax, %rcx
cmpq %rcx, %r11
jl 0x7a02
jmp 0x7479
movq -0x60(%rbp), %rcx
incq %rcx
movq %rcx, -0x60(%rbp)
cmpq $0x3, %rcx
jne 0x7462
movq %rsi, %r15
movq -0x58(%rbp), %rbx
incq %rbx
leaq 0xdb29(%rip), %rcx      # 0x15628
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0x73fb
leaq 0xdb26(%rip), %rcx      # 0x15640
movq 0x8(%rcx), %rax
cmpq (%rcx), %rax
je 0x86bd
xorl %ebx, %ebx
movq 0x10(%r10), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq %rbx, -0x58(%rbp)
movq (%rax,%rbx,8), %rax
movq %rax, -0x40(%rbp)
movq 0x30(%rax), %rdx
movq -0x70(%rbp), %rax
cmpq 0x8(%rax), %rdx
leaq 0xd693(%rip), %r13      # 0x151e8
movq %r15, %r14
jne 0x8694
testq %rdx, %rdx
je 0x7b82
movq -0x70(%rbp), %rax
movq (%rax), %rsi
movq -0x40(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x2210
movq %r15, %r14
testl %eax, %eax
jne 0x8694
xorl %ecx, %ecx
movq %rcx, %rdi
shlq $0x4, %rdi
xorl %edx, %edx
movq %rdi, -0x50(%rbp)
movq %rcx, -0x60(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
leaq (%rax,%rcx,8), %rcx
movq %rdx, -0x38(%rbp)
cmpl $0x0, 0x38(%rcx,%rdx,4)
je 0x7bc2
movq -0x38(%rbp), %rcx
leaq 0x1(%rcx), %rdx
testq %rcx, %rcx
movq -0x60(%rbp), %rcx
je 0x7b95
jmp 0x8687
addq %rdi, %rax
movq -0x38(%rbp), %rcx
cmpq $0x0, 0x8(%rax,%rcx,8)
je 0x7bac
movq -0x38(%rbp), %rax
orl -0x60(%rbp), %eax
jne 0x7d94
leaq 0xd5ff(%rip), %rax      # 0x151e4
movslq (%rax), %rsi
movslq (%r14), %rax
leal (%rax,%rsi), %ecx
movq -0x40(%rbp), %rdx
cmpl (%rdx), %ecx
jge 0x7d94
addq %rax, %rsi
movq %rsi, -0x48(%rbp)
cmpl $0x0, (%r13)
jle 0x7d7d
movl (%r14), %eax
movslq %eax, %r15
movl (%r14), %ecx
leaq 0xd5d0(%rip), %r13      # 0x151ec
addl (%r13), %ecx
cmpl %ecx, %eax
movq %r14, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r13
leaq 0xd5b0(%rip), %r12      # 0x151e4
movq -0x48(%rbp), %r14
jge 0x7d5d
movslq %eax, %rbx
movq 0x10(%rcx), %rax
addq %rdi, %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movslq (%r12), %rcx
movq %r14, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x18(%rax), %rax
movslq (%r12), %rcx
movq %r14, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq -0x40(%rbp), %r10
movq -0x58(%rbp), %r9
leaq 0xd4e7(%rip), %r8       # 0x151ec
movq -0x50(%rbp), %rdi
movq 0x18(%rax), %rax
movq (%rax,%r9,8), %rax
movq 0x20(%rax), %rax
movslq (%r12), %rcx
movq %r14, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
leaq 0xd4b6(%rip), %rdx      # 0x151e0
movq (%rax,%r15,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq 0x20(%r10), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
incq %rbx
movslq (%r8), %rax
movslq (%rdx), %rcx
addq %rax, %rcx
cmpq %rcx, %rbx
movq -0x30(%rbp), %rcx
jl 0x7c41
incq %r15
leaq 0xd481(%rip), %r13      # 0x151e8
movslq (%r13), %rcx
movslq (%rdx), %rax
addq %rax, %rcx
cmpq %rcx, %r15
movq %rdx, %r14
jl 0x7c12
movq -0x48(%rbp), %rsi
incq %rsi
movq -0x40(%rbp), %rax
movslq (%rax), %rax
cmpq %rax, %rsi
jl 0x7bfd
movq -0x38(%rbp), %rax
xorq $0x1, %rax
orq -0x60(%rbp), %rax
sete %al
movl (%r14), %ecx
testl %ecx, %ecx
setg %dl
andb %al, %dl
cmpb $0x1, %dl
jne 0x7f66
xorl %eax, %eax
movq %rax, -0x68(%rbp)
movl (%r14), %eax
movl (%r13), %edx
addl %eax, %edx
cmpl %edx, %ecx
jge 0x7f4c
movslq %ecx, %r8
movslq -0x68(%rbp), %rsi
movq %rsi, -0x48(%rbp)
movl (%r14), %ecx
leaq 0xd40a(%rip), %rdx      # 0x151ec
addl (%rdx), %ecx
cmpl %ecx, %eax
movq %r14, %rdx
movq -0x30(%rbp), %rcx
movq %r8, %r9
movq -0x40(%rbp), %r15
movq -0x38(%rbp), %r13
movq -0x68(%rbp), %r12
jge 0x7f2a
movslq %eax, %rbx
movq 0x10(%rcx), %rax
addq %rdi, %rax
movq 0x8(%rax,%r13,8), %rdi
movq %r9, %r14
callq 0x4064
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xd3b4(%rip), %rcx      # 0x151e4
movslq (%rcx), %rcx
addq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r14,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq 0x10(%r15), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x18(%rax), %rax
leaq 0xd362(%rip), %rcx      # 0x151e4
movslq (%rcx), %rcx
addq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r14,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq 0x18(%r15), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq %r14, %r9
leaq 0xd31d(%rip), %r14      # 0x151e4
movq -0x58(%rbp), %r8
leaq 0xd31a(%rip), %r11      # 0x151ec
leaq 0xd307(%rip), %rdx      # 0x151e0
movq -0x48(%rbp), %rsi
movq -0x50(%rbp), %rdi
movq 0x18(%rax), %rax
movq (%rax,%r8,8), %rax
movq 0x20(%rax), %rax
movslq (%r14), %rcx
addq %rsi, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r9,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq 0x20(%r15), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%r9,8), %rax
movsd %xmm0, (%rax,%rbx,8)
incq %rbx
movslq (%r11), %rax
movslq (%rdx), %rcx
addq %rax, %rcx
cmpq %rcx, %rbx
movq -0x30(%rbp), %rcx
jl 0x7e05
incq %r9
leaq 0xd2b4(%rip), %rax      # 0x151e8
movslq (%rax), %rcx
movslq (%rdx), %rax
addq %rax, %rcx
cmpq %rcx, %r9
movq %rdx, %r14
movq %r9, %r8
jl 0x7dd8
movq -0x68(%rbp), %rax
incq %rax
movslq (%r14), %rcx
cmpq %rcx, %rax
leaq 0xd288(%rip), %r13      # 0x151e8
jl 0x7db8
cmpq $0x1, -0x60(%rbp)
movq -0x40(%rbp), %rsi
leaq 0xd26e(%rip), %rdx      # 0x151e4
jne 0x8136
cmpq $0x0, -0x38(%rbp)
jne 0x8136
cmpl $0x0, (%rdx)
jle 0x8136
movl (%r14), %eax
movslq %eax, %r8
movq %r8, -0x48(%rbp)
leaq 0xd247(%rip), %rcx      # 0x151e8
movslq (%rcx), %rcx
leal (%rcx,%rax), %edx
cmpl 0x4(%rsi), %edx
jge 0x810f
movslq %eax, %r15
addq %rcx, %r15
leaq 0xd22f(%rip), %rax      # 0x151ec
cmpl $0x0, (%rax)
leaq 0xd221(%rip), %r12      # 0x151e8
movq -0x58(%rbp), %r13
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %r14
jle 0x80ff
leaq 0xd200(%rip), %rax      # 0x151e0
movslq (%rax), %rbx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq %rdi, %rax
movq 0x8(%rax,%rcx,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movslq (%r12), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq -0x38(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movslq (%r12), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq -0x38(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x4064
movq -0x40(%rbp), %rsi
movq -0x50(%rbp), %rdi
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r14,8), %rax
movslq (%r12), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
leaq 0xd123(%rip), %rcx      # 0x151ec
movsd (%rax,%rbx,8), %xmm0
movq 0x20(%rsi), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
incq %rbx
movslq (%rcx), %rax
leaq 0xd0f4(%rip), %rcx      # 0x151e0
movslq (%rcx), %rcx
addq %rax, %rcx
cmpq %rcx, %rbx
movq -0x38(%rbp), %rcx
jl 0x7fe3
incq %r15
movslq 0x4(%rsi), %rax
cmpq %rax, %r15
jl 0x7fb6
movq -0x48(%rbp), %r8
incq %r8
leaq 0xd0c7(%rip), %rdx      # 0x151e4
movslq (%rdx), %rcx
leaq 0xd0b9(%rip), %r14      # 0x151e0
movslq (%r14), %rax
addq %rax, %rcx
cmpq %rcx, %r8
jl 0x7f96
cmpq $0x1, -0x60(%rbp)
jne 0x8308
cmpq $0x1, -0x38(%rbp)
jne 0x8308
cmpl $0x0, (%rdx)
jle 0x8308
movslq (%r14), %rsi
movq %rsi, -0x78(%rbp)
movl (%r14), %eax
testl %eax, %eax
jle 0x82e8
xorl %ecx, %ecx
movq %rcx, -0x48(%rbp)
movl (%r14), %ecx
leaq 0xd075(%rip), %rdx      # 0x151ec
addl (%rdx), %ecx
cmpl %ecx, %eax
movq -0x30(%rbp), %r8
movq %r14, %rdx
movq -0x58(%rbp), %r13
movq -0x38(%rbp), %rcx
movq -0x78(%rbp), %r15
jge 0x82d2
movslq %eax, %r14
movslq -0x48(%rbp), %rax
movq %rax, -0x68(%rbp)
movq 0x10(%r8), %rax
addq %rdi, %rax
movq 0x8(%rax,%rcx,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
leaq 0xd021(%rip), %rcx      # 0x151e8
movslq (%rcx), %rcx
movq -0x68(%rbp), %rbx
addq %rbx, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r14,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
movq -0x48(%rbp), %r12
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq -0x38(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
leaq 0xcfc2(%rip), %rcx      # 0x151e8
movslq (%rcx), %rcx
addq %rbx, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r14,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq -0x38(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x4064
movq -0x40(%rbp), %r10
leaq 0xcf77(%rip), %r9       # 0x151e8
movq -0x30(%rbp), %r8
leaq 0xcf70(%rip), %rsi      # 0x151ec
leaq 0xcf5d(%rip), %rdx      # 0x151e0
movq -0x50(%rbp), %rdi
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r15,8), %rax
movslq (%r9), %rcx
addq %rbx, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x20(%r10), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
movslq (%rsi), %rax
movslq (%rdx), %rcx
addq %rax, %rcx
cmpq %rcx, %r14
movq -0x38(%rbp), %rcx
jl 0x819f
movq -0x48(%rbp), %rcx
incq %rcx
movslq (%rdx), %rax
cmpq %rax, %rcx
movq %rdx, %r14
jl 0x8169
movq -0x78(%rbp), %rsi
incq %rsi
leaq 0xceee(%rip), %rdx      # 0x151e4
movslq (%rdx), %rax
movslq (%r14), %rcx
addq %rax, %rcx
cmpq %rcx, %rsi
jl 0x8158
cmpq $0x2, -0x60(%rbp)
leaq 0xced4(%rip), %r13      # 0x151e8
jne 0x84da
cmpq $0x0, -0x38(%rbp)
jne 0x84da
cmpl $0x0, (%rdx)
jle 0x84da
movl (%r14), %ecx
movslq %ecx, %rsi
movq %rsi, -0x48(%rbp)
movl (%r14), %eax
movl (%r13), %edx
addl %eax, %edx
cmpl %edx, %ecx
jge 0x84ba
movslq %ecx, %r12
leaq 0xce99(%rip), %r13      # 0x151ec
movslq (%r13), %rcx
leal (%rcx,%rax), %edx
movq -0x40(%rbp), %r8
cmpl 0x8(%r8), %edx
movq -0x30(%rbp), %rdx
movq -0x58(%rbp), %rbx
movq -0x38(%rbp), %r13
movq -0x48(%rbp), %r15
jge 0x8496
movslq %eax, %r14
addq %rcx, %r14
movq 0x10(%rdx), %rax
addq %rdi, %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%rbx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
leaq 0xce42(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r14,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%rbx,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
leaq 0xcdeb(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r14,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r13,8), %rdi
callq 0x4064
movq -0x40(%rbp), %r8
movq -0x30(%rbp), %rdx
leaq 0xcda0(%rip), %rcx      # 0x151ec
movq -0x50(%rbp), %rdi
movq 0x18(%rax), %rax
movq (%rax,%rbx,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r14,8), %xmm0
movq 0x20(%r8), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
movslq 0x8(%r8), %rax
cmpq %rax, %r14
jl 0x837e
incq %r12
leaq 0xcd48(%rip), %r13      # 0x151e8
movslq (%r13), %rcx
leaq 0xcd35(%rip), %r14      # 0x151e0
movslq (%r14), %rax
addq %rax, %rcx
cmpq %rcx, %r12
jl 0x834c
movq -0x48(%rbp), %rsi
incq %rsi
leaq 0xcd1c(%rip), %rdx      # 0x151e4
movslq (%rdx), %rax
movslq (%r14), %rcx
addq %rcx, %rax
cmpq %rax, %rsi
jl 0x8334
cmpq $0x2, -0x60(%rbp)
jne 0x7bac
cmpq $0x1, -0x38(%rbp)
jne 0x7bac
cmpl $0x0, (%rdx)
jle 0x7bac
movl (%r14), %eax
movslq %eax, %rdx
movq %rdx, -0x48(%rbp)
movl (%r14), %ecx
addl (%r13), %ecx
cmpl %ecx, %eax
jge 0x865b
movslq %eax, %r15
cmpl $0x0, (%r14)
movq %r14, %rdx
movq -0x58(%rbp), %r12
movq -0x38(%rbp), %r14
movq -0x48(%rbp), %r13
jle 0x863c
xorl %ebx, %ebx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq %rdi, %rax
movq 0x8(%rax,%r14,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
leaq 0xcc8c(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
addq %rbx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r14,8), %rdi
callq 0x4064
movq 0x18(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
leaq 0xcc3b(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
addq %rbx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x50(%rbp), %rax
movq 0x8(%rax,%r14,8), %rdi
callq 0x4064
leaq 0xcbfe(%rip), %rcx      # 0x151ec
leaq 0xcbeb(%rip), %rdx      # 0x151e0
movq -0x50(%rbp), %rdi
movq 0x18(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movslq (%rcx), %rcx
addq %rbx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x40(%rbp), %rcx
movq 0x20(%rcx), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%rbx,8)
incq %rbx
movslq (%rdx), %rax
cmpq %rax, %rbx
jl 0x8530
incq %r15
leaq 0xcba2(%rip), %rax      # 0x151e8
movslq (%rax), %rax
movslq (%rdx), %rcx
addq %rax, %rcx
cmpq %rcx, %r15
movq %rdx, %r14
jl 0x8515
movq -0x48(%rbp), %rdx
incq %rdx
leaq 0xcb7b(%rip), %rax      # 0x151e4
movslq (%rax), %rcx
movslq (%r14), %rax
addq %rax, %rcx
cmpq %rcx, %rdx
leaq 0xcb6c(%rip), %r13      # 0x151e8
jl 0x84ff
jmp 0x7bac
incq %rcx
cmpq $0x3, %rcx
jne 0x7b84
movq %r14, %r15
movq -0x58(%rbp), %rbx
incq %rbx
leaq 0xcf9b(%rip), %rcx      # 0x15640
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
movq -0x30(%rbp), %r10
ja 0x7b29
movq (%r10), %r10
cmpq -0x80(%rbp), %r10
jne 0x73e1
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xc910(%rip), %rdi      # 0x14ff0
leaq 0x8b1b(%rip), %rsi      # 0x11202
callq 0x21e0
movq %rax, %rdi
movl %r14d, %esi
callq 0x2330
movq %rax, %rdi
callq 0x2100
movl $0x1, %edi
callq 0x2250