// File: /workspace/github_cpp_makefile_star2_O2/ratulSharker[P]Havec/src/vector_with_rehash_8_hash_with_N_detection_6_bytes.cpp
// Function: main6Byte(int, char**)
void main6Byte(int argc, char** argv) {

	//freopen("results.txt","w",stdout);
	unsigned long long size;
	int kSize;
	std::string::size_type sz = 0;
	char *filename=new char[200];
	num_of_vector = get_a_prime_above_x(500000);
	
	/*
	* new variable introduced in the 6 byte code section --- which is cutoff value
	*/
	
	if(argc < 7){//newly changed
		std::cout<<"sufficient number of argument is not passed"<<std::endl<<" 'fileName' 'khmersize' 'howManyHash' 'cut-off or no cut-off' 'print or not print' 'hashSize' 'multiplying factor'"<<std::endl;//newly changed
		return ;
	}


	/*std::string::size_type sz = 0;
	std::cout<<"Give input file name :: "<<std::endl;
	std::cin>>filename;*/

	//fetching the args
	strcpy(filename,argv[1]);
	kSize = atoi(argv[2]);
	LAST_HASH_FUNC = atoi(argv[3])-1;//0 indexing hash function used
	
	//size =  std::stoull(argv[3],&sz,10);
	size= 0;
	if(argc == 7){ //size provided as the last argument -- so process it //newly changed
		size =  std::stoull(argv[6],&sz,10);//newly changed
	}
	else if(argc == 8)//newly changed
	{
		/*
		* here we parse the multiplying by factor --- which is not optional anymore
 		*/
		size =  std::stoull(argv[6],&sz,10) * atof(argv[7]);//newly changed
	}

/* unblock this area -- you must should (blocked this code section due to low memory space)
 * warning 
 * warning
 * WARNING --- unblock this code of section before releasing
 */
 /*
	if(size < (pow(2,2 * kSize - 33)+ 536870912)){
		size = pow(2,2 * kSize - 33)+ 536870912;
	}
*/


//building the filename
	string fileName = "6_";
	fileName.append(argv[1]);

	fileName.append("_k_");
	fileName.append(argv[2]);
	fileName.append("_h_");
	fileName.append(argv[3]);

	if(argc >= 6)
	{
		fileName.append("_s_");
		fileName.append(argv[6]);

		if(argc >= 7)
		{
			fileName.append("_mf_");
			fileName.append(argv[7]);
		}
	}
	//cant contain the dot, thats why replacing it with the 
	// - char
	replace(fileName.begin(), fileName.end(), '.', '-');
	replace(fileName.begin(), fileName.end(), '/', '~');


	string outputDir = OUTPUT_DIRECTORY_NAME;
	fileName = outputDir.append(fileName);
	fileName.append(".txt");
	
	//enable this line will give you access the whole output in the cmd
	freopen(fileName.c_str(),"w",stdout);

	
	currentDateTime();
	
	/*std::cout<<"Give Kmer Size :: "<<std::endl;
	std::cin>>kSize;
	std::cout<<"Minimum space you want to give to hash's :: "<<std::endl;
	std::cin>>size;*/
	//initial memory arrangement
	size=get_a_prime_above_x(size);
	cout<<"Hash size is "<<size<<endl;

	std::cout<<"filename::"<<filename<<" ksize::"<<kSize<<" Size::"<<size<<std::endl;

	populateTwoBitReprHashMap();//populating map
	struct khmerInfo6Byte *blockArray=new struct khmerInfo6Byte[size];
	mapPointer6Byte=new vector<struct vector_trial_6_byte>[num_of_vector];
	
	//cleaning the array
	memset( blockArray, 0, sizeof(struct khmerInfo6Byte) * size);

/*	
	bool zeroFound = true;
	for(int j=0;j<size;j++){
		if(blockArray[j].count != 0){
			zeroFound = false;
			break;
		}		
	}

	if(zeroFound == false){
		cout<<"All are not set to zero"<<endl;
	}
	else{
		cout<<"All are zero"<<endl;
	}


	cout<<"After memory allocation"<<endl;
	*/
	
	currentDateTime();

	//this function will populate the whole memblock & the vector structure
	populateBlock6Byte(blockArray, size , filename , kSize);

	show_vect_status_6_byte();
	
	currentDateTime();
	
	//rechecking ...
	//reCheckTheKhmerExistence6Byte(blockArray,size,argv[1],kSize);
	show_count_status(blockArray,size);
	currentDateTime();
	
	double vm, rss;
	process_mem_usage(vm, rss);
	
	cout<<"HashTable memory allocation (GB):: "<<((double)size * 6.0 )/(1024.0 * 1024.0 * 1024.0)<<endl;
	cout<<"Vector memory allocation    (GB):: "<<(((vm)/1024.0)/1024.0) - (((double)size * 6.0 )/(1024.0 * 1024.0 * 1024.0)) <<endl;

	cout << "Total memory used (GB):  " << ((vm)/1024.0)/1024.0 <<endl;
	
	/*//newly changed
	* before deleting the block array check for the print state
	*/
	if(strcmp("p",argv[5]) == 0 ||  strcmp("P",argv[5]) == 0 ) //newly changed
	{
		//time to print the whole block array
		print6ByteHashTableAndVectorStructure(blockArray , size, kSize,mapPointer6Byte);
	}
	
	delete [] blockArray;
	
	fclose(stdout);
	return ;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rsi, %r14
movl %edi, %ebx
andq $0x0, 0x28(%rsp)
movl $0xc8, %edi
callq 0x2030
movq %rax, %r13
movl $0x7a120, %edi          # imm = 0x7A120
callq 0x75cf
leaq 0x52da(%rip), %rcx      # 0xb2c0
movq %rax, (%rcx)
cmpl $0x6, %ebx
jg 0x6031
movq 0x4fdb(%rip), %rdi      # 0xafd0
leaq 0x2250(%rip), %rsi      # 0x824c
callq 0x2220
movq %rax, %rdi
callq 0x20e0
leaq 0x25b9(%rip), %rsi      # 0x85c9
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x20e0
movq 0x8(%r14), %rsi
movq %r13, %rdi
callq 0x2210
movq 0x10(%r14), %rdi
callq 0x23a0
movl %eax, %ebp
movq 0x18(%r14), %rdi
callq 0x23a0
decl %eax
leaq 0x523a(%rip), %rcx      # 0xb294
movl %eax, (%rcx)
cmpl $0x8, %ebx
je 0x6090
cmpl $0x7, %ebx
jne 0x6110
movq 0x30(%r14), %rsi
movq %rsp, %rdi
leaq 0x40(%rsp), %rdx
callq 0x421e
movq %rsp, %rdi
leaq 0x28(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x4291
movq %rax, %rbx
jmp 0x6106
movq 0x30(%r14), %rsi
movq %rsp, %rdi
leaq 0x40(%rsp), %rdx
callq 0x421e
movq %rsp, %rdi
leaq 0x28(%rsp), %rsi
pushq $0xa
popq %rdx
callq 0x4291
movq %rax, %xmm0
punpckldq 0x1fb2(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x1fba(%rip), %xmm0     # 0x8080
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, 0x30(%rsp)
movq 0x38(%r14), %rdi
callq 0x22f0
mulsd 0x30(%rsp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x1f1d(%rip), %xmm0     # 0x8018
cvttsd2si %xmm0, %rbx
andq %rcx, %rbx
orq %rax, %rbx
movq %rsp, %rdi
callq 0x20c0
jmp 0x6112
xorl %ebx, %ebx
leaq 0x2523(%rip), %rsi      # 0x863c
movq %rsp, %rdi
leaq 0x40(%rsp), %rdx
callq 0x421e
movq 0x8(%r14), %rsi
movq %rsp, %rdi
callq 0x2440
leaq 0x21b6(%rip), %rsi      # 0x82ef
movq %rsp, %rdi
callq 0x2440
movq 0x10(%r14), %rsi
movq %rsp, %rdi
callq 0x2440
leaq 0x219f(%rip), %rsi      # 0x82f3
movq %rsp, %rdi
callq 0x2440
movq 0x18(%r14), %rsi
movq %rsp, %rdi
callq 0x2440
leaq 0x2188(%rip), %rsi      # 0x82f7
movq %rsp, %rdi
callq 0x2440
movq 0x30(%r14), %rsi
movq %rsp, %rdi
callq 0x2440
leaq 0x2171(%rip), %rsi      # 0x82fb
movq %rsp, %rdi
callq 0x2440
movq 0x38(%r14), %rsi
movq %rsp, %rdi
callq 0x2440
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
addq %rdi, %rsi
leaq 0x40(%rsp), %r15
movb $0x2e, (%r15)
leaq 0x20(%rsp), %r12
movb $0x2d, (%r12)
movq %r15, %rdx
movq %r12, %rcx
callq 0x42ad
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
addq %rdi, %rsi
movb $0x2f, (%r15)
movb $0x7e, (%r12)
leaq 0x40(%rsp), %rdx
leaq 0x20(%rsp), %rcx
callq 0x42ad
leaq 0x1e11(%rip), %rsi      # 0x8004
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x421e
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x2460
movq %rsp, %rdi
movq %rax, %rsi
callq 0x2100
leaq 0x2004(%rip), %rsi      # 0x8225
movq %rsp, %rdi
callq 0x2440
movq (%rsp), %rdi
movq 0x4d84(%rip), %rax      # 0xafb8
movq (%rax), %rdx
leaq 0x2008(%rip), %rsi      # 0x8246
callq 0x2280
callq 0x7610
movq %rbx, %rdi
callq 0x75cf
movq %rax, %r12
movq 0x4d76(%rip), %rdi      # 0xafd0
leaq 0x209f(%rip), %rsi      # 0x8300
callq 0x2220
movq %rax, %rdi
movq %r12, %rsi
callq 0x2160
movq %rax, %rdi
callq 0x20e0
movq 0x4d50(%rip), %rdi      # 0xafd0
leaq 0x2087(%rip), %rsi      # 0x830e
callq 0x2220
movq %rax, %rdi
movq %r13, %rsi
callq 0x2220
leaq 0x207b(%rip), %rsi      # 0x8319
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
movl %ebp, %esi
callq 0x23f0
leaq 0x206b(%rip), %rsi      # 0x8322
movq %rax, %rdi
callq 0x2220
movq %rax, %rdi
movq %r12, %rsi
callq 0x2160
movq %rax, %rdi
callq 0x20e0
callq 0x769d
movq %r13, 0x78(%rsp)
movl %ebp, 0x30(%rsp)
pushq $0x6
popq %r15
movq %r12, %rax
mulq %r15
pushq $-0x1
popq %rbx
movq %rax, 0x60(%rsp)
movq %rax, %rdi
cmovoq %rbx, %rdi
callq 0x2030
movq %rax, %r13
testq %r12, %r12
je 0x6848
imulq $0x6, %r12, %rax
addq $-0x6, %rax
xorl %ecx, %ecx
xorl %edx, %edx
divq %r15
leaq 0x10(%rax), %rsi
movabsq $0x7ffffffffffffff0, %rdx # imm = 0x7FFFFFFFFFFFFFF0
andq %rsi, %rdx
movq %rax, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
leaq 0x5f(%r13), %rax
movdqa 0x2180(%rip), %xmm3     # 0x84c0
movdqa 0x2188(%rip), %xmm4     # 0x84d0
movdqa 0x2190(%rip), %xmm5     # 0x84e0
movdqa 0x2198(%rip), %xmm6     # 0x84f0
movdqa 0x21a0(%rip), %xmm7     # 0x8500
movdqa 0x21a7(%rip), %xmm8     # 0x8510
movdqa 0x21ae(%rip), %xmm9     # 0x8520
pcmpeqd %xmm10, %xmm10
movq %rcx, %xmm11
pshufd $0x44, %xmm11, %xmm11   # xmm11 = xmm11[0,1,0,1]
movdqa %xmm11, %xmm13
por %xmm8, %xmm13
movdqa %xmm0, %xmm12
pxor %xmm9, %xmm12
pxor %xmm9, %xmm13
movdqa %xmm13, %xmm15
pcmpgtd %xmm12, %xmm15
pshufd $0xa0, %xmm15, %xmm14   # xmm14 = xmm15[0,0,2,2]
pshuflw $0xe8, %xmm14, %xmm1    # xmm1 = xmm14[0,2,2,3,4,5,6,7]
pcmpeqd %xmm12, %xmm13
pshufd $0xf5, %xmm13, %xmm13   # xmm13 = xmm13[1,1,3,3]
pshuflw $0xe8, %xmm13, %xmm2    # xmm2 = xmm13[0,2,2,3,4,5,6,7]
pand %xmm1, %xmm2
pshufd $0xf5, %xmm15, %xmm15   # xmm15 = xmm15[1,1,3,3]
pshuflw $0xe8, %xmm15, %xmm1    # xmm1 = xmm15[0,2,2,3,4,5,6,7]
por %xmm2, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
movd %xmm1, %esi
testb $0x1, %sil
je 0x63ed
movb $0x0, -0x5a(%rax)
pand %xmm14, %xmm13
por %xmm15, %xmm13
packssdw %xmm13, %xmm13
pxor %xmm10, %xmm13
packssdw %xmm13, %xmm13
packsswb %xmm13, %xmm13
movd %xmm13, %esi
shrl $0x8, %esi
testb $0x1, %sil
je 0x641d
movb $0x0, -0x54(%rax)
movdqa %xmm11, %xmm1
por %xmm7, %xmm1
pxor %xmm9, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm12, %xmm2
pshufd $0xa0, %xmm2, %xmm13    # xmm13 = xmm2[0,0,2,2]
pcmpeqd %xmm12, %xmm1
pshufd $0xf5, %xmm1, %xmm14    # xmm14 = xmm1[1,1,3,3]
movdqa %xmm14, %xmm1
pand %xmm13, %xmm1
pshufd $0xf5, %xmm2, %xmm15    # xmm15 = xmm2[1,1,3,3]
por %xmm15, %xmm1
packssdw %xmm1, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
movd %xmm1, %esi
shrl $0x10, %esi
testb $0x1, %sil
je 0x647c
movb $0x0, -0x4e(%rax)
pshufhw $0x84, %xmm13, %xmm1    # xmm1 = xmm13[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm14, %xmm2    # xmm2 = xmm14[0,1,2,3,4,5,4,6]
pand %xmm1, %xmm2
pshufhw $0x84, %xmm15, %xmm1    # xmm1 = xmm15[0,1,2,3,4,5,4,6]
por %xmm2, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
movd %xmm1, %esi
shrl $0x18, %esi
testb $0x1, %sil
je 0x64b4
movb $0x0, -0x48(%rax)
movdqa %xmm11, %xmm1
por %xmm6, %xmm1
pxor %xmm9, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm12, %xmm2
pshufd $0xa0, %xmm2, %xmm14    # xmm14 = xmm2[0,0,2,2]
pshuflw $0xe8, %xmm14, %xmm15   # xmm15 = xmm14[0,2,2,3,4,5,6,7]
pcmpeqd %xmm12, %xmm1
pshufd $0xf5, %xmm1, %xmm13    # xmm13 = xmm1[1,1,3,3]
pshuflw $0xe8, %xmm13, %xmm1    # xmm1 = xmm13[0,2,2,3,4,5,6,7]
pand %xmm15, %xmm1
pshufd $0xf5, %xmm2, %xmm15    # xmm15 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm15, %xmm2    # xmm2 = xmm15[0,2,2,3,4,5,6,7]
por %xmm1, %xmm2
pxor %xmm10, %xmm2
packssdw %xmm2, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x2, %xmm1, %esi
testb $0x1, %sil
je 0x6519
movb $0x0, -0x42(%rax)
pand %xmm14, %xmm13
por %xmm15, %xmm13
packssdw %xmm13, %xmm13
pxor %xmm10, %xmm13
packssdw %xmm13, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x2, %xmm1, %esi
shrl $0x8, %esi
testb $0x1, %sil
je 0x6548
movb $0x0, -0x3c(%rax)
movdqa %xmm11, %xmm1
por %xmm5, %xmm1
pxor %xmm9, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm12, %xmm2
pshufd $0xa0, %xmm2, %xmm13    # xmm13 = xmm2[0,0,2,2]
pcmpeqd %xmm12, %xmm1
pshufd $0xf5, %xmm1, %xmm14    # xmm14 = xmm1[1,1,3,3]
movdqa %xmm14, %xmm1
pand %xmm13, %xmm1
pshufd $0xf5, %xmm2, %xmm15    # xmm15 = xmm2[1,1,3,3]
por %xmm15, %xmm1
packssdw %xmm1, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x3, %xmm1, %esi
testb $0x1, %sil
je 0x65a5
movb $0x0, -0x36(%rax)
pshufhw $0x84, %xmm13, %xmm1    # xmm1 = xmm13[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm14, %xmm2    # xmm2 = xmm14[0,1,2,3,4,5,4,6]
pand %xmm1, %xmm2
pshufhw $0x84, %xmm15, %xmm1    # xmm1 = xmm15[0,1,2,3,4,5,4,6]
por %xmm2, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x3, %xmm1, %esi
shrl $0x8, %esi
testb $0x1, %sil
je 0x65de
movb $0x0, -0x30(%rax)
movdqa %xmm11, %xmm1
por %xmm4, %xmm1
pxor %xmm9, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm12, %xmm2
pshufd $0xa0, %xmm2, %xmm14    # xmm14 = xmm2[0,0,2,2]
pshuflw $0xe8, %xmm14, %xmm15   # xmm15 = xmm14[0,2,2,3,4,5,6,7]
pcmpeqd %xmm12, %xmm1
pshufd $0xf5, %xmm1, %xmm13    # xmm13 = xmm1[1,1,3,3]
pshuflw $0xe8, %xmm13, %xmm1    # xmm1 = xmm13[0,2,2,3,4,5,6,7]
pand %xmm15, %xmm1
pshufd $0xf5, %xmm2, %xmm15    # xmm15 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm15, %xmm2    # xmm2 = xmm15[0,2,2,3,4,5,6,7]
por %xmm1, %xmm2
pxor %xmm10, %xmm2
packssdw %xmm2, %xmm2
packsswb %xmm2, %xmm1
pextrw $0x4, %xmm1, %esi
testb $0x1, %sil
je 0x6643
movb $0x0, -0x2a(%rax)
pand %xmm14, %xmm13
por %xmm15, %xmm13
packssdw %xmm13, %xmm13
pxor %xmm10, %xmm13
packssdw %xmm13, %xmm13
packsswb %xmm13, %xmm1
pextrw $0x4, %xmm1, %esi
shrl $0x8, %esi
testb $0x1, %sil
je 0x6673
movb $0x0, -0x24(%rax)
movdqa %xmm11, %xmm1
por %xmm3, %xmm1
pxor %xmm9, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm12, %xmm2
pshufd $0xa0, %xmm2, %xmm13    # xmm13 = xmm2[0,0,2,2]
pcmpeqd %xmm12, %xmm1
pshufd $0xf5, %xmm1, %xmm14    # xmm14 = xmm1[1,1,3,3]
movdqa %xmm14, %xmm1
pand %xmm13, %xmm1
pshufd $0xf5, %xmm2, %xmm15    # xmm15 = xmm2[1,1,3,3]
por %xmm15, %xmm1
packssdw %xmm1, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x5, %xmm1, %esi
testb $0x1, %sil
je 0x66d0
movb $0x0, -0x1e(%rax)
pshufhw $0x84, %xmm13, %xmm1    # xmm1 = xmm13[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm14, %xmm2    # xmm2 = xmm14[0,1,2,3,4,5,4,6]
pand %xmm1, %xmm2
pshufhw $0x84, %xmm15, %xmm1    # xmm1 = xmm15[0,1,2,3,4,5,4,6]
por %xmm2, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x5, %xmm1, %esi
shrl $0x8, %esi
testb $0x1, %sil
je 0x6709
movb $0x0, -0x18(%rax)
movdqa %xmm11, %xmm1
por 0x1d9a(%rip), %xmm1     # 0x84b0
pxor %xmm9, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm12, %xmm2
pshufd $0xa0, %xmm2, %xmm14    # xmm14 = xmm2[0,0,2,2]
pshuflw $0xe8, %xmm14, %xmm15   # xmm15 = xmm14[0,2,2,3,4,5,6,7]
pcmpeqd %xmm12, %xmm1
pshufd $0xf5, %xmm1, %xmm13    # xmm13 = xmm1[1,1,3,3]
pshuflw $0xe8, %xmm13, %xmm1    # xmm1 = xmm13[0,2,2,3,4,5,6,7]
pand %xmm15, %xmm1
pshufd $0xf5, %xmm2, %xmm15    # xmm15 = xmm2[1,1,3,3]
pshuflw $0xe8, %xmm15, %xmm2    # xmm2 = xmm15[0,2,2,3,4,5,6,7]
por %xmm1, %xmm2
pxor %xmm10, %xmm2
packssdw %xmm2, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x6, %xmm1, %esi
testb $0x1, %sil
je 0x6772
movb $0x0, -0x12(%rax)
pand %xmm14, %xmm13
por %xmm15, %xmm13
packssdw %xmm13, %xmm13
pxor %xmm10, %xmm13
packssdw %xmm13, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x6, %xmm1, %esi
shrl $0x8, %esi
testb $0x1, %sil
je 0x67a1
movb $0x0, -0xc(%rax)
por 0x1cf6(%rip), %xmm11    # 0x84a0
pxor %xmm9, %xmm11
movdqa %xmm11, %xmm1
pcmpgtd %xmm12, %xmm1
pshufd $0xa0, %xmm1, %xmm13    # xmm13 = xmm1[0,0,2,2]
pcmpeqd %xmm12, %xmm11
pshufd $0xf5, %xmm11, %xmm11   # xmm11 = xmm11[1,1,3,3]
movdqa %xmm11, %xmm2
pand %xmm13, %xmm2
pshufd $0xf5, %xmm1, %xmm12    # xmm12 = xmm1[1,1,3,3]
por %xmm12, %xmm2
packssdw %xmm2, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x7, %xmm1, %esi
testb $0x1, %sil
je 0x67ff
movb $0x0, -0x6(%rax)
pshufhw $0x84, %xmm13, %xmm1    # xmm1 = xmm13[0,1,2,3,4,5,4,6]
pshufhw $0x84, %xmm11, %xmm2    # xmm2 = xmm11[0,1,2,3,4,5,4,6]
pand %xmm1, %xmm2
pshufhw $0x84, %xmm12, %xmm1    # xmm1 = xmm12[0,1,2,3,4,5,4,6]
por %xmm2, %xmm1
pxor %xmm10, %xmm1
packssdw %xmm1, %xmm1
packsswb %xmm1, %xmm1
pextrw $0x7, %xmm1, %esi
shrl $0x8, %esi
testb $0x1, %sil
je 0x6837
movb $0x0, (%rax)
addq $0x10, %rcx
addq $0x60, %rax
cmpq %rcx, %rdx
jne 0x6377
leaq 0x4a71(%rip), %rax      # 0xb2c0
movq (%rax), %r15
pushq $0x18
popq %rbp
movq %r15, %rax
mulq %rbp
seto %cl
addq $0x8, %rax
cmovbq %rbx, %rax
testb %cl, %cl
cmoveq %rax, %rbx
movq %rbx, %rdi
callq 0x2030
movq %rax, %rbx
movq %r15, (%rax)
addq $0x8, %rbx
testq %r15, %r15
je 0x68a7
imulq $0x18, %r15, %rcx
addq $-0x18, %rcx
movq %rcx, %rax
xorl %edx, %edx
divq %rbp
subq %rdx, %rcx
addq $0x18, %rcx
movq %rbx, %rdi
xorl %esi, %esi
movq %rcx, %rdx
callq 0x2120
movq %rbx, 0x49d2(%rip)      # 0xb280
movq %r13, %rdi
xorl %esi, %esi
movq 0x60(%rsp), %rdx
callq 0x2120
callq 0x7610
movzwl 0x30(%rsp), %ecx
movq %r13, %rdi
movq %r12, %rsi
movq 0x78(%rsp), %rdx
callq 0x4d86
callq 0x4898
callq 0x7610
movq %r13, %rdi
movq %r12, %rsi
callq 0x4959
callq 0x7610
leaq 0x20(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x6f54
movq 0x46c6(%rip), %rdi      # 0xafd0
leaq 0x1a19(%rip), %rsi      # 0x832a
callq 0x2220
movq %r12, %xmm1
punpckldq 0x174d(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1755(%rip), %xmm1     # 0x8080
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
mulsd 0x1b19(%rip), %xmm0     # 0x8458
mulsd 0x16e1(%rip), %xmm0     # 0x8028
movq %rax, %rdi
movapd %xmm0, 0x60(%rsp)
callq 0x23c0
movq %rax, %rdi
callq 0x20e0
movq 0x466c(%rip), %rdi      # 0xafd0
leaq 0x19e3(%rip), %rsi      # 0x834e
callq 0x2220
movsd 0x1698(%rip), %xmm1     # 0x8010
movsd 0x20(%rsp), %xmm0
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
subsd 0x60(%rsp), %xmm0
movq %rax, %rdi
callq 0x23c0
movq %rax, %rdi
callq 0x20e0
movq 0x462d(%rip), %rdi      # 0xafd0
leaq 0x19c8(%rip), %rsi      # 0x8372
callq 0x2220
movsd 0x20(%rsp), %xmm0
movsd 0x1653(%rip), %xmm1     # 0x8010
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movq %rax, %rdi
callq 0x23c0
movq %rax, %rdi
callq 0x20e0
movq 0x28(%r14), %rcx
movzbl (%rcx), %eax
cmpl $0x70, %eax
jne 0x69e9
cmpb $0x0, 0x1(%rcx)
jne 0x6a0e
jmp 0x69f8
subl $0x50, %eax
jne 0x69f2
movzbl 0x1(%rcx), %eax
negl %eax
testl %eax, %eax
jne 0x6a0e
movq 0x4881(%rip), %rcx      # 0xb280
movq %r13, %rdi
movq %r12, %rsi
movl 0x30(%rsp), %edx
callq 0x5c10
movq %r13, %rdi
callq 0x2320
movq 0x459b(%rip), %rax      # 0xafb8
movq (%rax), %rdi
callq 0x2230
leaq 0x40(%rsp), %rdi
callq 0x20c0
movq %rsp, %rdi
callq 0x20c0
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6a5a
jmp 0x6a5a
jmp 0x6a53
jmp 0x6a53
jmp 0x6a5a
movq %rax, %rbx
jmp 0x6a76
jmp 0x6a61
movq %rax, %rbx
jmp 0x6a6e
jmp 0x6a61
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x20c0
movq %rsp, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x2400