// File: /workspace/github_cpp_makefile_star2_O2/CMU-SAFARI[P]MQSim/src/ssd/TSU_OutofOrder.cpp
// Function: SSD_Components::TSU_OutOfOrder::~TSU_OutOfOrder()
TSU_OutOfOrder::~TSU_OutOfOrder()
{
	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		delete[] UserReadTRQueue[channelID];
		delete[] UserWriteTRQueue[channelID];
		delete[] GCReadTRQueue[channelID];
		delete[] GCWriteTRQueue[channelID];
		delete[] GCEraseTRQueue[channelID];
		delete[] MappingReadTRQueue[channelID];
		delete[] MappingWriteTRQueue[channelID];
	}
	delete[] UserReadTRQueue;
	delete[] UserWriteTRQueue;
	delete[] GCReadTRQueue;
	delete[] GCWriteTRQueue;
	delete[] GCEraseTRQueue;
	delete[] MappingReadTRQueue;
	delete[] MappingWriteTRQueue;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
leaq 0x24d9d(%rip), %rax     # 0x61c18
movq %rax, (%rdi)
xorl %r15d, %r15d
movl 0x44(%rbx), %eax
movq 0xb0(%rbx), %rdi
cmpq %rax, %r15
jae 0x3d078
movq (%rdi,%r15,8), %r14
testq %r14, %r14
je 0x3ced2
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x3cec6
leaq -0x108(%r14), %r12
imulq $0x108, %rax, %r13      # imm = 0x108
leaq (%r12,%r13), %rdi
callq 0x38cc8
addq $-0x108, %r13           # imm = 0xFEF8
jne 0x3ceb4
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7430
movq 0xb8(%rbx), %rax
movq (%rax,%r15,8), %r14
testq %r14, %r14
je 0x3cf17
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x3cf0b
leaq -0x108(%r14), %r12
imulq $0x108, %rax, %r13      # imm = 0x108
leaq (%r12,%r13), %rdi
callq 0x38cc8
addq $-0x108, %r13           # imm = 0xFEF8
jne 0x3cef9
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7430
movq 0xc0(%rbx), %rax
movq (%rax,%r15,8), %r14
testq %r14, %r14
je 0x3cf5c
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x3cf50
leaq -0x108(%r14), %r12
imulq $0x108, %rax, %r13      # imm = 0x108
leaq (%r12,%r13), %rdi
callq 0x38cc8
addq $-0x108, %r13           # imm = 0xFEF8
jne 0x3cf3e
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7430
movq 0xc8(%rbx), %rax
movq (%rax,%r15,8), %r14
testq %r14, %r14
je 0x3cfa1
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x3cf95
leaq -0x108(%r14), %r12
imulq $0x108, %rax, %r13      # imm = 0x108
leaq (%r12,%r13), %rdi
callq 0x38cc8
addq $-0x108, %r13           # imm = 0xFEF8
jne 0x3cf83
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7430
movq 0xd0(%rbx), %rax
movq (%rax,%r15,8), %r14
testq %r14, %r14
je 0x3cfe6
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x3cfda
leaq -0x108(%r14), %r12
imulq $0x108, %rax, %r13      # imm = 0x108
leaq (%r12,%r13), %rdi
callq 0x38cc8
addq $-0x108, %r13           # imm = 0xFEF8
jne 0x3cfc8
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7430
movq 0xd8(%rbx), %rax
movq (%rax,%r15,8), %r14
testq %r14, %r14
je 0x3d02b
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x3d01f
leaq -0x108(%r14), %r12
imulq $0x108, %rax, %r13      # imm = 0x108
leaq (%r12,%r13), %rdi
callq 0x38cc8
addq $-0x108, %r13           # imm = 0xFEF8
jne 0x3d00d
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7430
movq 0xe0(%rbx), %rax
movq (%rax,%r15,8), %r14
testq %r14, %r14
je 0x3d070
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x3d064
leaq -0x108(%r14), %r12
imulq $0x108, %rax, %r13      # imm = 0x108
leaq (%r12,%r13), %rdi
callq 0x38cc8
addq $-0x108, %r13           # imm = 0xFEF8
jne 0x3d052
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7430
incq %r15
jmp 0x3ce81
testq %rdi, %rdi
je 0x3d082
callq 0x7430
movq 0xb8(%rbx), %rdi
testq %rdi, %rdi
je 0x3d093
callq 0x7430
movq 0xc0(%rbx), %rdi
testq %rdi, %rdi
je 0x3d0a4
callq 0x7430
movq 0xc8(%rbx), %rdi
testq %rdi, %rdi
je 0x3d0b5
callq 0x7430
movq 0xd0(%rbx), %rdi
testq %rdi, %rdi
je 0x3d0c6
callq 0x7430
movq 0xd8(%rbx), %rdi
testq %rdi, %rdi
je 0x3d0d7
callq 0x7430
movq 0xe0(%rbx), %rdi
testq %rdi, %rdi
je 0x3d0e8
callq 0x7430
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x3bf48
nop