// 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_deserialize(rapidxml::xml_node<char>*)
void IO_Flow_Parameter_Set_Synthetic::XML_deserialize(rapidxml::xml_node<> *node)
{
	IO_Flow_Parameter_Set::XML_deserialize(node);
	try {
		for (auto param = node->first_node(); param; param = param->next_sibling()) {
			if (strcmp(param->name(), "Working_Set_Percentage") == 0) {
				std::string val = param->value();
				Working_Set_Percentage = std::stoi(val);
			} else if (strcmp(param->name(), "Synthetic_Generator_Type") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				if (strcmp(val.c_str(), "BANDWIDTH") == 0) {
					Synthetic_Generator_Type = Utils::Request_Generator_Type::BANDWIDTH;
				} else if (strcmp(val.c_str(), "QUEUE_DEPTH") == 0) {
					Synthetic_Generator_Type = Utils::Request_Generator_Type::QUEUE_DEPTH;
				} else {
					PRINT_ERROR("Unknown synthetic generator type specified in the input file")
				}
			} else if (strcmp(param->name(), "Read_Percentage") == 0) {
				std::string val = param->value();
				Read_Percentage = std::stoi(val);
			} else if (strcmp(param->name(), "Address_Distribution") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				if (strcmp(val.c_str(), "STREAMING") == 0) {
					Address_Distribution = Utils::Address_Distribution_Type::STREAMING;
				} else if (strcmp(val.c_str(), "RANDOM_HOTCOLD") == 0) {
					Address_Distribution = Utils::Address_Distribution_Type::RANDOM_HOTCOLD;
				} else if (strcmp(val.c_str(), "RANDOM_UNIFORM") == 0) {
					Address_Distribution = Utils::Address_Distribution_Type::RANDOM_UNIFORM;
				} else {
					PRINT_ERROR("Wrong address distribution type for input synthetic flow")
				}
			} else if (strcmp(param->name(), "Percentage_of_Hot_Region") == 0) {
				std::string val = param->value();
				Percentage_of_Hot_Region = std::stoi(val);
			} else if (strcmp(param->name(), "Generated_Aligned_Addresses") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				Generated_Aligned_Addresses = (val.compare("FALSE") == 0 ? false : true);
			} else if (strcmp(param->name(), "Address_Alignment_Unit") == 0) {
				std::string val = param->value();
				Address_Alignment_Unit = std::stoi(val);
			} else if (strcmp(param->name(), "Request_Size_Distribution") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				if (strcmp(val.c_str(), "FIXED") == 0) {
					Request_Size_Distribution = Utils::Request_Size_Distribution_Type::FIXED;
				} else if (strcmp(val.c_str(), "NORMAL") == 0) {
					Request_Size_Distribution = Utils::Request_Size_Distribution_Type::NORMAL;
				} else {
					PRINT_ERROR("Wrong request size distribution type for input synthetic flow")
				}
			} else if (strcmp(param->name(), "Average_Request_Size") == 0) {
				std::string val = param->value();
				Average_Request_Size = std::stoi(val);
			} else if (strcmp(param->name(), "Variance_Request_Size") == 0) {
				std::string val = param->value();
				Variance_Request_Size = std::stoi(val);
			} else if (strcmp(param->name(), "Seed") == 0) {
				std::string val = param->value();
				Seed = std::stoi(val);
			} else if (strcmp(param->name(), "Average_No_of_Reqs_in_Queue") == 0) {
				std::string val = param->value();
				Average_No_of_Reqs_in_Queue = std::stoi(val);
			} else if (strcmp(param->name(), "Bandwidth") == 0) {
				std::string val = param->value();
				Bandwidth = std::stoi(val);
			} else if (strcmp(param->name(), "Stop_Time") == 0) {
				std::string val = param->value();
				Stop_Time = std::stoll(val);
			} else if (strcmp(param->name(), "Total_Requests_To_Generate") == 0) {
				std::string val = param->value();
				Total_Requests_To_Generate = std::stoi(val);
			}
		}
	} catch (...) {
		PRINT_ERROR("Error in IO_Flow_Parameter_Set_Synthetic!")
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
callq 0x128a8
movq 0x30(%r14), %r13
leaq 0x4e908(%rip), %r12     # 0x62502
leaq 0x314ec(%rip), %rbp     # 0x450ed
leaq 0x8(%rsp), %r15
testq %r13, %r13
je 0x141b1
movq (%r13), %r14
testq %r14, %r14
cmoveq %r12, %r14
movq %r14, %rdi
movq %rbp, %rsi
callq 0x7490
testl %eax, %eax
je 0x13d9f
movq %r14, %rdi
leaq 0x314cd(%rip), %rsi     # 0x45104
callq 0x7490
testl %eax, %eax
je 0x13dcc
movq %r14, %rdi
leaq 0x314e5(%rip), %rsi     # 0x45133
callq 0x7490
testl %eax, %eax
je 0x13e52
movq %r14, %rdi
leaq 0x314de(%rip), %rsi     # 0x45143
callq 0x7490
testl %eax, %eax
je 0x13e7f
movq %r14, %rdi
leaq 0x31504(%rip), %rsi     # 0x45180
callq 0x7490
testl %eax, %eax
je 0x13f41
movq %r14, %rdi
leaq 0x31506(%rip), %rsi     # 0x45199
callq 0x7490
testl %eax, %eax
je 0x13f6b
movq %r14, %rdi
leaq 0x3150b(%rip), %rsi     # 0x451b5
callq 0x7490
testl %eax, %eax
je 0x13fd8
movq %r14, %rdi
leaq 0x3150b(%rip), %rsi     # 0x451cc
callq 0x7490
testl %eax, %eax
je 0x14005
movq %r14, %rdi
leaq 0x3151b(%rip), %rsi     # 0x451f3
callq 0x7490
testl %eax, %eax
je 0x14087
movq %r14, %rdi
leaq 0x31519(%rip), %rsi     # 0x45208
callq 0x7490
testl %eax, %eax
je 0x140b4
movq %r14, %rdi
leaq 0x303f7(%rip), %rsi     # 0x440fd
callq 0x7490
testl %eax, %eax
je 0x140f9
movq %r14, %rdi
leaq 0x31501(%rip), %rsi     # 0x4521e
callq 0x7490
testl %eax, %eax
je 0x14126
movq %r14, %rdi
leaq 0x31056(%rip), %rsi     # 0x44d8a
callq 0x7490
testl %eax, %eax
je 0x14153
movq %r14, %rdi
leaq 0x314ef(%rip), %rsi     # 0x4523a
callq 0x7490
testl %eax, %eax
je 0x14180
movq %r14, %rdi
leaq 0x314e2(%rip), %rsi     # 0x45244
callq 0x7490
testl %eax, %eax
jne 0x13f2a
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x88(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x4c(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %rbp
xorl %r12d, %r12d
cmpq %r12, %rbp
je 0x13e09
movsbl (%r14,%r12), %edi
callq 0x7610
movb %al, (%r14,%r12)
incq %r12
jmp 0x13df1
movq 0x8(%rsp), %r14
movq %r14, %rdi
leaq 0x31305(%rip), %rsi     # 0x4511d
callq 0x7490
testl %eax, %eax
je 0x13f0f
movq %r14, %rdi
leaq 0x312f8(%rip), %rsi     # 0x45127
callq 0x7490
pushq $0x1
popq %rcx
testl %eax, %eax
leaq 0x4e6c2(%rip), %r12     # 0x62502
leaq 0x312a6(%rip), %rbp     # 0x450ed
je 0x13f1f
jmp 0x141c0
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movb %al, 0x54(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %rbp
xorl %r12d, %r12d
cmpq %r12, %rbp
je 0x13ebc
movsbl (%r14,%r12), %edi
callq 0x7610
movb %al, (%r14,%r12)
incq %r12
jmp 0x13ea4
movq 0x8(%rsp), %r14
movq %r14, %rdi
leaq 0x3128d(%rip), %rsi     # 0x45158
callq 0x7490
pushq $0x1
popq %rcx
testl %eax, %eax
je 0x13f07
movq %r14, %rdi
leaq 0x31281(%rip), %rsi     # 0x45162
callq 0x7490
pushq $0x3
popq %rcx
testl %eax, %eax
je 0x13f07
movq %r14, %rdi
leaq 0x3127a(%rip), %rsi     # 0x45171
callq 0x7490
pushq $0x2
popq %rcx
testl %eax, %eax
jne 0x141ff
movl %ecx, 0x58(%rbx)
jmp 0x13fbd
xorl %ecx, %ecx
leaq 0x4e5ea(%rip), %r12     # 0x62502
leaq 0x311ce(%rip), %rbp     # 0x450ed
movl %ecx, 0x50(%rbx)
movq %r15, %rdi
callq 0x7678
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
pushq $0x1
popq %rcx
callq 0x9a6e
movq %rax, %r13
jmp 0x13c06
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movb %al, 0x5c(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %rbp
xorl %r12d, %r12d
cmpq %r12, %rbp
je 0x13fa8
movsbl (%r14,%r12), %edi
callq 0x7610
movb %al, (%r14,%r12)
incq %r12
jmp 0x13f90
movq %r15, %rdi
leaq 0x305d0(%rip), %rsi     # 0x44582
callq 0x7120
testl %eax, %eax
setne 0x5d(%rbx)
movq %r15, %rdi
callq 0x7678
leaq 0x4e536(%rip), %r12     # 0x62502
leaq 0x3111a(%rip), %rbp     # 0x450ed
jmp 0x13f2a
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x60(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq 0x8(%rsp), %r14
movq 0x10(%rsp), %rbp
xorl %r12d, %r12d
cmpq %r12, %rbp
je 0x14042
movsbl (%r14,%r12), %edi
callq 0x7610
movb %al, (%r14,%r12)
incq %r12
jmp 0x1402a
movq 0x8(%rsp), %r14
movq %r14, %rdi
leaq 0x31195(%rip), %rsi     # 0x451e6
callq 0x7490
testl %eax, %eax
je 0x140e1
movq %r14, %rdi
leaq 0x31184(%rip), %rsi     # 0x451ec
callq 0x7490
pushq $0x1
popq %rcx
testl %eax, %eax
leaq 0x4e489(%rip), %r12     # 0x62502
leaq 0x3106d(%rip), %rbp     # 0x450ed
je 0x140f1
jmp 0x1423e
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x68(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x6c(%rbx)
jmp 0x13f22
xorl %ecx, %ecx
leaq 0x4e418(%rip), %r12     # 0x62502
leaq 0x30ffc(%rip), %rbp     # 0x450ed
movl %ecx, 0x64(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x70(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x74(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0xe7ef
movl %eax, 0x78(%rbx)
jmp 0x13f22
movq 0x8(%r13), %rsi
testq %rsi, %rsi
cmoveq %r12, %rsi
movq %r15, %rdi
leaq 0x7(%rsp), %rdx
callq 0x7150
movq %r15, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x1493e
movq %rax, 0x80(%rbx)
jmp 0x13f22
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x4de29(%rip), %rdi     # 0x61ff0
leaq 0x303ba(%rip), %rsi     # 0x44588
callq 0x7360
movq 0x4de16(%rip), %rdi     # 0x61ff0
leaq 0x3107e(%rip), %rsi     # 0x4525f
callq 0x7360
movq %rax, %rdi
callq 0x71a0
movq 0x4dddb(%rip), %rdi     # 0x61fd0
callq 0x73d0
jmp 0x14309
movq 0x4ddea(%rip), %rdi     # 0x61ff0
leaq 0x3037b(%rip), %rsi     # 0x44588
callq 0x7360
movq 0x4ddd7(%rip), %rdi     # 0x61ff0
leaq 0x3107c(%rip), %rsi     # 0x4529c
callq 0x7360
movq %rax, %rdi
callq 0x71a0
movq 0x4dd9c(%rip), %rdi     # 0x61fd0
callq 0x73d0
jmp 0x14309
movq 0x4ddab(%rip), %rdi     # 0x61ff0
leaq 0x3033c(%rip), %rsi     # 0x44588
callq 0x7360
movq 0x4dd98(%rip), %rdi     # 0x61ff0
leaq 0x31076(%rip), %rsi     # 0x452d5
callq 0x7360
movq %rax, %rdi
callq 0x71a0
movq 0x4dd5d(%rip), %rdi     # 0x61fd0
callq 0x73d0
jmp 0x14309
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142b3
jmp 0x142c4
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142b3
jmp 0x142c4
jmp 0x142c4
jmp 0x142b3
jmp 0x142b3
jmp 0x142c4
jmp 0x142c4
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x7678
jmp 0x142c7
jmp 0x142c4
movq %rax, %rbx
movq %rbx, %rdi
callq 0x7160
movq 0x4dd1a(%rip), %rdi     # 0x61ff0
leaq 0x302ab(%rip), %rsi     # 0x44588
callq 0x7360
movq 0x4dd07(%rip), %rdi     # 0x61ff0
leaq 0x31023(%rip), %rsi     # 0x45313
callq 0x7360
movq %rax, %rdi
callq 0x71a0
movq 0x4dccc(%rip), %rdi     # 0x61fd0
callq 0x73d0
pushq $0x1
popq %rdi
callq 0x73e0
movq %rax, %rbx
callq 0x7550
movq %rbx, %rdi
callq 0x75d0
movq %rax, %rdi
callq 0x9c29
nop