// File: /workspace/github_cpp_makefile_star2_O1/gvaumour[P]cache-simulator/src/Predictor.cc
// Function: Predictor::Predictor(int, int, int, int, std::vector<std::vector<CacheEntry*, std::allocator<CacheEntry*>>, std::allocator<std::vector<CacheEntry*, std::allocator<CacheEntry*>>>>&, std::vector<std::vector<CacheEntry*, std::allocator<CacheEntry*>>, std::allocator<std::vector<CacheEntry*, std::allocator<CacheEntry*>>>>&, HybridCache*)
Predictor::Predictor(int id, int nbAssoc , int nbSet, int nbNVMways, DataArray& SRAMtable , DataArray& NVMtable, HybridCache* cache) :\
	m_tableSRAM(SRAMtable), m_tableNVM(NVMtable)
{
	
	m_nb_set = nbSet;
	m_assoc = nbAssoc;
	m_nbNVMways = nbNVMways;
	m_nbSRAMways = nbAssoc - nbNVMways;
	m_ID = id;
	m_policy = cache->getPolicy();
	
	m_cpt_bypassTag = 0;
	m_replacementPolicyNVM_ptr = new LRUPolicy(m_nbNVMways , m_nb_set , NVMtable);
	m_replacementPolicySRAM_ptr = new LRUPolicy(m_nbSRAMways , m_nb_set, SRAMtable);	
	
	m_cache = cache;

	stats_NVM_errors = vector<int>(1, 0);
	stats_SRAM_errors = vector<int>(1, 0);
	stats_BP_errors = vector<int>(1,0);
	stats_MigrationErrors = vector<int>(1,0);
	
	m_trackError = (m_ID == -1);
	stats_COREerrors = 0;
	stats_WBerrors = 0;
	
	stats_beginTimeFrame = 0;
	
	m_global_PChistory = deque<uint64_t>();
	m_callee_PChistory = deque<uint64_t>();
	
	if(simu_parameters.printDebug && simu_parameters.enableDatasetSpilling)
	{
		//stats_SRAMpressure = vector< vector<bool> >();
	}
	/********************************************/ 
	if(simu_parameters.simulate_conflicts)
	{
	
		/* Allocation of array of tracking conflict/capacity miss,
		 simulation of a FU cache of the same size */ 
	
		int size_SRAM_FU =  m_nbSRAMways*nbSet;
		int size_NVM_FU =  m_nbNVMways*nbSet;
	
		m_NVM_FU.resize(size_NVM_FU);
		for(int i = 0 ; i < size_NVM_FU; i++)
		{
			m_NVM_FU[i] = new MissingTagEntry();
		}
		m_SRAM_FU.resize(size_SRAM_FU);
		for(int i = 0 ; i < size_SRAM_FU; i++)
		{
			m_SRAM_FU[i] = new MissingTagEntry();
		}
	}	 
//	/********************************************/ 
//	m_trackError = false;
//	if(m_nbNVMways != 0 && simu_parameters.size_MT_SRAMtags != 0)
//		m_trackError = true;
	

	/* Allocation of the BP missing tags array*/
	BP_missing_tags.resize(m_nb_set);
	for(int i = 0 ; i < m_nb_set; i++)
	{
		BP_missing_tags[i].resize(m_assoc);
		for(unsigned j = 0 ; j < BP_missing_tags[i].size(); j++)
		{
			BP_missing_tags[i][j] = new MissingTagEntry();
		}
	}

	m_SRAMassoc_MT_size = simu_parameters.size_MT_SRAMtags;
	m_NVMassoc_MT_size = simu_parameters.size_MT_NVMtags;
	m_nb_MTcouters_sampling = simu_parameters.nb_MTcouters_sampling;

	if(m_ID == -1){
	
		/* Allocation of the SRAM missing tags array*/
		m_SRAM_missing_tags.resize(m_nb_set);
		//m_NVM_missing_tags.resize(m_nb_set);

		for(int i = 0 ; i < m_nb_set; i++)
		{
			m_SRAM_missing_tags[i].resize(m_SRAMassoc_MT_size);
			//m_NVM_missing_tags[i].resize(m_NVMassoc_MT_size);

			for(int j = 0 ; j < m_SRAMassoc_MT_size; j++)
			{
				m_SRAM_missing_tags[i][j] = new MissingTagEntry();
				if(m_policy == "Cerebron" || m_policy == "SimplePerceptron")
					m_SRAM_missing_tags[i][j]->initFeaturesHash(m_policy);
			}
			/*
			for(int j = 0 ; j < m_NVMassoc_MT_size; j++)
			{
				m_NVM_missing_tags[i][j] = new MissingTagEntry();
				if(m_policy == "Cerebron")
					m_NVM_missing_tags[i][j]->initFeaturesHash();
			}*/
		}
		if(simu_parameters.enableDatasetSpilling)
		{
		
			m_SRAM_MT_counters = vector<uint64_t>(m_nb_set , 0);		
			m_isSRAMbusy = vector<bool>(m_nb_set , false);		

			m_NVM_MT_counters = vector<uint64_t>(m_nb_set , 0);		
			m_isNVMbusy = vector<bool>(m_nb_set , false);		
		}
	}
	
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %r9, %r12
movl %ecx, %r10d
movq 0x148(%rsp), %r9
movq 0x140(%rsp), %rbp
leaq 0x1ecbe(%rip), %rax     # 0x44968
movq %rax, (%rdi)
movq %r12, 0x8(%rdi)
movq %rbp, 0x10(%rdi)
leaq 0x40(%rdi), %r15
leaq 0x50(%rdi), %rax
movq %rax, 0xb0(%rsp)
movq %rax, 0x40(%rdi)
xorl %eax, %eax
movq %rax, 0x48(%rdi)
movb $0x0, 0x50(%rdi)
leaq 0x88(%rdi), %rcx
movq %rcx, 0x38(%rsp)
leaq 0xe8(%rdi), %rcx
movq %rcx, 0xa0(%rsp)
movq %rax, 0xf8(%rdi)
movl %eax, 0x100(%rdi)
leaq 0x110(%rdi), %rcx
movq %rcx, 0xa8(%rsp)
movq %rax, 0x120(%rdi)
movl %eax, 0x128(%rdi)
movq %rax, 0x130(%rdi)
leaq 0x190(%rdi), %rcx
movl %eax, 0x190(%rdi)
movq %rax, 0x198(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x88(%rdi)
movups %xmm0, 0x98(%rdi)
movups %xmm0, 0xa8(%rdi)
movups %xmm0, 0xb8(%rdi)
movups %xmm0, 0xc8(%rdi)
movups %xmm0, 0xd8(%rdi)
movups %xmm0, 0xe4(%rdi)
movl %eax, 0x118(%rdi)
movups %xmm0, 0x108(%rdi)
movq %rax, 0x180(%rdi)
movups %xmm0, 0x170(%rdi)
movups %xmm0, 0x160(%rdi)
movups %xmm0, 0x150(%rdi)
movups %xmm0, 0x140(%rdi)
movq %rcx, 0x1a0(%rdi)
movq %rcx, 0x1a8(%rdi)
leaq 0x140(%rdi), %rcx
movq %rcx, 0x18(%rsp)
movq %rax, 0x1b0(%rdi)
movq %rax, 0x250(%rdi)
leaq 0x158(%rdi), %rax
movq %rax, 0x28(%rsp)
movups %xmm0, 0x1e0(%rdi)
movups %xmm0, 0x1f0(%rdi)
movups %xmm0, 0x200(%rdi)
movups %xmm0, 0x210(%rdi)
movups %xmm0, 0x220(%rdi)
movups %xmm0, 0x230(%rdi)
movups %xmm0, 0x240(%rdi)
movl %r10d, 0x30(%rsp)
movl %r10d, 0x18(%rdi)
movl %edx, 0x1c(%rdi)
movl %r8d, 0x20(%rdi)
subl %r8d, %edx
movl %edx, 0x24(%rdi)
movl %esi, 0x30(%rdi)
leaq 0x60(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x70(%r9), %rsi
movq 0x78(%r9), %rdx
addq %rsi, %rdx
movq %rdi, 0x10(%rsp)
leaq 0x170(%rdi), %rax
movq %rax, 0x20(%rsp)
leaq 0x50(%rsp), %rdi
movq %r15, 0x40(%rsp)
callq 0xcc1c
leaq 0x50(%rsp), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x53e0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x25e65
callq 0x52a0
movq 0x10(%rsp), %r14
movq $0x0, 0x38(%r14)
movl $0x30, %edi
callq 0x52e0
movq %rax, %r15
movl 0x18(%r14), %ebx
movl 0x20(%r14), %r13d
leaq 0xd0(%rsp), %rdi
movq %rbp, %rsi
callq 0x28732
leaq 0xd0(%rsp), %rcx
movq %r15, %rdi
movl %r13d, %esi
movl %ebx, %edx
callq 0x2977e
movq 0x10(%rsp), %r14
movq %r15, 0x60(%r14)
leaq 0xd0(%rsp), %rdi
callq 0x1d066
movl $0x30, %edi
callq 0x52e0
movq %rax, %r15
movl 0x18(%r14), %ebx
movl 0x24(%r14), %r13d
leaq 0xb8(%rsp), %rdi
movq %r12, %rsi
callq 0x28732
leaq 0xb8(%rsp), %rcx
movq %r15, %rdi
movl %r13d, %esi
movl %ebx, %edx
callq 0x2977e
movq 0x10(%rsp), %rbx
movq %r15, 0x68(%rbx)
leaq 0xb8(%rsp), %rdi
callq 0x1d066
movq 0x148(%rsp), %rax
movq %rax, 0x70(%rbx)
movl $0x4, %edi
callq 0x52e0
movl $0x0, (%rax)
movq %rax, %rcx
addq $0x4, %rcx
movq 0x1e0(%rbx), %rdi
movq %rax, 0x1e0(%rbx)
movq %rcx, 0x1e8(%rbx)
movq %rcx, 0x1f0(%rbx)
testq %rdi, %rdi
movl 0x30(%rsp), %ebp
je 0x25f5f
callq 0x52a0
movl $0x4, %edi
callq 0x52e0
movl $0x0, (%rax)
movq %rax, %rcx
addq $0x4, %rcx
movq 0x10(%rsp), %rdx
movq 0x1f8(%rdx), %rdi
movq %rax, 0x1f8(%rdx)
movq %rcx, 0x200(%rdx)
movq %rcx, 0x208(%rdx)
testq %rdi, %rdi
je 0x25fa1
callq 0x52a0
movl $0x4, %edi
callq 0x52e0
movl $0x0, (%rax)
movq %rax, %rcx
addq $0x4, %rcx
movq 0x10(%rsp), %rdx
movq 0x210(%rdx), %rdi
movq %rax, 0x210(%rdx)
movq %rcx, 0x218(%rdx)
movq %rcx, 0x220(%rdx)
testq %rdi, %rdi
je 0x25fe3
callq 0x52a0
movl $0x4, %edi
callq 0x52e0
movl $0x0, (%rax)
movq %rax, %rcx
addq $0x4, %rcx
movq 0x10(%rsp), %rdx
movq 0x228(%rdx), %rdi
movq %rax, 0x228(%rdx)
movq %rcx, 0x230(%rdx)
movq %rcx, 0x238(%rdx)
testq %rdi, %rdi
je 0x26025
callq 0x52a0
movq 0x10(%rsp), %rax
cmpl $-0x1, 0x30(%rax)
sete 0x80(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x258(%rax)
movq $0x0, 0x268(%rax)
leaq 0x50(%rsp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x22d68
leaq 0x1fbf0(%rip), %rdi     # 0x45c60
leaq 0x50(%rsp), %rbx
movq %rbx, %rsi
callq 0x22f14
movq %rbx, %rdi
callq 0x22ed0
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rbx)
movaps %xmm0, 0x30(%rbx)
movaps %xmm0, 0x20(%rbx)
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
leaq 0x50(%rsp), %rdi
xorl %esi, %esi
callq 0x22d68
leaq 0x1fc02(%rip), %rdi     # 0x45cb0
leaq 0x50(%rsp), %rbx
movq %rbx, %rsi
callq 0x22f14
movq %rbx, %rdi
callq 0x22ed0
leaq 0x1fe86(%rip), %r13     # 0x45f50
cmpb $0x0, 0x88(%r13)
je 0x26180
movslq %ebp, %rax
movq 0x10(%rsp), %rcx
imull 0x24(%rcx), %ebp
movslq 0x20(%rcx), %rbx
imulq %rax, %rbx
movq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x287c4
testl %ebx, %ebx
jle 0x26136
movl %ebx, %ebx
xorl %r14d, %r14d
movl $0x38, %edi
callq 0x52e0
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0xf(%rax)
movups %xmm0, 0x18(%rax)
movups %xmm0, 0x28(%rax)
movq 0x28(%rsp), %rcx
movq (%rcx), %rcx
movq %rax, (%rcx,%r14,8)
incq %r14
cmpq %r14, %rbx
jne 0x26102
movslq %ebp, %rsi
movq 0x20(%rsp), %rdi
callq 0x287c4
testl %ebp, %ebp
jle 0x26180
movl %ebp, %ebx
xorl %r14d, %r14d
movl $0x38, %edi
callq 0x52e0
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0xf(%rax)
movups %xmm0, 0x18(%rax)
movups %xmm0, 0x28(%rax)
movq 0x20(%rsp), %rcx
movq (%rcx), %rcx
movq %rax, (%rcx,%r14,8)
incq %r14
cmpq %r14, %rbx
jne 0x2614c
movq 0x10(%rsp), %rbx
movslq 0x18(%rbx), %rsi
movq 0x18(%rsp), %rdi
callq 0x287f6
movl 0x18(%rbx), %eax
testl %eax, %eax
jle 0x2623d
xorl %ebx, %ebx
movq 0x10(%rsp), %rcx
leaq (%rbx,%rbx,2), %r14
leaq (,%r14,8), %rdi
addq 0x140(%rcx), %rdi
movslq 0x1c(%rcx), %rsi
callq 0x287c4
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax,%r14,8), %rcx
cmpq (%rax,%r14,8), %rcx
je 0x26228
leaq (%rax,%r14,8), %r15
movl $0x1, %ebp
xorl %r12d, %r12d
movl $0x38, %edi
callq 0x52e0
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0xf(%rax)
movups %xmm0, 0x18(%rax)
movups %xmm0, 0x28(%rax)
movq (%r15), %rcx
movq %rax, (%rcx,%r12,8)
movq 0x18(%rsp), %rax
movq (%rax), %rax
leaq (%rax,%r14,8), %r15
movq 0x8(%r15), %rax
subq (%r15), %rax
movl %ebp, %r12d
sarq $0x3, %rax
incl %ebp
cmpq %r12, %rax
ja 0x261e0
incq %rbx
movq 0x10(%rsp), %rcx
movslq 0x18(%rcx), %rax
cmpq %rax, %rbx
jl 0x261a5
movq 0xc0(%r13), %rcx
movq 0x10(%rsp), %rdx
movq %rcx, 0x28(%rdx)
movl 0xd8(%r13), %ecx
movl %ecx, 0x138(%rdx)
cmpl $-0x1, 0x30(%rdx)
jne 0x26559
movslq %eax, %rsi
movq 0x38(%rsp), %rdi
movq 0x10(%rsp), %rbx
callq 0x287f6
movl 0x18(%rbx), %eax
testl %eax, %eax
jle 0x263a5
leaq 0xf8(%rsp), %r15
xorl %ecx, %ecx
leaq 0xf58d(%rip), %r12      # 0x3581f
leaq 0xe8(%rsp), %r13
movq 0x10(%rsp), %rbx
movq %rcx, 0x30(%rsp)
leaq (%rcx,%rcx,2), %rbp
leaq (,%rbp,8), %rdi
addq 0x88(%rbx), %rdi
movslq 0x28(%rbx), %rsi
callq 0x287c4
cmpl $0x0, 0x28(%rbx)
jle 0x26384
xorl %r14d, %r14d
movl $0x38, %edi
callq 0x52e0
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0xf(%rax)
movups %xmm0, 0x18(%rax)
movups %xmm0, 0x28(%rax)
movq 0x38(%rsp), %rcx
movq (%rcx), %rcx
movq (%rcx,%rbp,8), %rcx
movq %rax, (%rcx,%r14,8)
movq 0x40(%rsp), %rdi
movq %r12, %rsi
callq 0x50f0
testl %eax, %eax
je 0x26323
movq 0x40(%rsp), %rdi
leaq 0xf50e(%rip), %rsi      # 0x35828
callq 0x50f0
testl %eax, %eax
jne 0x2636f
movq 0x10(%rsp), %rcx
movq 0x88(%rcx), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r14,8), %rbx
movq %r15, 0xe8(%rsp)
movq 0x40(%rcx), %rsi
movq 0x48(%rcx), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xcc1c
movq %rbx, %rdi
movq %r13, %rsi
callq 0x28878
movq 0xe8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2636f
callq 0x52a0
incq %r14
movq 0x10(%rsp), %rax
movslq 0x28(%rax), %rax
cmpq %rax, %r14
jl 0x262cd
movq 0x30(%rsp), %rcx
incq %rcx
movq 0x10(%rsp), %rbx
movslq 0x18(%rbx), %rax
cmpq %rax, %rcx
jl 0x2629f
leaq 0x1fbab(%rip), %r13     # 0x45f50
cmpb $0x0, 0x158(%r13)
je 0x26559
movslq %eax, %rsi
leaq 0x48(%rsp), %rdx
movq $0x0, (%rdx)
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rcx
callq 0x2891e
movq 0x10(%rsp), %rcx
movq 0xb8(%rcx), %rdi
movaps 0x50(%rsp), %xmm0
movq 0x60(%rsp), %rax
movq %rdi, 0x50(%rsp)
movups 0xc0(%rcx), %xmm1
movups %xmm0, 0xb8(%rcx)
movq %rax, 0xc8(%rcx)
movups %xmm1, 0x58(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
testq %rdi, %rdi
movq 0xa0(%rsp), %rbx
je 0x26429
callq 0x52a0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x26438
callq 0x52a0
movq 0x10(%rsp), %rax
movslq 0x18(%rax), %rsi
leaq 0x48(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rcx
callq 0x1d0a6
movq %rbx, %rdi
callq 0x121dc
leaq 0x50(%rsp), %rdi
movq 0x20(%rdi), %rax
movq %rax, 0x20(%rbx)
movups (%rdi), %xmm0
movups 0x10(%rdi), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
xorl %eax, %eax
movl %eax, 0x8(%rdi)
movq %rax, 0x10(%rdi)
movl %eax, 0x18(%rdi)
movq 0x10(%rsp), %rbx
movslq 0x18(%rbx), %rsi
leaq 0x48(%rsp), %rdx
movq %rax, (%rdx)
leaq 0xf(%rsp), %rcx
callq 0x2891e
movq 0xd0(%rbx), %rdi
movaps 0x50(%rsp), %xmm0
movq 0x60(%rsp), %rax
movq %rdi, 0x50(%rsp)
movups 0xd8(%rbx), %xmm1
movups %xmm0, 0xd0(%rbx)
movq %rax, 0xe0(%rbx)
movups %xmm1, 0x58(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
testq %rdi, %rdi
je 0x264ed
callq 0x52a0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
movq 0xa8(%rsp), %rbx
je 0x26504
callq 0x52a0
movq 0x10(%rsp), %rax
movslq 0x18(%rax), %rsi
leaq 0x48(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rcx
callq 0x1d0a6
movq %rbx, %rdi
callq 0x121dc
movq 0x70(%rsp), %rax
movq %rax, 0x20(%rbx)
movups 0x50(%rsp), %xmm0
movups 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
xorl %eax, %eax
movl %eax, 0x58(%rsp)
movq $0x0, 0x60(%rsp)
movl %eax, 0x68(%rsp)
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x26700
jmp 0x265d9
jmp 0x265d9
jmp 0x26700
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
movq %rax, %r12
leaq 0xb8(%rsp), %rdi
jmp 0x265a5
jmp 0x265ac
movq %rax, %r12
leaq 0xd0(%rsp), %rdi
callq 0x1d066
jmp 0x265af
movq %rax, %r12
movq %r15, %rdi
jmp 0x265d0
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
jmp 0x265d9
movq %rax, %r12
movq 0xe8(%rsp), %rdi
cmpq %r15, %rdi
je 0x265dc
callq 0x52a0
jmp 0x265dc
jmp 0x265d9
movq %rax, %r12
movq 0x10(%rsp), %rbx
leaq 0x240(%rbx), %rdi
callq 0x28a36
movq 0x228(%rbx), %rdi
testq %rdi, %rdi
je 0x265fe
callq 0x52a0
movq 0x10(%rsp), %rax
movq 0x210(%rax), %rdi
testq %rdi, %rdi
je 0x26614
callq 0x52a0
movq 0x10(%rsp), %rax
leaq 0x1e0(%rax), %r14
movq 0x1f8(%rax), %rdi
testq %rdi, %rdi
je 0x26631
callq 0x52a0
movq 0x10(%rsp), %rax
leaq 0x188(%rax), %rbx
movq (%r14), %rdi
testq %rdi, %rdi
je 0x2664a
callq 0x52a0
movq %rbx, %rdi
callq 0x1d386
movq 0x20(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
movq 0x40(%rsp), %rbx
je 0x26669
callq 0x52a0
movq 0x28(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x2667b
callq 0x52a0
movq 0x18(%rsp), %rdi
callq 0x28a5e
movq 0xa8(%rsp), %rdi
callq 0x121dc
movq 0xa0(%rsp), %rdi
callq 0x121dc
movq 0x10(%rsp), %rax
movq 0xd0(%rax), %rdi
testq %rdi, %rdi
je 0x266b5
callq 0x52a0
movq 0x10(%rsp), %r14
movq 0xb8(%r14), %rdi
addq $0xa0, %r14
testq %rdi, %rdi
je 0x266d2
callq 0x52a0
movq %r14, %rdi
callq 0x28a5e
movq 0x38(%rsp), %rdi
callq 0x28a5e
movq (%rbx), %rdi
cmpq 0xb0(%rsp), %rdi
je 0x266f6
callq 0x52a0
movq %r12, %rdi
callq 0x55a0
jmp 0x26700
movq %rax, %rdi
callq 0xc9f0