// File: /workspace/github_cpp_makefile_star2_O1/CMU-SAFARI[P]MQSim/src/exec/Host_Parameter_Set.cpp
// Function: Host_Parameter_Set::XML_deserialize(rapidxml::xml_node<char>*)
void Host_Parameter_Set::XML_deserialize(rapidxml::xml_node<> *node)
{
	try {
		for (auto param = node->first_node(); param; param = param->next_sibling()) {
			if (strcmp(param->name(), "PCIe_Lane_Bandwidth") == 0) {
				std::string val = param->value();
				PCIe_Lane_Bandwidth = std::stod(val);
			} else if (strcmp(param->name(), "PCIe_Lane_Count") == 0) {
				std::string val = param->value();
				PCIe_Lane_Count = std::stoul(val);
			} else if (strcmp(param->name(), "SATA_Processing_Delay") == 0) {
				std::string val = param->value();
				SATA_Processing_Delay = std::stoul(val);
			} else if (strcmp(param->name(), "Enable_ResponseTime_Logging") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				Enable_ResponseTime_Logging = (val.compare("FALSE") == 0 ? false : true);
			} else if (strcmp(param->name(), "ResponseTime_Logging_Period_Length") == 0) {
				std::string val = param->value();
				ResponseTime_Logging_Period_Length = std::stoul(val);
			}
		}
	} catch (...) {
		PRINT_ERROR("Error in the Host_Parameter_Set!")
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq 0x30(%rsi), %r12
testq %r12, %r12
je 0x1497d
leaq 0x5ae4a(%rip), %r14     # 0x6f532
leaq 0x20(%rsp), %r15
movq (%r12), %rbp
testq %rbp, %rbp
cmoveq %r14, %rbp
movq %rbp, %rdi
leaq 0x426ee(%rip), %rsi     # 0x56df0
callq 0x74d0
testl %eax, %eax
je 0x147ca
movq %rbp, %rdi
leaq 0x426eb(%rip), %rsi     # 0x56e04
callq 0x74d0
testl %eax, %eax
je 0x1481c
movq %rbp, %rdi
leaq 0x426e4(%rip), %rsi     # 0x56e14
callq 0x74d0
testl %eax, %eax
je 0x14883
movq %rbp, %rdi
leaq 0x426e3(%rip), %rsi     # 0x56e2a
callq 0x74d0
testl %eax, %eax
je 0x148e5
movq %rbp, %rdi
leaq 0x426e8(%rip), %rsi     # 0x56e46
callq 0x74d0
testl %eax, %eax
jne 0x14967
movq 0x8(%r12), %rsi
testq %rsi, %rsi
cmoveq %r14, %rsi
movq %rsp, %rdi
movq %r15, %rdx
callq 0x7180
movq (%rsp), %r13
callq 0x7050
movq %rax, %rbp
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r13, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x7140
cmpq %r13, 0x20(%rsp)
je 0x149f3
movl (%rbp), %ecx
testl %ecx, %ecx
je 0x1494a
cmpl $0x22, %ecx
jne 0x1494d
jmp 0x149ff
movq 0x8(%r12), %rsi
testq %rsi, %rsi
cmoveq %r14, %rsi
movq %rsp, %rdi
movq %r15, %rdx
callq 0x7180
movq (%rsp), %r13
callq 0x7050
movq %rax, %rbp
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r13, %rdi
movq %r15, %rsi
callq 0x72d0
cmpq %r13, 0x20(%rsp)
je 0x149ab
movl (%rbp), %eax
testl %eax, %eax
je 0x14873
cmpl $0x22, %eax
jne 0x14876
jmp 0x149c3
movq 0x8(%r12), %rsi
testq %rsi, %rsi
cmoveq %r14, %rsi
movq %rsp, %rdi
movq %r15, %rdx
callq 0x7180
movq (%rsp), %r13
callq 0x7050
movq %rax, %rbp
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r13, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x7140
cmpq %r13, 0x20(%rsp)
je 0x149b7
movl (%rbp), %ecx
testl %ecx, %ecx
je 0x148da
cmpl $0x22, %ecx
jne 0x148dd
jmp 0x149db
movl %ebx, (%rbp)
movsd %xmm0, 0x5ac1a(%rip)    # 0x6f498
jmp 0x14954
movq 0x8(%r12), %rsi
testq %rsi, %rsi
cmoveq %r14, %rsi
movq %rsp, %rdi
movq %r15, %rdx
callq 0x7180
movq (%rsp), %r13
callq 0x7050
movq %rax, %rbp
movl (%rax), %ebx
movl $0x0, (%rax)
movq %r13, %rdi
movq %r15, %rsi
movl $0xa, %edx
callq 0x7140
cmpq %r13, 0x20(%rsp)
je 0x149cf
movl (%rbp), %ecx
testl %ecx, %ecx
je 0x1493e
cmpl $0x22, %ecx
jne 0x14941
jmp 0x149e7
movl %ebx, (%rbp)
movl %eax, 0x5abbd(%rip)     # 0x6f4a0
jmp 0x14954
movq 0x8(%r12), %rsi
testq %rsi, %rsi
cmoveq %r14, %rsi
movq %rsp, %rdi
movq %r15, %rdx
callq 0x7180
movq 0x8(%rsp), %rbx
testq %rbx, %rbx
je 0x14924
movq (%rsp), %r13
xorl %ebp, %ebp
movsbl (%r13,%rbp), %edi
callq 0x7670
movb %al, (%r13,%rbp)
incq %rbp
cmpq %rbp, %rbx
jne 0x1490c
movq %rsp, %rdi
leaq 0x41c74(%rip), %rsi     # 0x565a2
callq 0x7120
testl %eax, %eax
setne 0x5ac34(%rip)           # 0x6f570
jmp 0x14954
movl %ebx, (%rbp)
movq %rax, 0x5ac20(%rip)     # 0x6f568
jmp 0x14954
movl %ebx, (%rbp)
movq %rax, 0x5ab54(%rip)     # 0x6f4a8
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x14967
callq 0x7370
cmpq $0x0, 0x20(%r12)
je 0x1498c
movq 0x58(%r12), %r12
testq %r12, %r12
jne 0x146ed
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x40de4(%rip), %rdi     # 0x55777
leaq 0x40baf(%rip), %rsi     # 0x55549
leaq 0x40de5(%rip), %rcx     # 0x55786
movl $0x3ee, %edx            # imm = 0x3EE
callq 0x7270
leaq 0x41f8a(%rip), %rdi     # 0x5693c
callq 0x7250
leaq 0x41f78(%rip), %rdi     # 0x56936
callq 0x7250
leaq 0x41f72(%rip), %rdi     # 0x5693c
callq 0x7510
leaq 0x41f60(%rip), %rdi     # 0x56936
callq 0x7250
leaq 0x41f54(%rip), %rdi     # 0x56936
callq 0x7510
leaq 0x41f48(%rip), %rdi     # 0x56936
callq 0x7510
leaq 0x41f3c(%rip), %rdi     # 0x56936
callq 0x7250
leaq 0x41f30(%rip), %rdi     # 0x56936
callq 0x7510
jmp 0x14a19
jmp 0x14a1e
jmp 0x14a19
jmp 0x14a19
jmp 0x14a1e
jmp 0x14a19
jmp 0x14a1e
movq %rax, %r14
jmp 0x14a3d
movq %rax, %r14
cmpl $0x0, (%rbp)
jne 0x14a2a
movl %ebx, (%rbp)
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x14a3d
callq 0x7370
movq %r14, %rdi
callq 0x7190
movq 0x5a5a4(%rip), %rdi     # 0x6eff0
leaq 0x41b55(%rip), %rsi     # 0x565a8
movl $0x6, %edx
callq 0x7400
movq 0x5a58c(%rip), %rdi     # 0x6eff0
leaq 0x423fe(%rip), %rsi     # 0x56e69
movl $0x20, %edx
callq 0x7400
movq 0x5a574(%rip), %rdi     # 0x6eff0
callq 0x71c0
movq 0x5a548(%rip), %rdi     # 0x6efd0
callq 0x7430
movl $0x1, %edi
callq 0x7440
movq %rax, %rbx
callq 0x7590
movq %rbx, %rdi
callq 0x7620
movq %rax, %rdi
callq 0xaf65
nop