// File: /workspace/github_cpp_makefile_star2_O3/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, %ebx
movq 0x148(%rsp), %r9
movq 0x140(%rsp), %rbp
leaq 0x1eef7(%rip), %rax     # 0x44998
movq %rax, (%rdi)
movq %r12, 0x8(%rdi)
movq %rbp, 0x10(%rdi)
leaq 0x40(%rdi), %r13
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, 0x28(%rsp)
leaq 0xe8(%rdi), %rcx
movq %rcx, 0x50(%rsp)
movq %rax, 0xf8(%rdi)
movl %eax, 0x100(%rdi)
leaq 0x110(%rdi), %rcx
movq %rcx, 0x58(%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, 0x20(%rsp)
movq %rax, 0x1b0(%rdi)
movq %rax, 0x250(%rdi)
leaq 0x158(%rdi), %rax
movq %rax, 0x40(%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 %ebx, 0x18(%rdi)
movl %edx, 0x1c(%rdi)
movl %r8d, 0x20(%rdi)
subl %r8d, %edx
movl %edx, 0x24(%rdi)
movl %esi, 0x30(%rdi)
leaq 0x70(%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, 0x38(%rsp)
leaq 0x60(%rsp), %rdi
callq 0xcbd6
movl %ebx, 0x30(%rsp)
leaq 0x60(%rsp), %rbx
movq %r13, 0x18(%rsp)
movq %r13, %rdi
movq %rbx, %rsi
callq 0x53f0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x25c54
callq 0x52b0
movq 0x10(%rsp), %r14
movq $0x0, 0x38(%r14)
movl $0x30, %edi
callq 0x52f0
movq %rax, %r13
movl 0x18(%r14), %ebx
movl 0x20(%r14), %r15d
leaq 0xd0(%rsp), %rdi
movq %rbp, %rsi
callq 0x283f4
leaq 0xd0(%rsp), %rcx
movq %r13, %rdi
movl %r15d, %esi
movl %ebx, %edx
callq 0x2944e
movq 0x10(%rsp), %r14
movq %r13, 0x60(%r14)
leaq 0xd0(%rsp), %rdi
callq 0x1ce16
movl $0x30, %edi
callq 0x52f0
movq %rax, %r15
movl 0x18(%r14), %ebx
movl 0x24(%r14), %r13d
leaq 0xb8(%rsp), %rdi
movq %r12, %rsi
callq 0x283f4
leaq 0xb8(%rsp), %rcx
movq %r15, %rdi
movl %r13d, %esi
movl %ebx, %edx
callq 0x2944e
movq 0x10(%rsp), %rbx
movq %r15, 0x68(%rbx)
leaq 0xb8(%rsp), %rdi
callq 0x1ce16
movq 0x148(%rsp), %rax
movq %rax, 0x70(%rbx)
movl $0x4, %edi
callq 0x52f0
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 0x25d4e
callq 0x52b0
movl $0x4, %edi
callq 0x52f0
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 0x25d90
callq 0x52b0
movl $0x4, %edi
callq 0x52f0
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 0x25dd2
callq 0x52b0
movl $0x4, %edi
callq 0x52f0
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 0x25e14
callq 0x52b0
movq 0x10(%rsp), %rax
cmpl $-0x1, 0x30(%rax)
sete 0x80(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x258(%rax)
movq $0x0, 0x268(%rax)
leaq 0x60(%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 0x22bac
leaq 0x1fe01(%rip), %rdi     # 0x45c60
leaq 0x60(%rsp), %rbx
movq %rbx, %rsi
callq 0x22d5e
movq %rbx, %rdi
callq 0x22d14
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rbx)
movaps %xmm0, 0x30(%rbx)
movaps %xmm0, 0x20(%rbx)
movaps %xmm0, 0x10(%rbx)
movaps %xmm0, (%rbx)
leaq 0x60(%rsp), %rdi
xorl %esi, %esi
callq 0x22bac
leaq 0x1fe13(%rip), %rdi     # 0x45cb0
leaq 0x60(%rsp), %rbx
movq %rbx, %rsi
callq 0x22d5e
movq %rbx, %rdi
callq 0x22d14
leaq 0x20097(%rip), %rax     # 0x45f50
cmpb $0x0, 0x88(%rax)
je 0x25f6e
movslq %ebp, %rax
movq 0x10(%rsp), %rcx
imull 0x24(%rcx), %ebp
movslq 0x20(%rcx), %rbx
imulq %rax, %rbx
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x28486
testl %ebx, %ebx
jle 0x25f24
movl %ebx, %ebx
xorl %r14d, %r14d
movl $0x38, %edi
callq 0x52f0
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0xf(%rax)
movups %xmm0, 0x18(%rax)
movups %xmm0, 0x28(%rax)
movq 0x40(%rsp), %rcx
movq (%rcx), %rcx
movq %rax, (%rcx,%r14,8)
incq %r14
cmpq %r14, %rbx
jne 0x25ef0
movslq %ebp, %rsi
movq 0x38(%rsp), %rdi
callq 0x28486
testl %ebp, %ebp
jle 0x25f6e
movl %ebp, %ebx
xorl %r14d, %r14d
movl $0x38, %edi
callq 0x52f0
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 %rax, (%rcx,%r14,8)
incq %r14
cmpq %r14, %rbx
jne 0x25f3a
movq 0x10(%rsp), %rbx
movslq 0x18(%rbx), %rsi
movq 0x20(%rsp), %rdi
callq 0x284b8
movl 0x18(%rbx), %ecx
testl %ecx, %ecx
movq 0x18(%rsp), %r13
jle 0x2602d
movq 0x20(%rsp), %rax
movq (%rax), %rax
xorl %ebx, %ebx
movq 0x10(%rsp), %rdx
leaq (%rbx,%rbx,2), %r14
leaq (%rax,%r14,8), %rdi
movslq 0x1c(%rdx), %rsi
callq 0x28486
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax,%r14,8), %rcx
cmpq (%rax,%r14,8), %rcx
je 0x26018
leaq (%rax,%r14,8), %r15
movl $0x1, %ebp
xorl %r12d, %r12d
movl $0x38, %edi
callq 0x52f0
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 0x20(%rsp), %rax
movq (%rax), %rax
leaq (%rax,%r14,8), %r15
movq 0x8(%r15), %rcx
subq (%r15), %rcx
movl %ebp, %r12d
sarq $0x3, %rcx
incl %ebp
cmpq %r12, %rcx
ja 0x25fd0
incq %rbx
movq 0x10(%rsp), %rdx
movslq 0x18(%rdx), %rcx
cmpq %rcx, %rbx
jl 0x25fa0
leaq 0x1ff1c(%rip), %r14     # 0x45f50
movq 0xc0(%r14), %rax
movq 0x10(%rsp), %rdx
movq %rax, 0x28(%rdx)
movl 0xd8(%r14), %eax
movl %eax, 0x138(%rdx)
cmpl $-0x1, 0x30(%rdx)
jne 0x2631e
movslq %ecx, %rsi
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rbx
callq 0x284b8
movl 0x18(%rbx), %ecx
testl %ecx, %ecx
jle 0x261a5
leaq 0xf8(%rsp), %r15
movq 0x10(%rsp), %rax
movl 0x28(%rax), %eax
xorl %ebx, %ebx
leaq 0xf786(%rip), %r12      # 0x35817
leaq 0xe8(%rsp), %r13
leaq (%rbx,%rbx,2), %rbp
leaq (,%rbp,8), %rdi
movq 0x28(%rsp), %rcx
addq (%rcx), %rdi
movslq %eax, %rsi
callq 0x28486
movq 0x10(%rsp), %rax
movl 0x28(%rax), %eax
testl %eax, %eax
jle 0x26189
movq %rbx, 0x30(%rsp)
xorl %r14d, %r14d
movl $0x38, %edi
callq 0x52f0
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 (%rcx,%rbp,8), %rcx
movq %rax, (%rcx,%r14,8)
movq 0x18(%rsp), %rdi
movq %r12, %rsi
callq 0x50f0
testl %eax, %eax
je 0x26123
movq 0x18(%rsp), %rdi
leaq 0xf706(%rip), %rsi      # 0x35820
callq 0x50f0
testl %eax, %eax
jne 0x2616f
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 0xcbd6
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2853a
movq 0xe8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2616f
callq 0x52b0
incq %r14
movq 0x10(%rsp), %rax
movslq 0x28(%rax), %rax
cmpq %rax, %r14
jl 0x260cd
movq 0x30(%rsp), %rbx
incq %rbx
movq 0x10(%rsp), %rcx
movslq 0x18(%rcx), %rcx
cmpq %rcx, %rbx
jl 0x26099
leaq 0x1fdab(%rip), %r14     # 0x45f50
cmpb $0x0, 0x158(%r14)
movq 0x18(%rsp), %r13
je 0x2631e
movslq %ecx, %rsi
leaq 0x48(%rsp), %rdx
movq $0x0, (%rdx)
leaq 0x60(%rsp), %rdi
leaq 0xf(%rsp), %rcx
callq 0x285d6
movq 0x10(%rsp), %rcx
movq 0xb8(%rcx), %rdi
movaps 0x60(%rsp), %xmm0
movups %xmm0, 0xb8(%rcx)
movq 0x70(%rsp), %rax
movq %rax, 0xc8(%rcx)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
testq %rdi, %rdi
movq 0x50(%rsp), %rbx
je 0x26229
callq 0x52b0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x26229
callq 0x52b0
movq 0x10(%rsp), %rax
movslq 0x18(%rax), %rsi
leaq 0x48(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x60(%rsp), %rdi
leaq 0xf(%rsp), %rcx
callq 0x1ce5c
movq %rbx, %rdi
callq 0x12132
leaq 0x60(%rsp), %rdi
movq 0x20(%rdi), %rax
movq %rax, 0x20(%rbx)
movups (%rdi), %xmm0
movups 0x10(%rdi), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
movq 0x10(%rsp), %rbx
movslq 0x18(%rbx), %rsi
leaq 0x48(%rsp), %rdx
movq $0x0, (%rdx)
leaq 0xf(%rsp), %rcx
callq 0x285d6
movq 0xd0(%rbx), %rdi
movaps 0x60(%rsp), %xmm0
movups %xmm0, 0xd0(%rbx)
movq 0x70(%rsp), %rax
movq %rax, 0xe0(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
testq %rdi, %rdi
je 0x262d4
callq 0x52b0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x262d4
callq 0x52b0
movq 0x10(%rsp), %rax
movslq 0x18(%rax), %rsi
leaq 0x48(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x60(%rsp), %rdi
leaq 0xf(%rsp), %rcx
movq 0x58(%rsp), %rbx
callq 0x1ce5c
movq %rbx, %rdi
callq 0x12132
movq 0x80(%rsp), %rax
movq %rax, 0x20(%rbx)
movups 0x60(%rsp), %xmm0
movups 0x70(%rsp), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x264d1
jmp 0x263b1
jmp 0x263b1
jmp 0x264d1
jmp 0x263b1
jmp 0x263b1
jmp 0x263a7
jmp 0x263a7
jmp 0x263a7
jmp 0x263a7
jmp 0x263a7
jmp 0x263a7
jmp 0x263a7
movq %rax, %r12
leaq 0xb8(%rsp), %rdi
callq 0x1ce16
jmp 0x26365
movq %rax, %r12
movq %r15, %rdi
jmp 0x263a0
movq %rax, %r12
leaq 0xd0(%rsp), %rdi
callq 0x1ce16
jmp 0x2637f
movq %rax, %r12
movq %r13, %rdi
jmp 0x263a0
jmp 0x263b1
jmp 0x263a7
jmp 0x263a7
jmp 0x263a7
jmp 0x263a7
jmp 0x263b1
movq %rax, %r12
movq 0xe8(%rsp), %rdi
cmpq %r15, %rdi
je 0x263aa
callq 0x52b0
jmp 0x263aa
movq %rax, %r12
movq 0x18(%rsp), %r13
jmp 0x263b4
movq %rax, %r12
movq 0x10(%rsp), %rbx
leaq 0x240(%rbx), %rdi
callq 0x286f6
movq 0x228(%rbx), %rdi
testq %rdi, %rdi
je 0x263d6
callq 0x52b0
movq 0x10(%rsp), %rax
movq 0x210(%rax), %rdi
testq %rdi, %rdi
je 0x263ec
callq 0x52b0
movq 0x10(%rsp), %rax
leaq 0x1e0(%rax), %r14
movq 0x1f8(%rax), %rdi
testq %rdi, %rdi
je 0x26409
callq 0x52b0
movq 0x10(%rsp), %rax
leaq 0x188(%rax), %rbx
movq (%r14), %rdi
testq %rdi, %rdi
je 0x26422
callq 0x52b0
movq %rbx, %rdi
callq 0x1d248
movq 0x38(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x2643c
callq 0x52b0
movq 0x40(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
movq 0x58(%rsp), %rbx
je 0x26453
callq 0x52b0
movq 0x20(%rsp), %rdi
callq 0x2871e
movq %rbx, %rdi
callq 0x12132
movq 0x50(%rsp), %rdi
callq 0x12132
movq 0x10(%rsp), %rax
movq 0xd0(%rax), %rdi
testq %rdi, %rdi
je 0x26485
callq 0x52b0
movq 0x10(%rsp), %rbx
movq 0xb8(%rbx), %rdi
addq $0xa0, %rbx
testq %rdi, %rdi
je 0x264a2
callq 0x52b0
movq %rbx, %rdi
callq 0x2871e
movq 0x28(%rsp), %rdi
callq 0x2871e
movq (%r13), %rdi
cmpq 0xb0(%rsp), %rdi
je 0x264c7
callq 0x52b0
movq %r12, %rdi
callq 0x55a0
jmp 0x264d1
movq %rax, %rdi
callq 0xc99c
nop