// File: /workspace/github_cpp_makefile_star2_O1/gvaumour[P]cache-simulator/src/main.cc
// Function: main
int main(int argc , char* argv[]){
	
	vector<string> args; 

	bool mergingResults = MERGING_RESULTS;
	init_default_parameters();
	
	for(int i = 1; i < argc ; i++)
	{
		if(string(argv[i]) == "-p")
		{	i++;
			simu_parameters.policy = string(argv[i]);		
		}
		else if(string(argv[i]) == "--debug-flags")
		{	i++;
			vector<string> debugflags = split(string(argv[i]) , ',');		
			for(auto debugflag : debugflags)
			{
				if(simulation_debugflags.count(debugflag) != 0)
					simu_parameters.enable_debugflags.insert(debugflag);
				else
				{
					cout << "Error: Debug flag not recognized : " << debugflag << endl;
					return 0;					
				}
			}
		}
		else if(string(argv[i]) == "-n")
		{	i++;
			simu_parameters.nbCores = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--rap-assoc")
		{	i++;
			simu_parameters.rap_assoc = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--rap-sets")
		{	i++;
			simu_parameters.rap_sets = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--window_size")
		{	i++;
			simu_parameters.window_size = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--SRAM-assoc")
		{	i++;
			simu_parameters.sram_assoc = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--NVM-assoc")
		{	i++;
			simu_parameters.nvm_assoc = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--ratio-RWcost")
		{	i++;
			simu_parameters.ratio_RWcost = atof(argv[i]);
		}
		else if(string(argv[i]) == "--SRAM-MTsize")
		{	i++;
			simu_parameters.size_MT_SRAMtags = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--NVM-MTsize")
		{	i++;
			simu_parameters.size_MT_NVMtags = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--InstructionTh")
		{	i++;
			simu_parameters.cost_threshold = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--SaturationTh")
		{	i++;
			simu_parameters.saturation_threshold = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--LLC-sets")
		{	i++;
			simu_parameters.nb_sets = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--deadCounter")
		{	i++;
			simu_parameters.deadSaturationCouter = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--sampled-sets")
		{	i++;
			simu_parameters.nb_sampled_sets = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--prefetchDegree")
		{	i++;
			simu_parameters.prefetchDegree = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--prefetchStreams")
		{	i++;
			simu_parameters.prefetchStreams = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--enablePrefetch")
			simu_parameters.enablePrefetch = true;
		else if(string(argv[i]) == "--traceLLC")
			simu_parameters.traceLLC = true;
		else if(string(argv[i]) == "--enablePCHistoryTracking")
			simu_parameters.enablePCHistoryTracking = true;
		else if(string(argv[i]) == "--enableBP")
			simu_parameters.enableBP = true;
		else if(string(argv[i]) == "--enable-DYN")
			simu_parameters.enableMigration = true;
		else if(string(argv[i]) == "--simulate-MissConflicts")
			simu_parameters.simulate_conflicts = true;
		else if(string(argv[i]) == "--enableReuseError")
			simu_parameters.enableReuseErrorComputation = true;
		else if(string(argv[i]) == "--Predictor-optTarget")
		{	i++;
			string m_optTarget = string(argv[i]);
			assert((m_optTarget == "energy" || m_optTarget == "perf") && "Wrong optimization parameter for the function cost" );
			if(m_optTarget == "energy")
				simu_parameters.optTarget = EnergyParameters();
			else if(m_optTarget == "perf")
				simu_parameters.optTarget = PerfParameters();
		}
		else if(string(argv[i]) == "--DBAMB-signature")
		{	i++;
			simu_parameters.DBAMB_signature = string(argv[i]);		
		}
		else if(string(argv[i]) == "--MT-counter-th")
		{	i++;
			simu_parameters.MT_counter_th = atoi(argv[i]);		
		}
		else if(string(argv[i]) == "--MT-timeframe")
		{	i++;
			simu_parameters.MT_timeframe = atoi(argv[i]);		
		}		
		else if(string(argv[i]) == "--MT-sampling")
		{	i++;
			simu_parameters.nb_MTcouters_sampling = atoi(argv[i]);		
		}		
		else if(string(argv[i]) == "--Perceptron-BP-Features")
		{	i++;
			simu_parameters.perceptron_BP_features.clear();
			simu_parameters.perceptron_BP_features = split(string(argv[i]) , ',');
		}
		else if(string(argv[i]) == "--Perceptron-counterSize")
		{	i++;
			simu_parameters.perceptron_counter_size = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--PHC-costTh")
		{	i++;
			simu_parameters.PHC_cost_threshold = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--PHC-costMediumWrite")
		{	i++;
			simu_parameters.PHC_cost_mediumWrite = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--PHC-costShortWrite")
		{	i++;
			simu_parameters.PHC_cost_shortWrite = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--PHC-costShortRead")
		{	i++;
			simu_parameters.PHC_cost_shortRead = atoi(argv[i]);
		}		
		else if(string(argv[i]) == "--MediumRD-def")
		{	i++;
			simu_parameters.mediumrd_def = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--PHC-costMediumRead")
		{	i++;
			simu_parameters.PHC_cost_mediumRead = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--PHC-Features")
		{	i++;
			simu_parameters.PHC_features.clear();
			simu_parameters.PHC_features = split(string(argv[i]) , ',');
		}
		else if(string(argv[i]) == "--Cerebron-decrementValue")
		{	i++;
			simu_parameters.Cerebron_decrement_value = atoi(argv[i]);
		}
		else if(string(argv[i]) == "--Cerebron-function")
		{	i++;
			simu_parameters.Cerebron_activation_function = string(argv[i]);
		}
		else if(string(argv[i]) == "--Cerebron-independantLearning")
			simu_parameters.Cerebron_independantLearning = true;
		else if(string(argv[i]) == "--Cerebron-fastLearning")
			simu_parameters.Cerebron_fastlearning = true;
		else if(string(argv[i]) == "--Cerebron-lowConfidence")
			simu_parameters.Cerebron_lowConfidence = true;
		else if(string(argv[i]) == "--Cerebron-RDmodel")
			simu_parameters.Cerebron_RDmodel = true;
		else if(string(argv[i]) == "--Cerebron-resetEnergyValues")
			simu_parameters.Cerebron_resetEnergyValues = true;
		else if(string(argv[i]) == "--Cerebron-enableMigration")
			simu_parameters.Cerebron_enableMigration = true;
		else if(string(argv[i]) == "--Cerebron-separateLearning")
			simu_parameters.Cerebron_separateLearning = true;
		else if(string(argv[i]) == "--Perceptron-Alloc-Features")
		{	i++;
			simu_parameters.perceptron_Allocation_features.clear();
			simu_parameters.perceptron_Allocation_features = split(string(argv[i]) , ',');
		}
		else if(string(argv[i]) == "--Perceptron-drawFeatureMaps")
			simu_parameters.perceptron_drawFeatureMaps = true;		
		else if(string(argv[i]) == "--Perceptron-enableBP")
			simu_parameters.perceptron_enableBypass = true;		
		else if(string(argv[i]) == "--enableDatasetSpilling")
			simu_parameters.enableDatasetSpilling = true;		
		else if(string(argv[i]) == "--Perceptron-BPThreshold")
		{	i++;
			simu_parameters.perceptron_bypass_threshold = atoi(argv[i]);		
		}
		else if(string(argv[i]) == "--SimplePerceptron-learningTH")
			simu_parameters.simple_perceptron_learningTreshold = atoi(argv[i++]);
		else if(string(argv[i]) == "--SimplePerceptron-Features")
		{
			i++;
			simu_parameters.simple_perceptron_features.clear();		
			simu_parameters.simple_perceptron_features = split(string(argv[i]) , ',');
		}
		else if(string(argv[i]) == "--SimplePerceptron-independantLearning")
			simu_parameters.simple_perceptron_independantLearning = true;
		else if(string(argv[i]) == "--SimplePerceptron-fastLearning")
			simu_parameters.simple_perceptron_fastLearning = true;
		else if(string(argv[i]) == "--SimplePerceptron-enableMigration")
			simu_parameters.simple_perceptron_enableMigration = true;
		else if(string(argv[i]) == "--Perceptron-BPLearning")
		{	i++;
			simu_parameters.perceptron_bypass_learning = atoi(argv[i]);		
		}
		else if(string(argv[i]) == "--Perceptron-AllocThreshold")
		{	i++;
			simu_parameters.perceptron_allocation_threshold = atoi(argv[i]);		
		}
		else if(string(argv[i]) == "--Perceptron-AllocLearning")
		{	i++;
			simu_parameters.perceptron_allocation_learning = atoi(argv[i]);		
		}
		else if(string(argv[i]) == "--Perceptron-dumpVariance")
			simu_parameters.perceptron_compute_variance = true;		
		else if(string(argv[i]) == "--DBAMB-addr-beginBits")
		{	i++;
			simu_parameters.DBAMB_begin_bit = atoi(argv[i]);		
		}
		else if(string(argv[i]) == "--DBAMB-addr-endBits")
		{	i++;
			simu_parameters.DBAMB_end_bit = atoi(argv[i]);		
		}
		else if(string(argv[i]) == "--flagTest")
		{
			simu_parameters.flagTest = true;
			cout << "Flag Test Enable" << endl;		
		}
		else if(string(argv[i]) == "--readDatasetFile")
		{
			i++;
			simu_parameters.readDatasetFile = true;
			simu_parameters.datasetFile = string(argv[i]);		
		}
		else if(string(argv[i]) == "--writeDatasetFile")
			simu_parameters.writeDatasetFile = true;
		else if(string(argv[i]) == "--enableDebug")
		{
			cout << "Debug enable "<< endl;		
			simu_parameters.printDebug = true;
		}
		else if(argv[i][0] == '-' && argv[i][1] == '-')
		{
			cout << "Flag not recognized: " << argv[i] << endl;
			cout << "Exiting ... "<< endl;
			return 1;
		}
		else
			args.push_back(string(argv[i]));
	}
	
	if(simu_parameters.policy == "DBA")
	{
		simu_parameters.enableBP = false;
		simu_parameters.enableMigration = false;
	}
	else if(simu_parameters.policy == "DBAMB")
	{
		simu_parameters.enableBP = true;
		simu_parameters.enableMigration = true;
	}
	else if(simu_parameters.policy == "DBAMBS")
	{
		simu_parameters.enableBP = true;
		simu_parameters.enableMigration = true;
		simu_parameters.enableDatasetSpilling = true;
	}
	else if(simu_parameters.policy == "DBAM")
	{
		simu_parameters.enableBP = false;
		simu_parameters.enableMigration = true;
	}
	

	if( (simu_parameters.nvm_assoc == 0 || simu_parameters.sram_assoc == 0) && \
		(simu_parameters.policy != "Perceptron" && simu_parameters.policy != "Monitor" ) )
	 {
	 	simu_parameters.policy = "LRU";
	 }
		
	for(unsigned i = 0 ; i < args.size() ; i++)
		simu_parameters.memory_traces.push_back(args[i]);		
	
	if(argc == 1)
		simu_parameters.memory_traces.push_back(DEFAULT_TRACE);
	
	
	
	/* The Control C signal handler setup */
	struct sigaction sigIntHandler;
	sigIntHandler.sa_handler = my_handler;
	sigemptyset(&sigIntHandler.sa_mask);
	sigIntHandler.sa_flags = 0;
	sigaction(SIGINT, &sigIntHandler, NULL);
	/***********************************/	

	cout << "Launching simulation with " << simu_parameters.memory_traces.size() << " file(s), the " << simu_parameters.policy \
	 << " policy and with " << simu_parameters.nbCores << " core(s)" << endl;	

	my_system = new Hierarchy(simu_parameters.policy , simu_parameters.nbCores);


	cout << "Traces considered:" << endl;
	for(auto memory_trace : simu_parameters.memory_traces)
		cout << "\t - " << memory_trace << endl;
	
	int id_trace = 0;
	string loading_bar = "";
	uint64_t step = NB_ACCESS/30;

	for(auto memory_trace : simu_parameters.memory_traces)
	{
		cout << "\tRunning Trace: " << memory_trace << " ... " <<  endl;
	
		MemoryTrace* traceWrapper = initTrace(memory_trace);
		assert(traceWrapper != NULL);
		
		Access element;
		uint64_t cpt_access = 0;
		my_system->startWarmup();
		my_system->stopWarmup();
		
		while(traceWrapper->readNext(element)){

			cpt_time++;
			cpt_access++;

			if( ((cpt_time-1) % step == 0) || cpt_time == NB_ACCESS)
			{
				cout << "\tSimulation Progress [" << std::left << setw(30) << setfill(' ') \
					<< loading_bar << "] " << setw(2) << loading_bar.size()*100/30 << "%\r";
				fflush(stdout);
				loading_bar += "#";				
			}


			my_system->handleAccess(element);
			DPRINTF(DebugCache, "TIME::%ld\n",cpt_access);
			
		}
		cout << endl;
		traceWrapper->close();
		free(traceWrapper);
		if(!mergingResults)
		{
			my_system->finishSimu();	
			printResults(mergingResults, id_trace);	
		
		}
		id_trace++;
	}	
	if(mergingResults)
	{
		my_system->finishSimu();	
		printResults(mergingResults , id_trace);	
	}
	
	delete(my_system);
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rsi, %r14
movl %edi, %r15d
xorps %xmm0, %xmm0
movaps %xmm0, 0x130(%rsp)
movq $0x0, 0x140(%rsp)
callq 0x2f570
xorl %ebx, %ebx
cmpl $0x2, %r15d
setge %r13b
jl 0x32753
movl $0xe8, %eax
addq 0x14861(%rip), %rax     # 0x44fa0
movq %rax, 0x168(%rsp)
movl $0x130, %eax            # imm = 0x130
addq 0x1484d(%rip), %rax     # 0x44fa0
movq %rax, 0x1c0(%rsp)
movl $0x180, %eax            # imm = 0x180
addq 0x14839(%rip), %rax     # 0x44fa0
movq %rax, 0x160(%rsp)
movl $0x1d0, %eax            # imm = 0x1D0
addq 0x14825(%rip), %rax     # 0x44fa0
movq %rax, 0x158(%rsp)
movl $0x200, %eax            # imm = 0x200
addq 0x14811(%rip), %rax     # 0x44fa0
movq %rax, 0x1b8(%rsp)
movl $0x198, %eax            # imm = 0x198
addq 0x147fd(%rip), %rax     # 0x44fa0
movq %rax, 0x150(%rsp)
movl $0x230, %eax            # imm = 0x230
addq 0x147e9(%rip), %rax     # 0x44fa0
movq %rax, 0x148(%rsp)
movl $0x160, %eax            # imm = 0x160
addq 0x147d5(%rip), %rax     # 0x44fa0
movq %rax, 0x1b0(%rsp)
movl $0x1, %ebx
leaq 0x48(%rsp), %rbp
leaq 0x1576c(%rip), %rax     # 0x45f50
addq $0x68, %rax
movq %rax, 0x120(%rsp)
movq %r14, 0x38(%rsp)
movl %r15d, 0x128(%rsp)
movl %ebx, 0x40(%rsp)
movslq %ebx, %r12
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6a88(%rip), %rsi      # 0x372aa
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3083d
callq 0x52a0
testl %ebx, %ebx
je 0x31b2e
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6a4a(%rip), %rsi      # 0x372ad
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3087e
callq 0x52a0
testl %ebx, %ebx
je 0x31b72
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6a3b(%rip), %rsi      # 0x372df
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x308bf
callq 0x52a0
testl %ebx, %ebx
je 0x31cda
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x69fd(%rip), %rsi      # 0x372e2
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30900
callq 0x52a0
testl %ebx, %ebx
je 0x31cf9
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x69c8(%rip), %rsi      # 0x372ee
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30941
callq 0x52a0
testl %ebx, %ebx
je 0x31d1b
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6992(%rip), %rsi      # 0x372f9
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30982
callq 0x52a0
testl %ebx, %ebx
je 0x31d3d
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x695f(%rip), %rsi      # 0x37307
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x309c3
callq 0x52a0
testl %ebx, %ebx
je 0x31d5f
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x692b(%rip), %rsi      # 0x37314
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30a04
callq 0x52a0
testl %ebx, %ebx
je 0x31d7e
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x68f6(%rip), %rsi      # 0x37320
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30a45
callq 0x52a0
testl %ebx, %ebx
je 0x31d9d
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x68c4(%rip), %rsi      # 0x3732f
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30a86
callq 0x52a0
testl %ebx, %ebx
je 0x31dc5
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6891(%rip), %rsi      # 0x3733d
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30ac7
callq 0x52a0
testl %ebx, %ebx
je 0x31de7
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x685d(%rip), %rsi      # 0x3734a
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30b08
callq 0x52a0
testl %ebx, %ebx
je 0x31e09
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x682c(%rip), %rsi      # 0x3735a
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30b49
callq 0x52a0
testl %ebx, %ebx
je 0x31e2b
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x67fa(%rip), %rsi      # 0x37369
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30b8a
callq 0x52a0
testl %ebx, %ebx
je 0x31e4d
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x67c4(%rip), %rsi      # 0x37374
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30bcb
callq 0x52a0
testl %ebx, %ebx
je 0x31e6c
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6791(%rip), %rsi      # 0x37382
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30c0c
callq 0x52a0
testl %ebx, %ebx
je 0x31e8e
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x675f(%rip), %rsi      # 0x37391
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30c4d
callq 0x52a0
testl %ebx, %ebx
je 0x31ead
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x672f(%rip), %rsi      # 0x373a2
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30c8e
callq 0x52a0
testl %ebx, %ebx
je 0x31ecf
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6700(%rip), %rsi      # 0x373b4
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30ccf
callq 0x52a0
testl %ebx, %ebx
je 0x31eee
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x66d0(%rip), %rsi      # 0x373c5
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30d10
callq 0x52a0
testl %ebx, %ebx
je 0x31efe
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x669a(%rip), %rsi      # 0x373d0
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30d51
callq 0x52a0
testl %ebx, %ebx
je 0x31f0e
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6673(%rip), %rsi      # 0x373ea
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30d92
callq 0x52a0
testl %ebx, %ebx
je 0x31f1e
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x663d(%rip), %rsi      # 0x373f5
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30dd3
callq 0x52a0
testl %ebx, %ebx
je 0x31f2e
movq (%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbp, %rdi
leaq 0x6609(%rip), %rsi      # 0x37402
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30e14
callq 0x52a0
testl %ebx, %ebx
je 0x31f3e
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq %rbx, %rdi
leaq 0x65d7(%rip), %rsi      # 0x3741b
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30e5f
callq 0x52a0
testl %ebx, %ebx
je 0x31f4e
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x65a0(%rip), %rsi      # 0x3742e
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30ea9
callq 0x52a0
testl %ebx, %ebx
je 0x31f7e
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6606(%rip), %rsi      # 0x374de
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30ef3
callq 0x52a0
testl %ebx, %ebx
je 0x32012
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x65ce(%rip), %rsi      # 0x374f0
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30f3d
callq 0x52a0
testl %ebx, %ebx
je 0x3204c
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6594(%rip), %rsi      # 0x37500
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30f87
callq 0x52a0
testl %ebx, %ebx
je 0x320c6
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6559(%rip), %rsi      # 0x3750f
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x30fd1
callq 0x52a0
testl %ebx, %ebx
je 0x320ed
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x651d(%rip), %rsi      # 0x3751d
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3101b
callq 0x52a0
testl %ebx, %ebx
je 0x32111
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x64ec(%rip), %rsi      # 0x37536
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31065
callq 0x52a0
testl %ebx, %ebx
je 0x32186
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x64bb(%rip), %rsi      # 0x3754f
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x310af
callq 0x52a0
testl %ebx, %ebx
je 0x321ad
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x647e(%rip), %rsi      # 0x3755c
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x310f9
callq 0x52a0
testl %ebx, %ebx
je 0x321d4
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x644a(%rip), %rsi      # 0x37572
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31143
callq 0x52a0
testl %ebx, %ebx
je 0x321fb
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6415(%rip), %rsi      # 0x37587
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3118d
callq 0x52a0
testl %ebx, %ebx
je 0x32222
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x63df(%rip), %rsi      # 0x3759b
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x311d7
callq 0x52a0
testl %ebx, %ebx
je 0x32249
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x63a4(%rip), %rsi      # 0x375aa
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31221
callq 0x52a0
testl %ebx, %ebx
je 0x32270
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x636f(%rip), %rsi      # 0x375bf
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3126b
callq 0x52a0
testl %ebx, %ebx
je 0x32297
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6334(%rip), %rsi      # 0x375ce
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x312b5
callq 0x52a0
testl %ebx, %ebx
je 0x3230c
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6304(%rip), %rsi      # 0x375e8
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x312ff
callq 0x52a0
testl %ebx, %ebx
je 0x32333
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x62ce(%rip), %rsi      # 0x375fc
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31349
callq 0x52a0
testl %ebx, %ebx
je 0x3235c
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x62a3(%rip), %rsi      # 0x3761b
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31393
callq 0x52a0
testl %ebx, %ebx
je 0x3236f
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6271(%rip), %rsi      # 0x37633
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x313dd
callq 0x52a0
testl %ebx, %ebx
je 0x32382
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6240(%rip), %rsi      # 0x3764c
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31427
callq 0x52a0
testl %ebx, %ebx
je 0x32395
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6209(%rip), %rsi      # 0x3765f
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31471
callq 0x52a0
testl %ebx, %ebx
je 0x323a8
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x61dc(%rip), %rsi      # 0x3767c
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x314bb
callq 0x52a0
testl %ebx, %ebx
je 0x323bb
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x61ad(%rip), %rsi      # 0x37697
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31505
callq 0x52a0
testl %ebx, %ebx
je 0x323ce
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x617f(%rip), %rsi      # 0x376b3
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3154f
callq 0x52a0
testl %ebx, %ebx
je 0x323e1
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6151(%rip), %rsi      # 0x376cf
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31599
callq 0x52a0
testl %ebx, %ebx
je 0x32456
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6124(%rip), %rsi      # 0x376ec
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x315e3
callq 0x52a0
testl %ebx, %ebx
je 0x32469
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x60f0(%rip), %rsi      # 0x37702
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3162d
callq 0x52a0
testl %ebx, %ebx
je 0x3247c
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x60be(%rip), %rsi      # 0x3771a
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31677
callq 0x52a0
testl %ebx, %ebx
je 0x3248f
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x608d(%rip), %rsi      # 0x37733
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x316c1
callq 0x52a0
testl %ebx, %ebx
je 0x324b6
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6061(%rip), %rsi      # 0x37751
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3170b
callq 0x52a0
testl %ebx, %ebx
je 0x324dc
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6033(%rip), %rsi      # 0x3776d
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31755
callq 0x52a0
testl %ebx, %ebx
je 0x32551
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x6010(%rip), %rsi      # 0x37794
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3179f
callq 0x52a0
testl %ebx, %ebx
je 0x32564
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5fe6(%rip), %rsi      # 0x377b4
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x317e9
callq 0x52a0
testl %ebx, %ebx
je 0x32577
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5fbf(%rip), %rsi      # 0x377d7
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31833
callq 0x52a0
testl %ebx, %ebx
je 0x3258a
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5f8d(%rip), %rsi      # 0x377ef
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3187d
callq 0x52a0
testl %ebx, %ebx
je 0x325b1
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5f5f(%rip), %rsi      # 0x3780b
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x318c7
callq 0x52a0
testl %ebx, %ebx
je 0x325d8
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5f30(%rip), %rsi      # 0x37826
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31911
callq 0x52a0
testl %ebx, %ebx
je 0x325ff
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5f00(%rip), %rsi      # 0x37840
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3195b
callq 0x52a0
testl %ebx, %ebx
je 0x32612
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5ecd(%rip), %rsi      # 0x37857
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x319a5
callq 0x52a0
testl %ebx, %ebx
je 0x32639
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5e98(%rip), %rsi      # 0x3786c
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x319ef
callq 0x52a0
testl %ebx, %ebx
je 0x32660
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5e6a(%rip), %rsi      # 0x37888
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31a39
callq 0x52a0
testl %ebx, %ebx
je 0x326a5
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5e32(%rip), %rsi      # 0x3789a
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31a83
callq 0x52a0
testl %ebx, %ebx
je 0x326dc
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x5dfb(%rip), %rsi      # 0x378ad
callq 0x50f0
movl %eax, %ebx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31acd
callq 0x52a0
testl %ebx, %ebx
je 0x326ef
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
cmpb $0x2d, (%rsi)
jne 0x31aed
cmpb $0x2d, 0x1(%rsi)
je 0x33013
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x130(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x3029a
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31f5c
callq 0x52a0
jmp 0x31f5c
movq 0x8(%r14,%r12,8), %rsi
movq %rbp, %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq 0x120(%rsp), %rdi
movq %rbp, %rsi
callq 0x53e0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31b67
callq 0x52a0
movl 0x40(%rsp), %ebx
incl %ebx
jmp 0x31f6a
movq 0x8(%r14,%r12,8), %rsi
leaq 0x2a8(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rdx
callq 0x5140
leaq 0xe8(%rsp), %rdi
movq %rbx, %rsi
movl $0x2c, %edx
callq 0x2e5ac
movb %r13b, 0xe7(%rsp)
movq 0x2a8(%rsp), %rdi
leaq 0x2b8(%rsp), %rax
cmpq %rax, %rdi
je 0x31bc1
callq 0x52a0
movq 0xe8(%rsp), %r15
movq 0xf0(%rsp), %r14
cmpq %r14, %r15
je 0x31cb5
leaq 0x58(%rsp), %rax
movq %rax, 0x48(%rsp)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0xcc1c
leaq 0x14323(%rip), %rdi     # 0x45f20
movq %rbp, %r13
movq %rbp, %rsi
callq 0x182c0
movq %rax, %r12
leaq 0x1430e(%rip), %rax     # 0x45f20
leaq 0x8(%rax), %rbp
cmpq %rbp, %r12
je 0x31c30
leaq 0x1432e(%rip), %rax     # 0x45f50
leaq 0x8(%rax), %rdi
movq %r13, %rsi
callq 0x33ab8
jmp 0x31c88
movl $0x23, %edx
movq 0x13394(%rip), %rdi     # 0x44fd0
leaq 0x5678(%rip), %rsi      # 0x372bb
callq 0x5350
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x13377(%rip), %rdi     # 0x44fd0
callq 0x5350
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x52b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5030
movq %rax, %rdi
callq 0x51f0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x31c9c
callq 0x52a0
cmpq %rbp, %r12
je 0x32730
addq $0x20, %r15
cmpq %r14, %r15
movq %r13, %rbp
jne 0x31bda
movl 0x40(%rsp), %ebx
incl %ebx
leaq 0xe8(%rsp), %rdi
callq 0xc830
movl 0x128(%rsp), %r15d
movq 0x38(%rsp), %r14
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x1425f(%rip), %rcx     # 0x45f50
movl %eax, 0x3c(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x14240(%rip), %rcx     # 0x45f50
movl %eax, 0xac(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x1421e(%rip), %rcx     # 0x45f50
movl %eax, 0xb0(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x141fc(%rip), %rcx     # 0x45f50
movl %eax, 0xa0(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x141da(%rip), %rcx     # 0x45f50
movl %eax, 0x38(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x141bb(%rip), %rcx     # 0x45f50
movl %eax, 0x40(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x53f0
cvtsd2ss %xmm0, %xmm0
leaq 0x14198(%rip), %rax     # 0x45f50
movss %xmm0, 0xe0(%rax)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x14174(%rip), %rcx     # 0x45f50
movl %eax, 0xc0(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x14152(%rip), %rcx     # 0x45f50
movl %eax, 0xc4(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x14130(%rip), %rcx     # 0x45f50
movl %eax, 0xbc(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x1410e(%rip), %rcx     # 0x45f50
movl %eax, 0xb8(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x140ec(%rip), %rcx     # 0x45f50
movl %eax, 0x44(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x140cd(%rip), %rcx     # 0x45f50
movl %eax, 0x9c(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x140ab(%rip), %rcx     # 0x45f50
movl %eax, 0x48(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x1408c(%rip), %rcx     # 0x45f50
movl %eax, 0x8c(%rcx)
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x1406a(%rip), %rcx     # 0x45f50
movl %eax, 0x90(%rcx)
jmp 0x31f6a
leaq 0x1405b(%rip), %rax     # 0x45f50
movb $0x1, 0x8b(%rax)
jmp 0x31f66
leaq 0x1404b(%rip), %rax     # 0x45f50
movb $0x1, 0x89(%rax)
jmp 0x31f66
leaq 0x1403b(%rip), %rax     # 0x45f50
movb $0x1, 0x95(%rax)
jmp 0x31f66
leaq 0x1402b(%rip), %rax     # 0x45f50
movb $0x1, 0xa8(%rax)
jmp 0x31f66
leaq 0x1401b(%rip), %rax     # 0x45f50
movb $0x1, 0xa9(%rax)
jmp 0x31f66
leaq 0x1400b(%rip), %rax     # 0x45f50
movb $0x1, 0x88(%rax)
jmp 0x31f5c
leaq 0x13ffb(%rip), %rax     # 0x45f50
movb $0x1, 0x94(%rax)
movq 0x38(%rsp), %r14
leaq 0x48(%rsp), %rbp
movl 0x40(%rsp), %ebx
incl %ebx
cmpl %r15d, %ebx
setl %r13b
jl 0x307fd
jmp 0x32751
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0xe8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x5140
leaq 0xe8(%rsp), %rdi
leaq 0x549b(%rip), %rsi      # 0x37444
callq 0x50f0
testl %eax, %eax
je 0x31fce
leaq 0xe8(%rsp), %rdi
leaq 0x548a(%rip), %rsi      # 0x3744b
callq 0x50f0
testl %eax, %eax
jne 0x33076
leaq 0xe8(%rsp), %rdi
leaq 0x5467(%rip), %rsi      # 0x37444
callq 0x50f0
testl %eax, %eax
je 0x32070
leaq 0xe8(%rsp), %rdi
leaq 0x5452(%rip), %rsi      # 0x3744b
callq 0x50f0
testl %eax, %eax
jne 0x32097
leaq 0x48(%rsp), %rdi
callq 0x33934
jmp 0x3207a
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq 0x1c0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x53e0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
jmp 0x320a7
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13ee8(%rip), %rcx     # 0x45f50
movl %eax, 0xc8(%rcx)
jmp 0x320bc
leaq 0x48(%rsp), %rdi
callq 0x2fc6c
movq 0x168(%rsp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x338fc
movq %rbx, %rdi
callq 0xc800
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x320b1
callq 0x52a0
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
leaq 0x48(%rsp), %rbp
jmp 0x31f6a
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
cltq
leaq 0x13e6c(%rip), %rcx     # 0x45f50
movq %rax, 0xd0(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13e47(%rip), %rcx     # 0x45f50
movl %eax, 0xd8(%rcx)
jmp 0x320bc
movq 0x160(%rsp), %rdi
callq 0x33a3a
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0x268(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x268(%rsp), %rsi
movl $0x2c, %edx
callq 0x2e5ac
movq 0x160(%rsp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x33aee
movq %rbx, %rdi
callq 0xc830
movq 0x268(%rsp), %rdi
leaq 0x278(%rsp), %rax
jmp 0x320a7
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13dae(%rip), %rcx     # 0x45f50
movl %eax, 0x1b0(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13d87(%rip), %rcx     # 0x45f50
movl %eax, 0x1e8(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13d60(%rip), %rcx     # 0x45f50
movl %eax, 0x1f0(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13d39(%rip), %rcx     # 0x45f50
movl %eax, 0x1f4(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13d12(%rip), %rcx     # 0x45f50
movl %eax, 0x1f8(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13ceb(%rip), %rcx     # 0x45f50
movl %eax, 0x1fc(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13cc4(%rip), %rcx     # 0x45f50
movl %eax, 0x1ec(%rcx)
jmp 0x320bc
movq 0x158(%rsp), %rdi
callq 0x33a3a
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0x248(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x248(%rsp), %rsi
movl $0x2c, %edx
callq 0x2e5ac
movq 0x158(%rsp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x33aee
movq %rbx, %rdi
callq 0xc830
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
jmp 0x320a7
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13c28(%rip), %rcx     # 0x45f50
movl %eax, 0x228(%rcx)
jmp 0x320bc
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq 0x1b8(%rsp), %rdi
jmp 0x32036
leaq 0x13bed(%rip), %rax     # 0x45f50
movb $0x1, 0x220(%rax)
jmp 0x31f5c
leaq 0x13bda(%rip), %rax     # 0x45f50
movb $0x1, 0x225(%rax)
jmp 0x31f5c
leaq 0x13bc7(%rip), %rax     # 0x45f50
movb $0x1, 0x221(%rax)
jmp 0x31f5c
leaq 0x13bb4(%rip), %rax     # 0x45f50
movb $0x1, 0x226(%rax)
jmp 0x31f5c
leaq 0x13ba1(%rip), %rax     # 0x45f50
movb $0x1, 0x222(%rax)
jmp 0x31f5c
leaq 0x13b8e(%rip), %rax     # 0x45f50
movb $0x1, 0x223(%rax)
jmp 0x31f5c
leaq 0x13b7b(%rip), %rax     # 0x45f50
movb $0x1, 0x224(%rax)
jmp 0x31f5c
movq 0x150(%rsp), %rdi
callq 0x33a3a
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0x228(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x228(%rsp), %rsi
movl $0x2c, %edx
callq 0x2e5ac
movq 0x150(%rsp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x33aee
movq %rbx, %rdi
callq 0xc830
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
jmp 0x320a7
leaq 0x13af3(%rip), %rax     # 0x45f50
movb $0x1, 0x1cc(%rax)
jmp 0x31f5c
leaq 0x13ae0(%rip), %rax     # 0x45f50
movb $0x1, 0x1ce(%rax)
jmp 0x31f5c
leaq 0x13acd(%rip), %rax     # 0x45f50
movb $0x1, 0x158(%rax)
jmp 0x31f5c
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13aa5(%rip), %rcx     # 0x45f50
movl %eax, 0x1b8(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq (%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13a7f(%rip), %rcx     # 0x45f50
movl %eax, 0x248(%rcx)
jmp 0x320bc
movq 0x148(%rsp), %rdi
callq 0x33a3a
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0x208(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
leaq 0x48(%rsp), %rdi
leaq 0x208(%rsp), %rsi
movl $0x2c, %edx
callq 0x2e5ac
movq 0x148(%rsp), %rdi
leaq 0x48(%rsp), %rbx
movq %rbx, %rsi
callq 0x33aee
movq %rbx, %rdi
callq 0xc830
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
jmp 0x320a7
leaq 0x139f8(%rip), %rax     # 0x45f50
movb $0x1, 0x24d(%rax)
jmp 0x31f5c
leaq 0x139e5(%rip), %rax     # 0x45f50
movb $0x1, 0x24c(%rax)
jmp 0x31f5c
leaq 0x139d2(%rip), %rax     # 0x45f50
movb $0x1, 0x24e(%rax)
jmp 0x31f5c
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x139aa(%rip), %rcx     # 0x45f50
movl %eax, 0x1bc(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13983(%rip), %rcx     # 0x45f50
movl %eax, 0x1c0(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x1395c(%rip), %rcx     # 0x45f50
movl %eax, 0x1c4(%rcx)
jmp 0x320bc
leaq 0x1394a(%rip), %rax     # 0x45f50
movb $0x1, 0x1cd(%rax)
jmp 0x31f5c
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x13922(%rip), %rcx     # 0x45f50
movl %eax, 0x150(%rcx)
jmp 0x320bc
movl 0x40(%rsp), %ebx
incl %ebx
movq 0x38(%rsp), %r14
movq 0x8(%r14,%r12,8), %rdi
callq 0x54c0
leaq 0x138fb(%rip), %rcx     # 0x45f50
movl %eax, 0x154(%rcx)
jmp 0x320bc
leaq 0x138e9(%rip), %rax     # 0x45f50
movb $0x1, 0xb4(%rax)
movl $0x10, %edx
movq 0x12956(%rip), %rdi     # 0x44fd0
leaq 0x51f6(%rip), %rsi      # 0x37877
callq 0x5350
movq 0x38(%rsp), %r14
leaq 0x48(%rsp), %rbp
movl 0x40(%rsp), %ebx
movq 0x12935(%rip), %rdi     # 0x44fd0
callq 0x5180
jmp 0x31f6a
leaq 0x138a4(%rip), %rax     # 0x45f50
movb $0x1, 0x159(%rax)
movq 0x38(%rsp), %rax
movq 0x8(%rax,%r12,8), %rsi
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x5140
movq 0x1b0(%rsp), %rdi
jmp 0x32036
leaq 0x1386d(%rip), %rax     # 0x45f50
movb $0x1, 0x15a(%rax)
jmp 0x31f5c
movl $0xd, %edx
movq 0x128d5(%rip), %rdi     # 0x44fd0
leaq 0x51b9(%rip), %rsi      # 0x378bb
callq 0x5350
movq 0x38(%rsp), %r14
leaq 0x48(%rsp), %rbp
movl 0x40(%rsp), %ebx
movq 0x128b4(%rip), %rdi     # 0x44fd0
callq 0x5180
leaq 0x13828(%rip), %rax     # 0x45f50
movb $0x1, (%rax)
jmp 0x31f6a
leaq 0xe8(%rsp), %rdi
callq 0xc830
movl 0x128(%rsp), %r15d
xorl %ebx, %ebx
movb 0xe7(%rsp), %r13b
jmp 0x32753
xorl %ebx, %ebx
testb $0x1, %r13b
jne 0x32fd3
leaq 0x137ec(%rip), %rbx     # 0x45f50
leaq 0x68(%rbx), %r14
leaq 0x30ca(%rip), %rsi      # 0x35839
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x327c6
leaq 0x49b5(%rip), %rsi      # 0x37137
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x327d1
leaq 0x30ad(%rip), %rsi      # 0x35842
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x327e3
leaq 0x3095(%rip), %rsi      # 0x3583d
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
leaq 0x13797(%rip), %rbx     # 0x45f50
jne 0x327fa
movw $0x100, 0xa8(%rbx)      # imm = 0x100
jmp 0x327fa
movw $0x0, 0xa8(%rbx)
jmp 0x327fa
leaq 0x13778(%rip), %rbx     # 0x45f50
movw $0x101, 0xa8(%rbx)      # imm = 0x101
jmp 0x327fa
leaq 0x13766(%rip), %rbx     # 0x45f50
movw $0x101, 0xa8(%rbx)      # imm = 0x101
movb $0x1, 0x158(%rbx)
cmpl $0x0, 0x40(%rbx)
je 0x3280d
leaq 0x13749(%rip), %rax     # 0x45f50
cmpl $0x0, 0x38(%rax)
jne 0x32855
leaq 0x301a(%rip), %rsi      # 0x3582e
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x32855
leaq 0x50c5(%rip), %rsi      # 0x378ec
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x32855
leaq 0x13716(%rip), %rax     # 0x45f50
movq 0x70(%rax), %rdx
leaq 0x2b59(%rip), %rcx      # 0x3539e
movl $0x3, %r8d
movq %r14, %rdi
xorl %esi, %esi
callq 0x54b0
movq 0x130(%rsp), %rax
cmpq %rax, 0x138(%rsp)
je 0x328a8
movl $0x1, %ebx
xorl %esi, %esi
leaq 0x136db(%rip), %rcx     # 0x45f50
leaq 0x50(%rcx), %r14
shlq $0x5, %rsi
addq %rax, %rsi
movq %r14, %rdi
callq 0x2fbda
movl %ebx, %esi
movq 0x130(%rsp), %rax
movq 0x138(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
incl %ebx
cmpq %rsi, %rcx
ja 0x32879
cmpl $0x1, %r15d
leaq 0x1369d(%rip), %r15     # 0x45f50
jne 0x328f3
leaq 0x58(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x502f(%rip), %rsi      # 0x378f4
leaq 0x506d(%rip), %rdx      # 0x37939
leaq 0x48(%rsp), %rdi
callq 0xccac
leaq 0x50(%r15), %rdi
leaq 0x48(%rsp), %rsi
callq 0x3029a
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x328f3
callq 0x52a0
leaq 0xac6(%rip), %rax       # 0x333c0
leaq 0x50(%rsp), %rbx
movq %rax, -0x8(%rbx)
movq %rbx, %rdi
callq 0x5400
movl $0x0, 0x80(%rbx)
leaq 0x48(%rsp), %rsi
movl $0x2, %edi
xorl %edx, %edx
callq 0x5410
movq 0x126a3(%rip), %rdi     # 0x44fd0
leaq 0x5006(%rip), %rsi      # 0x3793a
movl $0x1a, %edx
callq 0x5350
movq 0x58(%r15), %rsi
subq 0x50(%r15), %rsi
sarq $0x5, %rsi
movq 0x1267f(%rip), %rdi     # 0x44fd0
callq 0x51e0
movq %rax, %rbx
leaq 0x4ff5(%rip), %rsi      # 0x37955
movl $0xe, %edx
movq %rax, %rdi
callq 0x5350
movq 0x68(%r15), %rsi
movq 0x70(%r15), %rdx
movq %rbx, %rdi
callq 0x5350
movq %rax, %rbx
leaq 0x4fdd(%rip), %rsi      # 0x37964
movl $0x11, %edx
movq %rax, %rdi
callq 0x5350
movl 0x3c(%r15), %esi
movq %rbx, %rdi
callq 0x5580
movq %rax, %rbx
leaq 0x4fcc(%rip), %rsi      # 0x37976
movl $0x8, %edx
movq %rax, %rdi
callq 0x5350
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x52b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5030
movq %rax, %rdi
callq 0x51f0
movl $0xa0, %edi
callq 0x52e0
movq %rax, %r14
movq %r15, %rbx
leaq 0x298(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x68(%rbx), %rsi
movq 0x70(%rbx), %rdx
addq %rsi, %rdx
leaq 0x288(%rsp), %rdi
callq 0xcc1c
movl 0x3c(%rbx), %edx
leaq 0x288(%rsp), %rsi
movq %r14, %rdi
callq 0x16762
movq %r14, 0x1378c(%rip)     # 0x461b8
movq 0x288(%rsp), %rdi
cmpq %r15, %rdi
je 0x32a3e
callq 0x52a0
movq 0x1258b(%rip), %rbx     # 0x44fd0
leaq 0x4f33(%rip), %rsi      # 0x3797f
movl $0x12, %edx
movq %rbx, %rdi
callq 0x5350
leaq 0x134f0(%rip), %r14     # 0x45f50
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x52b0
movsbl %al, %esi
movq 0x12552(%rip), %rbx     # 0x44fd0
movq %rbx, %rdi
callq 0x5030
movq %rax, %rdi
callq 0x51f0
movq 0x50(%r14), %rbp
movq 0x58(%r14), %r12
cmpq %r12, %rbp
je 0x32b43
leaq 0xf8(%rsp), %r14
movq 0x12522(%rip), %r15     # 0x44fd0
movq %r14, 0xe8(%rsp)
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0xcc1c
movl $0x4, %edx
movq %r15, %rdi
leaq 0x4eb5(%rip), %rsi      # 0x37992
callq 0x5350
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq %r15, %rdi
callq 0x5350
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x52b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x5030
movq %rax, %rdi
callq 0x51f0
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
je 0x32b36
callq 0x52a0
addq $0x20, %rbp
cmpq %r12, %rbp
jne 0x32aae
leaq 0x1a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x3126(%rip), %rdx      # 0x35c7c
leaq 0x190(%rsp), %rdi
movq %rdx, %rsi
callq 0xccac
leaq 0x133e3(%rip), %rax     # 0x45f50
movq 0x50(%rax), %r13
movq 0x58(%rax), %rcx
movq %rcx, 0x128(%rsp)
cmpq %rcx, %r13
je 0x32f76
leaq 0x1f8(%rsp), %rbp
leaq 0x1c8(%rsp), %r14
leaq 0x8(%rax), %r15
movl $0x0, 0x120(%rsp)
leaq 0x180(%rsp), %rax
movq %rax, 0x170(%rsp)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x170(%rsp), %rdi
callq 0xcc1c
movl $0x10, %edx
movq %rbx, %rdi
leaq 0x4dbb(%rip), %rsi      # 0x37997
callq 0x5350
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq %rbx, %rdi
callq 0x5350
movq %rax, %r12
movl $0x5, %edx
movq %rax, %rdi
leaq 0x4cdb(%rip), %rsi      # 0x378e6
callq 0x5350
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x52b0
movsbl %al, %esi
movq %r12, %rdi
callq 0x5030
movq %rax, %rdi
callq 0x51f0
movq %rbp, 0x1e8(%rsp)
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e8(%rsp), %r12
movq %r12, %rdi
callq 0xcc1c
movq %r12, %rdi
callq 0x1f65d
movq %rax, %r12
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x32c80
callq 0x52a0
testq %r12, %r12
je 0x32ff4
movq %r13, 0x40(%rsp)
xorl %eax, %eax
movq %rax, 0xe8(%rsp)
movl $0x0, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
movq $0x2, 0x104(%rsp)
movb $0x0, 0x110(%rsp)
movq 0x134f2(%rip), %rdi     # 0x461b8
callq 0x16ca0
movq 0x134e6(%rip), %rdi     # 0x461b8
callq 0x16ce6
movl $0x1, %ebp
movq (%r12), %rax
movq %r12, %rdi
leaq 0xe8(%rsp), %rsi
callq *(%rax)
testb %al, %al
je 0x32efb
leaq 0x1321c(%rip), %rdx     # 0x45f18
movq (%rdx), %rax
leaq 0x1(%rax), %rcx
movabsq $0x38c6be102007673d, %rsi # imm = 0x38C6BE102007673D
imulq %rsi, %rax
rorq %rax
movabsq $0x101b2b34736, %rsi    # imm = 0x101B2B34736
cmpq %rsi, %rax
seta %al
movq %rcx, (%rdx)
cmpq $0x1dcd6500, %rcx       # imm = 0x1DCD6500
setne %cl
testb %cl, %al
jne 0x32e45
movl $0x16, %edx
movq %rbx, %rdi
leaq 0x4c75(%rip), %rsi      # 0x379bd
callq 0x5350
movq (%rbx), %rax
movq -0x18(%rax), %rcx
movl 0x18(%rbx,%rcx), %edx
movl $0xffffff4f, %esi       # imm = 0xFFFFFF4F
andl %esi, %edx
orl $0x20, %edx
movl %edx, 0x18(%rbx,%rcx)
movq -0x18(%rax), %rcx
movq $0x1e, 0x10(%rbx,%rcx)
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r13
cmpb $0x0, 0xe1(%rbx,%rax)
jne 0x32da1
movq %r13, %rdi
movl $0x20, %esi
callq 0x52b0
movb %al, 0xe0(%r13)
movb $0x1, 0xe1(%r13)
movb $0x20, 0xe0(%r13)
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq %rbx, %rdi
callq 0x5350
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
leaq 0x4c01(%rip), %rsi      # 0x379d4
callq 0x5350
movq (%r13), %rax
movq -0x18(%rax), %rax
movq $0x2, 0x10(%r13,%rax)
imulq $0x64, 0x198(%rsp), %rax
movabsq $-0x7777777777777777, %rcx # imm = 0x8888888888888889
mulq %rcx
shrq $0x4, %rdx
movq %r13, %rdi
movq %rdx, %rsi
callq 0x51e0
movl $0x2, %edx
movq %rax, %rdi
leaq 0x4bba(%rip), %rsi      # 0x379d7
callq 0x5350
movq 0x1215f(%rip), %rax     # 0x44f88
movq (%rax), %rdi
callq 0x5380
leaq 0x190(%rsp), %rdi
leaq 0x4b9a(%rip), %rsi      # 0x379da
callq 0x55f0
movq 0x1336c(%rip), %rdi     # 0x461b8
movq 0x118(%rsp), %rax
movq %rax, 0x30(%rsp)
movups 0xe8(%rsp), %xmm0
movups 0xf8(%rsp), %xmm1
movups 0x108(%rsp), %xmm2
movups %xmm2, 0x20(%rsp)
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
callq 0x178b0
leaq 0x1d8(%rsp), %rax
movq %rax, 0x1c8(%rsp)
movq %r14, %rdi
leaq 0x2a07(%rip), %rsi      # 0x358a5
leaq 0x2a0a(%rip), %rdx      # 0x358af
callq 0xccac
movq %r15, %rdi
movq %r14, %rsi
callq 0x182c0
movq %rax, %r13
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x32ed2
callq 0x52a0
leaq 0x13077(%rip), %rax     # 0x45f50
addq $0x10, %rax
cmpq %rax, %r13
je 0x32ef3
leaq 0x4af3(%rip), %rdi      # 0x379dc
movq %rbp, %rsi
xorl %eax, %eax
callq 0x5050
incq %rbp
jmp 0x32cdc
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x52b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5030
movq %rax, %rdi
callq 0x51f0
movq (%r12), %rax
movq %r12, %rdi
callq *0x10(%rax)
movq %r12, %rdi
callq 0x53c0
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
movq 0x40(%rsp), %r13
leaq 0x1f8(%rsp), %rbp
je 0x32f5b
callq 0x52a0
incl 0x120(%rsp)
addq $0x20, %r13
cmpq 0x128(%rsp), %r13
jne 0x32ba5
jmp 0x32f81
movl $0x0, 0x120(%rsp)
movq 0x13230(%rip), %rdi     # 0x461b8
callq 0x1763e
xorl %edi, %edi
movl 0x120(%rsp), %esi
callq 0x333fd
movq 0x13216(%rip), %rbx     # 0x461b8
testq %rbx, %rbx
je 0x32fb7
movq %rbx, %rdi
callq 0x16c20
movq %rbx, %rdi
callq 0x52a0
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x32fd1
callq 0x52a0
xorl %ebx, %ebx
leaq 0x130(%rsp), %rdi
callq 0xc830
movl %ebx, %eax
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x49ad(%rip), %rdi      # 0x379a8
leaq 0x44b9(%rip), %rsi      # 0x374bb
leaq 0x44be(%rip), %rcx      # 0x374c7
movl $0x178, %edx            # imm = 0x178
callq 0x51d0
movq 0x11fb6(%rip), %rdi     # 0x44fd0
leaq 0x48a8(%rip), %rsi      # 0x378c9
movl $0x15, %edx
callq 0x5350
movq 0x38(%rsp), %rax
movq (%rax,%r12,8), %rsi
movq 0x11f95(%rip), %rdi     # 0x44fd0
callq 0x52c0
movq %rax, %rdi
callq 0x5180
movq 0x11f81(%rip), %rdi     # 0x44fd0
leaq 0x4889(%rip), %rsi      # 0x378df
movl $0xc, %edx
callq 0x5350
movl $0x1, %ebx
movq 0x11f64(%rip), %rdi     # 0x44fd0
callq 0x5180
jmp 0x32753
leaq 0x43d3(%rip), %rdi      # 0x37450
leaq 0x4437(%rip), %rsi      # 0x374bb
leaq 0x443c(%rip), %rcx      # 0x374c7
movl $0x97, %edx
callq 0x51d0
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
movq %rax, %rbx
movq 0x208(%rsp), %rdi
leaq 0x218(%rsp), %rax
jmp 0x333a1
jmp 0x3330a
movq %rax, %rbx
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
jmp 0x333a1
jmp 0x3330a
jmp 0x3330a
movq %rax, %rbx
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
jmp 0x333a1
jmp 0x3330a
movq %rax, %rbx
movq 0x268(%rsp), %rdi
leaq 0x278(%rsp), %rax
jmp 0x333a1
jmp 0x3330a
jmp 0x33124
jmp 0x3330a
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
jmp 0x333a1
jmp 0x3330a
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
jmp 0x333a1
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
movq %rax, %rbx
movq 0x48(%rsp), %rdi
jmp 0x33348
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
movq %rax, %rbx
movq 0x288(%rsp), %rdi
cmpq %r15, %rdi
je 0x332b8
callq 0x52a0
jmp 0x332b8
movq %rax, %rbx
movq %r14, %rdi
jmp 0x333a6
jmp 0x3330a
jmp 0x332ec
jmp 0x3330a
movq %rax, %rbx
movq 0x2a8(%rsp), %rdi
leaq 0x2b8(%rsp), %rax
jmp 0x333a1
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
jmp 0x3330a
movq %rax, %rbx
jmp 0x33391
jmp 0x33374
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %rbp, %rdi
jne 0x3336b
jmp 0x33377
jmp 0x3330a
movq %rax, %rbx
jmp 0x333ab
movq %rax, %rbx
jmp 0x3332e
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3332e
callq 0x52a0
leaq 0xe8(%rsp), %rdi
callq 0xc830
jmp 0x333ab
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x333a6
jmp 0x333ab
jmp 0x33374
jmp 0x33374
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x33377
callq 0x52a0
jmp 0x33377
jmp 0x33374
movq %rax, %rbx
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x33391
callq 0x52a0
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0x333ab
callq 0x52a0
leaq 0x130(%rsp), %rdi
callq 0xc830
movq %rbx, %rdi
callq 0x55a0