// File: gvaumour[P]cache-simulator/src/Predictor.cc
// Function: Predictor::~Predictor()
Predictor::~Predictor()

{
	if(m_trackError){
		for(unsigned i = 0 ; i < BP_missing_tags.size() ; i++)
		{
			for(unsigned j = 0 ; j < BP_missing_tags[i].size() ; j++)
			{
				delete BP_missing_tags[i][j];
			}
		}
	
		for(int i = 0 ; i < m_nb_set ; i++)
		{
			for(unsigned j = 0 ; j < m_SRAM_missing_tags[i].size() ; j++)
				delete m_SRAM_missing_tags[i][j];
			/*for(unsigned j = 0 ; j < m_NVM_missing_tags[i].size() ; j++)
				delete m_NVM_missing_tags[i][j];
			*/
		}
	}
	delete m_replacementPolicyNVM_ptr;
	delete m_replacementPolicySRAM_ptr;
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x3dfa6(%rip), %rcx     # 0x92970
addq $0x10, %rcx
movq %rcx, (%rax)
testb $0x1, 0x80(%rax)
je 0x54b7b
movl $0x0, 0x4c(%rsp)
movq 0x38(%rsp), %rdi
movl 0x4c(%rsp), %eax
movq %rax, 0x30(%rsp)
addq $0x140, %rdi            # imm = 0x140
callq 0x58b60
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jae 0x54ab9
movl $0x0, 0x48(%rsp)
movq 0x38(%rsp), %rdi
movl 0x48(%rsp), %eax
movq %rax, 0x28(%rsp)
addq $0x140, %rdi            # imm = 0x140
movl 0x4c(%rsp), %eax
movl %eax, %esi
callq 0x58920
movq %rax, %rdi
callq 0x58940
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
jae 0x54aa7
movq 0x38(%rsp), %rdi
addq $0x140, %rdi            # imm = 0x140
movl 0x4c(%rsp), %eax
movl %eax, %esi
callq 0x58920
movq %rax, %rdi
movl 0x48(%rsp), %eax
movl %eax, %esi
callq 0x58860
movq (%rax), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, %rax
je 0x54a95
movq 0x20(%rsp), %rdi
callq 0x58b80
movq 0x20(%rsp), %rdi
callq 0x5340
jmp 0x54a97
movl 0x48(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x48(%rsp)
jmp 0x54a19
jmp 0x54aa9
movl 0x4c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4c(%rsp)
jmp 0x549e6
movl $0x0, 0x44(%rsp)
movq 0x38(%rsp), %rcx
movl 0x44(%rsp), %eax
cmpl 0x18(%rcx), %eax
jge 0x54b79
movl $0x0, 0x40(%rsp)
movq 0x38(%rsp), %rdi
movl 0x40(%rsp), %eax
movq %rax, 0x18(%rsp)
addq $0x88, %rdi
movslq 0x44(%rsp), %rsi
callq 0x58920
movq %rax, %rdi
callq 0x58940
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jae 0x54b67
movq 0x38(%rsp), %rdi
addq $0x88, %rdi
movslq 0x44(%rsp), %rsi
callq 0x58920
movq %rax, %rdi
movl 0x40(%rsp), %eax
movl %eax, %esi
callq 0x58860
movq (%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x54b55
movq 0x10(%rsp), %rdi
callq 0x58b80
movq 0x10(%rsp), %rdi
callq 0x5340
jmp 0x54b57
movl 0x40(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x40(%rsp)
jmp 0x54adb
jmp 0x54b69
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x54ac1
jmp 0x54b7b
movq 0x38(%rsp), %rax
movq 0x60(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x54b9a
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x38(%rsp), %rax
movq 0x68(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x54bb7
movq (%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq 0x38(%rsp), %rdi
addq $0x240, %rdi            # imm = 0x240
callq 0x58a40
movq 0x38(%rsp), %rdi
addq $0x228, %rdi            # imm = 0x228
callq 0xef00
movq 0x38(%rsp), %rdi
addq $0x210, %rdi            # imm = 0x210
callq 0xef00
movq 0x38(%rsp), %rdi
addq $0x1f8, %rdi            # imm = 0x1F8
callq 0xef00
movq 0x38(%rsp), %rdi
addq $0x1e0, %rdi            # imm = 0x1E0
callq 0xef00
movq 0x38(%rsp), %rdi
addq $0x188, %rdi            # imm = 0x188
callq 0x3d340
movq 0x38(%rsp), %rdi
addq $0x170, %rdi            # imm = 0x170
callq 0x58aa0
movq 0x38(%rsp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x58aa0
movq 0x38(%rsp), %rdi
addq $0x140, %rdi            # imm = 0x140
callq 0x58b00
movq 0x38(%rsp), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x211c0
movq 0x38(%rsp), %rdi
addq $0xe8, %rdi
callq 0x211c0
movq 0x38(%rsp), %rdi
addq $0xd0, %rdi
callq 0xf0e0
movq 0x38(%rsp), %rdi
addq $0xb8, %rdi
callq 0xf0e0
movq 0x38(%rsp), %rdi
addq $0xa0, %rdi
callq 0x58b00
movq 0x38(%rsp), %rdi
addq $0x88, %rdi
callq 0x58b00
movq 0x38(%rsp), %rdi
addq $0x40, %rdi
callq 0x5768
addq $0x58, %rsp
retq
nopl (%rax)