// File: 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
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x28(%rbp)
movl $0xc8, %edi
callq 0x3040
movq %rax, -0x30(%rbp)
movl $0x7a120, %edi          # imm = 0x7A120
callq 0xff70
movq %rax, %rcx
leaq 0xa584(%rip), %rax      # 0x17380
movq %rcx, (%rax)
cmpl $0x7, -0x4(%rbp)
jge 0xce4a
movq 0xa1c4(%rip), %rdi      # 0x16fd0
leaq 0x4588(%rip), %rsi      # 0x1139b
callq 0x32f0
movq %rax, %rdi
movq 0xa19e(%rip), %rsi      # 0x16fc0
callq 0x3340
movq %rax, %rdi
leaq 0x492c(%rip), %rsi      # 0x1175d
callq 0x32f0
movq %rax, %rdi
movq 0xa180(%rip), %rsi      # 0x16fc0
callq 0x3340
jmp 0xd87f
movq -0x30(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x32e0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x34e0
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x34e0
movl %eax, %ecx
subl $0x1, %ecx
leaq 0xa4d0(%rip), %rax      # 0x17354
movl %ecx, (%rax)
movq $0x0, -0x18(%rbp)
cmpl $0x7, -0x4(%rbp)
jne 0xcf3e
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x138(%rbp)
leaq -0x51(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x3550
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
leaq -0x50(%rbp), %rdi
callq 0x7760
jmp 0xced0
leaq -0x50(%rbp), %rdi
leaq -0x28(%rbp), %rsi
movl $0xa, %edx
callq 0x78b0
movq %rax, -0x140(%rbp)
jmp 0xceeb
movq -0x140(%rbp), %rax
movq %rax, -0x18(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x31b0
leaq -0x51(%rbp), %rdi
callq 0x3380
jmp 0xd073
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xcf30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x31b0
leaq -0x51(%rbp), %rdi
callq 0x3380
jmp 0xd888
cmpl $0x8, -0x4(%rbp)
jne 0xd071
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x150(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x3550
movq -0x150(%rbp), %rsi
movq -0x148(%rbp), %rdx
leaq -0x88(%rbp), %rdi
callq 0x7760
jmp 0xcf86
leaq -0x88(%rbp), %rdi
leaq -0x28(%rbp), %rsi
movl $0xa, %edx
callq 0x78b0
movq %rax, -0x158(%rbp)
jmp 0xcfa4
movq -0x158(%rbp), %rax
movq %rax, %xmm0
movaps 0x41a9(%rip), %xmm1     # 0x11160
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x41ad(%rip), %xmm1     # 0x11170
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0x160(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0x3400
movaps %xmm0, %xmm1
movsd -0x160(%rbp), %xmm0
mulsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x4133(%rip), %xmm1     # 0x11140
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x18(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x31b0
leaq -0x89(%rbp), %rdi
callq 0x3380
jmp 0xd071
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xd060
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x31b0
leaq -0x89(%rbp), %rdi
callq 0x3380
jmp 0xd888
jmp 0xd073
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x3550
movq -0x168(%rbp), %rdx
leaq 0x473c(%rip), %rsi      # 0x117d0
leaq -0xb0(%rbp), %rdi
callq 0x7760
jmp 0xd0a2
leaq -0xb1(%rbp), %rdi
callq 0x3380
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd0c4
leaq 0x4373(%rip), %rsi      # 0x1143e
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd0d9
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd0ef
leaq 0x434c(%rip), %rsi      # 0x11442
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd104
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd11a
cmpl $0x6, -0x4(%rbp)
jl 0xd1b2
leaq 0x431b(%rip), %rsi      # 0x11446
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd139
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd14f
cmpl $0x7, -0x4(%rbp)
jl 0xd1b0
leaq 0x42ee(%rip), %rsi      # 0x1144a
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd16a
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd180
jmp 0xd1b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x3380
jmp 0xd888
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0xd871
jmp 0xd1b2
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x170(%rbp)
callq 0x3280
movq -0x170(%rbp), %rdi
movq %rax, -0xc0(%rbp)
callq 0x3180
movq %rax, -0xc8(%rbp)
movb $0x2e, -0xc9(%rbp)
movb $0x2d, -0xca(%rbp)
movq -0xc0(%rbp), %rdi
movq -0xc8(%rbp), %rsi
leaq -0xc9(%rbp), %rdx
leaq -0xca(%rbp), %rcx
callq 0x78f0
jmp 0xd210
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x178(%rbp)
callq 0x3280
movq -0x178(%rbp), %rdi
movq %rax, -0xd8(%rbp)
callq 0x3180
movq %rax, -0xe0(%rbp)
movb $0x2f, -0xe1(%rbp)
movb $0x7e, -0xe2(%rbp)
movq -0xd8(%rbp), %rdi
movq -0xe0(%rbp), %rsi
leaq -0xe1(%rbp), %rdx
leaq -0xe2(%rbp), %rcx
callq 0x78f0
jmp 0xd26e
leaq -0x109(%rbp), %rdi
movq %rdi, -0x180(%rbp)
callq 0x3550
movq -0x180(%rbp), %rdx
leaq 0x3d77(%rip), %rsi      # 0x11006
leaq -0x108(%rbp), %rdi
callq 0x7760
jmp 0xd29d
leaq -0x109(%rbp), %rdi
callq 0x3380
leaq -0x108(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x35c0
movq %rax, -0x188(%rbp)
jmp 0xd2c5
movq -0x188(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x3050
jmp 0xd2da
leaq 0x4062(%rip), %rsi      # 0x11343
leaq -0xb0(%rbp), %rdi
callq 0x35b0
jmp 0xd2ef
leaq -0xb0(%rbp), %rdi
callq 0x3110
movq %rax, %rdi
movq 0x9cab(%rip), %rax      # 0x16fb0
movq (%rax), %rdx
leaq 0x4055(%rip), %rsi      # 0x11364
callq 0x3360
jmp 0xd316
callq 0x10000
jmp 0xd31d
movq -0x18(%rbp), %rdi
callq 0xff70
movq %rax, -0x190(%rbp)
jmp 0xd32f
movq -0x190(%rbp), %rax
movq %rax, -0x18(%rbp)
movq 0x9c8f(%rip), %rdi      # 0x16fd0
leaq 0x4107(%rip), %rsi      # 0x1144f
callq 0x32f0
movq %rax, -0x198(%rbp)
jmp 0xd356
movq -0x198(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x32d0
movq %rax, -0x1a0(%rbp)
jmp 0xd36f
movq -0x1a0(%rbp), %rdi
movq 0x9c43(%rip), %rsi      # 0x16fc0
callq 0x3340
jmp 0xd384
movq 0x9c45(%rip), %rdi      # 0x16fd0
leaq 0x40cb(%rip), %rsi      # 0x1145d
callq 0x32f0
movq %rax, -0x1a8(%rbp)
jmp 0xd3a0
movq -0x1a8(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x32f0
movq %rax, -0x1b0(%rbp)
jmp 0xd3b9
movq -0x1b0(%rbp), %rdi
leaq 0x40a1(%rip), %rsi      # 0x11468
callq 0x32f0
movq %rax, -0x1b8(%rbp)
jmp 0xd3d5
movq -0x1b8(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x3530
movq %rax, -0x1c0(%rbp)
jmp 0xd3ed
movq -0x1c0(%rbp), %rdi
leaq 0x4076(%rip), %rsi      # 0x11471
callq 0x32f0
movq %rax, -0x1c8(%rbp)
jmp 0xd409
movq -0x1c8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x32d0
movq %rax, -0x1d0(%rbp)
jmp 0xd422
movq -0x1d0(%rbp), %rdi
movq 0x9b90(%rip), %rsi      # 0x16fc0
callq 0x3340
jmp 0xd437
callq 0x100a0
jmp 0xd43e
movq -0x18(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movl $0x6, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x3040
movq %rax, -0x1d8(%rbp)
jmp 0xd46d
movq -0x1e0(%rbp), %rax
cmpq $0x0, %rax
je 0xd4d1
movq -0x1d8(%rbp), %rax
movq -0x1e0(%rbp), %rcx
imulq $0x6, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x1f0(%rbp)
movq %rax, -0x1e8(%rbp)
movq -0x1e8(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0xdb40
movq -0x1f8(%rbp), %rax
movq -0x1f0(%rbp), %rcx
addq $0x6, %rax
cmpq %rcx, %rax
movq %rax, -0x1e8(%rbp)
jne 0xd4a0
movq -0x1d8(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq 0x9e9a(%rip), %rax      # 0x17380
movq (%rax), %rax
movq %rax, -0x208(%rbp)
movl $0x18, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
addq $0x8, %rdi
movq $-0x1, %rax
cmovbq %rax, %rdi
testb %cl, %cl
cmovneq %rax, %rdi
callq 0x3040
movq %rax, -0x200(%rbp)
jmp 0xd521
movq -0x208(%rbp), %rax
movq -0x200(%rbp), %rcx
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0x210(%rbp)
cmpq $0x0, %rax
je 0xd59a
movq -0x210(%rbp), %rax
movq -0x208(%rbp), %rcx
imulq $0x18, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x220(%rbp)
movq %rax, -0x218(%rbp)
movq -0x218(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0xdcd0
movq -0x228(%rbp), %rax
movq -0x220(%rbp), %rcx
addq $0x18, %rax
cmpq %rcx, %rax
movq %rax, -0x218(%rbp)
jne 0xd569
movq -0x210(%rbp), %rax
movq %rax, 0x9d98(%rip)      # 0x17340
movq -0x118(%rbp), %rdi
movq -0x18(%rbp), %rax
addq %rax, %rax
leaq (%rax,%rax,2), %rdx
xorl %esi, %esi
callq 0x3160
callq 0x10000
jmp 0xd5c8
movq -0x118(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x30(%rbp), %rdx
movzwl -0x1c(%rbp), %ecx
callq 0xa690
jmp 0xd5e2
callq 0x9950
jmp 0xd5e9
callq 0x10000
jmp 0xd5f0
movq -0x118(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x9b10
jmp 0xd602
callq 0x10000
jmp 0xd609
leaq -0x120(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xf7b0
jmp 0xd61e
movq 0x99ab(%rip), %rdi      # 0x16fd0
leaq 0x3e4d(%rip), %rsi      # 0x11479
callq 0x32f0
movq %rax, -0x230(%rbp)
jmp 0xd63a
movq -0x230(%rbp), %rdi
movaps 0x3b18(%rip), %xmm1     # 0x11160
movq -0x18(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x3b17(%rip), %xmm1     # 0x11170
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x3fe8(%rip), %xmm1     # 0x11658
mulsd %xmm1, %xmm0
movsd 0x3ad4(%rip), %xmm1     # 0x11150
mulsd %xmm1, %xmm0
callq 0x35a0
movq %rax, -0x238(%rbp)
jmp 0xd68e
movq -0x238(%rbp), %rdi
movq 0x9924(%rip), %rsi      # 0x16fc0
callq 0x3340
jmp 0xd6a3
movq 0x9926(%rip), %rdi      # 0x16fd0
leaq 0x3dec(%rip), %rsi      # 0x1149d
callq 0x32f0
movq %rax, -0x240(%rbp)
jmp 0xd6bf
movq -0x240(%rbp), %rdi
movsd -0x120(%rbp), %xmm0
movsd 0x3a62(%rip), %xmm1     # 0x11138
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movaps 0x3a7b(%rip), %xmm2     # 0x11160
movq -0x18(%rbp), %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x3a7a(%rip), %xmm2     # 0x11170
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
movsd 0x3f53(%rip), %xmm2     # 0x11660
mulsd %xmm2, %xmm1
movsd 0x3a37(%rip), %xmm2     # 0x11150
mulsd %xmm2, %xmm1
addsd %xmm1, %xmm0
callq 0x35a0
movq %rax, -0x248(%rbp)
jmp 0xd72f
movq -0x248(%rbp), %rdi
movq 0x9883(%rip), %rsi      # 0x16fc0
callq 0x3340
jmp 0xd744
movq 0x9885(%rip), %rdi      # 0x16fd0
leaq 0x3d6f(%rip), %rsi      # 0x114c1
callq 0x32f0
movq %rax, -0x250(%rbp)
jmp 0xd760
movq -0x250(%rbp), %rdi
movsd -0x120(%rbp), %xmm0
movsd 0x39c1(%rip), %xmm1     # 0x11138
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
callq 0x35a0
movq %rax, -0x258(%rbp)
jmp 0xd78d
movq -0x258(%rbp), %rdi
movq 0x9825(%rip), %rsi      # 0x16fc0
callq 0x3340
jmp 0xd7a2
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
leaq 0x3d2a(%rip), %rdi      # 0x114db
callq 0x3470
cmpl $0x0, %eax
je 0xd7d4
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
leaq 0x3d13(%rip), %rdi      # 0x114dd
callq 0x3470
cmpl $0x0, %eax
jne 0xd826
movq -0x118(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x1c(%rbp), %edx
movq 0x9b57(%rip), %rcx      # 0x17340
callq 0xc500
jmp 0xd7f0
jmp 0xd826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x109(%rbp), %rdi
callq 0x3380
jmp 0xd871
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x31b0
jmp 0xd871
movq -0x118(%rbp), %rax
movq %rax, -0x260(%rbp)
cmpq $0x0, %rax
je 0xd846
movq -0x260(%rbp), %rdi
callq 0x3430
movq 0x9763(%rip), %rax      # 0x16fb0
movq (%rax), %rdi
callq 0x3300
jmp 0xd857
leaq -0x108(%rbp), %rdi
callq 0x31b0
leaq -0xb0(%rbp), %rdi
callq 0x31b0
jmp 0xd87f
leaq -0xb0(%rbp), %rdi
callq 0x31b0
jmp 0xd888
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq -0x60(%rbp), %rdi
callq 0x3540
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)