// File: /workspace/github_cpp_makefile_star2_O3/CMU-SAFARI[P]MQSim/src/ssd/TSU_OutofOrder.cpp
// Function: SSD_Components::TSU_OutOfOrder::Report_results_in_XML(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Utils::XmlWriter&)
void TSU_OutOfOrder::Report_results_in_XML(std::string name_prefix, Utils::XmlWriter &xmlwriter)
{
	name_prefix = name_prefix + ".TSU";
	xmlwriter.Write_open_tag(name_prefix);

	TSU_Base::Report_results_in_XML(name_prefix, xmlwriter);

	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		for (unsigned int chip_cntr = 0; chip_cntr < chip_no_per_channel; chip_cntr++)
		{
			UserReadTRQueue[channelID][chip_cntr].Report_results_in_XML(name_prefix + ".User_Read_TR_Queue", xmlwriter);
		}
	}

	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		for (unsigned int chip_cntr = 0; chip_cntr < chip_no_per_channel; chip_cntr++)
		{
			UserWriteTRQueue[channelID][chip_cntr].Report_results_in_XML(name_prefix + ".User_Write_TR_Queue", xmlwriter);
		}
	}

	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		for (unsigned int chip_cntr = 0; chip_cntr < chip_no_per_channel; chip_cntr++)
		{
			MappingReadTRQueue[channelID][chip_cntr].Report_results_in_XML(name_prefix + ".Mapping_Read_TR_Queue", xmlwriter);
		}
	}

	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		for (unsigned int chip_cntr = 0; chip_cntr < chip_no_per_channel; chip_cntr++)
		{
			MappingWriteTRQueue[channelID][chip_cntr].Report_results_in_XML(name_prefix + ".Mapping_Write_TR_Queue", xmlwriter);
		}
	}

	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		for (unsigned int chip_cntr = 0; chip_cntr < chip_no_per_channel; chip_cntr++)
		{
			GCReadTRQueue[channelID][chip_cntr].Report_results_in_XML(name_prefix + ".GC_Read_TR_Queue", xmlwriter);
		}
	}

	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		for (unsigned int chip_cntr = 0; chip_cntr < chip_no_per_channel; chip_cntr++)
		{
			GCWriteTRQueue[channelID][chip_cntr].Report_results_in_XML(name_prefix + ".GC_Write_TR_Queue", xmlwriter);
		}
	}

	for (unsigned int channelID = 0; channelID < channel_count; channelID++)
	{
		for (unsigned int chip_cntr = 0; chip_cntr < chip_no_per_channel; chip_cntr++)
		{
			GCEraseTRQueue[channelID][chip_cntr].Report_results_in_XML(name_prefix + ".GC_Erase_TR_Queue", xmlwriter);
		}
	}

	xmlwriter.Write_close_tag();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
movq %rdx, (%rsp)
movq %rsi, %r14
movq %rdi, %rbp
leaq 0x148(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rsi), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x138(%rsp), %r12
movq %r12, %rdi
callq 0xaf32
leaq 0xa849(%rip), %rsi      # 0x5762d
movq %r12, %rdi
callq 0x7690
leaq 0x138(%rsp), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x7450
movq (%r12), %rdi
cmpq %rbx, %rdi
je 0x4ce0d
callq 0x7370
leaq 0x128(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x118(%rsp), %r12
movq %r12, %rdi
callq 0xaf32
movq (%rsp), %rdi
movq %r12, %rsi
callq 0x53af8
movq 0x118(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4ce51
callq 0x7370
leaq 0x108(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0xf8(%rsp), %r12
movq %r12, %rdi
callq 0xaf32
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq 0x4a730
movq %r14, 0x10(%rsp)
movq 0xf8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4ce9d
callq 0x7370
movl 0x44(%rbp), %eax
testl %eax, %eax
je 0x4d35e
leaq 0xe8(%rsp), %rbx
movl 0x48(%rbp), %ecx
xorl %r13d, %r13d
leaq 0xd8(%rsp), %r12
movq %rbp, 0x8(%rsp)
testl %ecx, %ecx
movl $0x0, %ecx
je 0x4cf4b
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0xb0(%rbp), %rax
movq (%rax,%r13,8), %rbp
movq %rbx, 0xd8(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xaf32
movq %r12, %rdi
leaq 0xd7a8(%rip), %rsi      # 0x5a6ae
callq 0x7690
movq (%rbp,%r14), %rax
addq %r14, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq *(%rax)
movq 0xd8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4cf31
callq 0x7370
incq %r15
movq 0x8(%rsp), %rbp
movl 0x48(%rbp), %ecx
addq $0x108, %r14            # imm = 0x108
cmpq %rcx, %r15
jb 0x4ced2
movl 0x44(%rbp), %eax
incq %r13
movl %eax, %edx
cmpq %rdx, %r13
jb 0x4cec3
testl %eax, %eax
je 0x4d35e
leaq 0xc8(%rsp), %r13
movl 0x48(%rbp), %ecx
xorl %ebx, %ebx
leaq 0xb8(%rsp), %r12
testl %ecx, %ecx
movl $0x0, %ecx
je 0x4cffe
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0xb8(%rbp), %rax
movq (%rax,%rbx,8), %rbp
movq %r13, 0xb8(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xaf32
movq %r12, %rdi
leaq 0xd709(%rip), %rsi      # 0x5a6c2
callq 0x7690
movq (%rbp,%r14), %rax
addq %r14, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq *(%rax)
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0x4cfe4
callq 0x7370
incq %r15
movq 0x8(%rsp), %rbp
movl 0x48(%rbp), %ecx
addq $0x108, %r14            # imm = 0x108
cmpq %rcx, %r15
jb 0x4cf85
movl 0x44(%rbp), %eax
incq %rbx
movl %eax, %edx
cmpq %rdx, %rbx
jb 0x4cf76
testl %eax, %eax
je 0x4d35e
leaq 0xa8(%rsp), %r13
movl 0x48(%rbp), %ecx
xorl %ebx, %ebx
leaq 0x98(%rsp), %r12
testl %ecx, %ecx
movl $0x0, %ecx
je 0x4d0b1
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0xd8(%rbp), %rax
movq (%rax,%rbx,8), %rbp
movq %r13, 0x98(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xaf32
movq %r12, %rdi
leaq 0xd66b(%rip), %rsi      # 0x5a6d7
callq 0x7690
movq (%rbp,%r14), %rax
addq %r14, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq *(%rax)
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x4d097
callq 0x7370
incq %r15
movq 0x8(%rsp), %rbp
movl 0x48(%rbp), %ecx
addq $0x108, %r14            # imm = 0x108
cmpq %rcx, %r15
jb 0x4d038
movl 0x44(%rbp), %eax
incq %rbx
movl %eax, %edx
cmpq %rdx, %rbx
jb 0x4d029
testl %eax, %eax
je 0x4d35e
leaq 0x88(%rsp), %r13
movl 0x48(%rbp), %ecx
xorl %ebx, %ebx
leaq 0x78(%rsp), %r12
testl %ecx, %ecx
movl $0x0, %ecx
je 0x4d15b
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0xe0(%rbp), %rax
movq (%rax,%rbx,8), %rbp
movq %r13, 0x78(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xaf32
movq %r12, %rdi
leaq 0xd5d5(%rip), %rsi      # 0x5a6ee
callq 0x7690
movq (%rbp,%r14), %rax
addq %r14, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq *(%rax)
movq 0x78(%rsp), %rdi
cmpq %r13, %rdi
movq 0x8(%rsp), %rbp
je 0x4d146
callq 0x7370
incq %r15
movl 0x48(%rbp), %ecx
addq $0x108, %r14            # imm = 0x108
cmpq %rcx, %r15
jb 0x4d0e8
movl 0x44(%rbp), %eax
incq %rbx
movl %eax, %edx
cmpq %rdx, %rbx
jb 0x4d0d9
testl %eax, %eax
je 0x4d35e
leaq 0x68(%rsp), %r13
movl 0x48(%rbp), %ecx
xorl %ebx, %ebx
leaq 0x58(%rsp), %r12
testl %ecx, %ecx
movl $0x0, %ecx
je 0x4d202
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0xc0(%rbp), %rax
movq (%rax,%rbx,8), %rbp
movq %r13, 0x58(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xaf32
movq %r12, %rdi
leaq 0xd546(%rip), %rsi      # 0x5a706
callq 0x7690
movq (%rbp,%r14), %rax
addq %r14, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq *(%rax)
movq 0x58(%rsp), %rdi
cmpq %r13, %rdi
movq 0x8(%rsp), %rbp
je 0x4d1ed
callq 0x7370
incq %r15
movl 0x48(%rbp), %ecx
addq $0x108, %r14            # imm = 0x108
cmpq %rcx, %r15
jb 0x4d18f
movl 0x44(%rbp), %eax
incq %rbx
movl %eax, %edx
cmpq %rdx, %rbx
jb 0x4d180
testl %eax, %eax
je 0x4d35e
leaq 0x48(%rsp), %r13
movl 0x48(%rbp), %ecx
xorl %ebx, %ebx
leaq 0x38(%rsp), %r12
testl %ecx, %ecx
movl $0x0, %ecx
je 0x4d2a9
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0xc8(%rbp), %rax
movq (%rax,%rbx,8), %rbp
movq %r13, 0x38(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xaf32
movq %r12, %rdi
leaq 0xd4b1(%rip), %rsi      # 0x5a718
callq 0x7690
movq (%rbp,%r14), %rax
addq %r14, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq *(%rax)
movq 0x38(%rsp), %rdi
cmpq %r13, %rdi
movq 0x8(%rsp), %rbp
je 0x4d294
callq 0x7370
incq %r15
movl 0x48(%rbp), %ecx
addq $0x108, %r14            # imm = 0x108
cmpq %rcx, %r15
jb 0x4d236
movl 0x44(%rbp), %eax
incq %rbx
movl %eax, %edx
cmpq %rdx, %rbx
jb 0x4d227
testl %eax, %eax
je 0x4d35e
leaq 0x28(%rsp), %r13
movl 0x48(%rbp), %ecx
xorl %ebx, %ebx
leaq 0x18(%rsp), %r12
testl %ecx, %ecx
movl $0x0, %ecx
je 0x4d350
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0xd0(%rbp), %rax
movq (%rax,%rbx,8), %rbp
movq %r13, 0x18(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xaf32
movq %r12, %rdi
leaq 0xd41d(%rip), %rsi      # 0x5a72b
callq 0x7690
movq (%rbp,%r14), %rax
addq %r14, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq (%rsp), %rdx
callq *(%rax)
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
movq 0x8(%rsp), %rbp
je 0x4d33b
callq 0x7370
incq %r15
movl 0x48(%rbp), %ecx
addq $0x108, %r14            # imm = 0x108
cmpq %rcx, %r15
jb 0x4d2dd
movl 0x44(%rbp), %eax
incq %rbx
movl %eax, %edx
cmpq %rdx, %rbx
jb 0x4d2ce
movq (%rsp), %rdi
callq 0x53e9a
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0xf8(%rsp), %rdi
jmp 0x4d40e
movq %rax, %r14
movq 0x118(%rsp), %rdi
jmp 0x4d40e
movq %rax, %r14
movq 0x138(%rsp), %rdi
jmp 0x4d40e
jmp 0x4d3a5
movq %rax, %r14
movq 0x18(%rsp), %rdi
jmp 0x4d3ef
jmp 0x4d3b1
movq %rax, %r14
movq 0x38(%rsp), %rdi
jmp 0x4d3ef
jmp 0x4d3bd
movq %rax, %r14
movq 0x58(%rsp), %rdi
jmp 0x4d3ef
jmp 0x4d3c9
movq %rax, %r14
movq 0x78(%rsp), %rdi
jmp 0x4d3ef
jmp 0x4d3d5
movq %rax, %r14
movq 0x98(%rsp), %rdi
jmp 0x4d3ef
jmp 0x4d3e4
movq %rax, %r14
movq 0xb8(%rsp), %rdi
cmpq %r13, %rdi
je 0x4d3f9
callq 0x7370
movq %r14, %rdi
callq 0x7620
jmp 0x4d403
movq %rax, %r14
movq 0xd8(%rsp), %rdi
cmpq %rbx, %rdi
jne 0x4d3f4
jmp 0x4d3f9
nop