// File: /workspace/github_cpp_makefile_star2_O2/CMU-SAFARI[P]MQSim/src/exec/IO_Flow_Parameter_Set.cpp
// Function: IO_Flow_Parameter_Set_Synthetic::XML_serialize(Utils::XmlWriter&)
void IO_Flow_Parameter_Set_Synthetic::XML_serialize(Utils::XmlWriter& xmlwriter)
{
	std::string tmp;
	tmp = "IO_Flow_Parameter_Set_Synthetic";
	xmlwriter.Write_open_tag(tmp);
	IO_Flow_Parameter_Set::XML_serialize(xmlwriter);

	std::string attr = "Working_Set_Percentage";
	std::string val = std::to_string(Working_Set_Percentage);
	xmlwriter.Write_attribute_string(attr, val);

	attr = "Synthetic_Generator_Type";
	switch (Synthetic_Generator_Type) {
		case Utils::Request_Generator_Type::BANDWIDTH:
			val = "BANDWIDTH";
			break;
		case Utils::Request_Generator_Type::QUEUE_DEPTH:
			val = "QUEUE_DEPTH";
			break;
	}
	xmlwriter.Write_attribute_string(attr, val);

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


	attr = "Address_Distribution";
	switch (Address_Distribution) {
		case Utils::Address_Distribution_Type::STREAMING:
			val = "STREAMING";
			break;
		case Utils::Address_Distribution_Type::RANDOM_HOTCOLD:
			val = "RANDOM_HOTCOLD";
			break;
		case Utils::Address_Distribution_Type::RANDOM_UNIFORM:
			val = "RANDOM_UNIFORM";
			break;
	}
	xmlwriter.Write_attribute_string(attr, val);
	 

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

	attr = "Generated_Aligned_Addresses";
	val = (Generated_Aligned_Addresses ? "true" : "false");
	xmlwriter.Write_attribute_string(attr, val);

	attr = "Address_Alignment_Unit";
	val = std::to_string(Address_Alignment_Unit);
	xmlwriter.Write_attribute_string(attr, val);
	
	attr = "Request_Size_Distribution";
	switch (Request_Size_Distribution) {
		case Utils::Request_Size_Distribution_Type::FIXED:
			val = "FIXED";
			break;
		case Utils::Request_Size_Distribution_Type::NORMAL:
			val = "NORMAL";
			break;
	}
	xmlwriter.Write_attribute_string(attr, val);

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


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


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


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


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


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


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

	xmlwriter.Write_close_tag();
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x460, %rsp            # imm = 0x460
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x70(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x3015d(%rip), %rsi     # 0x4324d
leaq 0x60(%rsp), %rdi
callq 0x7640
leaq 0x440(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x7480
leaq 0x440(%rsp), %rsi
movq %rbx, %rdi
callq 0x419e0
leaq 0x440(%rsp), %rdi
callq 0x7678
movq %r14, %rdi
movq %rbx, %rsi
callq 0x12268
leaq 0x31fb2(%rip), %rsi     # 0x450ed
leaq 0x20(%rsp), %rdi
movq %rsp, %rdx
callq 0x7150
movl 0x4c(%r14), %esi
movq %rsp, %rdi
callq 0xe74b
leaq 0x420(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x400(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x420(%rsp), %rsi
leaq 0x400(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x400(%rsp), %rdi
callq 0x7678
leaq 0x420(%rsp), %rdi
callq 0x7678
leaq 0x31f55(%rip), %rsi     # 0x45104
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x50(%r14), %eax
testl %eax, %eax
je 0x131cf
cmpl $0x1, %eax
jne 0x131de
leaq 0x31f5a(%rip), %rsi     # 0x45127
jmp 0x131d6
leaq 0x31f47(%rip), %rsi     # 0x4511d
movq %rsp, %rdi
callq 0x7640
leaq 0x3e0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x3c0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x3e0(%rsp), %rsi
leaq 0x3c0(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x3c0(%rsp), %rdi
callq 0x7678
leaq 0x3e0(%rsp), %rdi
callq 0x7678
leaq 0x31efa(%rip), %rsi     # 0x45133
leaq 0x20(%rsp), %rdi
callq 0x7640
movsbl 0x54(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0x9baf
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x3a0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x380(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x3a0(%rsp), %rsi
leaq 0x380(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x380(%rsp), %rdi
callq 0x7678
leaq 0x3a0(%rsp), %rdi
callq 0x7678
leaq 0x31e7e(%rip), %rsi     # 0x45143
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x58(%r14), %eax
decl %eax
cmpl $0x3, %eax
jae 0x132f2
movl %eax, %eax
leaq 0x3219d(%rip), %rcx     # 0x45480
movslq (%rcx,%rax,4), %rsi
addq %rcx, %rsi
movq %rsp, %rdi
callq 0x7640
leaq 0x360(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x340(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x360(%rsp), %rsi
leaq 0x340(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x340(%rsp), %rdi
callq 0x7678
leaq 0x360(%rsp), %rdi
callq 0x7678
leaq 0x31e33(%rip), %rsi     # 0x45180
leaq 0x20(%rsp), %rdi
callq 0x7640
movsbl 0x5c(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0x9baf
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x320(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x300(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x320(%rsp), %rsi
leaq 0x300(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x300(%rsp), %rdi
callq 0x7678
leaq 0x320(%rsp), %rdi
callq 0x7678
leaq 0x31dc0(%rip), %rsi     # 0x45199
leaq 0x20(%rsp), %rdi
callq 0x7640
leaq 0x30d30(%rip), %rax     # 0x4411a
leaq 0x30d2e(%rip), %rsi     # 0x4411f
cmpb $0x0, 0x5d(%r14)
cmovneq %rax, %rsi
movq %rsp, %rdi
callq 0x7640
leaq 0x2e0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x2c0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x2e0(%rsp), %rsi
leaq 0x2c0(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x2c0(%rsp), %rdi
callq 0x7678
leaq 0x2e0(%rsp), %rdi
callq 0x7678
leaq 0x31d58(%rip), %rsi     # 0x451b5
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x60(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0xe74b
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x2a0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x280(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x2a0(%rsp), %rsi
leaq 0x280(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x280(%rsp), %rdi
callq 0x7678
leaq 0x2a0(%rsp), %rdi
callq 0x7678
leaq 0x31ce4(%rip), %rsi     # 0x451cc
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x64(%r14), %eax
testl %eax, %eax
je 0x13508
cmpl $0x1, %eax
jne 0x13517
leaq 0x31ce6(%rip), %rsi     # 0x451ec
jmp 0x1350f
leaq 0x31cd7(%rip), %rsi     # 0x451e6
movq %rsp, %rdi
callq 0x7640
leaq 0x260(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x240(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x260(%rsp), %rsi
leaq 0x240(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x240(%rsp), %rdi
callq 0x7678
leaq 0x260(%rsp), %rdi
callq 0x7678
leaq 0x31c81(%rip), %rsi     # 0x451f3
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x68(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0xe74b
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x220(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x200(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x220(%rsp), %rsi
leaq 0x200(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x200(%rsp), %rdi
callq 0x7678
leaq 0x220(%rsp), %rdi
callq 0x7678
leaq 0x31c0b(%rip), %rsi     # 0x45208
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x6c(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0xe74b
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x1e0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x1c0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x1e0(%rsp), %rsi
leaq 0x1c0(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x1c0(%rsp), %rdi
callq 0x7678
leaq 0x1e0(%rsp), %rdi
callq 0x7678
leaq 0x30a75(%rip), %rsi     # 0x440fd
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x70(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0x9baf
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x1a0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x180(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x1a0(%rsp), %rsi
leaq 0x180(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x180(%rsp), %rdi
callq 0x7678
leaq 0x1a0(%rsp), %rdi
callq 0x7678
leaq 0x31b0b(%rip), %rsi     # 0x4521e
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x74(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0xe74b
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x160(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x140(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x160(%rsp), %rsi
leaq 0x140(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x140(%rsp), %rdi
callq 0x7678
leaq 0x160(%rsp), %rdi
callq 0x7678
leaq 0x315ec(%rip), %rsi     # 0x44d8a
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x78(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0xe74b
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0x120(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x100(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0x120(%rsp), %rsi
leaq 0x100(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x100(%rsp), %rdi
callq 0x7678
leaq 0x120(%rsp), %rdi
callq 0x7678
leaq 0x31a11(%rip), %rsi     # 0x4523a
leaq 0x20(%rsp), %rdi
callq 0x7640
movq 0x80(%r14), %rsi
leaq 0x40(%rsp), %rdi
callq 0xe78a
movq %rsp, %rdi
leaq 0x40(%rsp), %r15
movq %r15, %rsi
callq 0x73f0
movq %r15, %rdi
callq 0x7678
leaq 0xe0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0xc0(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0xe0(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0xc0(%rsp), %rdi
callq 0x7678
leaq 0xe0(%rsp), %rdi
callq 0x7678
leaq 0x3198d(%rip), %rsi     # 0x45244
leaq 0x20(%rsp), %rdi
callq 0x7640
movl 0x88(%r14), %esi
leaq 0x40(%rsp), %rdi
callq 0xe74b
movq %rsp, %rdi
leaq 0x40(%rsp), %r14
movq %r14, %rsi
callq 0x73f0
movq %r14, %rdi
callq 0x7678
leaq 0xa0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x7480
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x7480
leaq 0xa0(%rsp), %rsi
leaq 0x80(%rsp), %rdx
movq %rbx, %rdi
callq 0x41adc
leaq 0x80(%rsp), %rdi
callq 0x7678
leaq 0xa0(%rsp), %rdi
callq 0x7678
movq %rbx, %rdi
callq 0x41c5c
movq %rsp, %rdi
callq 0x7678
leaq 0x20(%rsp), %rdi
callq 0x7678
leaq 0x60(%rsp), %rdi
callq 0x7678
addq $0x460, %rsp            # imm = 0x460
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x7678
jmp 0x13984
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x7678
jmp 0x139ab
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x100(%rsp), %rdi
callq 0x7678
jmp 0x139d2
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
callq 0x7678
jmp 0x139f9
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0x7678
jmp 0x13a20
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x1c0(%rsp), %rdi
callq 0x7678
jmp 0x13a47
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x200(%rsp), %rdi
callq 0x7678
jmp 0x13a6e
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0x7678
jmp 0x13a95
movq %rax, %rbx
leaq 0x260(%rsp), %rdi
jmp 0x13b8e
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x7678
jmp 0x13ab7
movq %rax, %rbx
leaq 0x2a0(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x2c0(%rsp), %rdi
callq 0x7678
jmp 0x13ade
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
jmp 0x13b8e
movq %rax, %rbx
leaq 0x300(%rsp), %rdi
callq 0x7678
jmp 0x13b00
movq %rax, %rbx
leaq 0x320(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x340(%rsp), %rdi
callq 0x7678
jmp 0x13b27
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
jmp 0x13b8e
movq %rax, %rbx
leaq 0x380(%rsp), %rdi
callq 0x7678
jmp 0x13b46
movq %rax, %rbx
leaq 0x3a0(%rsp), %rdi
jmp 0x13b8e
jmp 0x13bae
movq %rax, %rbx
leaq 0x3c0(%rsp), %rdi
callq 0x7678
jmp 0x13b67
movq %rax, %rbx
leaq 0x3e0(%rsp), %rdi
jmp 0x13b8e
movq %rax, %rbx
leaq 0x400(%rsp), %rdi
callq 0x7678
jmp 0x13b86
movq %rax, %rbx
leaq 0x420(%rsp), %rdi
callq 0x7678
jmp 0x13bb1
movq %rax, %rbx
jmp 0x13bb9
jmp 0x13ba9
movq %rax, %rbx
leaq 0x440(%rsp), %rdi
jmp 0x13bbe
movq %rax, %rbx
jmp 0x13bc3
movq %rax, %rbx
movq %rsp, %rdi
callq 0x7678
leaq 0x20(%rsp), %rdi
callq 0x7678
leaq 0x60(%rsp), %rdi
callq 0x7678
movq %rbx, %rdi
callq 0x75d0
nop