// File: /workspace/github_cpp_makefile_star2_O2/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, %r14
movq %rsi, %r15
movq %rdi, (%rsp)
leaq 0x8411(%rip), %rdx      # 0x45545
leaq 0x138(%rsp), %rbx
movq %rbx, %rdi
callq 0x11c18
movq %r15, %rdi
movq %rbx, %rsi
callq 0x73f0
movq %rbx, %rdi
callq 0x7678
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7480
movq %r14, %rdi
movq %rbx, %rsi
callq 0x419e0
leaq 0x38(%rsp), %rdi
callq 0x7678
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
movq %r15, 0x8(%rsp)
movq %r15, %rsi
callq 0x7480
movq (%rsp), %rdi
movq %rbx, %rsi
movq %r14, 0x10(%rsp)
movq %r14, %rdx
callq 0x3c062
leaq 0x18(%rsp), %rdi
callq 0x7678
xorl %r12d, %r12d
leaq 0x118(%rsp), %rbx
movq 0x8(%rsp), %rsi
movq (%rsp), %rax
movl 0x44(%rax), %eax
cmpq %rax, %r12
jae 0x3d22e
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rsp), %rax
movl 0x48(%rax), %eax
cmpq %rax, %r13
jae 0x3d229
movq (%rsp), %rax
movq 0xb0(%rax), %rax
movq (%rax,%r12,8), %r15
leaq (%r15,%r14), %rbp
movq %rbx, %rdi
leaq 0xb385(%rip), %rdx      # 0x4857f
callq 0x11c18
movq (%r15,%r14), %rax
movq %rbp, %rdi
movq %rbx, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq %rbx, %rdi
callq 0x7678
incq %r13
addq $0x108, %r14            # imm = 0x108
movq 0x8(%rsp), %rsi
jmp 0x3d1d1
incq %r12
jmp 0x3d1bf
xorl %edx, %edx
movq 0x10(%rsp), %r15
movl %eax, %ecx
cmpq %rcx, %rdx
jae 0x3d2ba
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rsp), %rax
movl 0x48(%rax), %eax
cmpq %rax, %r13
jae 0x3d2ab
movq (%rsp), %rax
movq 0xb8(%rax), %rax
movq %rdx, %r12
movq (%rax,%rdx,8), %r15
leaq (%r15,%r14), %rbp
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
leaq 0xb31d(%rip), %rdx      # 0x48593
callq 0x11c18
movq (%r15,%r14), %rax
movq 0x10(%rsp), %r15
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq *(%rax)
movq %rbx, %rdi
callq 0x7678
incq %r13
addq $0x108, %r14            # imm = 0x108
movq 0x8(%rsp), %rsi
movq %r12, %rdx
jmp 0x3d242
incq %rdx
movq (%rsp), %rax
movl 0x44(%rax), %eax
jmp 0x3d235
xorl %edx, %edx
leaq 0xd8(%rsp), %rbx
movl %eax, %ecx
cmpq %rcx, %rdx
jae 0x3d33e
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rsp), %rax
movl 0x48(%rax), %eax
cmpq %rax, %r13
jae 0x3d332
movq (%rsp), %rax
movq 0xd8(%rax), %rax
movq %rdx, %r12
movq (%rax,%rdx,8), %r15
leaq (%r15,%r14), %rbp
movq %rbx, %rdi
leaq 0xb2ab(%rip), %rdx      # 0x485a8
callq 0x11c18
movq (%r15,%r14), %rax
movq 0x10(%rsp), %r15
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq *(%rax)
movq %rbx, %rdi
callq 0x7678
incq %r13
addq $0x108, %r14            # imm = 0x108
movq 0x8(%rsp), %rsi
movq %r12, %rdx
jmp 0x3d2d1
incq %rdx
movq (%rsp), %rax
movl 0x44(%rax), %eax
jmp 0x3d2c4
xorl %r12d, %r12d
leaq 0xb8(%rsp), %rbx
movl %eax, %ecx
cmpq %rcx, %r12
jae 0x3d3bd
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rsp), %rax
movl 0x48(%rax), %eax
cmpq %rax, %r13
jae 0x3d3b1
movq (%rsp), %rax
movq 0xe0(%rax), %rax
movq (%rax,%r12,8), %r15
leaq (%r15,%r14), %rbp
movq %rbx, %rdi
leaq 0xb240(%rip), %rdx      # 0x485bf
callq 0x11c18
movq (%r15,%r14), %rax
movq 0x10(%rsp), %r15
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq *(%rax)
movq %rbx, %rdi
callq 0x7678
incq %r13
addq $0x108, %r14            # imm = 0x108
movq 0x8(%rsp), %rsi
jmp 0x3d356
incq %r12
movq (%rsp), %rax
movl 0x44(%rax), %eax
jmp 0x3d349
xorl %r12d, %r12d
leaq 0x98(%rsp), %rbx
movl %eax, %ecx
cmpq %rcx, %r12
jae 0x3d43c
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rsp), %rax
movl 0x48(%rax), %eax
cmpq %rax, %r13
jae 0x3d430
movq (%rsp), %rax
movq 0xc0(%rax), %rax
movq (%rax,%r12,8), %r15
leaq (%r15,%r14), %rbp
movq %rbx, %rdi
leaq 0xb1d9(%rip), %rdx      # 0x485d7
callq 0x11c18
movq (%r15,%r14), %rax
movq 0x10(%rsp), %r15
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq *(%rax)
movq %rbx, %rdi
callq 0x7678
incq %r13
addq $0x108, %r14            # imm = 0x108
movq 0x8(%rsp), %rsi
jmp 0x3d3d5
incq %r12
movq (%rsp), %rax
movl 0x44(%rax), %eax
jmp 0x3d3c8
xorl %r12d, %r12d
leaq 0x78(%rsp), %rbx
movl %eax, %ecx
cmpq %rcx, %r12
jae 0x3d4b8
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rsp), %rax
movl 0x48(%rax), %eax
cmpq %rax, %r13
jae 0x3d4ac
movq (%rsp), %rax
movq 0xc8(%rax), %rax
movq (%rax,%r12,8), %r15
leaq (%r15,%r14), %rbp
movq %rbx, %rdi
leaq 0xb16f(%rip), %rdx      # 0x485e9
callq 0x11c18
movq (%r15,%r14), %rax
movq 0x10(%rsp), %r15
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq *(%rax)
movq %rbx, %rdi
callq 0x7678
incq %r13
addq $0x108, %r14            # imm = 0x108
movq 0x8(%rsp), %rsi
jmp 0x3d451
incq %r12
movq (%rsp), %rax
movl 0x44(%rax), %eax
jmp 0x3d444
xorl %r12d, %r12d
leaq 0x58(%rsp), %rbx
movl %eax, %eax
cmpq %rax, %r12
jae 0x3d534
xorl %r14d, %r14d
xorl %r13d, %r13d
movq (%rsp), %rax
movl 0x48(%rax), %eax
cmpq %rax, %r13
jae 0x3d528
movq (%rsp), %rax
movq 0xd0(%rax), %rax
movq (%rax,%r12,8), %r15
leaq (%r15,%r14), %rbp
movq %rbx, %rdi
leaq 0xb106(%rip), %rdx      # 0x485fc
callq 0x11c18
movq (%r15,%r14), %rax
movq 0x10(%rsp), %r15
movq %rbp, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq *(%rax)
movq %rbx, %rdi
callq 0x7678
incq %r13
addq $0x108, %r14            # imm = 0x108
movq 0x8(%rsp), %rsi
jmp 0x3d4cd
incq %r12
movq (%rsp), %rax
movl 0x44(%rax), %eax
jmp 0x3d4c0
movq %r15, %rdi
callq 0x41c5c
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3d55e
jmp 0x3d55e
jmp 0x3d55e
jmp 0x3d55e
jmp 0x3d55e
jmp 0x3d55e
jmp 0x3d55e
jmp 0x3d55e
movq %rax, %r14
movq %rbx, %rdi
callq 0x7678
movq %r14, %rdi
callq 0x75d0
nop