// File: /workspace/github_cpp_makefile_star2_O1/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, 0x10(%rsp)
movq %rsi, %r14
movq %rdi, %r15
leaq 0x148(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rsi), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x138(%rsp), %r12
movq %r12, %rdi
callq 0xb036
leaq 0x9e32(%rip), %rsi      # 0x5762d
movq %r12, %rdi
callq 0x7690
leaq 0x138(%rsp), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x7450
movq (%r12), %rdi
cmpq %r13, %rdi
je 0x4d824
callq 0x7370
leaq 0x128(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x118(%rsp), %r12
movq %r12, %rdi
callq 0xb036
movq 0x10(%rsp), %rdi
movq %r12, %rsi
callq 0x54454
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x4d869
callq 0x7370
leaq 0x108(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0xf8(%rsp), %r12
movq %r12, %rdi
callq 0xb036
movq %r15, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq 0x4b190
movq 0xf8(%rsp), %rdi
cmpq %r13, %rdi
je 0x4d8b1
callq 0x7370
cmpl $0x0, 0x44(%r15)
je 0x4d97e
movq $0x0, 0x8(%rsp)
leaq 0xd8(%rsp), %r12
cmpl $0x0, 0x48(%r15)
je 0x4d964
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xb0(%r15), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
leaq 0xe8(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb036
movq %r12, %rdi
leaq 0xcd95(%rip), %rsi      # 0x5a6ae
callq 0x7690
movq (%rbp,%rbx), %rax
addq %rbx, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x4d94d
callq 0x7370
incq %r13
movl 0x48(%r15), %eax
addq $0x108, %rbx            # imm = 0x108
cmpq %rax, %r13
jb 0x4d8dd
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%r15), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x4d8cd
cmpl $0x0, 0x44(%r15)
je 0x4da4b
movq $0x0, 0x8(%rsp)
leaq 0xb8(%rsp), %r12
cmpl $0x0, 0x48(%r15)
je 0x4da31
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xb8(%r15), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb036
movq %r12, %rdi
leaq 0xccdc(%rip), %rsi      # 0x5a6c2
callq 0x7690
movq (%rbp,%rbx), %rax
addq %rbx, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x4da1a
callq 0x7370
incq %r13
movl 0x48(%r15), %eax
addq $0x108, %rbx            # imm = 0x108
cmpq %rax, %r13
jb 0x4d9aa
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%r15), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x4d99a
cmpl $0x0, 0x44(%r15)
je 0x4db18
movq $0x0, 0x8(%rsp)
leaq 0x98(%rsp), %r12
cmpl $0x0, 0x48(%r15)
je 0x4dafe
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xd8(%r15), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb036
movq %r12, %rdi
leaq 0xcc24(%rip), %rsi      # 0x5a6d7
callq 0x7690
movq (%rbp,%rbx), %rax
addq %rbx, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x4dae7
callq 0x7370
incq %r13
movl 0x48(%r15), %eax
addq $0x108, %rbx            # imm = 0x108
cmpq %rax, %r13
jb 0x4da77
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%r15), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x4da67
cmpl $0x0, 0x44(%r15)
je 0x4dbd8
movq $0x0, 0x8(%rsp)
leaq 0x78(%rsp), %r12
cmpl $0x0, 0x48(%r15)
je 0x4dbbe
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xe0(%r15), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb036
movq %r12, %rdi
leaq 0xcb74(%rip), %rsi      # 0x5a6ee
callq 0x7690
movq (%rbp,%rbx), %rax
addq %rbx, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x4dbab
callq 0x7370
incq %r13
movl 0x48(%r15), %eax
addq $0x108, %rbx            # imm = 0x108
cmpq %rax, %r13
jb 0x4db41
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%r15), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x4db31
cmpl $0x0, 0x44(%r15)
je 0x4dc8e
movq $0x0, 0x8(%rsp)
leaq 0x58(%rsp), %r12
cmpl $0x0, 0x48(%r15)
je 0x4dc74
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xc0(%r15), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb036
movq %r12, %rdi
leaq 0xcad3(%rip), %rsi      # 0x5a706
callq 0x7690
movq (%rbp,%rbx), %rax
addq %rbx, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x4dc61
callq 0x7370
incq %r13
movl 0x48(%r15), %eax
addq $0x108, %rbx            # imm = 0x108
cmpq %rax, %r13
jb 0x4dbfd
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%r15), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x4dbf1
cmpl $0x0, 0x44(%r15)
je 0x4dd44
movq $0x0, 0x8(%rsp)
leaq 0x38(%rsp), %r12
cmpl $0x0, 0x48(%r15)
je 0x4dd2a
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xc8(%r15), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb036
movq %r12, %rdi
leaq 0xca2f(%rip), %rsi      # 0x5a718
callq 0x7690
movq (%rbp,%rbx), %rax
addq %rbx, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd17
callq 0x7370
incq %r13
movl 0x48(%r15), %eax
addq $0x108, %rbx            # imm = 0x108
cmpq %rax, %r13
jb 0x4dcb3
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%r15), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x4dca7
cmpl $0x0, 0x44(%r15)
je 0x4ddfa
movq $0x0, 0x8(%rsp)
leaq 0x18(%rsp), %r12
cmpl $0x0, 0x48(%r15)
je 0x4dde0
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xd0(%r15), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rbp
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb036
movq %r12, %rdi
leaq 0xc98c(%rip), %rsi      # 0x5a72b
callq 0x7690
movq (%rbp,%rbx), %rax
addq %rbx, %rbp
movq %rbp, %rdi
movq %r12, %rsi
movq 0x10(%rsp), %rdx
callq *(%rax)
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x4ddcd
callq 0x7370
incq %r13
movl 0x48(%r15), %eax
addq $0x108, %rbx            # imm = 0x108
cmpq %rax, %r13
jb 0x4dd69
movq 0x8(%rsp), %rdx
incq %rdx
movl 0x44(%r15), %eax
movq %rdx, 0x8(%rsp)
cmpq %rax, %rdx
jb 0x4dd5d
movq 0x10(%rsp), %rdi
callq 0x547fc
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0xf8(%rsp), %rdi
jmp 0x4de3b
movq %rax, %rbx
movq 0x118(%rsp), %rdi
jmp 0x4de3b
movq %rax, %rbx
movq 0x138(%rsp), %rdi
cmpq %r13, %rdi
jne 0x4ded8
jmp 0x4dedd
jmp 0x4de4b
movq %rax, %rbx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
jmp 0x4ded3
jmp 0x4de5c
movq %rax, %rbx
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
jmp 0x4ded3
jmp 0x4de6d
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
jmp 0x4ded3
jmp 0x4de7e
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
jmp 0x4ded3
jmp 0x4de92
movq %rax, %rbx
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
jmp 0x4ded3
jmp 0x4dea9
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
jmp 0x4ded3
jmp 0x4dec0
movq %rax, %rbx
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x4dedd
callq 0x7370
movq %rbx, %rdi
callq 0x7620
nop