// File: CMU-SAFARI[P]MQSim/src/exec/Flash_Parameter_Set.cpp
// Function: Flash_Parameter_Set::XML_deserialize(rapidxml::xml_node<char>*)
void Flash_Parameter_Set::XML_deserialize(rapidxml::xml_node<> *node)
{
	try {
		for (auto param = node->first_node(); param; param = param->next_sibling()) {
			if (strcmp(param->name(), "Flash_Technology") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				if (strcmp(val.c_str(), "SLC") == 0)
					Flash_Technology = Flash_Technology_Type::SLC;
				else if (strcmp(val.c_str(), "MLC") == 0)
					Flash_Technology = Flash_Technology_Type::MLC;
				else if (strcmp(val.c_str(), "TLC") == 0)
					Flash_Technology = Flash_Technology_Type::TLC;
				else PRINT_ERROR("Unknown flash technology type specified in the input file")
			} else if (strcmp(param->name(), "CMD_Suspension_Support") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				if (strcmp(val.c_str(), "NONE") == 0) {
					CMD_Suspension_Support = NVM::FlashMemory::Command_Suspension_Mode::NONE;
				} else if (strcmp(val.c_str(), "ERASE") == 0) {
					CMD_Suspension_Support = NVM::FlashMemory::Command_Suspension_Mode::ERASE;
				} else if (strcmp(val.c_str(), "PROGRAM") == 0) {
					CMD_Suspension_Support = NVM::FlashMemory::Command_Suspension_Mode::PROGRAM;
				} else if (strcmp(val.c_str(), "PROGRAM_ERASE") == 0) {
					CMD_Suspension_Support = NVM::FlashMemory::Command_Suspension_Mode::PROGRAM_ERASE;
				} else {
					PRINT_ERROR("Unknown command suspension type specified in the input file")
				}
			} else if (strcmp(param->name(), "Page_Read_Latency_LSB") == 0) {
				std::string val = param->value();
				Page_Read_Latency_LSB = std::stoull(val);
			} else if (strcmp(param->name(), "Page_Read_Latency_CSB") == 0) {
				std::string val = param->value();
				Page_Read_Latency_CSB = std::stoull(val);
			} else if (strcmp(param->name(), "Page_Read_Latency_MSB") == 0) {
				std::string val = param->value();
				Page_Read_Latency_MSB = std::stoull(val);
			} else if (strcmp(param->name(), "Page_Program_Latency_LSB") == 0) {
				std::string val = param->value();
				Page_Program_Latency_LSB = std::stoull(val);
			} else if (strcmp(param->name(), "Page_Program_Latency_CSB") == 0) {
				std::string val = param->value();
				Page_Program_Latency_CSB = std::stoull(val);
			} else if (strcmp(param->name(), "Page_Program_Latency_MSB") == 0) {
				std::string val = param->value();
				Page_Program_Latency_MSB = std::stoull(val);
			} else if (strcmp(param->name(), "Block_Erase_Latency") == 0) {
				std::string val = param->value();
				Block_Erase_Latency = std::stoull(val);
			} else if (strcmp(param->name(), "Block_PE_Cycles_Limit") == 0) {
				std::string val = param->value();
				Block_PE_Cycles_Limit = std::stoul(val);
			} else if (strcmp(param->name(), "Suspend_Erase_Time") == 0) {
				std::string val = param->value();
				Suspend_Erase_Time = std::stoull(val);
			} else if (strcmp(param->name(), "Suspend_Program_Time") == 0) {
				std::string val = param->value();
				Suspend_Program_Time = std::stoull(val);
			} else if (strcmp(param->name(), "Die_No_Per_Chip") == 0) {
				std::string val = param->value();
				Die_No_Per_Chip = std::stoul(val);
			} else if (strcmp(param->name(), "Plane_No_Per_Die") == 0) {
				std::string val = param->value();
				Plane_No_Per_Die = std::stoul(val);
			} else if (strcmp(param->name(), "Block_No_Per_Plane") == 0) {
				std::string val = param->value();
				Block_No_Per_Plane = std::stoul(val);
			} else if (strcmp(param->name(), "Page_No_Per_Block") == 0) {
				std::string val = param->value();
				Page_No_Per_Block = std::stoul(val);
			} else if (strcmp(param->name(), "Page_Capacity") == 0) {
				std::string val = param->value();
				Page_Capacity = std::stoul(val);
			} else if (strcmp(param->name(), "Page_Metadat_Capacity") == 0) {
				std::string val = param->value();
				Page_Metadat_Capacity = std::stoul(val);
			}
		}
	} catch (...) {
		PRINT_ERROR("Error in the Flash_Parameter_Set!")
	}
}

// Assembly:
subq $0x5b8, %rsp            # imm = 0x5B8
movq %rdi, 0x5b0(%rsp)
movq %rsi, 0x5a8(%rsp)
movq 0x5a8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
movq %rdx, %rsi
callq 0xc960
movq %rax, 0x278(%rsp)
jmp 0x1b88a
movq 0x278(%rsp), %rax
movq %rax, 0x5a0(%rsp)
cmpq $0x0, 0x5a0(%rsp)
je 0x1cfa4
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x270(%rsp)
jmp 0x1b8c0
movq 0x270(%rsp), %rdi
leaq 0x8f523(%rip), %rsi     # 0xaadf2
callq 0x85f0
cmpl $0x0, %eax
jne 0x1bb22
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x268(%rsp)
jmp 0x1b8f4
leaq 0x56f(%rsp), %rdi
movq %rdi, 0x260(%rsp)
callq 0x8780
movq 0x268(%rsp), %rsi
movq 0x260(%rsp), %rdx
leaq 0x570(%rsp), %rdi
callq 0x85d0
jmp 0x1b928
leaq 0x56f(%rsp), %rdi
callq 0x84a0
leaq 0x570(%rsp), %rdi
movq %rdi, 0x250(%rsp)
callq 0x83c0
movq 0x250(%rsp), %rdi
movq %rax, 0x560(%rsp)
callq 0x8280
movq 0x250(%rsp), %rdi
movq %rax, 0x558(%rsp)
callq 0x83c0
movq %rax, 0x550(%rsp)
movq 0x560(%rsp), %rdi
movq 0x558(%rsp), %rsi
movq 0x550(%rsp), %rdx
movq 0xbe63d(%rip), %rcx     # 0xd9fd8
callq 0x191d0
movq %rax, 0x258(%rsp)
jmp 0x1b9aa
movq 0x258(%rsp), %rax
movq %rax, 0x548(%rsp)
leaq 0x570(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8f432(%rip), %rsi     # 0xaae03
callq 0x85f0
cmpl $0x0, %eax
jne 0x1ba4f
movl $0x1, 0xbeb03(%rip)     # 0xda4e8
jmp 0x1bb10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x56f(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x570(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
leaq 0x570(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8f3a1(%rip), %rsi     # 0xaae07
callq 0x85f0
cmpl $0x0, %eax
jne 0x1ba7f
movl $0x2, 0xbea6e(%rip)     # 0xda4e8
jmp 0x1bb0e
leaq 0x570(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8f375(%rip), %rsi     # 0xaae0b
callq 0x85f0
cmpl $0x0, %eax
jne 0x1baac
movl $0x3, 0xbea3e(%rip)     # 0xda4e8
jmp 0x1bb0c
movq 0xbe53d(%rip), %rdi     # 0xd9ff0
leaq 0x8ee2e(%rip), %rsi     # 0xaa8e8
callq 0x8440
jmp 0x1bac1
movq 0xbe528(%rip), %rdi     # 0xd9ff0
leaq 0x8f4bb(%rip), %rsi     # 0xaaf8a
callq 0x8440
movq %rax, 0x248(%rsp)
jmp 0x1bade
movq 0x248(%rsp), %rdi
movq 0xbe46b(%rip), %rsi     # 0xd9f58
callq 0x8480
jmp 0x1baf4
movq 0xbe4d5(%rip), %rdi     # 0xd9fd0
callq 0x84f0
jmp 0x1bb02
movl $0x1, %edi
callq 0x8500
jmp 0x1bb0e
jmp 0x1bb10
leaq 0x570(%rsp), %rdi
callq 0x8848
jmp 0x1cf70
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x240(%rsp)
jmp 0x1bb39
movq 0x240(%rsp), %rdi
leaq 0x8f2c7(%rip), %rsi     # 0xaae0f
callq 0x85f0
cmpl $0x0, %eax
jne 0x1bdb4
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x238(%rsp)
jmp 0x1bb6d
leaq 0x527(%rsp), %rdi
movq %rdi, 0x230(%rsp)
callq 0x8780
movq 0x238(%rsp), %rsi
movq 0x230(%rsp), %rdx
leaq 0x528(%rsp), %rdi
callq 0x85d0
jmp 0x1bba1
leaq 0x527(%rsp), %rdi
callq 0x84a0
leaq 0x528(%rsp), %rdi
movq %rdi, 0x220(%rsp)
callq 0x83c0
movq 0x220(%rsp), %rdi
movq %rax, 0x518(%rsp)
callq 0x8280
movq 0x220(%rsp), %rdi
movq %rax, 0x510(%rsp)
callq 0x83c0
movq %rax, 0x508(%rsp)
movq 0x518(%rsp), %rdi
movq 0x510(%rsp), %rsi
movq 0x508(%rsp), %rdx
movq 0xbe3c4(%rip), %rcx     # 0xd9fd8
callq 0x191d0
movq %rax, 0x228(%rsp)
jmp 0x1bc23
movq 0x228(%rsp), %rax
movq %rax, 0x500(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8f1dc(%rip), %rsi     # 0xaae26
callq 0x85f0
cmpl $0x0, %eax
jne 0x1bcaf
movl $0x0, 0xbe88e(%rip)     # 0xda4ec
jmp 0x1bda2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x527(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
leaq 0x528(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8f175(%rip), %rsi     # 0xaae3b
callq 0x85f0
cmpl $0x0, %eax
jne 0x1bcdf
movl $0x3, 0xbe812(%rip)     # 0xda4ec
jmp 0x1bda0
leaq 0x528(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8f135(%rip), %rsi     # 0xaae2b
callq 0x85f0
cmpl $0x0, %eax
jne 0x1bd0f
movl $0x1, 0xbe7e2(%rip)     # 0xda4ec
jmp 0x1bd9e
leaq 0x528(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8f10d(%rip), %rsi     # 0xaae33
callq 0x85f0
cmpl $0x0, %eax
jne 0x1bd3c
movl $0x2, 0xbe7b2(%rip)     # 0xda4ec
jmp 0x1bd9c
movq 0xbe2ad(%rip), %rdi     # 0xd9ff0
leaq 0x8eb9e(%rip), %rsi     # 0xaa8e8
callq 0x8440
jmp 0x1bd51
movq 0xbe298(%rip), %rdi     # 0xd9ff0
leaq 0x8f265(%rip), %rsi     # 0xaafc4
callq 0x8440
movq %rax, 0x218(%rsp)
jmp 0x1bd6e
movq 0x218(%rsp), %rdi
movq 0xbe1db(%rip), %rsi     # 0xd9f58
callq 0x8480
jmp 0x1bd84
movq 0xbe245(%rip), %rdi     # 0xd9fd0
callq 0x84f0
jmp 0x1bd92
movl $0x1, %edi
callq 0x8500
jmp 0x1bd9e
jmp 0x1bda0
jmp 0x1bda2
leaq 0x528(%rsp), %rdi
callq 0x8848
jmp 0x1cf6e
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x210(%rsp)
jmp 0x1bdcb
movq 0x210(%rsp), %rdi
leaq 0x8f067(%rip), %rsi     # 0xaae41
callq 0x85f0
cmpl $0x0, %eax
jne 0x1becd
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x208(%rsp)
jmp 0x1bdff
leaq 0x4df(%rsp), %rdi
movq %rdi, 0x200(%rsp)
callq 0x8780
movq 0x208(%rsp), %rsi
movq 0x200(%rsp), %rdx
leaq 0x4e0(%rsp), %rdi
callq 0x85d0
jmp 0x1be33
leaq 0x4df(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x4e0(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0x1f8(%rsp)
jmp 0x1be60
movq 0x1f8(%rsp), %rax
movq %rax, 0xbe681(%rip)     # 0xda4f0
leaq 0x4e0(%rsp), %rdi
callq 0x8848
jmp 0x1cf6c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x4df(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x4e0(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x1f0(%rsp)
jmp 0x1bee4
movq 0x1f0(%rsp), %rdi
leaq 0x8ef64(%rip), %rsi     # 0xaae57
callq 0x85f0
cmpl $0x0, %eax
jne 0x1bfe6
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x1e8(%rsp)
jmp 0x1bf18
leaq 0x4b7(%rsp), %rdi
movq %rdi, 0x1e0(%rsp)
callq 0x8780
movq 0x1e8(%rsp), %rsi
movq 0x1e0(%rsp), %rdx
leaq 0x4b8(%rsp), %rdi
callq 0x85d0
jmp 0x1bf4c
leaq 0x4b7(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x4b8(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0x1d8(%rsp)
jmp 0x1bf79
movq 0x1d8(%rsp), %rax
movq %rax, 0xbe570(%rip)     # 0xda4f8
leaq 0x4b8(%rsp), %rdi
callq 0x8848
jmp 0x1cf6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x4b7(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x4b8(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x1d0(%rsp)
jmp 0x1bffd
movq 0x1d0(%rsp), %rdi
leaq 0x8ee61(%rip), %rsi     # 0xaae6d
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c0ff
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x1c8(%rsp)
jmp 0x1c031
leaq 0x48f(%rsp), %rdi
movq %rdi, 0x1c0(%rsp)
callq 0x8780
movq 0x1c8(%rsp), %rsi
movq 0x1c0(%rsp), %rdx
leaq 0x490(%rsp), %rdi
callq 0x85d0
jmp 0x1c065
leaq 0x48f(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x490(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0x1b8(%rsp)
jmp 0x1c092
movq 0x1b8(%rsp), %rax
movq %rax, 0xbe45f(%rip)     # 0xda500
leaq 0x490(%rsp), %rdi
callq 0x8848
jmp 0x1cf68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x48f(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x490(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x1b0(%rsp)
jmp 0x1c116
movq 0x1b0(%rsp), %rdi
leaq 0x8ed5e(%rip), %rsi     # 0xaae83
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c218
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x1a8(%rsp)
jmp 0x1c14a
leaq 0x467(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x8780
movq 0x1a8(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
leaq 0x468(%rsp), %rdi
callq 0x85d0
jmp 0x1c17e
leaq 0x467(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x468(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0x198(%rsp)
jmp 0x1c1ab
movq 0x198(%rsp), %rax
movq %rax, 0xbe34e(%rip)     # 0xda508
leaq 0x468(%rsp), %rdi
callq 0x8848
jmp 0x1cf66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x467(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x468(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x190(%rsp)
jmp 0x1c22f
movq 0x190(%rsp), %rdi
leaq 0x8ec5e(%rip), %rsi     # 0xaae9c
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c331
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x188(%rsp)
jmp 0x1c263
leaq 0x43f(%rsp), %rdi
movq %rdi, 0x180(%rsp)
callq 0x8780
movq 0x188(%rsp), %rsi
movq 0x180(%rsp), %rdx
leaq 0x440(%rsp), %rdi
callq 0x85d0
jmp 0x1c297
leaq 0x43f(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x440(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0x178(%rsp)
jmp 0x1c2c4
movq 0x178(%rsp), %rax
movq %rax, 0xbe23d(%rip)     # 0xda510
leaq 0x440(%rsp), %rdi
callq 0x8848
jmp 0x1cf64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x43f(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x440(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x170(%rsp)
jmp 0x1c348
movq 0x170(%rsp), %rdi
leaq 0x8eb5e(%rip), %rsi     # 0xaaeb5
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c44a
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x168(%rsp)
jmp 0x1c37c
leaq 0x417(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0x8780
movq 0x168(%rsp), %rsi
movq 0x160(%rsp), %rdx
leaq 0x418(%rsp), %rdi
callq 0x85d0
jmp 0x1c3b0
leaq 0x417(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x418(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0x158(%rsp)
jmp 0x1c3dd
movq 0x158(%rsp), %rax
movq %rax, 0xbe12c(%rip)     # 0xda518
leaq 0x418(%rsp), %rdi
callq 0x8848
jmp 0x1cf62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x417(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x418(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x150(%rsp)
jmp 0x1c461
movq 0x150(%rsp), %rdi
leaq 0x8ea5e(%rip), %rsi     # 0xaaece
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c563
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x148(%rsp)
jmp 0x1c495
leaq 0x3ef(%rsp), %rdi
movq %rdi, 0x140(%rsp)
callq 0x8780
movq 0x148(%rsp), %rsi
movq 0x140(%rsp), %rdx
leaq 0x3f0(%rsp), %rdi
callq 0x85d0
jmp 0x1c4c9
leaq 0x3ef(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x3f0(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0x138(%rsp)
jmp 0x1c4f6
movq 0x138(%rsp), %rax
movq %rax, 0xbe01b(%rip)     # 0xda520
leaq 0x3f0(%rsp), %rdi
callq 0x8848
jmp 0x1cf60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x3ef(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x3f0(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x130(%rsp)
jmp 0x1c57a
movq 0x130(%rsp), %rdi
leaq 0x8e959(%rip), %rsi     # 0xaaee2
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c67b
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x128(%rsp)
jmp 0x1c5ae
leaq 0x3c7(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x8780
movq 0x128(%rsp), %rsi
movq 0x120(%rsp), %rdx
leaq 0x3c8(%rsp), %rdi
callq 0x85d0
jmp 0x1c5e2
leaq 0x3c7(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x3c8(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0x118(%rsp)
jmp 0x1c60f
movq 0x118(%rsp), %rax
movl %eax, 0xbdf0b(%rip)     # 0xda528
leaq 0x3c8(%rsp), %rdi
callq 0x8848
jmp 0x1cf5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x3c7(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x3c8(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x110(%rsp)
jmp 0x1c692
movq 0x110(%rsp), %rdi
leaq 0x8e857(%rip), %rsi     # 0xaaef8
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c794
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x108(%rsp)
jmp 0x1c6c6
leaq 0x39f(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x8780
movq 0x108(%rsp), %rsi
movq 0x100(%rsp), %rdx
leaq 0x3a0(%rsp), %rdi
callq 0x85d0
jmp 0x1c6fa
leaq 0x39f(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x3a0(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0xf8(%rsp)
jmp 0x1c727
movq 0xf8(%rsp), %rax
movq %rax, 0xbddfa(%rip)     # 0xda530
leaq 0x3a0(%rsp), %rdi
callq 0x8848
jmp 0x1cf5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x39f(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x3a0(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0xf0(%rsp)
jmp 0x1c7ab
movq 0xf0(%rsp), %rdi
leaq 0x8e751(%rip), %rsi     # 0xaaf0b
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c8ad
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0xe8(%rsp)
jmp 0x1c7df
leaq 0x377(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x8780
movq 0xe8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
leaq 0x378(%rsp), %rdi
callq 0x85d0
jmp 0x1c813
leaq 0x377(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x378(%rsp), %rdi
movl $0xa, %edx
callq 0x19260
movq %rax, 0xd8(%rsp)
jmp 0x1c840
movq 0xd8(%rsp), %rax
movq %rax, 0xbdce9(%rip)     # 0xda538
leaq 0x378(%rsp), %rdi
callq 0x8848
jmp 0x1cf5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x377(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x378(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0xd0(%rsp)
jmp 0x1c8c4
movq 0xd0(%rsp), %rdi
leaq 0x8e64d(%rip), %rsi     # 0xaaf20
callq 0x85f0
cmpl $0x0, %eax
jne 0x1c9c5
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0xc8(%rsp)
jmp 0x1c8f8
leaq 0x34f(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x8780
movq 0xc8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
leaq 0x350(%rsp), %rdi
callq 0x85d0
jmp 0x1c92c
leaq 0x34f(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x350(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0xb8(%rsp)
jmp 0x1c959
movq 0xb8(%rsp), %rax
movl %eax, 0xbdbd9(%rip)     # 0xda540
leaq 0x350(%rsp), %rdi
callq 0x8848
jmp 0x1cf58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x34f(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0xb0(%rsp)
jmp 0x1c9dc
movq 0xb0(%rsp), %rdi
leaq 0x8e545(%rip), %rsi     # 0xaaf30
callq 0x85f0
cmpl $0x0, %eax
jne 0x1cadd
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0xa8(%rsp)
jmp 0x1ca10
leaq 0x327(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x8780
movq 0xa8(%rsp), %rsi
movq 0xa0(%rsp), %rdx
leaq 0x328(%rsp), %rdi
callq 0x85d0
jmp 0x1ca44
leaq 0x327(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x328(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0x98(%rsp)
jmp 0x1ca71
movq 0x98(%rsp), %rax
movl %eax, 0xbdac5(%rip)     # 0xda544
leaq 0x328(%rsp), %rdi
callq 0x8848
jmp 0x1cf56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x327(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x328(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x90(%rsp)
jmp 0x1caf4
movq 0x90(%rsp), %rdi
leaq 0x8e43e(%rip), %rsi     # 0xaaf41
callq 0x85f0
cmpl $0x0, %eax
jne 0x1cbef
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x88(%rsp)
jmp 0x1cb28
leaq 0x2ff(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x8780
movq 0x88(%rsp), %rsi
movq 0x80(%rsp), %rdx
leaq 0x300(%rsp), %rdi
callq 0x85d0
jmp 0x1cb5c
leaq 0x2ff(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x300(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0x78(%rsp)
jmp 0x1cb86
movq 0x78(%rsp), %rax
movl %eax, 0xbd9b7(%rip)     # 0xda548
leaq 0x300(%rsp), %rdi
callq 0x8848
jmp 0x1cf54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x2ff(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x70(%rsp)
jmp 0x1cc03
movq 0x70(%rsp), %rdi
leaq 0x8e345(%rip), %rsi     # 0xaaf54
callq 0x85f0
cmpl $0x0, %eax
jne 0x1ccef
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x68(%rsp)
jmp 0x1cc31
leaq 0x2d7(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x8780
movq 0x68(%rsp), %rsi
movq 0x60(%rsp), %rdx
leaq 0x2d8(%rsp), %rdi
callq 0x85d0
jmp 0x1cc5c
leaq 0x2d7(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x2d8(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0x58(%rsp)
jmp 0x1cc86
movq 0x58(%rsp), %rax
movl %eax, 0xbd8bb(%rip)     # 0xda54c
leaq 0x2d8(%rsp), %rdi
callq 0x8848
jmp 0x1cf52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x2d7(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x2d8(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x50(%rsp)
jmp 0x1cd03
movq 0x50(%rsp), %rdi
leaq 0x8e257(%rip), %rsi     # 0xaaf66
callq 0x85f0
cmpl $0x0, %eax
jne 0x1cdef
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x48(%rsp)
jmp 0x1cd31
leaq 0x2af(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x8780
movq 0x48(%rsp), %rsi
movq 0x40(%rsp), %rdx
leaq 0x2b0(%rsp), %rdi
callq 0x85d0
jmp 0x1cd5c
leaq 0x2af(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x2b0(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0x38(%rsp)
jmp 0x1cd86
movq 0x38(%rsp), %rax
movl %eax, 0xbd7bf(%rip)     # 0xda550
leaq 0x2b0(%rsp), %rdi
callq 0x8848
jmp 0x1cf50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x2af(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0x8848
jmp 0x1cee7
movq 0x5a0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x30(%rsp)
jmp 0x1ce03
movq 0x30(%rsp), %rdi
leaq 0x8e165(%rip), %rsi     # 0xaaf74
callq 0x85f0
cmpl $0x0, %eax
jne 0x1cf4e
movq 0x5a0(%rsp), %rdi
callq 0x10590
movq %rax, 0x28(%rsp)
jmp 0x1ce31
leaq 0x287(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x8780
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0x288(%rsp), %rdi
callq 0x85d0
jmp 0x1ce5c
leaq 0x287(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x288(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0x18(%rsp)
jmp 0x1ce86
movq 0x18(%rsp), %rax
movl %eax, 0xbd6c3(%rip)     # 0xda554
leaq 0x288(%rsp), %rdi
callq 0x8848
jmp 0x1cf4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x287(%rsp), %rdi
callq 0x84a0
jmp 0x1cee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x8848
movq 0x598(%rsp), %rdi
callq 0x8180
movq 0xbd0f5(%rip), %rdi     # 0xd9ff0
leaq 0x8d9e6(%rip), %rsi     # 0xaa8e8
callq 0x8440
jmp 0x1cf09
movq 0xbd0e0(%rip), %rdi     # 0xd9ff0
leaq 0x8e0e9(%rip), %rsi     # 0xab000
callq 0x8440
movq %rax, 0x10(%rsp)
jmp 0x1cf23
movq 0x10(%rsp), %rdi
movq 0xbd029(%rip), %rsi     # 0xd9f58
callq 0x8480
jmp 0x1cf36
movq 0xbd093(%rip), %rdi     # 0xd9fd0
callq 0x84f0
jmp 0x1cf44
movl $0x1, %edi
callq 0x8500
jmp 0x1cf50
jmp 0x1cf52
jmp 0x1cf54
jmp 0x1cf56
jmp 0x1cf58
jmp 0x1cf5a
jmp 0x1cf5c
jmp 0x1cf5e
jmp 0x1cf60
jmp 0x1cf62
jmp 0x1cf64
jmp 0x1cf66
jmp 0x1cf68
jmp 0x1cf6a
jmp 0x1cf6c
jmp 0x1cf6e
jmp 0x1cf70
jmp 0x1cf72
movq 0x5a0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
movq %rdx, %rsi
callq 0xcc00
movq %rax, 0x8(%rsp)
jmp 0x1cf92
movq 0x8(%rsp), %rax
movq %rax, 0x5a0(%rsp)
jmp 0x1b89a
jmp 0x1cfc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
callq 0x86d0
jmp 0x1cfc1
jmp 0x1cfcb
addq $0x5b8, %rsp            # imm = 0x5B8
retq
movq 0x598(%rsp), %rdi
callq 0x8770
movq %rax, %rdi
callq 0xd460