// File: /workspace/github_cpp_makefile_star2_O2/CMU-SAFARI[P]MQSim/src/exec/IO_Flow_Parameter_Set.cpp
// Function: IO_Flow_Parameter_Set::XML_serialize(Utils::XmlWriter&)
void IO_Flow_Parameter_Set::XML_serialize(Utils::XmlWriter& xmlwriter)
{
	std::string attr = "Priority_Class";
	std::string val;
	switch (Priority_Class) {
		case IO_Flow_Priority_Class::URGENT:
			val = "URGENT";
			break;
		case IO_Flow_Priority_Class::HIGH:
			val = "HIGH";
			break;
		case IO_Flow_Priority_Class::MEDIUM:
			val = "MEDIUM";
			break;
		case IO_Flow_Priority_Class::LOW:
			val = "LOW";
			break;
		default:
			break;
	}
	xmlwriter.Write_attribute_string(attr, val);


	attr = "Device_Level_Data_Caching_Mode";
	switch (Device_Level_Data_Caching_Mode) {
		case SSD_Components::Caching_Mode::TURNED_OFF:
			val = "TURNED_OFF";
			break;
		case SSD_Components::Caching_Mode::READ_CACHE:
			val = "READ_CACHE";
			break;
		case SSD_Components::Caching_Mode::WRITE_CACHE:
			val = "WRITE_CACHE";
			break;
		case SSD_Components::Caching_Mode::WRITE_READ_CACHE:
			val = "WRITE_READ_CACHE";
			break;
	}
	xmlwriter.Write_attribute_string(attr, val);

	attr = "Channel_IDs";
	val = "";
	for (int i = 0; i < Channel_No; i++) {
		if (i > 0) {
			val += ",";
		}
		val += std::to_string(Channel_IDs[i]);
	}
	xmlwriter.Write_attribute_string(attr, val);

	attr = "Chip_IDs";
	val = "";
	for (int i = 0; i < Chip_No; i++) {
		if (i > 0) {
			val += ",";
		}
		val += std::to_string(Chip_IDs[i]);
	}
	xmlwriter.Write_attribute_string(attr, val);

	attr = "Die_IDs";
	val = "";
	for (int i = 0; i < Die_No; i++) {
		if (i > 0) {
			val += ",";
		}
		val += std::to_string(Die_IDs[i]);
	}
	xmlwriter.Write_attribute_string(attr, val);

	attr = "Plane_IDs";
	val = "";
	for (int i = 0; i < Plane_No; i++) {
		if (i > 0) {
			val += ",";
		}
		val += std::to_string(Plane_IDs[i]);
	}
	xmlwriter.Write_attribute_string(attr, val);

	attr = "Initial_Occupancy_Percentage";
	val = std::to_string(Initial_Occupancy_Percentage);
	xmlwriter.Write_attribute_string(attr, val);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x228, %rsp            # imm = 0x228
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x32d38(%rip), %rsi     # 0x44fbe
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x7150
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movl 0x10(%r14), %eax
cmpq $0x4, %rax
jae 0x122c8
leaq 0x331a9(%rip), %rcx     # 0x45460
movslq (%rcx,%rax,4), %rsi
addq %rcx, %rsi
leaq 0x8(%rsp), %rdi
callq 0x7640
leaq 0x208(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x7480
leaq 0x1e8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x7480
leaq 0x208(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x1e8(%rsp), %rdi
callq 0x7678
leaq 0x208(%rsp), %rdi
callq 0x7678
leaq 0x32cbf(%rip), %rsi     # 0x44fe4
leaq 0x28(%rsp), %rdi
callq 0x7640
movl 0x8(%r14), %eax
cmpq $0x4, %rax
jae 0x12351
leaq 0x33130(%rip), %rcx     # 0x45470
movslq (%rcx,%rax,4), %rsi
addq %rcx, %rsi
leaq 0x8(%rsp), %rdi
callq 0x7640
leaq 0x1c8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x7480
leaq 0x1a8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x7480
leaq 0x1c8(%rsp), %rsi
leaq 0x1a8(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x1a8(%rsp), %rdi
callq 0x7678
leaq 0x1c8(%rsp), %rdi
callq 0x7678
leaq 0x32c7d(%rip), %rsi     # 0x4502b
leaq 0x28(%rsp), %rdi
callq 0x7640
leaq 0x3352c(%rip), %rsi     # 0x458eb
leaq 0x8(%rsp), %rdi
callq 0x7640
xorl %ebp, %ebp
leaq 0x48(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x32c5b(%rip), %r13     # 0x45037
movslq 0x3c(%r14), %rax
cmpq %rax, %rbp
jge 0x1241c
testq %rbp, %rbp
je 0x123f5
movq %r12, %rdi
movq %r13, %rsi
callq 0x7630
movq 0x18(%r14), %rax
movl (%rax,%rbp,4), %esi
movq %r15, %rdi
callq 0xe74b
movq %r12, %rdi
movq %r15, %rsi
callq 0x7650
movq %r15, %rdi
callq 0x7678
incq %rbp
jmp 0x123dc
leaq 0x188(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x7480
leaq 0x168(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x7480
leaq 0x188(%rsp), %rsi
leaq 0x168(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x168(%rsp), %rdi
callq 0x7678
leaq 0x188(%rsp), %rdi
callq 0x7678
leaq 0x32bc0(%rip), %rsi     # 0x45039
leaq 0x28(%rsp), %rdi
callq 0x7640
leaq 0x33461(%rip), %rsi     # 0x458eb
leaq 0x8(%rsp), %rdi
callq 0x7640
xorl %ebp, %ebp
leaq 0x48(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x32b90(%rip), %r13     # 0x45037
movslq 0x40(%r14), %rax
cmpq %rax, %rbp
jge 0x124e7
testq %rbp, %rbp
je 0x124c0
movq %r12, %rdi
movq %r13, %rsi
callq 0x7630
movq 0x20(%r14), %rax
movl (%rax,%rbp,4), %esi
movq %r15, %rdi
callq 0xe74b
movq %r12, %rdi
movq %r15, %rsi
callq 0x7650
movq %r15, %rdi
callq 0x7678
incq %rbp
jmp 0x124a7
leaq 0x148(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x7480
leaq 0x128(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x7480
leaq 0x148(%rsp), %rsi
leaq 0x128(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x128(%rsp), %rdi
callq 0x7678
leaq 0x148(%rsp), %rdi
callq 0x7678
leaq 0x32afe(%rip), %rsi     # 0x45042
leaq 0x28(%rsp), %rdi
callq 0x7640
leaq 0x33396(%rip), %rsi     # 0x458eb
leaq 0x8(%rsp), %rdi
callq 0x7640
xorl %ebp, %ebp
leaq 0x48(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x32ac5(%rip), %r13     # 0x45037
movslq 0x44(%r14), %rax
cmpq %rax, %rbp
jge 0x125b2
testq %rbp, %rbp
je 0x1258b
movq %r12, %rdi
movq %r13, %rsi
callq 0x7630
movq 0x28(%r14), %rax
movl (%rax,%rbp,4), %esi
movq %r15, %rdi
callq 0xe74b
movq %r12, %rdi
movq %r15, %rsi
callq 0x7650
movq %r15, %rdi
callq 0x7678
incq %rbp
jmp 0x12572
leaq 0x108(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x7480
leaq 0xe8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x7480
leaq 0x108(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0xe8(%rsp), %rdi
callq 0x7678
leaq 0x108(%rsp), %rdi
callq 0x7678
leaq 0x32a3b(%rip), %rsi     # 0x4504a
leaq 0x28(%rsp), %rdi
callq 0x7640
leaq 0x332cb(%rip), %rsi     # 0x458eb
leaq 0x8(%rsp), %rdi
callq 0x7640
xorl %ebp, %ebp
leaq 0x48(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x329fa(%rip), %r13     # 0x45037
movslq 0x48(%r14), %rax
cmpq %rax, %rbp
jge 0x1267d
testq %rbp, %rbp
je 0x12656
movq %r12, %rdi
movq %r13, %rsi
callq 0x7630
movq 0x30(%r14), %rax
movl (%rax,%rbp,4), %esi
movq %r15, %rdi
callq 0xe74b
movq %r12, %rdi
movq %r15, %rsi
callq 0x7650
movq %r15, %rdi
callq 0x7678
incq %rbp
jmp 0x1263d
leaq 0xc8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x7480
leaq 0xa8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x7480
leaq 0xc8(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0xa8(%rsp), %rdi
callq 0x7678
leaq 0xc8(%rsp), %rdi
callq 0x7678
leaq 0x3297a(%rip), %rsi     # 0x45054
leaq 0x28(%rsp), %rdi
callq 0x7640
movl 0x38(%r14), %esi
leaq 0x48(%rsp), %rdi
callq 0xe74b
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %r14
movq %r14, %rsi
callq 0x73f0
movq %r14, %rdi
callq 0x7678
leaq 0x88(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x7480
leaq 0x68(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x7480
leaq 0x88(%rsp), %rsi
leaq 0x68(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x68(%rsp), %rdi
callq 0x7678
leaq 0x88(%rsp), %rdi
callq 0x7678
leaq 0x8(%rsp), %rdi
callq 0x7678
leaq 0x28(%rsp), %rdi
callq 0x7678
addq $0x228, %rsp            # imm = 0x228
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x7678
jmp 0x12791
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
jmp 0x12881
jmp 0x12888
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x7678
jmp 0x127b8
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
jmp 0x12881
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x7678
jmp 0x127da
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
jmp 0x12881
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x7678
jmp 0x127fc
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
jmp 0x12881
movq %rax, %rbx
leaq 0x168(%rsp), %rdi
callq 0x7678
jmp 0x1281b
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
jmp 0x12881
movq %rax, %rbx
leaq 0x1a8(%rsp), %rdi
callq 0x7678
jmp 0x1283a
movq %rax, %rbx
leaq 0x1c8(%rsp), %rdi
jmp 0x12881
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x7678
jmp 0x12859
movq %rax, %rbx
leaq 0x208(%rsp), %rdi
jmp 0x12881
jmp 0x12888
jmp 0x12888
jmp 0x12888
jmp 0x12888
jmp 0x12888
jmp 0x12879
jmp 0x12888
jmp 0x12879
jmp 0x12888
jmp 0x12879
jmp 0x12888
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x7678
jmp 0x1288b
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x7678
leaq 0x28(%rsp), %rdi
callq 0x7678
movq %rbx, %rdi
callq 0x75d0
nop