// File: /workspace/github_cpp_makefile_star2_O3/CMU-SAFARI[P]MQSim/src/main.cpp
// Function: read_workload_definitions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::vector<std::vector<IO_Flow_Parameter_Set*>*>* read_workload_definitions(const string workload_defs_file_path)
{
	std::vector<std::vector<IO_Flow_Parameter_Set*>*>* io_scenarios = new std::vector<std::vector<IO_Flow_Parameter_Set*>*>;

	ifstream workload_defs_file;
	workload_defs_file.open(workload_defs_file_path.c_str());
	bool use_default_workloads = true;
	if (!workload_defs_file) {
		PRINT_MESSAGE("The specified workload definition file does not exist!");
		PRINT_MESSAGE("Using MQSim's default workload definitions.");
		PRINT_MESSAGE("Writing the default workload definitions to the expected workload definition file.");
		PRINT_MESSAGE("[====================] Done!\n");
	} else {
		string line((std::istreambuf_iterator<char>(workload_defs_file)), std::istreambuf_iterator<char>());
		if (line.compare("USE_INTERNAL_PARAMS") != 0) {
			rapidxml::xml_document<> doc;
			// character type defaults to char
			char* temp_string = new char[line.length() + 1];
			strcpy(temp_string, line.c_str());
			doc.parse<0>(temp_string);
			rapidxml::xml_node<> *mqsim_io_scenarios = doc.first_node("MQSim_IO_Scenarios");
			if (mqsim_io_scenarios != NULL) {
				for (auto xml_io_scenario = mqsim_io_scenarios->first_node("IO_Scenario"); xml_io_scenario; xml_io_scenario = xml_io_scenario->next_sibling("IO_Scenario")) {
					std::vector<IO_Flow_Parameter_Set*>* scenario_definition = new std::vector<IO_Flow_Parameter_Set*>;
					for (auto flow_def = xml_io_scenario->first_node(); flow_def; flow_def = flow_def->next_sibling()) {
						IO_Flow_Parameter_Set* flow;
						if (strcmp(flow_def->name(), "IO_Flow_Parameter_Set_Synthetic") == 0) {
							flow = new IO_Flow_Parameter_Set_Synthetic;
							((IO_Flow_Parameter_Set_Synthetic*)flow)->XML_deserialize(flow_def);
						} else if (strcmp(flow_def->name(), "IO_Flow_Parameter_Set_Trace_Based") == 0) {
							flow = new IO_Flow_Parameter_Set_Trace_Based;
							((IO_Flow_Parameter_Set_Trace_Based*)flow)->XML_deserialize(flow_def);
						}
						scenario_definition->push_back(flow);
					}
					io_scenarios->push_back(scenario_definition);
					use_default_workloads = false;
				}
			} else {
				PRINT_MESSAGE("Error in the workload definition file!");
				PRINT_MESSAGE("Using MQSim's default workload definitions.");
				PRINT_MESSAGE("Writing the default workload definitions to the expected workload definition file.");
				PRINT_MESSAGE("[====================] Done!\n");
			}
		}
	}

	if (use_default_workloads) {
		std::vector<IO_Flow_Parameter_Set*>* scenario_definition = new std::vector<IO_Flow_Parameter_Set*>;
		IO_Flow_Parameter_Set_Synthetic* io_flow_1 = new IO_Flow_Parameter_Set_Synthetic;
		io_flow_1->Device_Level_Data_Caching_Mode = SSD_Components::Caching_Mode::WRITE_CACHE;
		io_flow_1->Type = Flow_Type::SYNTHETIC;
		io_flow_1->Priority_Class = IO_Flow_Priority_Class::HIGH;
		io_flow_1->Channel_No = 8;
		io_flow_1->Channel_IDs = new flash_channel_ID_type[8];
		io_flow_1->Channel_IDs[0] = 0; io_flow_1->Channel_IDs[1] = 1; io_flow_1->Channel_IDs[2] = 2; io_flow_1->Channel_IDs[3] = 3;
		io_flow_1->Channel_IDs[4] = 4; io_flow_1->Channel_IDs[5] = 5; io_flow_1->Channel_IDs[6] = 6; io_flow_1->Channel_IDs[7] = 7;
		io_flow_1->Chip_No = 4;
		io_flow_1->Chip_IDs = new flash_chip_ID_type[4];
		io_flow_1->Chip_IDs[0] = 0; io_flow_1->Chip_IDs[1] = 1; io_flow_1->Chip_IDs[2] = 2; io_flow_1->Chip_IDs[3] = 3;
		io_flow_1->Die_No = 2;
		io_flow_1->Die_IDs = new flash_die_ID_type[2];
		io_flow_1->Die_IDs[0] = 0; io_flow_1->Die_IDs[1] = 1;
		io_flow_1->Plane_No = 2;
		io_flow_1->Plane_IDs = new flash_plane_ID_type[2];
		io_flow_1->Plane_IDs[0] = 0; io_flow_1->Plane_IDs[1] = 1;
		io_flow_1->Initial_Occupancy_Percentage = 50;
		io_flow_1->Working_Set_Percentage = 85;
		io_flow_1->Synthetic_Generator_Type = Utils::Request_Generator_Type::QUEUE_DEPTH;
		io_flow_1->Read_Percentage = 100;
		io_flow_1->Address_Distribution = Utils::Address_Distribution_Type::RANDOM_UNIFORM;
		io_flow_1->Percentage_of_Hot_Region = 0;
		io_flow_1->Generated_Aligned_Addresses = true;
		io_flow_1->Address_Alignment_Unit = 16;
		io_flow_1->Request_Size_Distribution = Utils::Request_Size_Distribution_Type::FIXED;
		io_flow_1->Average_Request_Size = 8;
		io_flow_1->Variance_Request_Size = 0;
		io_flow_1->Seed = 12344;
		io_flow_1->Average_No_of_Reqs_in_Queue = 2;
		io_flow_1->Bandwidth = 262144;
		io_flow_1->Stop_Time = 1000000000;
		io_flow_1->Total_Requests_To_Generate = 0;
		scenario_definition->push_back(io_flow_1);

		IO_Flow_Parameter_Set_Synthetic* io_flow_2 = new IO_Flow_Parameter_Set_Synthetic;
		io_flow_2->Device_Level_Data_Caching_Mode = SSD_Components::Caching_Mode::WRITE_CACHE;
		io_flow_2->Type = Flow_Type::SYNTHETIC;
		io_flow_2->Priority_Class = IO_Flow_Priority_Class::HIGH;
		io_flow_2->Channel_No = 8;
		io_flow_2->Channel_IDs = new flash_channel_ID_type[8];
		io_flow_2->Channel_IDs[0] = 0; io_flow_2->Channel_IDs[1] = 1; io_flow_2->Channel_IDs[2] = 2; io_flow_2->Channel_IDs[3] = 3;
		io_flow_2->Channel_IDs[4] = 4; io_flow_2->Channel_IDs[5] = 5; io_flow_2->Channel_IDs[6] = 6; io_flow_2->Channel_IDs[7] = 7;
		io_flow_2->Chip_No = 4;
		io_flow_2->Chip_IDs = new flash_chip_ID_type[4];
		io_flow_2->Chip_IDs[0] = 0; io_flow_2->Chip_IDs[1] = 1; io_flow_2->Chip_IDs[2] = 2; io_flow_2->Chip_IDs[3] = 3;
		io_flow_2->Die_No = 2;
		io_flow_2->Die_IDs = new flash_die_ID_type[2];
		io_flow_2->Die_IDs[0] = 0; io_flow_2->Die_IDs[1] = 1;
		io_flow_2->Plane_No = 2;
		io_flow_2->Plane_IDs = new flash_plane_ID_type[2];
		io_flow_2->Plane_IDs[0] = 0; io_flow_2->Plane_IDs[1] = 1;
		io_flow_2->Initial_Occupancy_Percentage = 50;
		io_flow_2->Working_Set_Percentage = 85;
		io_flow_2->Synthetic_Generator_Type = Utils::Request_Generator_Type::QUEUE_DEPTH;
		io_flow_2->Read_Percentage = 100;
		io_flow_2->Address_Distribution = Utils::Address_Distribution_Type::RANDOM_UNIFORM;
		io_flow_2->Percentage_of_Hot_Region = 0;
		io_flow_2->Generated_Aligned_Addresses = true;
		io_flow_2->Address_Alignment_Unit = 16;
		io_flow_2->Request_Size_Distribution = Utils::Request_Size_Distribution_Type::FIXED;
		io_flow_2->Average_Request_Size = 8;
		io_flow_2->Variance_Request_Size = 0;
		io_flow_2->Seed = 6533;
		io_flow_2->Average_No_of_Reqs_in_Queue = 2;
		io_flow_2->Bandwidth = 131072;
		io_flow_2->Stop_Time = 1000000000;
		io_flow_2->Total_Requests_To_Generate = 0;
		scenario_definition->push_back(io_flow_2);

		io_scenarios->push_back(scenario_definition);

		PRINT_MESSAGE("Writing default workload parameters to the expected input file.")

		Utils::XmlWriter xmlwriter;
		string tmp;
		xmlwriter.Open(workload_defs_file_path.c_str());
		tmp = "MQSim_IO_Scenarios";
		xmlwriter.Write_open_tag(tmp);
		tmp = "IO_Scenario";
		xmlwriter.Write_open_tag(tmp);

		io_flow_1->XML_serialize(xmlwriter);
		io_flow_2->XML_serialize(xmlwriter);

		xmlwriter.Write_close_tag();
		xmlwriter.Write_close_tag();
		xmlwriter.Close();
	}
	workload_defs_file.close();

	return io_scenarios;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10348, %rsp          # imm = 0x10348
movq %rdi, %r14
movl $0x18, %edi
callq 0x73a0
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq %rax, 0x38(%rsp)
movq $0x0, 0x10(%rax)
leaq 0xb8(%rsp), %rbx
movq %rbx, %rdi
callq 0x73f0
movq %r14, 0x48(%rsp)
movq (%r14), %rsi
movq %rbx, %rdi
movl $0x8, %edx
callq 0x7260
movq 0xb8(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0xd8(%rsp,%rax)
leaq 0x20(%rsp), %rcx
je 0x93bd
movq 0x65f4f(%rip), %r14     # 0x6ef88
leaq 0x4c138(%rip), %rsi     # 0x55178
movl $0x36, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x65f1d(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
movq 0x65f09(%rip), %r14     # 0x6ef88
leaq 0x4c129(%rip), %rsi     # 0x551af
movl $0x2b, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x65ed7(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
movq 0x65ec3(%rip), %r14     # 0x6ef88
leaq 0x4c10f(%rip), %rsi     # 0x551db
movl $0x52, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x65e91(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
movq 0x65e7d(%rip), %r14     # 0x6ef88
leaq 0x4bff7(%rip), %rsi     # 0x55109
movl $0x1d, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x65e4b(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
movl $0x18, %edi
callq 0x73a0
movq %rax, %r14
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq %rax, 0x8(%rsp)
movl $0x90, %edi
callq 0x73a0
movq %rax, %r15
leaq 0x64942(%rip), %r13     # 0x6dac0
addq $0x10, %r13
movq %r13, (%rax)
movq $0x0, 0x8(%rax)
movl $0x1, 0x10(%rax)
movl $0x8, 0x3c(%rax)
movl $0x20, %edi
callq 0x7030
movq %rax, 0x18(%r15)
movaps 0x4be60(%rip), %xmm0    # 0x55010
movups %xmm0, (%rax)
movaps 0x4be66(%rip), %xmm0    # 0x55020
movups %xmm0, 0x10(%rax)
movl $0x4, 0x40(%r15)
movl $0x10, %edi
callq 0x7030
movq %rax, 0x20(%r15)
movaps 0x4be35(%rip), %xmm0    # 0x55010
movups %xmm0, (%rax)
movl $0x2, 0x44(%r15)
movl $0x8, %edi
callq 0x7030
movq %rax, 0x28(%r15)
movabsq $0x100000000, %rbx      # imm = 0x100000000
movq %rbx, (%rax)
movl $0x2, 0x48(%r15)
movl $0x8, %edi
callq 0x7030
movq %rax, 0x30(%r15)
movq %rbx, (%rax)
movl $0x32, 0x38(%r15)
movabsq $0x100000055, %rbp      # imm = 0x100000055
movq %rbp, 0x4c(%r15)
movb $0x64, 0x54(%r15)
movl $0x2, 0x58(%r15)
movw $0x100, 0x5c(%r15)      # imm = 0x100
movaps 0x4bde5(%rip), %xmm0    # 0x55030
movups %xmm0, 0x60(%r15)
movabsq $0x200003038, %rax      # imm = 0x200003038
movq %rax, 0x70(%r15)
movl $0x40000, 0x78(%r15)    # imm = 0x40000
movq $0x3b9aca00, 0x80(%r15) # imm = 0x3B9ACA00
movl $0x0, 0x88(%r15)
leaq 0x2c0(%rsp), %rdx
movq %r15, (%rdx)
movq %r14, %rdi
xorl %esi, %esi
callq 0xc886
movl $0x90, %edi
callq 0x73a0
movq %rax, %r12
movq %r13, (%rax)
movq $0x0, 0x8(%rax)
movl $0x1, 0x10(%rax)
movl $0x8, 0x3c(%rax)
movl $0x20, %edi
callq 0x7030
movq %rax, 0x18(%r12)
movaps 0x4bd43(%rip), %xmm0    # 0x55010
movups %xmm0, (%rax)
movaps 0x4bd49(%rip), %xmm0    # 0x55020
movups %xmm0, 0x10(%rax)
movl $0x4, 0x40(%r12)
movl $0x10, %edi
callq 0x7030
movq %rax, 0x20(%r12)
movaps 0x4bd16(%rip), %xmm0    # 0x55010
movups %xmm0, (%rax)
movl $0x2, 0x44(%r12)
movl $0x8, %edi
callq 0x7030
movq %rax, 0x28(%r12)
movq %rbx, (%rax)
movl $0x2, 0x48(%r12)
movl $0x8, %edi
callq 0x7030
movq %rax, 0x30(%r12)
movq %rbx, (%rax)
movl $0x32, 0x38(%r12)
movq %rbp, 0x4c(%r12)
movb $0x64, 0x54(%r12)
movl $0x2, 0x58(%r12)
movw $0x100, 0x5c(%r12)      # imm = 0x100
movaps 0x4bcd1(%rip), %xmm0    # 0x55030
movups %xmm0, 0x60(%r12)
movabsq $0x200001985, %rax      # imm = 0x200001985
movq %rax, 0x70(%r12)
movl $0x20000, 0x78(%r12)    # imm = 0x20000
movq $0x3b9aca00, 0x80(%r12) # imm = 0x3B9ACA00
movl $0x0, 0x88(%r12)
movq 0x8(%rsp), %rdi
movq %r12, 0x2c0(%rsp)
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x9655
movq %r12, (%rsi)
addq $0x8, 0x8(%rdi)
jmp 0x9662
movq 0x1a0(%rsp,%rax), %rsi
leaq 0x10(%rsp), %rdi
movq %rcx, (%rdi)
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0xb05e
leaq 0x4bd41(%rip), %rsi     # 0x55127
leaq 0x10(%rsp), %rdi
callq 0x7120
testl %eax, %eax
je 0x9a21
xorl %eax, %eax
leaq 0x320(%rsp), %rcx
movq %rax, -0x40(%rcx)
xorps %xmm0, %xmm0
movaps %xmm0, -0x60(%rcx)
movl $0x0, -0x38(%rcx)
movq %rax, -0x30(%rcx)
movq %rax, -0x20(%rcx)
leaq 0x10338(%rsp), %rax
leaq 0x338(%rsp), %rcx
movups %xmm0, (%rax)
movq %rcx, -0x18(%rcx)
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movq 0x18(%rsp), %rdi
incq %rdi
callq 0x7030
movq %rax, %r14
movq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x7360
leaq 0x2c0(%rsp), %rdi
movq %r14, %rsi
callq 0xab20
leaq 0x4bdbf(%rip), %rsi     # 0x5522e
leaq 0x2c0(%rsp), %rdi
xorl %edx, %edx
movl $0x1, %ecx
callq 0xac4e
testq %rax, %rax
je 0x98fc
leaq 0x4bdae(%rip), %rsi     # 0x55241
movq %rax, %rdi
xorl %edx, %edx
movl $0x1, %ecx
callq 0xac4e
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x9621
leaq 0x6607b(%rip), %r12     # 0x6f532
leaq 0x4bd8f(%rip), %r15     # 0x5524d
leaq 0x645fb(%rip), %r14     # 0x6dac0
addq $0x10, %r14
leaq 0x64628(%rip), %rax     # 0x6daf8
addq $0x10, %rax
movq %rax, 0x50(%rsp)
movq 0x40(%rsp), %r13
movl $0x18, %edi
callq 0x73a0
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq %rax, 0x8(%rsp)
movq 0x30(%r13), %rbp
testq %rbp, %rbp
je 0x95d7
movq (%rbp), %rbx
testq %rbx, %rbx
cmoveq %r12, %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x74d0
testl %eax, %eax
je 0x9577
movq %rbx, %rdi
leaq 0x4bd41(%rip), %rsi     # 0x5526d
callq 0x74d0
testl %eax, %eax
jne 0x959b
movl $0x80, %edi
callq 0x73a0
movq 0x50(%rsp), %rcx
movq %rcx, (%rax)
movq %rax, %rcx
addq $0x60, %rcx
movq %rcx, 0x50(%rax)
movq $0x0, 0x58(%rax)
movb $0x0, 0x60(%rax)
movl $0x1, 0xc(%rax)
movq %rax, 0x30(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
callq 0x1a6d2
jmp 0x959b
movl $0x90, %edi
callq 0x73a0
movq %r14, (%rax)
movl $0x0, 0xc(%rax)
movq %rax, 0x30(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
callq 0x19454
movq 0x8(%rsp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x95b9
movq 0x30(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, 0x8(%rdi)
jmp 0x95c3
leaq 0x30(%rsp), %rdx
callq 0xc61a
cmpq $0x0, 0x20(%rbp)
je 0x9a3e
movq 0x58(%rbp), %rbp
jmp 0x94ff
movq 0x38(%rsp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x95f5
movq 0x8(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, 0x8(%rdi)
jmp 0x95ff
leaq 0x8(%rsp), %rdx
callq 0xc750
movq %r13, %rdi
leaq 0x4bc38(%rip), %rsi     # 0x55241
xorl %edx, %edx
movl $0x1, %ecx
callq 0xad34
movq %rax, %r13
testq %rax, %rax
jne 0x94de
leaq 0x320(%rsp), %rdi
callq 0xae6e
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
movq 0x40(%rsp), %rbx
je 0x9647
callq 0x7370
testq %rbx, %rbx
jne 0x98cb
jmp 0x914a
leaq 0x2c0(%rsp), %rdx
callq 0xc886
movq 0x38(%rsp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x9680
movq 0x8(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, 0x8(%rdi)
jmp 0x968a
leaq 0x8(%rsp), %rdx
callq 0xc750
movq 0x658f7(%rip), %r14     # 0x6ef88
leaq 0x4bc1e(%rip), %rsi     # 0x552b6
movl $0x3f, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x658c5(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
leaq 0x2c0(%rsp), %rdi
callq 0x75d0
xorps %xmm0, %xmm0
movups %xmm0, 0x4f0(%rsp)
movups %xmm0, 0x4e0(%rsp)
movups %xmm0, 0x4d0(%rsp)
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movb $0x0, 0x20(%rsp)
movq 0x48(%rsp), %rax
movq (%rax), %rsi
leaq 0x98(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x7180
leaq 0x2c0(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x53a8a
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9755
callq 0x7370
leaq 0x10(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x4bac9(%rip), %rcx     # 0x5522e
movl $0x12, %r8d
xorl %esi, %esi
callq 0x7550
leaq 0x88(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0xaf32
leaq 0x2c0(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x53af8
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
je 0x97b6
callq 0x7370
leaq 0x10(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x4ba7b(%rip), %rcx     # 0x55241
movl $0xb, %r8d
xorl %esi, %esi
callq 0x7550
leaq 0x68(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0xaf32
leaq 0x2c0(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x53af8
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
je 0x9814
callq 0x7370
movq (%r15), %rax
leaq 0x2c0(%rsp), %rsi
movq %r15, %rdi
callq *(%rax)
movq (%r12), %rax
leaq 0x2c0(%rsp), %rsi
movq %r12, %rdi
callq *(%rax)
leaq 0x2c0(%rsp), %rdi
callq 0x53e9a
leaq 0x2c0(%rsp), %rdi
callq 0x53e9a
leaq 0x2c0(%rsp), %rdi
callq 0x53adc
leaq 0x4d0(%rsp), %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x9878
callq 0x7370
leaq 0x4e8(%rsp), %rbx
movq %rbx, %rdi
callq 0xae1a
movq %r14, %rdi
callq 0xae1a
movq 0x656d1(%rip), %rax     # 0x6ef68
movq (%rax), %rcx
movq 0x18(%rax), %rax
movq %rcx, -0x228(%rbx)
movq -0x18(%rcx), %rcx
movq %rax, 0x2c0(%rsp,%rcx)
leaq 0x2c8(%rsp), %rdi
callq 0x7320
leaq 0x3b8(%rsp), %rdi
callq 0x7150
leaq 0xb8(%rsp), %rdi
callq 0x70b0
leaq 0xb8(%rsp), %rdi
callq 0x7100
movq 0x38(%rsp), %rax
addq $0x10348, %rsp          # imm = 0x10348
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x65685(%rip), %r14     # 0x6ef88
leaq 0x4b985(%rip), %rsi     # 0x5528f
movl $0x26, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x65653(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
movq 0x6563f(%rip), %r14     # 0x6ef88
leaq 0x4b85f(%rip), %rsi     # 0x551af
movl $0x2b, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x6560d(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
movq 0x655f9(%rip), %r14     # 0x6ef88
leaq 0x4b845(%rip), %rsi     # 0x551db
movl $0x52, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x655c7(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
movq 0x655b3(%rip), %r14     # 0x6ef88
leaq 0x4b72d(%rip), %rsi     # 0x55109
movl $0x1d, %edx
movq %r14, %rdi
callq 0x7400
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x7380
movsbl %al, %esi
movq 0x65581(%rip), %rdi     # 0x6ef88
callq 0x7040
movq %rax, %rdi
callq 0x7290
leaq 0x320(%rsp), %rdi
callq 0xae6e
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x914a
callq 0x7370
jmp 0x914a
leaq 0x4bd32(%rip), %rdi     # 0x55777
leaq 0x4bafd(%rip), %rsi     # 0x55549
leaq 0x4bd33(%rip), %rcx     # 0x55786
movl $0x3ee, %edx            # imm = 0x3EE
callq 0x7270
jmp 0x9b1b
jmp 0x9b1b
jmp 0x9ae2
jmp 0x9add
jmp 0x9add
jmp 0x9ae2
movq %rax, %rbx
movq 0x58(%rsp), %rdi
jmp 0x9a81
movq %rax, %rbx
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
jne 0x9a9c
jmp 0x9ab8
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9ab8
callq 0x7370
jmp 0x9ab8
jmp 0x9ab5
jmp 0x9add
jmp 0x9add
jmp 0x9add
jmp 0x9add
jmp 0x9ae2
jmp 0x9ae2
jmp 0x9ae2
jmp 0x9add
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x9acc
callq 0x7370
leaq 0x2c0(%rsp), %rdi
callq 0xaad2
jmp 0x9b06
jmp 0x9add
movq %rax, %rbx
jmp 0x9b06
movq %rax, %rbx
leaq 0x320(%rsp), %rdi
callq 0xae6e
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x9b06
callq 0x7370
leaq 0xb8(%rsp), %rdi
callq 0x7100
movq %rbx, %rdi
callq 0x7620
movq %rax, %rdi
callq 0xae63