// File: CMU-SAFARI[P]MQSim/src/exec/IO_Flow_Parameter_Set.cpp
// Function: IO_Flow_Parameter_Set::XML_deserialize(rapidxml::xml_node<char>*)
void IO_Flow_Parameter_Set::XML_deserialize(rapidxml::xml_node<> *node)
{
	try {
		for (auto param = node->first_node(); param; param = param->next_sibling()) {
			if (strcmp(param->name(), "Device_Level_Data_Caching_Mode") == 0) {
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				if (strcmp(val.c_str(), "TURNED_OFF") == 0) {
					Device_Level_Data_Caching_Mode = SSD_Components::Caching_Mode::TURNED_OFF;
				} else if (strcmp(val.c_str(), "WRITE_CACHE") == 0) {
					Device_Level_Data_Caching_Mode = SSD_Components::Caching_Mode::WRITE_CACHE;
				} else if (strcmp(val.c_str(), "READ_CACHE") == 0) {
					Device_Level_Data_Caching_Mode = SSD_Components::Caching_Mode::READ_CACHE;
				} else if (strcmp(val.c_str(), "WRITE_READ_CACHE") == 0) {
					Device_Level_Data_Caching_Mode = SSD_Components::Caching_Mode::WRITE_READ_CACHE;
				} else {
					PRINT_ERROR("Wrong caching mode definition for input flow")
				}
			}
			else if (strcmp(param->name(), "Priority_Class") == 0)
			{
				std::string val = param->value();
				std::transform(val.begin(), val.end(), val.begin(), ::toupper);
				if (strcmp(val.c_str(), "URGENT") == 0) {
					Priority_Class = IO_Flow_Priority_Class::URGENT;
				} else if (strcmp(val.c_str(), "HIGH") == 0) {
					Priority_Class = IO_Flow_Priority_Class::HIGH;
				} else if (strcmp(val.c_str(), "MEDIUM") == 0) {
					Priority_Class = IO_Flow_Priority_Class::MEDIUM;
				} else if (strcmp(val.c_str(), "LOW") == 0) {
					Priority_Class = IO_Flow_Priority_Class::LOW;
				} else {
					PRINT_ERROR("Wrong priority class definition for input flow")
				}
			} else if (strcmp(param->name(), "Channel_IDs") == 0) {
				std::set<int> ids;
				char tmp[1000], *tmp2;
				strncpy(tmp, param->value(), 1000);
				std::string id = strtok(tmp, ",");
				while (1) {
					std::string::size_type sz;
					ids.insert(std::stoi(id, &sz));
					tmp2 = strtok(NULL, ",");
					if (tmp2 == NULL) {
						break;
					} else {
						id = tmp2;
					}
				}
				Channel_No = (int)ids.size();
				Channel_IDs = new flash_block_ID_type[Channel_No];
				int i = 0;
				for (auto it = ids.begin(); it != ids.end(); it++) {
					Channel_IDs[i++] = *it;
				}
			} else if (strcmp(param->name(), "Chip_IDs") == 0) {
				std::set<int> ids;
				char tmp[1000], *tmp2;
				strncpy(tmp, param->value(), 1000);
				std::string id = strtok(tmp, ",");
				while (1) {
					std::string::size_type sz;
					ids.insert(std::stoi(id, &sz));
					tmp2 = strtok(NULL, ",");
					if (tmp2 == NULL) {
						break;
					} else {
						id = tmp2;
					}
				}
				Chip_No = (int)ids.size();
				Chip_IDs = new flash_block_ID_type[Chip_No];
				int i = 0;
				for (auto it = ids.begin(); it != ids.end(); it++) {
					Chip_IDs[i++] = *it;
				}
			} else if (strcmp(param->name(), "Die_IDs") == 0) {
				std::set<int> ids;
				char tmp[1000], *tmp2;
				strncpy(tmp, param->value(), 1000);
				std::string id = strtok(tmp, ",");
				while (1) {
					std::string::size_type sz;
					ids.insert(std::stoi(id, &sz));
					tmp2 = strtok(NULL, ",");
					if (tmp2 == NULL) {
						break;
					} else {
						id = tmp2;
					}
				}
				Die_No = (int)ids.size();
				Die_IDs = new flash_block_ID_type[Die_No];
				int i = 0;
				for (auto it = ids.begin(); it != ids.end(); it++) {
					Die_IDs[i++] = *it;
				}
			} else if (strcmp(param->name(), "Plane_IDs") == 0) {
				std::set<int> ids;
				char tmp[1000], *tmp2;
				strncpy(tmp, param->value(), 1000);
				std::string id = strtok(tmp, ",");
				while (1) {
					std::string::size_type sz;
					ids.insert(std::stoi(id, &sz));
					tmp2 = strtok(NULL, ",");
					if (tmp2 == NULL) {
						break;
					} else {
						id = tmp2;
					}
				}
				Plane_No = (int)ids.size();
				Plane_IDs = new flash_block_ID_type[Plane_No];
				int i = 0;
				for (auto it = ids.begin(); it != ids.end(); it++) {
					Plane_IDs[i++] = *it;
				}
			} else if (strcmp(param->name(), "Initial_Occupancy_Percentage") == 0) {
				std::string val = param->value();
				Initial_Occupancy_Percentage = std::stoul(val);
			}
		}
	} catch (...) {
		PRINT_ERROR("Error in IO_Flow_Parameter_Set!")
	}
}

// Assembly:
subq $0x14e8, %rsp           # imm = 0x14E8
movq %rdi, 0x14e0(%rsp)
movq %rsi, 0x14d8(%rsp)
movq 0x14e0(%rsp), %rax
movq %rax, 0x1b8(%rsp)
movq 0x14d8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
movq %rdx, %rsi
callq 0xc960
movq %rax, 0x1c0(%rsp)
jmp 0x23baa
movq 0x1c0(%rsp), %rax
movq %rax, 0x14d0(%rsp)
cmpq $0x0, 0x14d0(%rsp)
je 0x24f44
movq 0x14d0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x1b0(%rsp)
jmp 0x23be0
movq 0x1b0(%rsp), %rdi
leaq 0x8771d(%rip), %rsi     # 0xab30c
callq 0x85f0
cmpl $0x0, %eax
jne 0x23e88
movq 0x14d0(%rsp), %rdi
callq 0x10590
movq %rax, 0x1a8(%rsp)
jmp 0x23c14
leaq 0x149f(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x8780
movq 0x1a8(%rsp), %rsi
movq 0x1a0(%rsp), %rdx
leaq 0x14a0(%rsp), %rdi
callq 0x85d0
jmp 0x23c48
leaq 0x149f(%rsp), %rdi
callq 0x84a0
leaq 0x14a0(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0x83c0
movq 0x190(%rsp), %rdi
movq %rax, 0x1490(%rsp)
callq 0x8280
movq 0x190(%rsp), %rdi
movq %rax, 0x1488(%rsp)
callq 0x83c0
movq %rax, 0x1480(%rsp)
movq 0x1490(%rsp), %rdi
movq 0x1488(%rsp), %rsi
movq 0x1480(%rsp), %rdx
movq 0xb631d(%rip), %rcx     # 0xd9fd8
callq 0x191d0
movq %rax, 0x198(%rsp)
jmp 0x23cca
movq 0x198(%rsp), %rax
movq %rax, 0x1478(%rsp)
leaq 0x14a0(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8763a(%rip), %rsi     # 0xab32b
callq 0x85f0
cmpl $0x0, %eax
jne 0x23d74
movq 0x1b8(%rsp), %rax
movl $0x3, 0x8(%rax)
jmp 0x23e76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
jmp 0x24e9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x149f(%rsp), %rdi
callq 0x84a0
jmp 0x24e9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x14a0(%rsp), %rdi
callq 0x8848
jmp 0x24e9d
leaq 0x14a0(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x875ab(%rip), %rsi     # 0xab336
callq 0x85f0
cmpl $0x0, %eax
jne 0x23da9
movq 0x1b8(%rsp), %rax
movl $0x0, 0x8(%rax)
jmp 0x23e74
leaq 0x14a0(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x87588(%rip), %rsi     # 0xab348
callq 0x85f0
cmpl $0x0, %eax
jne 0x23dde
movq 0x1b8(%rsp), %rax
movl $0x1, 0x8(%rax)
jmp 0x23e72
leaq 0x14a0(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8754d(%rip), %rsi     # 0xab342
callq 0x85f0
cmpl $0x0, %eax
jne 0x23e10
movq 0x1b8(%rsp), %rax
movl $0x2, 0x8(%rax)
jmp 0x23e70
movq 0xb61d9(%rip), %rdi     # 0xd9ff0
leaq 0x86aca(%rip), %rsi     # 0xaa8e8
callq 0x8440
jmp 0x23e25
movq 0xb61c4(%rip), %rdi     # 0xd9ff0
leaq 0x87566(%rip), %rsi     # 0xab399
callq 0x8440
movq %rax, 0x188(%rsp)
jmp 0x23e42
movq 0x188(%rsp), %rdi
movq 0xb6107(%rip), %rsi     # 0xd9f58
callq 0x8480
jmp 0x23e58
movq 0xb6171(%rip), %rdi     # 0xd9fd0
callq 0x84f0
jmp 0x23e66
movl $0x1, %edi
callq 0x8500
jmp 0x23e72
jmp 0x23e74
jmp 0x23e76
leaq 0x14a0(%rsp), %rdi
callq 0x8848
jmp 0x24f10
movq 0x14d0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x180(%rsp)
jmp 0x23e9f
movq 0x180(%rsp), %rdi
leaq 0x87438(%rip), %rsi     # 0xab2e6
callq 0x85f0
cmpl $0x0, %eax
jne 0x2412e
movq 0x14d0(%rsp), %rdi
callq 0x10590
movq %rax, 0x178(%rsp)
jmp 0x23ed3
leaq 0x1457(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x8780
movq 0x178(%rsp), %rsi
movq 0x170(%rsp), %rdx
leaq 0x1458(%rsp), %rdi
callq 0x85d0
jmp 0x23f07
leaq 0x1457(%rsp), %rdi
callq 0x84a0
leaq 0x1458(%rsp), %rdi
movq %rdi, 0x160(%rsp)
callq 0x83c0
movq 0x160(%rsp), %rdi
movq %rax, 0x1448(%rsp)
callq 0x8280
movq 0x160(%rsp), %rdi
movq %rax, 0x1440(%rsp)
callq 0x83c0
movq %rax, 0x1438(%rsp)
movq 0x1448(%rsp), %rdi
movq 0x1440(%rsp), %rsi
movq 0x1438(%rsp), %rdx
movq 0xb605e(%rip), %rcx     # 0xd9fd8
callq 0x191d0
movq %rax, 0x168(%rsp)
jmp 0x23f89
movq 0x168(%rsp), %rax
movq %rax, 0x1430(%rsp)
leaq 0x1458(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x87345(%rip), %rsi     # 0xab2f5
callq 0x85f0
cmpl $0x0, %eax
jne 0x2401a
movq 0x1b8(%rsp), %rax
movl $0x0, 0x10(%rax)
jmp 0x2411c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x1457(%rsp), %rdi
callq 0x84a0
jmp 0x24e9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x1458(%rsp), %rdi
callq 0x8848
jmp 0x24e9d
leaq 0x1458(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x872cb(%rip), %rsi     # 0xab2fc
callq 0x85f0
cmpl $0x0, %eax
jne 0x2404f
movq 0x1b8(%rsp), %rax
movl $0x1, 0x10(%rax)
jmp 0x2411a
leaq 0x1458(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8729b(%rip), %rsi     # 0xab301
callq 0x85f0
cmpl $0x0, %eax
jne 0x24084
movq 0x1b8(%rsp), %rax
movl $0x2, 0x10(%rax)
jmp 0x24118
leaq 0x1458(%rsp), %rdi
callq 0x8190
movq %rax, %rdi
leaq 0x8726d(%rip), %rsi     # 0xab308
callq 0x85f0
cmpl $0x0, %eax
jne 0x240b6
movq 0x1b8(%rsp), %rax
movl $0x3, 0x10(%rax)
jmp 0x24116
movq 0xb5f33(%rip), %rdi     # 0xd9ff0
leaq 0x86824(%rip), %rsi     # 0xaa8e8
callq 0x8440
jmp 0x240cb
movq 0xb5f1e(%rip), %rdi     # 0xd9ff0
leaq 0x872ed(%rip), %rsi     # 0xab3c6
callq 0x8440
movq %rax, 0x158(%rsp)
jmp 0x240e8
movq 0x158(%rsp), %rdi
movq 0xb5e61(%rip), %rsi     # 0xd9f58
callq 0x8480
jmp 0x240fe
movq 0xb5ecb(%rip), %rdi     # 0xd9fd0
callq 0x84f0
jmp 0x2410c
movl $0x1, %edi
callq 0x8500
jmp 0x24118
jmp 0x2411a
jmp 0x2411c
leaq 0x1458(%rsp), %rdi
callq 0x8848
jmp 0x24f0e
movq 0x14d0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x150(%rsp)
jmp 0x24145
movq 0x150(%rsp), %rdi
leaq 0x871ff(%rip), %rsi     # 0xab353
callq 0x85f0
cmpl $0x0, %eax
jne 0x24458
leaq 0x1400(%rsp), %rdi
callq 0x28400
leaq 0x1010(%rsp), %rax
movq %rax, 0x140(%rsp)
movq 0x14d0(%rsp), %rdi
callq 0x10590
movq %rax, 0x148(%rsp)
jmp 0x24196
movq 0x148(%rsp), %rsi
movq 0x140(%rsp), %rdi
movl $0x3e8, %edx            # imm = 0x3E8
callq 0x8230
leaq 0x871a8(%rip), %rsi     # 0xab35f
leaq 0x1010(%rsp), %rdi
callq 0x8680
movq %rax, 0x130(%rsp)
leaq 0xfe7(%rsp), %rdi
movq %rdi, 0x138(%rsp)
callq 0x8780
movq 0x130(%rsp), %rsi
movq 0x138(%rsp), %rdx
leaq 0xfe8(%rsp), %rdi
callq 0x85d0
jmp 0x24200
leaq 0xfe7(%rsp), %rdi
callq 0x84a0
jmp 0x2420f
leaq 0xfe8(%rsp), %rdi
leaq 0xfd8(%rsp), %rsi
movl $0xa, %edx
callq 0x19180
movl %eax, 0x12c(%rsp)
jmp 0x24232
movl 0x12c(%rsp), %eax
movl %eax, 0xfd4(%rsp)
leaq 0x1400(%rsp), %rdi
leaq 0xfd4(%rsp), %rsi
callq 0x28410
movb %dl, 0x11f(%rsp)
movq %rax, 0x120(%rsp)
jmp 0x24266
movb 0x11f(%rsp), %al
movq 0x120(%rsp), %rcx
movq %rcx, 0xfc0(%rsp)
movb %al, 0xfc8(%rsp)
xorl %eax, %eax
movl %eax, %edi
leaq 0x870d0(%rip), %rsi     # 0xab35f
callq 0x8680
movq %rax, 0x1008(%rsp)
cmpq $0x0, 0x1008(%rsp)
jne 0x24311
jmp 0x2432f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
jmp 0x24446
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0xfe7(%rsp), %rdi
callq 0x84a0
jmp 0x24446
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0xfe8(%rsp), %rdi
callq 0x8848
jmp 0x24446
movq 0x1008(%rsp), %rsi
leaq 0xfe8(%rsp), %rdi
callq 0x85c0
jmp 0x24328
jmp 0x2432a
jmp 0x2420d
leaq 0x1400(%rsp), %rdi
callq 0x28470
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl %ecx, 0x3c(%rax)
movslq 0x3c(%rax), %rax
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x8030
movq %rax, 0x110(%rsp)
jmp 0x24373
movq 0x1b8(%rsp), %rax
movq 0x110(%rsp), %rcx
movq %rcx, 0x18(%rax)
movl $0x0, 0xfbc(%rsp)
leaq 0x1400(%rsp), %rdi
callq 0x28480
movq %rax, 0xfb0(%rsp)
leaq 0x1400(%rsp), %rdi
callq 0x284d0
movq %rax, 0xfa8(%rsp)
leaq 0xfb0(%rsp), %rdi
leaq 0xfa8(%rsp), %rsi
callq 0x284b0
testb $0x1, %al
jne 0x243d7
jmp 0x24427
leaq 0xfb0(%rsp), %rdi
callq 0x28500
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl (%rcx), %edx
movq 0x18(%rax), %rax
movl 0xfbc(%rsp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, 0xfbc(%rsp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
leaq 0xfb0(%rsp), %rdi
xorl %esi, %esi
callq 0x28520
movq %rax, 0xfa0(%rsp)
jmp 0x243a7
leaq 0xfe8(%rsp), %rdi
callq 0x8848
leaq 0x1400(%rsp), %rdi
callq 0x28560
jmp 0x24f0c
leaq 0x1400(%rsp), %rdi
callq 0x28560
jmp 0x24e9d
movq 0x14d0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x108(%rsp)
jmp 0x2446f
movq 0x108(%rsp), %rdi
leaq 0x86ee3(%rip), %rsi     # 0xab361
callq 0x85f0
cmpl $0x0, %eax
jne 0x24782
leaq 0xf70(%rsp), %rdi
callq 0x28400
leaq 0xb80(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0x14d0(%rsp), %rdi
callq 0x10590
movq %rax, 0x100(%rsp)
jmp 0x244c0
movq 0x100(%rsp), %rsi
movq 0xf8(%rsp), %rdi
movl $0x3e8, %edx            # imm = 0x3E8
callq 0x8230
leaq 0x86e7e(%rip), %rsi     # 0xab35f
leaq 0xb80(%rsp), %rdi
callq 0x8680
movq %rax, 0xe8(%rsp)
leaq 0xb57(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x8780
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
leaq 0xb58(%rsp), %rdi
callq 0x85d0
jmp 0x2452a
leaq 0xb57(%rsp), %rdi
callq 0x84a0
jmp 0x24539
leaq 0xb58(%rsp), %rdi
leaq 0xb48(%rsp), %rsi
movl $0xa, %edx
callq 0x19180
movl %eax, 0xe4(%rsp)
jmp 0x2455c
movl 0xe4(%rsp), %eax
movl %eax, 0xb44(%rsp)
leaq 0xf70(%rsp), %rdi
leaq 0xb44(%rsp), %rsi
callq 0x28410
movb %dl, 0xd7(%rsp)
movq %rax, 0xd8(%rsp)
jmp 0x24590
movb 0xd7(%rsp), %al
movq 0xd8(%rsp), %rcx
movq %rcx, 0xb30(%rsp)
movb %al, 0xb38(%rsp)
xorl %eax, %eax
movl %eax, %edi
leaq 0x86da6(%rip), %rsi     # 0xab35f
callq 0x8680
movq %rax, 0xb78(%rsp)
cmpq $0x0, 0xb78(%rsp)
jne 0x2463b
jmp 0x24659
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
jmp 0x24770
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0xb57(%rsp), %rdi
callq 0x84a0
jmp 0x24770
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0xb58(%rsp), %rdi
callq 0x8848
jmp 0x24770
movq 0xb78(%rsp), %rsi
leaq 0xb58(%rsp), %rdi
callq 0x85c0
jmp 0x24652
jmp 0x24654
jmp 0x24537
leaq 0xf70(%rsp), %rdi
callq 0x28470
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl %ecx, 0x40(%rax)
movslq 0x40(%rax), %rax
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x8030
movq %rax, 0xc8(%rsp)
jmp 0x2469d
movq 0x1b8(%rsp), %rax
movq 0xc8(%rsp), %rcx
movq %rcx, 0x20(%rax)
movl $0x0, 0xb2c(%rsp)
leaq 0xf70(%rsp), %rdi
callq 0x28480
movq %rax, 0xb20(%rsp)
leaq 0xf70(%rsp), %rdi
callq 0x284d0
movq %rax, 0xb18(%rsp)
leaq 0xb20(%rsp), %rdi
leaq 0xb18(%rsp), %rsi
callq 0x284b0
testb $0x1, %al
jne 0x24701
jmp 0x24751
leaq 0xb20(%rsp), %rdi
callq 0x28500
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl (%rcx), %edx
movq 0x20(%rax), %rax
movl 0xb2c(%rsp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, 0xb2c(%rsp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
leaq 0xb20(%rsp), %rdi
xorl %esi, %esi
callq 0x28520
movq %rax, 0xb10(%rsp)
jmp 0x246d1
leaq 0xb58(%rsp), %rdi
callq 0x8848
leaq 0xf70(%rsp), %rdi
callq 0x28560
jmp 0x24f0a
leaq 0xf70(%rsp), %rdi
callq 0x28560
jmp 0x24e9d
movq 0x14d0(%rsp), %rdi
callq 0xcac0
movq %rax, 0xc0(%rsp)
jmp 0x24799
movq 0xc0(%rsp), %rdi
leaq 0x86bc2(%rip), %rsi     # 0xab36a
callq 0x85f0
cmpl $0x0, %eax
jne 0x24aac
leaq 0xae0(%rsp), %rdi
callq 0x28400
leaq 0x6f0(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x14d0(%rsp), %rdi
callq 0x10590
movq %rax, 0xb8(%rsp)
jmp 0x247ea
movq 0xb8(%rsp), %rsi
movq 0xb0(%rsp), %rdi
movl $0x3e8, %edx            # imm = 0x3E8
callq 0x8230
leaq 0x86b54(%rip), %rsi     # 0xab35f
leaq 0x6f0(%rsp), %rdi
callq 0x8680
movq %rax, 0xa0(%rsp)
leaq 0x6c7(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x8780
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq 0x6c8(%rsp), %rdi
callq 0x85d0
jmp 0x24854
leaq 0x6c7(%rsp), %rdi
callq 0x84a0
jmp 0x24863
leaq 0x6c8(%rsp), %rdi
leaq 0x6b8(%rsp), %rsi
movl $0xa, %edx
callq 0x19180
movl %eax, 0x9c(%rsp)
jmp 0x24886
movl 0x9c(%rsp), %eax
movl %eax, 0x6b4(%rsp)
leaq 0xae0(%rsp), %rdi
leaq 0x6b4(%rsp), %rsi
callq 0x28410
movb %dl, 0x8f(%rsp)
movq %rax, 0x90(%rsp)
jmp 0x248ba
movb 0x8f(%rsp), %al
movq 0x90(%rsp), %rcx
movq %rcx, 0x6a0(%rsp)
movb %al, 0x6a8(%rsp)
xorl %eax, %eax
movl %eax, %edi
leaq 0x86a7c(%rip), %rsi     # 0xab35f
callq 0x8680
movq %rax, 0x6e8(%rsp)
cmpq $0x0, 0x6e8(%rsp)
jne 0x24965
jmp 0x24983
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
jmp 0x24a9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x6c7(%rsp), %rdi
callq 0x84a0
jmp 0x24a9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x6c8(%rsp), %rdi
callq 0x8848
jmp 0x24a9a
movq 0x6e8(%rsp), %rsi
leaq 0x6c8(%rsp), %rdi
callq 0x85c0
jmp 0x2497c
jmp 0x2497e
jmp 0x24861
leaq 0xae0(%rsp), %rdi
callq 0x28470
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl %ecx, 0x44(%rax)
movslq 0x44(%rax), %rax
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x8030
movq %rax, 0x80(%rsp)
jmp 0x249c7
movq 0x1b8(%rsp), %rax
movq 0x80(%rsp), %rcx
movq %rcx, 0x28(%rax)
movl $0x0, 0x69c(%rsp)
leaq 0xae0(%rsp), %rdi
callq 0x28480
movq %rax, 0x690(%rsp)
leaq 0xae0(%rsp), %rdi
callq 0x284d0
movq %rax, 0x688(%rsp)
leaq 0x690(%rsp), %rdi
leaq 0x688(%rsp), %rsi
callq 0x284b0
testb $0x1, %al
jne 0x24a2b
jmp 0x24a7b
leaq 0x690(%rsp), %rdi
callq 0x28500
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl (%rcx), %edx
movq 0x28(%rax), %rax
movl 0x69c(%rsp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, 0x69c(%rsp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
leaq 0x690(%rsp), %rdi
xorl %esi, %esi
callq 0x28520
movq %rax, 0x680(%rsp)
jmp 0x249fb
leaq 0x6c8(%rsp), %rdi
callq 0x8848
leaq 0xae0(%rsp), %rdi
callq 0x28560
jmp 0x24f08
leaq 0xae0(%rsp), %rdi
callq 0x28560
jmp 0x24e9d
movq 0x14d0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x78(%rsp)
jmp 0x24ac0
movq 0x78(%rsp), %rdi
leaq 0x868a6(%rip), %rsi     # 0xab372
callq 0x85f0
cmpl $0x0, %eax
jne 0x24da0
leaq 0x650(%rsp), %rdi
callq 0x28400
leaq 0x260(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x14d0(%rsp), %rdi
callq 0x10590
movq %rax, 0x70(%rsp)
jmp 0x24b08
movq 0x70(%rsp), %rsi
movq 0x68(%rsp), %rdi
movl $0x3e8, %edx            # imm = 0x3E8
callq 0x8230
leaq 0x8683c(%rip), %rsi     # 0xab35f
leaq 0x260(%rsp), %rdi
callq 0x8680
movq %rax, 0x58(%rsp)
leaq 0x237(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x8780
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
leaq 0x238(%rsp), %rdi
callq 0x85d0
jmp 0x24b60
leaq 0x237(%rsp), %rdi
callq 0x84a0
jmp 0x24b6f
leaq 0x238(%rsp), %rdi
leaq 0x228(%rsp), %rsi
movl $0xa, %edx
callq 0x19180
movl %eax, 0x54(%rsp)
jmp 0x24b8f
movl 0x54(%rsp), %eax
movl %eax, 0x224(%rsp)
leaq 0x650(%rsp), %rdi
leaq 0x224(%rsp), %rsi
callq 0x28410
movb %dl, 0x47(%rsp)
movq %rax, 0x48(%rsp)
jmp 0x24bba
movb 0x47(%rsp), %al
movq 0x48(%rsp), %rcx
movq %rcx, 0x210(%rsp)
movb %al, 0x218(%rsp)
xorl %eax, %eax
movl %eax, %edi
leaq 0x86782(%rip), %rsi     # 0xab35f
callq 0x8680
movq %rax, 0x258(%rsp)
cmpq $0x0, 0x258(%rsp)
jne 0x24c5f
jmp 0x24c7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
jmp 0x24d8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x237(%rsp), %rdi
callq 0x84a0
jmp 0x24d8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x8848
jmp 0x24d8e
movq 0x258(%rsp), %rsi
leaq 0x238(%rsp), %rdi
callq 0x85c0
jmp 0x24c76
jmp 0x24c78
jmp 0x24b6d
leaq 0x650(%rsp), %rdi
callq 0x28470
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl %ecx, 0x48(%rax)
movslq 0x48(%rax), %rax
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x8030
movq %rax, 0x38(%rsp)
jmp 0x24cbe
movq 0x1b8(%rsp), %rax
movq 0x38(%rsp), %rcx
movq %rcx, 0x30(%rax)
movl $0x0, 0x20c(%rsp)
leaq 0x650(%rsp), %rdi
callq 0x28480
movq %rax, 0x200(%rsp)
leaq 0x650(%rsp), %rdi
callq 0x284d0
movq %rax, 0x1f8(%rsp)
leaq 0x200(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x284b0
testb $0x1, %al
jne 0x24d1f
jmp 0x24d6f
leaq 0x200(%rsp), %rdi
callq 0x28500
movq %rax, %rcx
movq 0x1b8(%rsp), %rax
movl (%rcx), %edx
movq 0x30(%rax), %rax
movl 0x20c(%rsp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, 0x20c(%rsp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
leaq 0x200(%rsp), %rdi
xorl %esi, %esi
callq 0x28520
movq %rax, 0x1f0(%rsp)
jmp 0x24cef
leaq 0x238(%rsp), %rdi
callq 0x8848
leaq 0x650(%rsp), %rdi
callq 0x28560
jmp 0x24f06
leaq 0x650(%rsp), %rdi
callq 0x28560
jmp 0x24e9d
movq 0x14d0(%rsp), %rdi
callq 0xcac0
movq %rax, 0x30(%rsp)
jmp 0x24db4
movq 0x30(%rsp), %rdi
leaq 0x865bc(%rip), %rsi     # 0xab37c
callq 0x85f0
cmpl $0x0, %eax
jne 0x24f04
movq 0x14d0(%rsp), %rdi
callq 0x10590
movq %rax, 0x28(%rsp)
jmp 0x24de2
leaq 0x1cf(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x8780
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0x1d0(%rsp), %rdi
callq 0x85d0
jmp 0x24e0d
leaq 0x1cf(%rsp), %rdi
callq 0x84a0
xorl %eax, %eax
movl %eax, %esi
leaq 0x1d0(%rsp), %rdi
movl $0xa, %edx
callq 0x192b0
movq %rax, 0x18(%rsp)
jmp 0x24e37
movq 0x1b8(%rsp), %rax
movq 0x18(%rsp), %rcx
movl %ecx, 0x38(%rax)
leaq 0x1d0(%rsp), %rdi
callq 0x8848
jmp 0x24f04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x1cf(%rsp), %rdi
callq 0x84a0
jmp 0x24e9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
leaq 0x1d0(%rsp), %rdi
callq 0x8848
movq 0x14c8(%rsp), %rdi
callq 0x8180
movq 0xb513f(%rip), %rdi     # 0xd9ff0
leaq 0x85a30(%rip), %rsi     # 0xaa8e8
callq 0x8440
jmp 0x24ebf
movq 0xb512a(%rip), %rdi     # 0xd9ff0
leaq 0x86528(%rip), %rsi     # 0xab3f5
callq 0x8440
movq %rax, 0x10(%rsp)
jmp 0x24ed9
movq 0x10(%rsp), %rdi
movq 0xb5073(%rip), %rsi     # 0xd9f58
callq 0x8480
jmp 0x24eec
movq 0xb50dd(%rip), %rdi     # 0xd9fd0
callq 0x84f0
jmp 0x24efa
movl $0x1, %edi
callq 0x8500
jmp 0x24f06
jmp 0x24f08
jmp 0x24f0a
jmp 0x24f0c
jmp 0x24f0e
jmp 0x24f10
jmp 0x24f12
movq 0x14d0(%rsp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
movq %rdx, %rsi
callq 0xcc00
movq %rax, 0x8(%rsp)
jmp 0x24f32
movq 0x8(%rsp), %rax
movq %rax, 0x14d0(%rsp)
jmp 0x23bba
jmp 0x24f63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x14c8(%rsp)
movl %eax, 0x14c4(%rsp)
callq 0x86d0
jmp 0x24f61
jmp 0x24f6b
addq $0x14e8, %rsp           # imm = 0x14E8
retq
movq 0x14c8(%rsp), %rdi
callq 0x8770
movq %rax, %rdi
callq 0xd460