// File: gvaumour[P]cache-simulator/src/Cerebron.cc
// Function: CerebronPredictor::reportAccess(Access, CacheEntry*, int, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void
CerebronPredictor::reportAccess(Access element, CacheEntry* current, int set, bool inNVM, string entete, string reuse_class)
{
	if(!simu_parameters.printDebug)
		return;

	string cl_location = inNVM ? "NVM" : "SRAM";
	string is_learning = current->isLearning_policy ? "LearningPolicy" : "Regular";
	is_learning += current->isLearning_weight ? "+LearningWeight" : "";
	is_learning ="";
	string access_type = element.isWrite() ? "WRITE" : "READ";
	
	string is_error= "";
	if(element.isSRAMerror)
		is_error = ", is an SRAM error";

	string des = "[" , confidence = "[", hashes = "[";	
	int total = 0;
	for(unsigned i = 0 ; i < m_features.size() ; i++)
	{
		int hash = hashing_function1( m_features_hash[i] , current->address , current->missPC);		
		confidence += to_string(m_features[i]->getConfidence(hash, true)) + " , ";
		des += string(str_allocDecision[m_features[i]->getAllocDecision(hash, element.isWrite())]) + " , " ;
		hashes += to_string(hash) + " , ";
		
		int conf = m_features[i]->getConfidence(hash, true);
		allocDecision a = m_features[i]->getAllocDecision(hash, element.isWrite());

		if( a == ALLOCATE_IN_SRAM)
			total += (-1) * conf;
		else
			total += conf; 
	}
	allocDecision final_des = convertToAllocDecision(total , element.isWrite());
	int first_hash = hashing_function1( m_features_hash[0] , current->address , current->missPC);
	
	debug_file << entete << ":Dataset n°" << first_hash << ": "
	<< str_allocDecision[final_des ] << "," \
	<< access_type << " on " << is_learning << " Cl 0x" << std::hex << current->address \
	<< std::dec << " allocated in " << cl_location<< ", Reuse=" << reuse_class \
	<< is_error << ", Features Hashes=" << hashes << "] , " \
        << "Des=" << des << "] , Confidence=" << confidence << "]";
        
	if( simu_parameters.Cerebron_RDmodel)
	{
		bool hitSRAM = false, hitNVM = false;
		if( !inNVM && entete == "UPDATE")
			hitSRAM = true;
		else
			hitSRAM = getHitPerDataArray( current->address , set , false);
				
	
		if( inNVM && entete == "UPDATE")
			hitNVM = true;
		else 
			hitNVM = getHitPerDataArray( current->address , set , true);
			
		string hitSRAM_str = hitSRAM ? "TRUE" : "FALSE";
		string hitNVM_str = hitNVM ? "TRUE" : "FALSE";
		
		
		debug_file << ", E_SRAM = " << current->e_sram << " , E_NVM = " << current->e_nvm\
			 << ", HitSRAM=" << hitSRAM_str << ", HitNVM=" << hitNVM_str;	
	}
	else
	{
		debug_file << ", cost = " << current->cost_value;	
	}
	
	debug_file << endl;	
}

// Assembly:
subq $0x4e8, %rsp            # imm = 0x4E8
movq %r9, 0x1f0(%rsp)
movq %r8, 0x1f8(%rsp)
movb %cl, %al
leaq 0x4f0(%rsp), %rcx
movq %rcx, 0x200(%rsp)
movq %rdi, 0x4e0(%rsp)
movq %rsi, 0x4d8(%rsp)
movl %edx, 0x4d4(%rsp)
andb $0x1, %al
movb %al, 0x4d3(%rsp)
movq %r8, 0x4c8(%rsp)
movq %r9, 0x4c0(%rsp)
movq 0x4e0(%rsp), %rax
movq %rax, 0x208(%rsp)
leaq 0x8adb0(%rip), %rax     # 0x93ff0
testb $0x1, (%rax)
jne 0x924a
jmp 0xa342
movb 0x4d3(%rsp), %dl
leaq 0x685cb(%rip), %rcx     # 0x71823
leaq 0x685cd(%rip), %rax     # 0x7182c
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x1e0(%rsp)
leaq 0x49f(%rsp), %rdi
movq %rdi, 0x1e8(%rsp)
callq 0x56a0
movq 0x1e0(%rsp), %rsi
movq 0x1e8(%rsp), %rdx
leaq 0x4a0(%rsp), %rdi
callq 0x5530
jmp 0x92a2
leaq 0x49f(%rsp), %rdi
callq 0x53e0
movq 0x4d8(%rsp), %rax
movb 0x149(%rax), %dl
leaq 0x684b3(%rip), %rcx     # 0x71777
leaq 0x684bb(%rip), %rax     # 0x71786
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x1d0(%rsp)
leaq 0x467(%rsp), %rdi
movq %rdi, 0x1d8(%rsp)
callq 0x56a0
movq 0x1d0(%rsp), %rsi
movq 0x1d8(%rsp), %rdx
leaq 0x468(%rsp), %rdi
callq 0x5530
jmp 0x930e
leaq 0x467(%rsp), %rdi
callq 0x53e0
movq 0x4d8(%rsp), %rax
movb 0x14a(%rax), %cl
leaq 0x6845e(%rip), %rax     # 0x7178e
leaq 0x6992d(%rip), %rsi     # 0x72c64
testb $0x1, %cl
cmovneq %rax, %rsi
leaq 0x468(%rsp), %rdi
callq 0x5360
jmp 0x934d
leaq 0x69910(%rip), %rsi     # 0x72c64
leaq 0x468(%rsp), %rdi
callq 0x5520
jmp 0x9363
movq 0x200(%rsp), %rdi
callq 0xf7c0
movb %al, 0x1cf(%rsp)
jmp 0x9379
movb 0x1cf(%rsp), %dl
leaq 0x6ac10(%rip), %rcx     # 0x73f97
leaq 0x6abff(%rip), %rax     # 0x73f8d
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x1b8(%rsp)
leaq 0x43f(%rsp), %rdi
movq %rdi, 0x1c0(%rsp)
callq 0x56a0
movq 0x1b8(%rsp), %rsi
movq 0x1c0(%rsp), %rdx
leaq 0x440(%rsp), %rdi
callq 0x5530
jmp 0x93d1
leaq 0x43f(%rsp), %rdi
callq 0x53e0
leaq 0x417(%rsp), %rdi
movq %rdi, 0x1b0(%rsp)
callq 0x56a0
movq 0x1b0(%rsp), %rdx
leaq 0x69862(%rip), %rsi     # 0x72c64
leaq 0x418(%rsp), %rdi
callq 0x5530
jmp 0x9411
leaq 0x417(%rsp), %rdi
callq 0x53e0
movq 0x200(%rsp), %rax
testb $0x1, 0x28(%rax)
je 0x9515
leaq 0x68367(%rip), %rsi     # 0x7179e
leaq 0x418(%rsp), %rdi
callq 0x5520
jmp 0x9446
jmp 0x9515
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x49f(%rsp), %rdi
callq 0x53e0
jmp 0xa3a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x467(%rsp), %rdi
callq 0x53e0
jmp 0xa398
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
jmp 0xa38b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x43f(%rsp), %rdi
callq 0x53e0
jmp 0xa38b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x417(%rsp), %rdi
callq 0x53e0
jmp 0xa37e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
jmp 0xa371
leaq 0x3ef(%rsp), %rdi
movq %rdi, 0x1a8(%rsp)
callq 0x56a0
movq 0x1a8(%rsp), %rdx
leaq 0x6879f(%rip), %rsi     # 0x71cd8
leaq 0x3f0(%rsp), %rdi
callq 0x5530
jmp 0x9548
leaq 0x3ef(%rsp), %rdi
callq 0x53e0
leaq 0x3c7(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x56a0
movq 0x1a0(%rsp), %rdx
leaq 0x6875f(%rip), %rsi     # 0x71cd8
leaq 0x3c8(%rsp), %rdi
callq 0x5530
jmp 0x9588
leaq 0x3c7(%rsp), %rdi
callq 0x53e0
leaq 0x39f(%rsp), %rdi
movq %rdi, 0x198(%rsp)
callq 0x56a0
movq 0x198(%rsp), %rdx
leaq 0x6871f(%rip), %rsi     # 0x71cd8
leaq 0x3a0(%rsp), %rdi
callq 0x5530
jmp 0x95c8
leaq 0x39f(%rsp), %rdi
callq 0x53e0
movl $0x0, 0x398(%rsp)
movl $0x0, 0x394(%rsp)
movq 0x208(%rsp), %rdi
movl 0x394(%rsp), %eax
movq %rax, 0x190(%rsp)
addq $0x270, %rdi            # imm = 0x270
callq 0xf840
movq %rax, %rcx
movq 0x190(%rsp), %rax
cmpq %rcx, %rax
jae 0x9b8e
movq 0x208(%rsp), %rdi
addq $0x288, %rdi            # imm = 0x288
movl 0x394(%rsp), %eax
movl %eax, %esi
callq 0xf860
movq %rax, %rsi
leaq 0x368(%rsp), %rdi
callq 0xf880
jmp 0x9651
movq 0x4d8(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x20(%rax), %rdx
leaq 0x368(%rsp), %rdi
callq 0x2ff40
movl %eax, 0x18c(%rsp)
jmp 0x9677
leaq 0x368(%rsp), %rdi
callq 0xf7b0
movl 0x18c(%rsp), %eax
movq 0x208(%rsp), %rdi
movl %eax, 0x390(%rsp)
addq $0x270, %rdi            # imm = 0x270
movl 0x394(%rsp), %eax
movl %eax, %esi
callq 0xf8c0
movq (%rax), %rdi
movl 0x390(%rsp), %esi
movl $0x1, %edx
callq 0x2d520
movl %eax, 0x188(%rsp)
jmp 0x96cc
movl 0x188(%rsp), %esi
leaq 0x328(%rsp), %rdi
callq 0x101d0
jmp 0x96e2
leaq 0x680ea(%rip), %rdx     # 0x717d3
leaq 0x348(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x10180
jmp 0x9700
leaq 0x3c8(%rsp), %rdi
leaq 0x348(%rsp), %rsi
callq 0x54f0
jmp 0x9717
leaq 0x348(%rsp), %rdi
callq 0x5768
leaq 0x328(%rsp), %rdi
callq 0x5768
movq 0x208(%rsp), %rdi
addq $0x270, %rdi            # imm = 0x270
movl 0x394(%rsp), %eax
movl %eax, %esi
callq 0xf8c0
movq 0x200(%rsp), %rdi
movq (%rax), %rax
movq %rax, 0x178(%rsp)
movl 0x390(%rsp), %eax
movl %eax, 0x180(%rsp)
callq 0xf7c0
movb %al, 0x187(%rsp)
jmp 0x977d
movl 0x180(%rsp), %esi
movq 0x178(%rsp), %rdi
movb 0x187(%rsp), %al
movzbl %al, %edx
andl $0x1, %edx
callq 0x2d360
movl %eax, 0x174(%rsp)
jmp 0x97a7
movl 0x174(%rsp), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x89c77(%rip), %rax     # 0x93430
movq (%rax,%rcx,8), %rax
movq %rax, 0x160(%rsp)
leaq 0x2e7(%rsp), %rdi
movq %rdi, 0x168(%rsp)
callq 0x56a0
movq 0x160(%rsp), %rsi
movq 0x168(%rsp), %rdx
leaq 0x2e8(%rsp), %rdi
callq 0x5530
jmp 0x97f9
leaq 0x67fd3(%rip), %rdx     # 0x717d3
leaq 0x308(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
callq 0x10180
jmp 0x9817
leaq 0x3f0(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x54f0
jmp 0x982e
leaq 0x308(%rsp), %rdi
callq 0x5768
leaq 0x2e8(%rsp), %rdi
callq 0x5768
leaq 0x2e7(%rsp), %rdi
callq 0x53e0
movl 0x390(%rsp), %esi
leaq 0x2a0(%rsp), %rdi
callq 0x101d0
jmp 0x986b
leaq 0x67f61(%rip), %rdx     # 0x717d3
leaq 0x2c0(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
callq 0x10180
jmp 0x9889
leaq 0x3a0(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x54f0
jmp 0x98a0
leaq 0x2c0(%rsp), %rdi
callq 0x5768
leaq 0x2a0(%rsp), %rdi
callq 0x5768
movq 0x208(%rsp), %rdi
addq $0x270, %rdi            # imm = 0x270
movl 0x394(%rsp), %eax
movl %eax, %esi
callq 0xf8c0
movq (%rax), %rdi
movl 0x390(%rsp), %esi
movl $0x1, %edx
callq 0x2d520
movl %eax, 0x15c(%rsp)
jmp 0x98f4
movq 0x208(%rsp), %rdi
movl 0x15c(%rsp), %eax
movl %eax, 0x29c(%rsp)
addq $0x270, %rdi            # imm = 0x270
movl 0x394(%rsp), %eax
movl %eax, %esi
callq 0xf8c0
movq 0x200(%rsp), %rdi
movq (%rax), %rax
movq %rax, 0x148(%rsp)
movl 0x390(%rsp), %eax
movl %eax, 0x154(%rsp)
callq 0xf7c0
movb %al, 0x15b(%rsp)
jmp 0x994e
movl 0x154(%rsp), %esi
movq 0x148(%rsp), %rdi
movb 0x15b(%rsp), %al
movzbl %al, %edx
andl $0x1, %edx
callq 0x2d360
movl %eax, 0x144(%rsp)
jmp 0x9978
movl 0x144(%rsp), %eax
movl %eax, 0x298(%rsp)
cmpl $0x0, 0x298(%rsp)
jne 0x9b61
imull $0xffffffff, 0x29c(%rsp), %eax # imm = 0xFFFFFFFF
addl 0x398(%rsp), %eax
movl %eax, 0x398(%rsp)
jmp 0x9b76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x3ef(%rsp), %rdi
callq 0x53e0
jmp 0xa371
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x3c7(%rsp), %rdi
callq 0x53e0
jmp 0xa364
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x39f(%rsp), %rdi
callq 0x53e0
jmp 0xa357
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
jmp 0xa34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x368(%rsp), %rdi
callq 0xf7b0
jmp 0xa34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
jmp 0x9a9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x5768
leaq 0x328(%rsp), %rdi
callq 0x5768
jmp 0xa34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
jmp 0x9b06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
jmp 0x9af9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x308(%rsp), %rdi
callq 0x5768
leaq 0x2e8(%rsp), %rdi
callq 0x5768
leaq 0x2e7(%rsp), %rdi
callq 0x53e0
jmp 0xa34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
jmp 0x9b4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x2c0(%rsp), %rdi
callq 0x5768
leaq 0x2a0(%rsp), %rdi
callq 0x5768
jmp 0xa34a
movl 0x29c(%rsp), %eax
addl 0x398(%rsp), %eax
movl %eax, 0x398(%rsp)
jmp 0x9b78
movl 0x394(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x394(%rsp)
jmp 0x95eb
movq 0x200(%rsp), %rdi
movl 0x398(%rsp), %eax
movl %eax, 0x13c(%rsp)
callq 0xf7c0
movb %al, 0x143(%rsp)
jmp 0x9bb2
movq 0x208(%rsp), %rdi
movl 0x13c(%rsp), %esi
movb 0x143(%rsp), %al
movzbl %al, %edx
andl $0x1, %edx
callq 0xc0e0
movq 0x208(%rsp), %rdi
movl %eax, 0x294(%rsp)
addq $0x288, %rdi            # imm = 0x288
xorl %eax, %eax
movl %eax, %esi
callq 0xf860
movq %rax, %rsi
leaq 0x268(%rsp), %rdi
callq 0xf880
jmp 0x9c04
movq 0x4d8(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x20(%rax), %rdx
leaq 0x268(%rsp), %rdi
callq 0x2ff40
movl %eax, 0x138(%rsp)
jmp 0x9c2a
leaq 0x268(%rsp), %rdi
callq 0xf7b0
movl 0x138(%rsp), %eax
movq 0x1f8(%rsp), %rsi
movl %eax, 0x290(%rsp)
leaq 0x898ac(%rip), %rdi     # 0x93500
callq 0x5330
movq %rax, 0x130(%rsp)
jmp 0x9c63
movq 0x130(%rsp), %rdi
leaq 0x67e7f(%rip), %rsi     # 0x71af1
callq 0x5380
movq %rax, 0x128(%rsp)
jmp 0x9c81
movq 0x128(%rsp), %rdi
movl 0x290(%rsp), %esi
callq 0x5680
movq %rax, 0x120(%rsp)
jmp 0x9c9f
movq 0x120(%rsp), %rdi
leaq 0x67391(%rip), %rsi     # 0x7103f
callq 0x5380
movq %rax, 0x118(%rsp)
jmp 0x9cbd
movq 0x118(%rsp), %rdi
movl 0x294(%rsp), %eax
movl %eax, %ecx
leaq 0x8975b(%rip), %rax     # 0x93430
movq (%rax,%rcx,8), %rsi
callq 0x5380
movq %rax, 0x110(%rsp)
jmp 0x9ce8
movq 0x110(%rsp), %rdi
leaq 0x6734b(%rip), %rsi     # 0x71042
callq 0x5380
movq %rax, 0x108(%rsp)
jmp 0x9d06
movq 0x108(%rsp), %rdi
leaq 0x440(%rsp), %rsi
callq 0x5330
movq %rax, 0x100(%rsp)
jmp 0x9d25
movq 0x100(%rsp), %rdi
leaq 0x67a7d(%rip), %rsi     # 0x717b1
callq 0x5380
movq %rax, 0xf8(%rsp)
jmp 0x9d43
movq 0xf8(%rsp), %rdi
leaq 0x468(%rsp), %rsi
callq 0x5330
movq %rax, 0xf0(%rsp)
jmp 0x9d62
movq 0xf0(%rsp), %rdi
leaq 0x67d99(%rip), %rsi     # 0x71b0a
callq 0x5380
movq %rax, 0xe8(%rsp)
jmp 0x9d80
movq 0xe8(%rsp), %rdi
leaq 0x5a71(%rip), %rsi      # 0xf800
callq 0x5160
movq %rax, 0xe0(%rsp)
jmp 0x9d9e
movq 0xe0(%rsp), %rdi
movq 0x4d8(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x50f0
movq %rax, 0xd8(%rsp)
jmp 0x9dc1
movq 0xd8(%rsp), %rdi
leaq 0x5a50(%rip), %rsi      # 0xf820
callq 0x5160
movq %rax, 0xd0(%rsp)
jmp 0x9ddf
movq 0xd0(%rsp), %rdi
leaq 0x6744b(%rip), %rsi     # 0x71239
callq 0x5380
movq %rax, 0xc8(%rsp)
jmp 0x9dfd
movq 0xc8(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x5330
movq %rax, 0xc0(%rsp)
jmp 0x9e1c
movq 0xc0(%rsp), %rdi
leaq 0x6798b(%rip), %rsi     # 0x717b6
callq 0x5380
movq %rax, 0xb8(%rsp)
jmp 0x9e3a
movq 0x1f0(%rsp), %rsi
movq 0xb8(%rsp), %rdi
callq 0x5330
movq %rax, 0xb0(%rsp)
jmp 0x9e59
movq 0xb0(%rsp), %rdi
leaq 0x418(%rsp), %rsi
callq 0x5330
movq %rax, 0xa8(%rsp)
jmp 0x9e78
movq 0xa8(%rsp), %rdi
leaq 0x67938(%rip), %rsi     # 0x717bf
callq 0x5380
movq %rax, 0xa0(%rsp)
jmp 0x9e96
movq 0xa0(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
callq 0x5330
movq %rax, 0x98(%rsp)
jmp 0x9eb5
movq 0x98(%rsp), %rdi
leaq 0x6790e(%rip), %rsi     # 0x717d2
callq 0x5380
movq %rax, 0x90(%rsp)
jmp 0x9ed3
movq 0x90(%rsp), %rdi
leaq 0x67969(%rip), %rsi     # 0x7184b
callq 0x5380
movq %rax, 0x88(%rsp)
jmp 0x9ef1
movq 0x88(%rsp), %rdi
leaq 0x3f0(%rsp), %rsi
callq 0x5330
movq %rax, 0x80(%rsp)
jmp 0x9f10
movq 0x80(%rsp), %rdi
leaq 0x678b8(%rip), %rsi     # 0x717d7
callq 0x5380
movq %rax, 0x78(%rsp)
jmp 0x9f2b
movq 0x78(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
callq 0x5330
movq %rax, 0x70(%rsp)
jmp 0x9f44
movq 0x70(%rsp), %rdi
leaq 0x69fa4(%rip), %rsi     # 0x73ef4
callq 0x5380
jmp 0x9f57
leaq 0x8a092(%rip), %rax     # 0x93ff0
testb $0x1, 0x226(%rax)
je 0xa29a
movb $0x0, 0x267(%rsp)
movb $0x0, 0x266(%rsp)
testb $0x1, 0x4d3(%rsp)
jne 0x9fd9
movq 0x1f8(%rsp), %rdi
leaq 0x67206(%rip), %rsi     # 0x7119a
callq 0xfa60
movb %al, 0x6f(%rsp)
jmp 0x9f9f
movb 0x6f(%rsp), %al
testb $0x1, %al
jne 0x9fa9
jmp 0x9fd9
movb $0x1, 0x267(%rsp)
jmp 0xa00e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x268(%rsp), %rdi
callq 0xf7b0
jmp 0xa34a
movq 0x208(%rsp), %rdi
movq 0x4d8(%rsp), %rax
movq 0x8(%rax), %rsi
movl 0x4d4(%rsp), %edx
xorl %ecx, %ecx
callq 0x57740
movb %al, 0x6e(%rsp)
jmp 0xa001
movb 0x6e(%rsp), %al
andb $0x1, %al
movb %al, 0x267(%rsp)
testb $0x1, 0x4d3(%rsp)
je 0xa046
movq 0x1f8(%rsp), %rdi
leaq 0x67173(%rip), %rsi     # 0x7119a
callq 0xfa60
movb %al, 0x6d(%rsp)
jmp 0xa032
movb 0x6d(%rsp), %al
testb $0x1, %al
jne 0xa03c
jmp 0xa046
movb $0x1, 0x266(%rsp)
jmp 0xa07e
movq 0x208(%rsp), %rdi
movq 0x4d8(%rsp), %rax
movq 0x8(%rax), %rsi
movl 0x4d4(%rsp), %edx
movl $0x1, %ecx
callq 0x57740
movb %al, 0x6c(%rsp)
jmp 0xa071
movb 0x6c(%rsp), %al
andb $0x1, %al
movb %al, 0x266(%rsp)
movb 0x267(%rsp), %dl
leaq 0x6744c(%rip), %rcx     # 0x714d8
leaq 0x6744a(%rip), %rax     # 0x714dd
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x58(%rsp)
leaq 0x23f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x56a0
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
leaq 0x240(%rsp), %rdi
callq 0x5530
jmp 0xa0ca
leaq 0x23f(%rsp), %rdi
callq 0x53e0
movb 0x266(%rsp), %dl
leaq 0x673f3(%rip), %rcx     # 0x714d8
leaq 0x673f1(%rip), %rax     # 0x714dd
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, 0x48(%rsp)
leaq 0x217(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x56a0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0x218(%rsp), %rdi
callq 0x5530
jmp 0xa123
leaq 0x217(%rsp), %rdi
callq 0x53e0
leaq 0x893c9(%rip), %rdi     # 0x93500
leaq 0x676a9(%rip), %rsi     # 0x717e7
callq 0x5380
movq %rax, 0x40(%rsp)
jmp 0xa14a
movq 0x40(%rsp), %rdi
movq 0x4d8(%rsp), %rax
movq 0x138(%rax), %rsi
callq 0x50f0
movq %rax, 0x38(%rsp)
jmp 0xa16a
movq 0x38(%rsp), %rdi
leaq 0x6767d(%rip), %rsi     # 0x717f3
callq 0x5380
movq %rax, 0x30(%rsp)
jmp 0xa182
movq 0x30(%rsp), %rdi
movq 0x4d8(%rsp), %rax
movq 0x140(%rax), %rsi
callq 0x50f0
movq %rax, 0x28(%rsp)
jmp 0xa1a2
movq 0x28(%rsp), %rdi
leaq 0x67651(%rip), %rsi     # 0x717ff
callq 0x5380
movq %rax, 0x20(%rsp)
jmp 0xa1ba
movq 0x20(%rsp), %rdi
leaq 0x240(%rsp), %rsi
callq 0x5330
movq %rax, 0x18(%rsp)
jmp 0xa1d3
movq 0x18(%rsp), %rdi
leaq 0x6762b(%rip), %rsi     # 0x7180a
callq 0x5380
movq %rax, 0x10(%rsp)
jmp 0xa1eb
movq 0x10(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x5330
jmp 0xa1ff
leaq 0x218(%rsp), %rdi
callq 0x5768
leaq 0x240(%rsp), %rdi
callq 0x5768
jmp 0xa2d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x23f(%rsp), %rdi
callq 0x53e0
jmp 0xa34a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x217(%rsp), %rdi
callq 0x53e0
jmp 0xa288
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x490(%rsp)
movl %eax, 0x48c(%rsp)
leaq 0x218(%rsp), %rdi
callq 0x5768
leaq 0x240(%rsp), %rdi
callq 0x5768
jmp 0xa34a
leaq 0x8925f(%rip), %rdi     # 0x93500
leaq 0x6756c(%rip), %rsi     # 0x71814
callq 0x5380
movq %rax, 0x8(%rsp)
jmp 0xa2b4
movq 0x8(%rsp), %rdi
movq 0x4d8(%rsp), %rax
movsd 0x130(%rax), %xmm0
callq 0x56f0
jmp 0xa2d0
jmp 0xa2d2
leaq 0x89227(%rip), %rdi     # 0x93500
movq 0x88cd8(%rip), %rsi     # 0x92fb8
callq 0x53d0
jmp 0xa2e7
leaq 0x3a0(%rsp), %rdi
callq 0x5768
leaq 0x3c8(%rsp), %rdi
callq 0x5768
leaq 0x3f0(%rsp), %rdi
callq 0x5768
leaq 0x418(%rsp), %rdi
callq 0x5768
leaq 0x440(%rsp), %rdi
callq 0x5768
leaq 0x468(%rsp), %rdi
callq 0x5768
leaq 0x4a0(%rsp), %rdi
callq 0x5768
addq $0x4e8, %rsp            # imm = 0x4E8
retq
leaq 0x3a0(%rsp), %rdi
callq 0x5768
leaq 0x3c8(%rsp), %rdi
callq 0x5768
leaq 0x3f0(%rsp), %rdi
callq 0x5768
leaq 0x418(%rsp), %rdi
callq 0x5768
leaq 0x440(%rsp), %rdi
callq 0x5768
leaq 0x468(%rsp), %rdi
callq 0x5768
leaq 0x4a0(%rsp), %rdi
callq 0x5768
movq 0x490(%rsp), %rdi
callq 0x5690
nopw %cs:(%rax,%rax)