// File: /workspace/github_cpp_makefile_star2_O1/CMU-SAFARI[P]MQSim/src/ssd/TSU_Priority_OutOfOrder.cpp
// Function: SSD_Components::TSU_Priority_OutOfOrder::~TSU_Priority_OutOfOrder()
TSU_Priority_OutOfOrder::~TSU_Priority_OutOfOrder()
{
    for (unsigned int channelID = 0; channelID < channel_count; channelID++)
    {
        for (unsigned int chipId = 0; chipId < chip_no_per_channel; chipId++)
        {
            delete[] UserReadTRQueue[channelID][chipId];
            delete[] UserWriteTRQueue[channelID][chipId];
        }
        delete[] nextPriorityClassRead[channelID];
        delete[] nextPriorityClassWrite[channelID];
        delete[] currentWeightRead[channelID];
        delete[] currentWeightWrite[channelID];
        delete[] GCReadTRQueue[channelID];
        delete[] GCWriteTRQueue[channelID];
        delete[] GCEraseTRQueue[channelID];
        delete[] MappingReadTRQueue[channelID];
        delete[] MappingWriteTRQueue[channelID];
    }
    delete[] UserReadTRQueue;
    delete[] UserWriteTRQueue;
    delete[] nextPriorityClassRead;
    delete[] nextPriorityClassWrite;
    delete[] currentWeightRead;
    delete[] currentWeightWrite;
    delete[] GCReadTRQueue;
    delete[] GCWriteTRQueue;
    delete[] GCEraseTRQueue;
    delete[] MappingReadTRQueue;
    delete[] MappingWriteTRQueue;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbp
leaq 0x1e3b2(%rip), %rax     # 0x6ecc0
movq %rax, (%rdi)
cmpl $0x0, 0x44(%rdi)
je 0x50ec8
movq $0x0, 0x8(%rsp)
leaq 0x1db3d(%rip), %r12     # 0x6e468
addq $0x10, %r12
movq %rbp, 0x10(%rsp)
cmpl $0x0, 0x48(%rbp)
je 0x50ac8
xorl %r13d, %r13d
movq 0xb0(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r13,8), %r14
testq %r14, %r14
je 0x509fd
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x509ec
movq %rax, %rcx
shlq $0x8, %rcx
leaq (%rcx,%rax,8), %rbp
addq %r14, %rbp
movq %r12, -0x108(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x48224
movq -0x60(%rbp), %rdi
testq %rdi, %rdi
je 0x50997
callq 0x7370
movq -0x78(%rbp), %rdi
testq %rdi, %rdi
je 0x509a5
callq 0x7370
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x509bd
callq 0x7370
leaq -0x100(%rbp), %r15
movq -0x100(%rbp), %rdi
cmpq %r15, %rdi
je 0x509e0
movq (%rdi), %rbx
callq 0x7370
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x509d0
addq $-0x108, %rbp           # imm = 0xFEF8
cmpq %r14, %rbp
jne 0x50979
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7480
movq 0x10(%rsp), %rbp
movq 0xb8(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%r13,8), %r14
testq %r14, %r14
je 0x50ab9
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x50aa8
movq %rax, %rcx
shlq $0x8, %rcx
leaq (%rcx,%rax,8), %rbp
addq %r14, %rbp
movq %r12, -0x108(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x48224
movq -0x60(%rbp), %rdi
testq %rdi, %rdi
je 0x50a53
callq 0x7370
movq -0x78(%rbp), %rdi
testq %rdi, %rdi
je 0x50a61
callq 0x7370
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x50a79
callq 0x7370
leaq -0x100(%rbp), %r15
movq -0x100(%rbp), %rdi
cmpq %r15, %rdi
je 0x50a9c
movq (%rdi), %rbx
callq 0x7370
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x50a8c
addq $-0x108, %rbp           # imm = 0xFEF8
cmpq %r14, %rbp
jne 0x50a35
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7480
movq 0x10(%rsp), %rbp
incq %r13
movl 0x48(%rbp), %eax
cmpq %rax, %r13
jb 0x50941
movq 0xe8(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
testq %rdi, %rdi
je 0x50ae2
callq 0x7480
movq 0xf0(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
testq %rdi, %rdi
je 0x50afc
callq 0x7480
movq 0xf8(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
testq %rdi, %rdi
je 0x50b16
callq 0x7480
movq 0x100(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
testq %rdi, %rdi
je 0x50b30
callq 0x7480
movq 0xc0(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %r14
testq %r14, %r14
je 0x50be3
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x50bd7
movq %rax, %rcx
shlq $0x8, %rcx
leaq (%rcx,%rax,8), %r13
addq %r14, %r13
movq %r12, -0x108(%r13)
leaq -0x48(%r13), %rdi
callq 0x48224
movq -0x60(%r13), %rdi
testq %rdi, %rdi
je 0x50b82
callq 0x7370
movq -0x78(%r13), %rdi
testq %rdi, %rdi
je 0x50b90
callq 0x7370
movq -0xe8(%r13), %rdi
leaq -0xd8(%r13), %rax
cmpq %rax, %rdi
je 0x50ba8
callq 0x7370
leaq -0x100(%r13), %r15
movq -0x100(%r13), %rdi
cmpq %r15, %rdi
je 0x50bcb
movq (%rdi), %rbx
callq 0x7370
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x50bbb
addq $-0x108, %r13           # imm = 0xFEF8
cmpq %r14, %r13
jne 0x50b64
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7480
movq 0xc8(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %r14
testq %r14, %r14
je 0x50c96
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x50c8a
movq %rax, %rcx
shlq $0x8, %rcx
leaq (%rcx,%rax,8), %r13
addq %r14, %r13
movq %r12, -0x108(%r13)
leaq -0x48(%r13), %rdi
callq 0x48224
movq -0x60(%r13), %rdi
testq %rdi, %rdi
je 0x50c35
callq 0x7370
movq -0x78(%r13), %rdi
testq %rdi, %rdi
je 0x50c43
callq 0x7370
movq -0xe8(%r13), %rdi
leaq -0xd8(%r13), %rax
cmpq %rax, %rdi
je 0x50c5b
callq 0x7370
leaq -0x100(%r13), %r15
movq -0x100(%r13), %rdi
cmpq %r15, %rdi
je 0x50c7e
movq (%rdi), %rbx
callq 0x7370
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x50c6e
addq $-0x108, %r13           # imm = 0xFEF8
cmpq %r14, %r13
jne 0x50c17
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7480
movq 0xd0(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %r14
testq %r14, %r14
je 0x50d49
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x50d3d
movq %rax, %rcx
shlq $0x8, %rcx
leaq (%rcx,%rax,8), %r13
addq %r14, %r13
movq %r12, -0x108(%r13)
leaq -0x48(%r13), %rdi
callq 0x48224
movq -0x60(%r13), %rdi
testq %rdi, %rdi
je 0x50ce8
callq 0x7370
movq -0x78(%r13), %rdi
testq %rdi, %rdi
je 0x50cf6
callq 0x7370
movq -0xe8(%r13), %rdi
leaq -0xd8(%r13), %rax
cmpq %rax, %rdi
je 0x50d0e
callq 0x7370
leaq -0x100(%r13), %r15
movq -0x100(%r13), %rdi
cmpq %r15, %rdi
je 0x50d31
movq (%rdi), %rbx
callq 0x7370
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x50d21
addq $-0x108, %r13           # imm = 0xFEF8
cmpq %r14, %r13
jne 0x50cca
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7480
movq 0xd8(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %r14
testq %r14, %r14
je 0x50dfc
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x50df0
movq %rax, %rcx
shlq $0x8, %rcx
leaq (%rcx,%rax,8), %r13
addq %r14, %r13
movq %r12, -0x108(%r13)
leaq -0x48(%r13), %rdi
callq 0x48224
movq -0x60(%r13), %rdi
testq %rdi, %rdi
je 0x50d9b
callq 0x7370
movq -0x78(%r13), %rdi
testq %rdi, %rdi
je 0x50da9
callq 0x7370
movq -0xe8(%r13), %rdi
leaq -0xd8(%r13), %rax
cmpq %rax, %rdi
je 0x50dc1
callq 0x7370
leaq -0x100(%r13), %r15
movq -0x100(%r13), %rdi
cmpq %r15, %rdi
je 0x50de4
movq (%rdi), %rbx
callq 0x7370
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x50dd4
addq $-0x108, %r13           # imm = 0xFEF8
cmpq %r14, %r13
jne 0x50d7d
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7480
movq 0xe0(%rbp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %r14
testq %r14, %r14
je 0x50eaf
movq -0x8(%r14), %rax
testq %rax, %rax
je 0x50ea3
movq %rax, %rcx
shlq $0x8, %rcx
leaq (%rcx,%rax,8), %r13
addq %r14, %r13
movq %r12, -0x108(%r13)
leaq -0x48(%r13), %rdi
callq 0x48224
movq -0x60(%r13), %rdi
testq %rdi, %rdi
je 0x50e4e
callq 0x7370
movq -0x78(%r13), %rdi
testq %rdi, %rdi
je 0x50e5c
callq 0x7370
movq -0xe8(%r13), %rdi
leaq -0xd8(%r13), %rax
cmpq %rax, %rdi
je 0x50e74
callq 0x7370
leaq -0x100(%r13), %r15
movq -0x100(%r13), %rdi
cmpq %r15, %rdi
je 0x50e97
movq (%rdi), %rbx
callq 0x7370
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x50e87
addq $-0x108, %r13           # imm = 0xFEF8
cmpq %r14, %r13
jne 0x50e30
addq $-0x8, %r14
movq %r14, %rdi
callq 0x7480
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%rbp), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x50934
movq 0xb0(%rbp), %rdi
testq %rdi, %rdi
je 0x50ed9
callq 0x7480
movq 0xb8(%rbp), %rdi
testq %rdi, %rdi
je 0x50eea
callq 0x7480
movq 0xe8(%rbp), %rdi
testq %rdi, %rdi
je 0x50efb
callq 0x7480
movq 0xf0(%rbp), %rdi
testq %rdi, %rdi
je 0x50f0c
callq 0x7480
movq 0xf8(%rbp), %rdi
testq %rdi, %rdi
je 0x50f1d
callq 0x7480
movq 0x100(%rbp), %rdi
testq %rdi, %rdi
je 0x50f2e
callq 0x7480
movq 0xc0(%rbp), %rdi
testq %rdi, %rdi
je 0x50f3f
callq 0x7480
movq 0xc8(%rbp), %rdi
testq %rdi, %rdi
je 0x50f50
callq 0x7480
movq 0xd0(%rbp), %rdi
testq %rdi, %rdi
je 0x50f61
callq 0x7480
movq 0xd8(%rbp), %rdi
testq %rdi, %rdi
je 0x50f72
callq 0x7480
movq 0xe0(%rbp), %rdi
testq %rdi, %rdi
je 0x50f83
callq 0x7480
movq %rbp, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4b01a
nop