// File: /workspace/github_cpp_makefile_star2_O3/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 $0x68, %rsp
movq %rsi, -0x80(%rbp)
movl %edi, %r14d
callq 0x3018
movslq %r14d, %rax
leaq (%rax,%rax,2), %rax
leaq 0xdde9(%rip), %rcx      # 0x15260
leaq (%rcx,%rax,8), %rax
movq (%rax), %rsi
movq %rax, -0x88(%rbp)
cmpq %rax, %rsi
je 0x86fc
leaq 0xdd53(%rip), %r8       # 0x151e8
leaq 0xdd50(%rip), %r15      # 0x151ec
leaq 0xdd4d(%rip), %r14      # 0x151f0
leaq 0xe18e(%rip), %rcx      # 0x15638
movq 0x8(%rcx), %rax
cmpq (%rcx), %rax
movq %rsi, -0x38(%rbp)
je 0x7b97
xorl %r12d, %r12d
movq 0x10(%rsi), %rdi
movq %r8, %rbx
callq 0x418c
movq %rbx, %r8
movq 0x10(%rax), %rax
movq %r12, -0x30(%rbp)
movq (%rax,%r12,8), %r9
movq 0x20(%r9), %rdx
movq -0x80(%rbp), %rax
cmpq 0x8(%rax), %rdx
leaq 0xdd08(%rip), %r10      # 0x151f4
jne 0x7b71
testq %rdx, %rdx
movq %r9, -0x48(%rbp)
je 0x7520
movq -0x80(%rbp), %rax
movq (%rax), %rsi
movq 0x18(%r9), %rdi
movq %r10, %r12
callq 0x2220
movq %r12, %r10
movq -0x48(%rbp), %r9
movq %rbx, %r8
testl %eax, %eax
jne 0x7b71
movq $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
movq %rax, -0x60(%rbp)
movb $0x1, %al
movl %eax, -0x58(%rbp)
movq $0x0, -0x70(%rbp)
xorl %edi, %edi
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x40(%rbp), %rcx
leaq (%rax,%rcx,8), %rcx
cmpl $0x0, 0x38(%rcx,%rdi,4)
je 0x7572
movl $0x1, %edi
movb $0x1, %al
movq %rax, -0x70(%rbp)
testb $0x1, -0x58(%rbp)
movl $0x0, -0x58(%rbp)
jne 0x753e
jmp 0x7b5c
movq -0x40(%rbp), %r13
shlq $0x4, %r13
addq %r13, %rax
cmpq $0x0, 0x8(%rax,%rdi,8)
je 0x7555
movq %rdi, %rax
orq -0x60(%rbp), %rax
movl (%r8), %eax
jne 0x7684
movslq (%r15), %r15
leal (%rax,%r15), %ecx
movl (%r9), %edx
cmpl %edx, %ecx
jge 0x7684
movslq %eax, %rcx
addq %rcx, %r15
movl (%r14), %ecx
testl %ecx, %ecx
jle 0x7675
movslq %eax, %r12
movl (%r10), %edx
testl %edx, %edx
jle 0x7660
movslq %eax, %r14
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
addq %r13, %rax
movq %rdi, %rbx
movq 0x8(%rax,%rdi,8), %rdi
callq 0x418c
movq %rbx, %rdi
movq -0x48(%rbp), %r9
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xdbed(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%r12,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r9), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xdbc2(%rip), %rax      # 0x151f4
movl (%rax), %edx
leaq 0xdbad(%rip), %rax      # 0x151e8
movl (%rax), %eax
leal (%rax,%rdx), %ecx
movslq %ecx, %rcx
cmpq %rcx, %r14
jl 0x75c9
leaq 0xdba1(%rip), %r14      # 0x151f0
movl (%r14), %ecx
leaq 0xdb8f(%rip), %r8       # 0x151e8
leaq 0xdb94(%rip), %r10      # 0x151f4
incq %r12
leal (%rax,%rcx), %esi
movslq %esi, %rsi
cmpq %rsi, %r12
jl 0x75be
movl (%r9), %edx
incq %r15
movslq %edx, %rsi
cmpq %rsi, %r15
jl 0x75b0
cmpq $0x0, -0x40(%rbp)
setne %cl
movq -0x70(%rbp), %rdx
notb %dl
movq %rdx, -0x70(%rbp)
orb %dl, %cl
testb $0x1, %cl
jne 0x7776
testl %eax, %eax
jle 0x7776
movl (%r14), %ecx
xorl %r12d, %r12d
testl %ecx, %ecx
jle 0x7767
movslq %eax, %r15
movl (%r10), %edx
movslq %r12d, %r13
testl %edx, %edx
jle 0x7755
movslq %eax, %r14
movq -0x30(%rbp), %rbx
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x418c
movq -0x48(%rbp), %r9
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movq 0x10(%rax), %rax
leaq 0xdaf5(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
addq %r13, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r9), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xdacd(%rip), %rax      # 0x151f4
movl (%rax), %edx
leaq 0xdab8(%rip), %rax      # 0x151e8
movl (%rax), %eax
leal (%rax,%rdx), %ecx
movslq %ecx, %rcx
cmpq %rcx, %r14
jl 0x76cf
leaq 0xdaac(%rip), %r14      # 0x151f0
movl (%r14), %ecx
leaq 0xda9a(%rip), %r8       # 0x151e8
leaq 0xda9f(%rip), %r10      # 0x151f4
incq %r15
leal (%rax,%rcx), %esi
movslq %esi, %rsi
cmpq %rsi, %r15
jl 0x76c0
incq %r12
movslq %eax, %rdx
cmpq %rdx, %r12
jl 0x76af
cmpq $0x1, -0x40(%rbp)
setne %cl
movl -0x58(%rbp), %edx
notb %dl
movb %dl, -0x64(%rbp)
orb %dl, %cl
leaq 0xda5d(%rip), %r15      # 0x151ec
testb $0x1, %cl
jne 0x7889
movl (%r15), %esi
testl %esi, %esi
jle 0x7555
movslq %eax, %r13
movl (%r14), %ecx
movl 0x4(%r9), %edx
leal (%rcx,%rax), %edi
cmpl %edx, %edi
jge 0x7877
movslq %eax, %rsi
movslq %ecx, %r15
addq %rsi, %r15
movl (%r10), %esi
testl %esi, %esi
jle 0x785e
movslq %eax, %r14
movq -0x38(%rbp), %r12
movq -0x30(%rbp), %rbx
movq 0x10(%r12), %rax
movq 0x18(%rax), %rdi
callq 0x418c
movq -0x48(%rbp), %r9
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
leaq 0xd9f0(%rip), %rcx      # 0x151f0
movslq (%rcx), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r9), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xd9c5(%rip), %rax      # 0x151f4
movl (%rax), %esi
leaq 0xd9b0(%rip), %rax      # 0x151e8
movl (%rax), %eax
leal (%rax,%rsi), %edx
movslq %edx, %rdx
cmpq %rdx, %r14
jl 0x77d7
movl 0x4(%r9), %edx
leaq 0xd998(%rip), %r8       # 0x151e8
leaq 0xd999(%rip), %r14      # 0x151f0
leaq 0xd996(%rip), %r10      # 0x151f4
incq %r15
movslq %edx, %rdi
cmpq %rdi, %r15
jl 0x77c4
leaq 0xd978(%rip), %r15      # 0x151ec
movl (%r15), %esi
incq %r13
leal (%rax,%rsi), %edi
movslq %edi, %rdi
cmpq %rdi, %r13
jl 0x77ad
cmpq $0x1, -0x40(%rbp)
setne %cl
orb -0x70(%rbp), %cl
testb $0x1, %cl
jne 0x7983
movl (%r15), %ecx
testl %ecx, %ecx
jle 0x7b5c
movslq %eax, %rdi
testl %eax, %eax
jle 0x7971
movl (%r10), %ecx
xorl %ebx, %ebx
testl %ecx, %ecx
jle 0x7943
movslq %eax, %r12
movslq %ebx, %rax
movq %rax, -0x50(%rbp)
movq -0x38(%rbp), %r13
movq -0x30(%rbp), %r15
movq 0x10(%r13), %rax
movq %rdi, %r14
movq 0x20(%rax), %rdi
callq 0x418c
movq %r14, %rdi
movq -0x48(%rbp), %r9
movq 0x10(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
leaq 0xd8f0(%rip), %rcx      # 0x151f0
movslq (%rcx), %rcx
addq -0x50(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x10(%r9), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xd8c7(%rip), %rax      # 0x151f4
movl (%rax), %ecx
leaq 0xd8b2(%rip), %rax      # 0x151e8
movl (%rax), %eax
leal (%rax,%rcx), %edx
movslq %edx, %rdx
cmpq %rdx, %r12
jl 0x78d2
incq %rbx
movslq %eax, %rdx
cmpq %rdx, %rbx
jl 0x78b8
leaq 0xd893(%rip), %r15      # 0x151ec
movl (%r15), %ecx
leaq 0xd885(%rip), %r8       # 0x151e8
leaq 0xd886(%rip), %r14      # 0x151f0
leaq 0xd883(%rip), %r10      # 0x151f4
incq %rdi
leal (%rax,%rcx), %edx
movslq %edx, %rdx
cmpq %rdx, %rdi
jl 0x78ab
cmpq $0x2, -0x40(%rbp)
setne %cl
orb -0x64(%rbp), %cl
testb $0x1, %cl
jne 0x7a76
movl (%r15), %edx
testl %edx, %edx
jle 0x7555
movslq %eax, %r12
movl (%r14), %ecx
testl %ecx, %ecx
jle 0x7a64
movslq %eax, %r15
movl (%r10), %edx
movl 0x8(%r9), %esi
leal (%rdx,%rax), %edi
cmpl %esi, %edi
jge 0x7a48
cltq
movslq %edx, %r14
addq %rax, %r14
movq -0x30(%rbp), %r13
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rdi
movq %r10, %rbx
callq 0x418c
movq %rbx, %r10
movq -0x48(%rbp), %r9
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%r15,8), %rax
movslq (%rbx), %rdx
leaq (,%rdx,8), %rcx
subq %rcx, %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%r9), %rax
movq (%rax,%r12,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
movslq 0x8(%r9), %rsi
cmpq %rsi, %r14
jl 0x79d1
leaq 0xd7b7(%rip), %rax      # 0x151f0
movl (%rax), %ecx
leaq 0xd7a6(%rip), %r8       # 0x151e8
movq %rax, %r14
movl (%r8), %eax
incq %r15
leal (%rax,%rcx), %edi
movslq %edi, %rdi
cmpq %rdi, %r15
jl 0x79ba
leaq 0xd78b(%rip), %r15      # 0x151ec
movl (%r15), %edx
incq %r12
leal (%rax,%rdx), %esi
movslq %esi, %rsi
cmpq %rsi, %r12
jl 0x79a8
cmpq $0x2, -0x40(%rbp)
setne %cl
orb -0x70(%rbp), %cl
testb $0x1, %cl
jne 0x7555
movl (%r15), %edx
testl %edx, %edx
jle 0x7b71
movslq %eax, %r13
movl (%r14), %ecx
testl %ecx, %ecx
jle 0x7b45
movslq %eax, %r15
testl %eax, %eax
jle 0x7b29
xorl %r14d, %r14d
movq -0x38(%rbp), %r12
movq -0x30(%rbp), %rbx
movq 0x10(%r12), %rax
movq 0x30(%rax), %rdi
callq 0x418c
movq -0x48(%rbp), %r9
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
leaq 0xd712(%rip), %rcx      # 0x151f4
movslq (%rcx), %rcx
addq %r14, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x10(%r9), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r14,8)
incq %r14
leaq 0xd6df(%rip), %rax      # 0x151e8
movslq (%rax), %rax
cmpq %rax, %r14
jl 0x7ab5
leaq 0xd6d8(%rip), %r14      # 0x151f0
movl (%r14), %ecx
leaq 0xd6c6(%rip), %r8       # 0x151e8
leaq 0xd6cb(%rip), %r10      # 0x151f4
incq %r15
leal (%rax,%rcx), %edx
movslq %edx, %rdx
cmpq %rdx, %r15
jl 0x7aa6
leaq 0xd6aa(%rip), %r15      # 0x151ec
movl (%r15), %edx
incq %r13
leal (%rax,%rdx), %esi
movslq %esi, %rsi
cmpq %rsi, %r13
jl 0x7a9b
jmp 0x7555
movq -0x40(%rbp), %rcx
incq %rcx
movq %rcx, -0x40(%rbp)
cmpq $0x3, %rcx
jne 0x7528
movq -0x30(%rbp), %r12
incq %r12
leaq 0xdab9(%rip), %rcx      # 0x15638
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x5, %rax
cmpq %r12, %rax
movq -0x38(%rbp), %rsi
ja 0x74be
leaq 0xdab2(%rip), %rcx      # 0x15650
movq 0x8(%rcx), %rax
cmpq (%rcx), %rax
je 0x86dd
xorl %edx, %edx
movq 0x10(%rsi), %rdi
movq %rdx, %r12
movq %r8, %rbx
callq 0x418c
movq %rbx, %r8
movq 0x18(%rax), %rax
movq %r12, -0x48(%rbp)
movq (%rax,%r12,8), %rax
movq %rax, -0x50(%rbp)
movq 0x30(%rax), %rdx
movq -0x80(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x86b7
testq %rdx, %rdx
je 0x7c05
movq -0x80(%rbp), %rax
movq (%rax), %rsi
movq -0x50(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x2220
movq %rbx, %r8
testl %eax, %eax
jne 0x86b7
movq $0x0, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl %eax, %ecx
movq %rcx, -0x90(%rbp)
movb $0x1, %cl
movl %ecx, -0x64(%rbp)
movq $0x0, -0x78(%rbp)
movq %rax, %r9
shlq $0x4, %r9
xorl %edi, %edi
movq %r9, -0x58(%rbp)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x60(%rbp), %rcx
leaq (%rax,%rcx,8), %rcx
cmpl $0x0, 0x38(%rcx,%rdi,4)
je 0x7c68
movl $0x1, %edi
movb $0x1, %al
movq %rax, -0x78(%rbp)
testb $0x1, -0x64(%rbp)
movl $0x0, -0x64(%rbp)
jne 0x7c34
jmp 0x86a2
addq %r9, %rax
cmpq $0x0, 0x8(%rax,%rdi,8)
je 0x7c4b
movq %rdi, %rax
orq -0x90(%rbp), %rax
movl (%r8), %eax
jne 0x7e4c
movslq (%r15), %r10
leal (%rax,%r10), %ecx
movq -0x50(%rbp), %rdx
movl (%rdx), %edx
cmpl %edx, %ecx
jge 0x7e4c
movslq %eax, %rcx
addq %rcx, %r10
movl (%r14), %ecx
movq %rdi, -0x30(%rbp)
testl %ecx, %ecx
jle 0x7e3d
movq %r10, -0x70(%rbp)
movslq %eax, %r10
leaq 0xd536(%rip), %rdx      # 0x151f4
movl (%rdx), %edx
testl %edx, %edx
jle 0x7e21
movslq %eax, %r12
movq %r10, -0x40(%rbp)
movq -0x38(%rbp), %rcx
movq 0x10(%rcx), %rax
movq %rcx, %r13
movq -0x58(%rbp), %r15
addq %r15, %rax
movq -0x30(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
leaq 0xd4e6(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
movq -0x70(%rbp), %r14
movq %r14, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq -0x40(%rbp), %rbx
movq (%rax,%rbx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r13), %rax
addq %r15, %rax
movq -0x30(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r15
movq (%rax,%r15,8), %rax
movq 0x18(%rax), %rax
leaq 0xd485(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
movq %r14, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%rbx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x50(%rbp), %r13
movq 0x18(%r13), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
addq -0x58(%rbp), %rax
movq -0x30(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdi
callq 0x418c
leaq 0xd433(%rip), %r8       # 0x151e8
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rax
leaq 0xd424(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
movq %r14, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movq (%rax,%rbx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%r13), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%rbx,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xd3f9(%rip), %rax      # 0x151f4
movl (%rax), %edx
movl (%r8), %eax
leal (%rax,%rdx), %ecx
movslq %ecx, %rcx
cmpq %rcx, %r12
jl 0x7ccf
leaq 0xd3da(%rip), %r14      # 0x151f0
movl (%r14), %ecx
movq -0x58(%rbp), %r9
movq -0x40(%rbp), %r10
incq %r10
leal (%rax,%rcx), %esi
movslq %esi, %rsi
cmpq %rsi, %r10
jl 0x7cc0
movq -0x50(%rbp), %rdx
movl (%rdx), %edx
movq -0x70(%rbp), %r10
incq %r10
movslq %edx, %rsi
cmpq %rsi, %r10
jl 0x7ca8
cmpq $0x0, -0x60(%rbp)
setne %cl
movq -0x78(%rbp), %rdx
notb %dl
movq %rdx, -0x78(%rbp)
orb %dl, %cl
testb $0x1, %cl
jne 0x7ff7
testl %eax, %eax
jle 0x7ff7
movl (%r14), %ecx
xorl %esi, %esi
movq %rsi, -0x30(%rbp)
testl %ecx, %ecx
jle 0x7fe4
movslq %eax, %r15
leaq 0xd368(%rip), %rdx      # 0x151f4
movl (%rdx), %edx
movslq -0x30(%rbp), %r10
movq %r10, -0x40(%rbp)
testl %edx, %edx
jle 0x7fd2
movslq %eax, %r13
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r12
movq (%rax,%r12,8), %rax
movq 0x10(%rax), %rax
leaq 0xd323(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
movq -0x40(%rbp), %rdx
addq %rdx, %rcx
movq %rdx, %r14
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq -0x50(%rbp), %rbx
movq 0x10(%rbx), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r13,8)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x18(%rax), %rax
leaq 0xd2ca(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
addq %r14, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x18(%rbx), %rax
movq -0x30(%rbp), %r14
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r13,8)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq (%rax,%r12,8), %rax
movq 0x20(%rax), %rax
leaq 0xd27c(%rip), %rcx      # 0x151ec
movslq (%rcx), %rcx
addq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r15,8), %rax
movsd (%rax,%r13,8), %xmm0
movq 0x20(%rbx), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r13,8)
incq %r13
leaq 0xd253(%rip), %rax      # 0x151f4
movl (%rax), %edx
leaq 0xd23e(%rip), %rax      # 0x151e8
movl (%rax), %eax
leal (%rax,%rdx), %ecx
movslq %ecx, %rcx
cmpq %rcx, %r13
jl 0x7ea1
leaq 0xd22e(%rip), %rsi      # 0x151f0
movl (%rsi), %ecx
movq %rsi, %r14
leaq 0xd21a(%rip), %r8       # 0x151e8
movq -0x58(%rbp), %r9
incq %r15
leal (%rax,%rcx), %esi
movslq %esi, %rsi
cmpq %rsi, %r15
jl 0x7e96
movq -0x30(%rbp), %rsi
incq %rsi
movslq %eax, %rdx
cmpq %rdx, %rsi
jl 0x7e76
cmpq $0x1, -0x60(%rbp)
setne %cl
movl -0x64(%rbp), %edx
notb %dl
movb %dl, -0x70(%rbp)
orb %dl, %cl
testb $0x1, %cl
jne 0x81ba
leaq 0xd1d3(%rip), %r15      # 0x151ec
movl (%r15), %esi
testl %esi, %esi
jle 0x7c4b
movslq %eax, %r10
movl (%r14), %ecx
movq -0x50(%rbp), %rdx
movl 0x4(%rdx), %edx
leal (%rcx,%rax), %edi
cmpl %edx, %edi
jge 0x81a8
movq %r10, -0x30(%rbp)
movslq %eax, %rsi
movslq %ecx, %r15
addq %rsi, %r15
leaq 0xd1a4(%rip), %rsi      # 0x151f4
movl (%rsi), %esi
testl %esi, %esi
jle 0x818c
movslq %eax, %r12
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r14
movq (%rax,%r14,8), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rbx
movq (%rax,%rbx,8), %rax
leaq 0xd163(%rip), %r13      # 0x151f0
movslq (%r13), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x38(%rbp), %r13
movq 0x10(%r13), %rax
movq 0x18(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%rbx,8), %rax
leaq 0xd111(%rip), %rcx      # 0x151f0
movslq (%rcx), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x50(%rbp), %r14
movq 0x18(%r14), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r13), %rax
movq 0x18(%rax), %rdi
callq 0x418c
leaq 0xd0cc(%rip), %r8       # 0x151e8
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%rbx,8), %rax
leaq 0xd0b9(%rip), %rcx      # 0x151f0
movslq (%rcx), %rcx
movq %r15, %rdx
subq %rcx, %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%r14), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xd08e(%rip), %rax      # 0x151f4
movl (%rax), %esi
movl (%r8), %eax
leal (%rax,%rsi), %edx
movslq %edx, %rdx
cmpq %rdx, %r12
jl 0x805d
movq -0x50(%rbp), %rdx
movl 0x4(%rdx), %edx
leaq 0xd068(%rip), %r14      # 0x151f0
movq -0x58(%rbp), %r9
incq %r15
movslq %edx, %rdi
cmpq %rdi, %r15
jl 0x8052
leaq 0xd04a(%rip), %rsi      # 0x151ec
movl (%rsi), %esi
movq -0x30(%rbp), %r10
incq %r10
leal (%rax,%rsi), %edi
movslq %edi, %rdi
cmpq %rdi, %r10
jl 0x8031
cmpq $0x1, -0x60(%rbp)
setne %cl
orb -0x78(%rbp), %cl
leaq 0xd020(%rip), %r15      # 0x151ec
testb $0x1, %cl
jne 0x8370
movl (%r15), %ecx
testl %ecx, %ecx
jle 0x86a2
movslq %eax, %r13
testl %eax, %eax
jle 0x835e
leaq 0xd002(%rip), %rcx      # 0x151f4
movl (%rcx), %ecx
xorl %edx, %edx
testl %ecx, %ecx
movq %rdx, -0x30(%rbp)
jle 0x832c
movslq %eax, %r12
movslq %edx, %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rcx
movq 0x10(%rcx), %rax
movq %rcx, %r15
movq 0x20(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rcx, %r14
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
leaq 0xcfb2(%rip), %rcx      # 0x151f0
movslq (%rcx), %rcx
movq -0x40(%rbp), %rbx
addq %rbx, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r15), %rax
movq 0x20(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
leaq 0xcf60(%rip), %rcx      # 0x151f0
movslq (%rcx), %rcx
addq %rbx, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq -0x50(%rbp), %r14
movq 0x18(%r14), %rax
movq (%rax,%r13,8), %rax
movq -0x30(%rbp), %r15
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r13,8), %rax
leaq 0xcf0a(%rip), %rcx      # 0x151f0
movslq (%rcx), %rcx
addq %rbx, %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%r14), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
leaq 0xcee2(%rip), %rax      # 0x151f4
movl (%rax), %ecx
leaq 0xcecd(%rip), %rax      # 0x151e8
movl (%rax), %eax
leal (%rax,%rcx), %edx
movslq %edx, %rdx
cmpq %rdx, %r12
jl 0x820c
movq -0x30(%rbp), %rsi
incq %rsi
movslq %eax, %rdx
cmpq %rdx, %rsi
movq %rsi, %rdx
jl 0x81f6
leaq 0xcea3(%rip), %r15      # 0x151ec
movl (%r15), %ecx
leaq 0xce95(%rip), %r8       # 0x151e8
leaq 0xce96(%rip), %r14      # 0x151f0
movq -0x58(%rbp), %r9
incq %r13
leal (%rax,%rcx), %edx
movslq %edx, %rdx
cmpq %rdx, %r13
jl 0x81e3
cmpq $0x2, -0x60(%rbp)
setne %cl
orb -0x70(%rbp), %cl
testb $0x1, %cl
jne 0x8526
movl (%r15), %edx
testl %edx, %edx
jle 0x7c4b
movslq %eax, %rdi
movl (%r14), %ecx
testl %ecx, %ecx
jle 0x8514
movq %rdi, -0x40(%rbp)
movslq %eax, %r10
leaq 0xce49(%rip), %rdx      # 0x151f4
movl (%rdx), %edx
movq -0x50(%rbp), %rsi
movl 0x8(%rsi), %esi
leal (%rdx,%rax), %edi
cmpl %esi, %edi
jge 0x84f5
cltq
movq %r10, -0x30(%rbp)
movslq %edx, %r12
addq %rax, %r12
movq -0x38(%rbp), %r15
movq 0x10(%r15), %rax
movq 0x28(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq -0x40(%rbp), %r13
movq (%rax,%r13,8), %rax
movq -0x30(%rbp), %r14
movq (%rax,%r14,8), %rax
leaq 0xcdf1(%rip), %rcx      # 0x151f4
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r12,8), %xmm0
movq -0x50(%rbp), %rbx
movq 0x10(%rbx), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r15), %rax
movq 0x28(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r15
movq (%rax,%r15,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r14,8), %rax
leaq 0xcd9f(%rip), %rcx      # 0x151f4
movslq (%rcx), %rcx
shlq $0x3, %rcx
subq %rcx, %rax
movsd (%rax,%r12,8), %xmm0
movq 0x18(%rbx), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq (%rax,%r15,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r14,8), %rax
leaq 0xcd51(%rip), %rcx      # 0x151f4
movslq (%rcx), %rdx
leaq (,%rdx,8), %rcx
subq %rcx, %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%rbx), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r14,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
movslq 0x8(%rbx), %rsi
cmpq %rsi, %r12
jl 0x83cb
leaq 0xcd10(%rip), %r14      # 0x151f0
movl (%r14), %ecx
leaq 0xccfe(%rip), %r8       # 0x151e8
movl (%r8), %eax
movq -0x58(%rbp), %r9
movq -0x30(%rbp), %r10
incq %r10
leal (%rax,%rcx), %edi
movslq %edi, %rdi
cmpq %rdi, %r10
jl 0x83b4
leaq 0xccde(%rip), %rdx      # 0x151ec
movl (%rdx), %edx
movq -0x40(%rbp), %rdi
incq %rdi
leal (%rax,%rdx), %esi
movslq %esi, %rsi
cmpq %rsi, %rdi
jl 0x8395
cmpq $0x2, -0x60(%rbp)
setne %cl
orb -0x78(%rbp), %cl
testb $0x1, %cl
leaq 0xccb1(%rip), %r15      # 0x151ec
jne 0x7c4b
movl (%r15), %edx
testl %edx, %edx
jle 0x86b7
movslq %eax, %r13
movl (%r14), %ecx
testl %ecx, %ecx
jle 0x868b
movslq %eax, %r15
testl %eax, %eax
jle 0x866f
xorl %r12d, %r12d
movq -0x38(%rbp), %r14
movq 0x10(%r14), %rax
movq 0x30(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
leaq 0xcc5c(%rip), %rcx      # 0x151f4
movslq (%rcx), %rcx
addq %r12, %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x50(%rbp), %rbx
movq 0x10(%rbx), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq 0x10(%r14), %rax
movq 0x30(%rax), %rdi
callq 0x418c
movq 0x18(%rax), %rax
movq -0x48(%rbp), %r14
movq (%rax,%r14,8), %rax
movq 0x18(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
leaq 0xcc0f(%rip), %rcx      # 0x151f4
movslq (%rcx), %rcx
addq %r12, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x18(%rbx), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x30(%rax), %rdi
callq 0x418c
leaq 0xcbce(%rip), %r8       # 0x151e8
movq 0x18(%rax), %rax
movq (%rax,%r14,8), %rax
movq 0x20(%rax), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
leaq 0xcbbf(%rip), %rcx      # 0x151f4
movslq (%rcx), %rcx
addq %r12, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x20(%rbx), %rax
movq (%rax,%r13,8), %rax
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
incq %r12
movslq (%r8), %rax
cmpq %rax, %r12
jl 0x8568
leaq 0xcb88(%rip), %r14      # 0x151f0
movl (%r14), %ecx
movq -0x58(%rbp), %r9
incq %r15
leal (%rax,%rcx), %edx
movslq %edx, %rdx
cmpq %rdx, %r15
jl 0x855d
leaq 0xcb64(%rip), %r15      # 0x151ec
movl (%r15), %edx
incq %r13
leal (%rax,%rdx), %esi
movslq %esi, %rsi
cmpq %rsi, %r13
jl 0x8552
jmp 0x7c4b
movq -0x60(%rbp), %rcx
incq %rcx
movq %rcx, -0x60(%rbp)
cmpq $0x3, %rcx
jne 0x7c0d
movq -0x48(%rbp), %rdx
incq %rdx
leaq 0xcf8b(%rip), %rcx      # 0x15650
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x5, %rax
cmpq %rdx, %rax
movq -0x38(%rbp), %rsi
ja 0x7bad
movq (%rsi), %rsi
cmpq -0x88(%rbp), %rsi
jne 0x74a3
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xc8ed(%rip), %rdi      # 0x14ff0
leaq 0x8af8(%rip), %rsi      # 0x11202
callq 0x21f0
movq %rax, %rdi
movl %r14d, %esi
callq 0x2340
movq %rax, %rdi
callq 0x2100
movl $0x1, %edi
callq 0x2260