// File: /workspace/github_cpp_makefile_star2_O2/neubig[P]egret/Egret/src/Main.cpp
// Function: main
int main(int argc, char *argv[])
{
	JKArgs args(argc,argv);
	//seconds=time(NULL);
	bitime=0;
	unatime=0;
	setutime=0;
	qutime=0;
	inbitime=0;
	initime=0;
	alltime=0;

	alltime=clock();
	if(args.is_set("debug"))dlevel=atoi(args.value("debug").c_str());
	if(!(args.is_set("pcfg")||args.is_set("io")||args.is_set("lapcfg")))
		usage();

	if(args.is_set("unary_fine"))unary_fine=atoi(args.value("unary_fine").c_str());
	if(args.is_set("pcfg"))
	{
		if(!(args.is_set("g")&&args.is_set("i")))usage();
		ifstream ruleStream(args.value("g").c_str());
		cerr<<"load rule"<<endl;
		RuleSet ruleSet(ruleStream);
		cerr<<"done"<<endl;
		ruleSet.print(cout);
		ifstream textStream(args.value("i").c_str());
		if(!textStream.good())usage();
		int nbest=1;
		if(args.is_set("n")) 
			nbest=atoi(args.value("n").c_str());
		int dlevel=0;
		if(args.is_set("debug"))
			dlevel=atoi(args.value("debug").c_str());

		int count=0;
		while(!textStream.eof())
		{
			++count;
			string curline;
			getline(textStream, curline);
			if(curline=="")continue;
			
			vector<Tree*> trees;
			Forest forest(curline);
			forest.viterbi(ruleSet);
			if(nbest>1)
			{
				cout<<"sentence "<<count<<": \n"<<curline<<endl;
				cout<<nbest<<" best:"<<endl;
			}
			//forest.print_hyperedges(cout);
			forest.genTrees(nbest,trees);
			for(int i=0;(size_t)i<trees.size();i++)
			{
				//if(!args.is_set("interNode"))
				//	trees[i]->delInterNode();
				if(dlevel>0)
					trees[i]->print(cout);
				else
					trees[i]->tinyPrint(cout);
				trees[i]->destroy();
			}
		}
	}
	else if(args.is_set("io"))
	{
		//alltime=clock();
		if(!(args.is_set("g")&&args.is_set("i")))usage();
		ifstream ruleStream(args.value("g").c_str());
		RuleSet ruleSet(ruleStream);
		//ruleSet.print(cout);

		int nbest=1;

		int dlevel=0;
		if(args.is_set("debug"))
			dlevel=atoi(args.value("debug").c_str());
		int pass=1;
		if(args.is_set("pass"))
			pass=atoi(args.value("pass").c_str());
		double threshold=0;
		if(args.is_set("threshold"))
			threshold=atof(args.value("threshold").c_str());

		ERSet erSet;
		for(int i=0;i<pass;i++)
		{
			if(dlevel)
			{
				cout<<"pass:"<<i<<endl;
				ruleSet.print(cout);
				cout<<endl;
			}
			erSet.clear();
			int count=0;
			ifstream textStream(args.value("i").c_str());
			if((!textStream.good())||textStream.eof())usage();
			while(!textStream.eof())
			{
				string curline;
				getline(textStream, curline);
				if(curline=="")continue;
				//cerr<<count++<<":"<<curline<<endl;
				vector<Tree*> trees;
				Forest forest(curline);
				forest.io(ruleSet,erSet);
			}
			ruleSet.clear();
			erSet.thresholding(threshold);
			erSet.makeRuleSet(ruleSet);

			textStream.close();
		}
		cerr<<"new grammar generated!"<<endl;
		erSet.print(cout);
	}
	else if(args.is_set("lapcfg"))
	{
		if(!args.is_set("i"))usage();

		string grammar_directory="chn_grammar";
		if(args.is_set("data"))
			grammar_directory=args.value("data");
#ifdef WIN32
		grammar_directory+="\\level";
#else
		grammar_directory+="/level";
#endif
		int level=6;
		if(args.is_set("grammarLevel"))
			level=atoi(args.value("grammarLevel").c_str())+1;
		BerkeleyRuleSets ruleSets;
		ruleSets.init(grammar_directory,level);
		loading_time+=clock()-alltime;
		ifstream textStream(args.value("i").c_str());
		if(!textStream.good())usage();
		int nbest=1;
		if(args.is_set("n")) 
			nbest=atoi(args.value("n").c_str());
		int dlevel=0;
		if(args.is_set("debug"))
			dlevel=atoi(args.value("debug").c_str());

		ObjectFunctionType oft=MAX_RULE_PRODUCT;
		if(args.is_set("oft"))
			oft=string2oft(args.value("oft"));

		//cerr<<"rule loaded!"<<endl;
		for(int i=0;(size_t)i<ruleSets.size();i++)
		{
		//	ruleSets[i].save(intToString(i)+".temp");
		}		

		int start=0;
		double stop=1E10;
		if(args.is_set("range"))
		{
			string range=args.value("range");
			start=atoi(range.substr(0,range.find("-")).c_str());
			stop=atof(range.substr(range.find("-")+1).c_str());
			cerr<<"start:"<<start<<",stop:"<<stop<<endl;
		}

		int count=0;
		while(!textStream.eof())
		{
			cerr<<++count<<endl;
			//getchar();
			string curline;
			getline(textStream, curline);
			if(curline=="")continue;
			if(count<start)continue;
			if(count>stop)break;

			vector<Tree*> trees;
			Forest forest(curline);
			forest.berkeley_viterbi_coarse2fine(ruleSets,oft);

			string rootSymbol="ROOT";
			
			if(args.is_set("printForest"))
			{

				if(forest.topS(rootSymbol)==NULL)
				{
					cerr<<"parse failed!"<<endl;
					cout<<"sentence "<<count<<" :"<<endl;
					cout<<curline<<endl;
					cout<<"\n"<<endl;
					continue;
				}

				forest.io_afterParse(rootSymbol,MAX);
				//cerr<<"finished viterbi io"<<endl;
				double threshold=10;
				int nbest4threshold=100;

				if(args.is_set("threshold"))
					threshold=atof(args.value("threshold").c_str());
				else 
				{	
					if(args.is_set("nbest4threshold"))
						nbest4threshold=atoi(args.value("nbest4threshold").c_str());
					//cerr<<"computing threshold:"<<endl;
					double bestscore,lastscore;
					bestscore=lastscore=0;
					if(forest.topS(rootSymbol)!=NULL)
					{
						forest.topS(rootSymbol)->getNthBest(1,bestscore);
						lastscore=bestscore;
						forest.topS(rootSymbol)->getNthBest(nbest4threshold,lastscore);		
						threshold=bestscore-lastscore;
					}
				}
				if(threshold>0)
				{
					cerr<<"threshold : "<<threshold<<endl;
					forest.prune(rootSymbol,threshold);
					//cerr<<"finished prune"<<endl;
				}
				forest.replace_interLabel(Berkeley);
				
				cout<<"sentence "<<count<<" :"<<endl;
				cout<<curline<<endl;
				forest.print_hyperedges(cout);
				cout<<endl;
				continue;
			}

			if(nbest>1)
			{
				cout<<"sentence "<<count<<": \n"<<curline<<endl;
				cout<<nbest<<" best:"<<endl;
			}
			if(oft==NONE)
				forest.genTrees(nbest,trees,"ROOT_0");
			else
				forest.genTrees(nbest,trees,"ROOT");

			if(trees.size()==0)
				cout<<"(())"<<endl;
			else
			for(int i=0;(size_t)i<trees.size();i++)
			{
				//trees[i]->tinyPrint(cout);
				//	cout<<endl;
				if(!args.is_set("interNode"))
					trees[i]->delInterNode();
				if(dlevel>0)
				{
					trees[i]->print(cout);
					cout<<endl;
				}
				else
				{
					trees[i]->tinyPrint(cout);
					cout<<endl;
				}
				trees[i]->destroy();
			}
			
		}	
		alltime=clock()-alltime;
		//seconds=time(NULL)-seconds;
		cerr<<"all time:"<<(double)alltime/CLOCKS_PER_SEC<<"s"<<endl;
		cerr<<"rule loading time:"<<(double)loading_time/CLOCKS_PER_SEC<<"s"<<endl<<endl;

		cerr<<"init binary rule time:"<<(double)init_bitime/CLOCKS_PER_SEC<<"s"<<endl;
		cerr<<"init unary rule time:"<<(double)init_unatime/CLOCKS_PER_SEC<<"s"<<endl<<endl;

		cerr<<"middle binary rule time:"<<(double)bitime/CLOCKS_PER_SEC<<"s"<<endl;
		cerr<<"middle unary rule time"<<(double)unatime/CLOCKS_PER_SEC<<"s"<<endl<<endl;

		cerr<<"final binary rule time:"<<(double)final_bitime/CLOCKS_PER_SEC<<"s"<<endl;
		cerr<<"final unary rule time"<<(double)final_unatime/CLOCKS_PER_SEC<<"s"<<endl<<endl;
		
		cerr<<"set unary node time:"<<(double)setutime/CLOCKS_PER_SEC<<"s"<<endl;
		cerr<<"query time:"<<(double)qutime/CLOCKS_PER_SEC<<"s"<<endl;
		cerr<<"inside binart rule time:"<<(double)inbitime/CLOCKS_PER_SEC<<"s"<<endl;
		cerr<<"init time:"<<(double)initime/CLOCKS_PER_SEC<<"s"<<endl;
	}
	
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd58, %rsp            # imm = 0xD58
movq %rsi, %rdx
movl %edi, %esi
leaq 0x20(%rsp), %rdi
callq 0x230b0
andq $0x0, 0x25693(%rip)     # 0x4c318
andq $0x0, 0x256bb(%rip)     # 0x4c348
andq $0x0, 0x256bb(%rip)     # 0x4c350
andq $0x0, 0x256bb(%rip)     # 0x4c358
andq $0x0, 0x256bb(%rip)     # 0x4c360
andq $0x0, 0x256bb(%rip)     # 0x4c368
andq $0x0, 0x2566b(%rip)     # 0x4c320
callq 0x31f0
movq %rax, 0x2565f(%rip)     # 0x4c320
leaq 0xbf8d(%rip), %rsi      # 0x32c55
leaq 0x6e8(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x6e8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x6e8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x26d66
leaq 0xbf4c(%rip), %rsi      # 0x32c55
leaq 0x6c8(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x990(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x6c8(%rsp), %rdx
callq 0x233ce
leaq 0x990(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3430
leaq 0x255b9(%rip), %rcx     # 0x4c308
movl %eax, (%rcx)
movq %rbx, %rdi
callq 0x3578
leaq 0x6c8(%rsp), %rdi
callq 0x3578
leaq 0xbd05(%rip), %rsi      # 0x32a72
leaq 0x188(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x233b8
testb %al, %al
jne 0x26dd7
leaq 0xbebc(%rip), %rsi      # 0x32c5b
leaq 0x1e8(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x233b8
testb %al, %al
je 0x26de6
leaq 0x1e8(%rsp), %rdi
callq 0x3578
leaq 0x188(%rsp), %rdi
callq 0x3578
jmp 0x26e45
leaq 0xbe71(%rip), %rsi      # 0x32c5e
leaq 0x6a8(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x6a8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x6a8(%rsp), %rdi
callq 0x3578
leaq 0x1e8(%rsp), %rdi
callq 0x3578
leaq 0x188(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x28bc5
leaq 0xbe19(%rip), %rsi      # 0x32c65
leaq 0x688(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x688(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x688(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x26eea
leaq 0xbdd8(%rip), %rsi      # 0x32c65
leaq 0x668(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x990(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x668(%rsp), %rdx
callq 0x233ce
leaq 0x990(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3430
leaq 0x25401(%rip), %rcx     # 0x4c2d4
movl %eax, (%rcx)
movq %rbx, %rdi
callq 0x3578
leaq 0x668(%rsp), %rdi
callq 0x3578
leaq 0xbb81(%rip), %rsi      # 0x32a72
leaq 0x648(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x648(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x648(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x271a3
leaq 0xbf9e(%rip), %rsi      # 0x32ed4
leaq 0x1c8(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x233b8
testb %al, %al
je 0x28ba9
leaq 0xbce7(%rip), %rsi      # 0x32c53
leaq 0x628(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x628(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x628(%rsp), %rdi
callq 0x3578
leaq 0x1c8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x28bc5
leaq 0xbf16(%rip), %rsi      # 0x32ed4
leaq 0x608(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0x788(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x608(%rsp), %rdx
callq 0x233ce
movq 0x788(%rsp), %rsi
leaq 0x990(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x3510
leaq 0x788(%rsp), %rdi
callq 0x3578
leaq 0x608(%rsp), %rdi
callq 0x3578
movq 0x24fca(%rip), %rdi     # 0x4bff0
leaq 0xbc43(%rip), %rsi      # 0x32c70
callq 0x32d0
movq %rax, %rdi
callq 0x3130
leaq 0x128(%rsp), %rdi
leaq 0x990(%rsp), %rsi
callq 0x2f576
movq 0x24f9a(%rip), %rdi     # 0x4bff0
leaq 0xbc1d(%rip), %rsi      # 0x32c7a
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x24f5f(%rip), %rsi     # 0x4bfd0
leaq 0x128(%rsp), %rdi
callq 0x292c6
leaq 0xbbce(%rip), %rsi      # 0x32c53
leaq 0x5e8(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x9f86
leaq 0xb0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x5e8(%rsp), %rdx
callq 0x233ce
movq 0xb0(%rsp), %rsi
leaq 0x788(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x3510
leaq 0xb0(%rsp), %rdi
callq 0x3578
leaq 0x5e8(%rsp), %rdi
callq 0x3578
movq 0x788(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x7a8(%rsp,%rax)
jne 0x28bb3
leaq 0xb047(%rip), %rsi      # 0x3214b
leaq 0x5c8(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x5c8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x5c8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x27645
leaq 0xb002(%rip), %rsi      # 0x3214b
leaq 0x5a8(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x9f86
leaq 0xb0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x5a8(%rsp), %rdx
callq 0x233ce
leaq 0xb0(%rsp), %r14
movq (%r14), %rdi
callq 0x3430
movl %eax, 0x8(%rsp)
movq %r14, %rdi
callq 0x3578
leaq 0x5a8(%rsp), %rdi
callq 0x3578
jmp 0x2764c
leaq 0xbab1(%rip), %rsi      # 0x32c5b
leaq 0x548(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x548(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x2743e
leaq 0xbce5(%rip), %rsi      # 0x32ed4
leaq 0x1a8(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x233b8
testb %al, %al
je 0x28bb8
leaq 0xba2e(%rip), %rsi      # 0x32c53
leaq 0x528(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x528(%rsp), %rdi
callq 0x3578
leaq 0x1a8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x28bc5
leaq 0xbc5d(%rip), %rsi      # 0x32ed4
leaq 0x508(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0x788(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x508(%rsp), %rdx
callq 0x233ce
movq 0x788(%rsp), %rsi
leaq 0x990(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x3510
leaq 0x788(%rsp), %rdi
callq 0x3578
leaq 0x508(%rsp), %rdi
callq 0x3578
leaq 0x128(%rsp), %rdi
leaq 0x990(%rsp), %rsi
callq 0x2f576
leaq 0xb961(%rip), %rsi      # 0x32c55
leaq 0x4e8(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x4e8(%rsp), %rdi
callq 0x3578
movb $0x1, 0xc(%rsp)
testb %bl, %bl
je 0x27397
leaq 0xb91b(%rip), %rsi      # 0x32c55
leaq 0x4c8(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x9f86
leaq 0x788(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x4c8(%rsp), %rdx
callq 0x233ce
leaq 0x788(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3430
movl %eax, %ebp
movq %rbx, %rdi
callq 0x3578
leaq 0x4c8(%rsp), %rdi
callq 0x3578
testl %ebp, %ebp
sete 0xc(%rsp)
leaq 0xb8f6(%rip), %rsi      # 0x32c94
leaq 0x4a8(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x4a8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x4a8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x278f0
leaq 0xb8b1(%rip), %rsi      # 0x32c94
leaq 0x488(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x9f86
leaq 0x788(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x488(%rsp), %rdx
callq 0x233ce
leaq 0x788(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3430
movl %eax, %ebp
movq %rbx, %rdi
callq 0x3578
leaq 0x488(%rsp), %rdi
callq 0x3578
jmp 0x278f3
leaq 0xb819(%rip), %rsi      # 0x32c5e
leaq 0x428(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x428(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x428(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x27c54
leaq 0xb7c9(%rip), %rsi      # 0x32c53
leaq 0x408(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x408(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x408(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x28bc5
leaq 0xb7e7(%rip), %rsi      # 0x32cb6
leaq 0xb0(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0xb7d7(%rip), %rsi      # 0x32cc2
leaq 0x3e8(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x3e8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x3e8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x27588
leaq 0xb796(%rip), %rsi      # 0x32cc2
leaq 0x3c8(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x990(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x3c8(%rsp), %rdx
callq 0x233ce
leaq 0xb0(%rsp), %rdi
leaq 0x990(%rsp), %rbx
movq %rbx, %rsi
callq 0x3360
movq %rbx, %rdi
callq 0x3578
leaq 0x3c8(%rsp), %rdi
callq 0x3578
leaq 0xb738(%rip), %rsi      # 0x32cc7
leaq 0xb0(%rsp), %rdi
callq 0x3520
leaq 0xb72b(%rip), %rsi      # 0x32cce
leaq 0x3a8(%rsp), %rdi
leaq 0x990(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x3a8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x3a8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x27c72
leaq 0xb6e6(%rip), %rsi      # 0x32cce
leaq 0x388(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x990(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x388(%rsp), %rdx
callq 0x233ce
leaq 0x990(%rsp), %r14
movq (%r14), %rdi
callq 0x3430
movl %eax, %ebx
incl %ebx
movq %r14, %rdi
callq 0x3578
leaq 0x388(%rsp), %rdi
callq 0x3578
jmp 0x27c75
pushq $0x1
popq %rax
movl %eax, 0x8(%rsp)
leaq 0xb602(%rip), %rsi      # 0x32c55
leaq 0x588(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x588(%rsp), %rsi
callq 0x233b8
movl %eax, %r15d
leaq 0x588(%rsp), %rdi
callq 0x3578
movq $0x0, 0x10(%rsp)
movl $0x0, %ebp
testb %r15b, %r15b
je 0x276fd
leaq 0xb5b1(%rip), %rsi      # 0x32c55
leaq 0x568(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x9f86
leaq 0xb0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x568(%rsp), %rdx
callq 0x233ce
leaq 0xb0(%rsp), %r15
movq (%r15), %rdi
callq 0x3430
movl %eax, %ebp
movq %r15, %rdi
callq 0x3578
leaq 0x568(%rsp), %rdi
callq 0x3578
testl %ebp, %ebp
setg %bpl
leaq 0xd38(%rsp), %r12
movq 0x248c4(%rip), %r13     # 0x4bfd0
movq 0x788(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x7a8(%rsp,%rax)
jne 0x278de
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
andq $0x0, 0x68(%rsp)
movb $0x0, 0x70(%rsp)
leaq 0x788(%rsp), %rdi
leaq 0x60(%rsp), %r14
movq %r14, %rsi
callq 0x3070
movq 0x10(%rsp), %rax
incl %eax
movq %rax, 0x10(%rsp)
movq %r14, %rdi
leaq 0xb750(%rip), %rsi      # 0x32eb6
callq 0x57b9
testb %al, %al
jne 0x278d1
xorpd %xmm0, %xmm0
movapd %xmm0, 0x90(%rsp)
andq $0x0, 0xa0(%rsp)
movq %r12, %r15
movq %r12, %rdi
movq %r14, %rsi
callq 0x33c0
leaq 0xb0(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x1eacc
movq %r15, %rdi
callq 0x3578
movq %r14, %rdi
leaq 0x128(%rsp), %rsi
callq 0x20726
cmpl $0x2, 0x8(%rsp)
jl 0x2782c
movq %r13, %rdi
leaq 0xb4ac(%rip), %rsi      # 0x32c7f
callq 0x32d0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d0
movq %rax, %rdi
leaq 0xb49a(%rip), %rsi      # 0x32c89
callq 0x32d0
movq %rax, %rdi
leaq 0x60(%rsp), %rsi
callq 0x32b0
movq %rax, %rdi
callq 0x3130
movq %r13, %rdi
movl 0x8(%rsp), %esi
callq 0x34d0
movq %rax, %rdi
leaq 0xb46e(%rip), %rsi      # 0x32c8d
callq 0x32d0
movq %rax, %rdi
callq 0x3130
leaq 0xd18(%rsp), %rbx
movq %rbx, %rdi
leaq 0xac6c(%rip), %rsi      # 0x324aa
leaq 0xe0(%rsp), %rdx
callq 0x9f86
leaq 0x90(%rsp), %r15
movq %r14, %rdi
movl 0x8(%rsp), %esi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x20d64
movq %rbx, %rdi
callq 0x3578
xorl %ebx, %ebx
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
jbe 0x278bc
movq (%rax,%rbx,8), %rdi
testb %bpl, %bpl
je 0x2789e
movq %r13, %rsi
callq 0x301d4
jmp 0x278a6
movq %r13, %rsi
callq 0x30b4a
movq 0x90(%rsp), %rax
movq (%rax,%rbx,8), %rdi
callq 0x30e7a
incq %rbx
jmp 0x2786f
movq %r14, %rdi
callq 0x292fe
movq %r15, %rdi
callq 0x295a0
leaq 0x60(%rsp), %r14
movq %r14, %rdi
callq 0x3578
jmp 0x2770c
leaq 0x788(%rsp), %rdi
callq 0x30b0
jmp 0x27c3a
pushq $0x1
popq %rbp
leaq 0xb41e(%rip), %rsi      # 0x32d18
leaq 0x468(%rsp), %rdi
leaq 0x788(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x468(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x468(%rsp), %rdi
callq 0x3578
xorpd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
testb %bl, %bl
je 0x2799f
leaq 0xb3d3(%rip), %rsi      # 0x32d18
leaq 0x448(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x9f86
leaq 0x788(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x448(%rsp), %rdx
callq 0x233ce
leaq 0x788(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3370
movsd %xmm0, 0x18(%rsp)
movq %rbx, %rdi
callq 0x3578
leaq 0x448(%rsp), %rdi
callq 0x3578
leaq 0xb8(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
xorl %eax, %eax
testl %ebp, %ebp
cmovlel %eax, %ebp
movl %ebp, 0x8(%rsp)
leaq 0x90(%rsp), %r13
leaq 0x60(%rsp), %r15
leaq 0x788(%rsp), %rbx
leaq 0xcf8(%rsp), %rbp
leaq 0xcd8(%rsp), %r14
cmpl 0x8(%rsp), %eax
je 0x27bfe
movl %eax, 0x10(%rsp)
cmpb $0x0, 0xc(%rsp)
jne 0x27a48
movq 0x245c8(%rip), %rdi     # 0x4bfd0
leaq 0xb28a(%rip), %rsi      # 0x32c99
callq 0x32d0
movq %rax, %rdi
movl 0x10(%rsp), %esi
callq 0x34d0
movq %rax, %rdi
callq 0x3130
leaq 0x128(%rsp), %rdi
movq 0x24599(%rip), %rsi     # 0x4bfd0
callq 0x292c6
movq 0x2458d(%rip), %rdi     # 0x4bfd0
callq 0x3130
leaq 0xb0(%rsp), %rdi
callq 0x295be
leaq 0x768(%rsp), %r12
movq %r12, %rdi
leaq 0xb1ec(%rip), %rsi      # 0x32c53
movq %r13, %rdx
callq 0x9f86
movq %r15, %rdi
leaq 0x20(%rsp), %rsi
movq %r12, %rdx
callq 0x233ce
movq 0x60(%rsp), %rsi
movq %rbx, %rdi
pushq $0x8
popq %rdx
callq 0x3510
movq %r15, %rdi
callq 0x3578
leaq 0x768(%rsp), %rdi
callq 0x3578
movq 0x788(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x7a8(%rsp,%rax)
jne 0x28ba4
xorl %eax, %eax
testb $0x2, %al
jne 0x27bae
leaq 0xa0(%rsp), %rax
movq %rax, 0x90(%rsp)
andq $0x0, 0x98(%rsp)
movb $0x0, 0xa0(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3070
movq %r13, %rdi
leaq 0xb3b8(%rip), %rsi      # 0x32eb6
callq 0x57b9
testb %al, %al
jne 0x27b8e
xorpd %xmm0, %xmm0
movapd %xmm0, 0xe0(%rsp)
andq $0x0, 0xf0(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
callq 0x33c0
movq %r15, %rdi
movq %rbp, %rsi
callq 0x1eacc
movq %rbp, %rdi
callq 0x3578
movq %r14, %rdi
leaq 0xa961(%rip), %rsi      # 0x324aa
leaq 0x100(%rsp), %rdx
callq 0x9f86
movq %r15, %rdi
leaq 0x128(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
movq %r14, %rcx
callq 0x2092a
movq %r14, %rdi
callq 0x3578
movq %r15, %rdi
callq 0x292fe
leaq 0xe0(%rsp), %rdi
callq 0x295a0
movq %r13, %rdi
callq 0x3578
movq 0x788(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x7a8(%rsp,%rax), %eax
jmp 0x27ac0
leaq 0x128(%rsp), %rdi
callq 0x14922
leaq 0xb0(%rsp), %rdi
movsd 0x18(%rsp), %xmm0
callq 0x1481a
leaq 0xb0(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x14768
movq %rbx, %rdi
callq 0x3080
movq %rbx, %rdi
callq 0x30b0
movl 0x10(%rsp), %eax
incl %eax
jmp 0x279ec
movq 0x243eb(%rip), %rdi     # 0x4bff0
leaq 0xb093(%rip), %rsi      # 0x32c9f
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x243b0(%rip), %rsi     # 0x4bfd0
leaq 0xb0(%rsp), %rdi
callq 0x147aa
leaq 0xb0(%rsp), %rdi
callq 0x29448
leaq 0x128(%rsp), %rdi
callq 0x29314
leaq 0x990(%rsp), %rdi
callq 0x30b0
leaq 0x20(%rsp), %rdi
callq 0x233a6
xorl %eax, %eax
addq $0xd58, %rsp            # imm = 0xD58
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x6
popq %rbx
leaq 0x788(%rsp), %rdi
callq 0x2932a
leaq 0x368(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x33c0
leaq 0x788(%rsp), %rdi
leaq 0x368(%rsp), %rsi
movl %ebx, %edx
callq 0xc8a8
leaq 0x368(%rsp), %rdi
callq 0x3578
callq 0x31f0
subq 0x24659(%rip), %rax     # 0x4c320
addq %rax, 0x246a2(%rip)     # 0x4c370
leaq 0xaf7e(%rip), %rsi      # 0x32c53
leaq 0x348(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x9f86
leaq 0x128(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x348(%rsp), %rdx
callq 0x233ce
movq 0x128(%rsp), %rsi
leaq 0x990(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x3510
leaq 0x128(%rsp), %rdi
callq 0x3578
leaq 0x348(%rsp), %rdi
callq 0x3578
movq 0x990(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x9b0(%rsp,%rax)
jne 0x28bca
leaq 0xa3f7(%rip), %rsi      # 0x3214b
leaq 0x328(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x328(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x27dec
leaq 0xa3b6(%rip), %rsi      # 0x3214b
leaq 0x308(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x9f86
leaq 0x128(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x308(%rsp), %rdx
callq 0x233ce
leaq 0x128(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3430
movl %eax, 0x18(%rsp)
movq %rbx, %rdi
callq 0x3578
leaq 0x308(%rsp), %rdi
callq 0x3578
jmp 0x27df3
pushq $0x1
popq %rax
movl %eax, 0x18(%rsp)
leaq 0xae5b(%rip), %rsi      # 0x32c55
leaq 0x2e8(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x2e8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x27e99
leaq 0xae1a(%rip), %rsi      # 0x32c55
leaq 0x2c8(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x9f86
leaq 0x128(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x2c8(%rsp), %rdx
callq 0x233ce
leaq 0x128(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3430
movl %eax, %ebp
movq %rbx, %rdi
callq 0x3578
leaq 0x2c8(%rsp), %rdi
callq 0x3578
testl %ebp, %ebp
setg %al
movl %eax, 0x10(%rsp)
jmp 0x27ea1
movl $0x0, 0x10(%rsp)
leaq 0xae33(%rip), %rsi      # 0x32cdb
leaq 0x2a8(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x2a8(%rsp), %rdi
callq 0x3578
testb %bl, %bl
je 0x27f43
leaq 0xadf2(%rip), %rsi      # 0x32cdb
leaq 0x288(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0xcb8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x288(%rsp), %rdx
callq 0x233ce
leaq 0xcb8(%rsp), %rbx
movq %rbx, %rdi
callq 0x26be8
movl %eax, 0xc(%rsp)
movq %rbx, %rdi
callq 0x3578
leaq 0x288(%rsp), %rdi
callq 0x3578
jmp 0x27f4a
pushq $0x2
popq %rax
movl %eax, 0xc(%rsp)
leaq 0xad8e(%rip), %rsi      # 0x32cdf
leaq 0x268(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
leaq 0x268(%rsp), %rsi
callq 0x233b8
movl %eax, %ebx
leaq 0x268(%rsp), %rdi
callq 0x3578
xorl %r14d, %r14d
testb %bl, %bl
je 0x280b7
leaq 0xad46(%rip), %rsi      # 0x32cdf
leaq 0x248(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x9f86
leaq 0x128(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x248(%rsp), %rdx
callq 0x233ce
leaq 0x248(%rsp), %rdi
callq 0x3578
leaq 0xad0c(%rip), %rsi      # 0x32ce5
leaq 0x128(%rsp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3550
leaq 0x60(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x3300
leaq 0x60(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3430
movl %eax, 0x8(%rsp)
movq %rbx, %rdi
callq 0x3578
leaq 0xacc8(%rip), %rsi      # 0x32ce5
leaq 0x128(%rsp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3550
leaq 0x1(%rax), %rdx
leaq 0x60(%rsp), %rdi
pushq $-0x1
popq %rcx
movq %rbx, %rsi
callq 0x3300
leaq 0x60(%rsp), %rbx
movq (%rbx), %rdi
callq 0x3370
movsd %xmm0, 0x120(%rsp)
movq %rbx, %rdi
callq 0x3578
movq 0x23f88(%rip), %rdi     # 0x4bff0
leaq 0xac78(%rip), %rsi      # 0x32ce7
callq 0x32d0
movq %rax, %rdi
movl 0x8(%rsp), %esi
callq 0x34d0
leaq 0xac67(%rip), %rsi      # 0x32cee
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
movsd 0x120(%rsp), %xmm0
callq 0x3490
movq %rax, %rdi
callq 0x3130
leaq 0x128(%rsp), %rdi
callq 0x3578
jmp 0x280d0
movsd 0xa4e9(%rip), %xmm0     # 0x325a8
movsd %xmm0, 0x120(%rsp)
movl $0x0, 0x8(%rsp)
leaq 0xc98(%rsp), %rbp
movq 0x23ef1(%rip), %r15     # 0x4bfd0
leaq 0xb98(%rsp), %rbx
movq 0x990(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x9b0(%rsp,%rax)
jne 0x28821
incl %r14d
movq 0x23ee5(%rip), %rdi     # 0x4bff0
movl %r14d, %esi
callq 0x34d0
movq %rax, %rdi
callq 0x3130
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
andq $0x0, 0x68(%rsp)
movb $0x0, 0x70(%rsp)
leaq 0x990(%rsp), %rdi
leaq 0x60(%rsp), %r12
movq %r12, %rsi
callq 0x3070
movq %r12, %rdi
leaq 0xad67(%rip), %rsi      # 0x32eb6
callq 0x57b9
cmpl 0x8(%rsp), %r14d
setl %cl
orb %al, %cl
jne 0x2880a
cvtsi2sd %r14d, %xmm0
ucomisd 0x120(%rsp), %xmm0
ja 0x28817
xorpd %xmm0, %xmm0
movapd %xmm0, 0x100(%rsp)
andq $0x0, 0x110(%rsp)
movq %rbp, %r12
movq %rbp, %rdi
leaq 0x60(%rsp), %rsi
callq 0x33c0
leaq 0x128(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x1eacc
movq %r12, %rdi
callq 0x3578
movq %r13, %rdi
leaq 0x788(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x19a08
leaq 0x90(%rsp), %rdi
leaq 0xa2ce(%rip), %rsi      # 0x324aa
leaq 0xe0(%rsp), %r12
movq %r12, %rdx
callq 0x9f86
leaq 0xc78(%rsp), %r13
movq %r13, %rdi
leaq 0xaaf7(%rip), %rsi      # 0x32cf5
movq %r12, %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x233b8
movl %eax, %r12d
movq %r13, %rdi
callq 0x3578
testb %r12b, %r12b
je 0x28342
leaq 0x748(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x33c0
leaq 0x128(%rsp), %rdi
leaq 0x748(%rsp), %r13
movq %r13, %rsi
callq 0x20cf8
movq %rax, %r12
movq %r13, %rdi
callq 0x3578
testq %r12, %r12
je 0x284ff
leaq 0x728(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x33c0
leaq 0x128(%rsp), %rdi
leaq 0x728(%rsp), %r12
movq %r12, %rsi
pushq $0x1
popq %rdx
callq 0x29356
movq %r12, %rdi
callq 0x3578
leaq 0xc58(%rsp), %r12
movq %r12, %rdi
leaq 0xaa66(%rip), %rsi      # 0x32d18
leaq 0xe0(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
movq %r12, %rsi
callq 0x233b8
movq %r12, %rdi
movl %eax, %r12d
callq 0x3578
testb %r12b, %r12b
je 0x2857c
leaq 0xc38(%rsp), %r13
movq %r13, %rdi
leaq 0xaa26(%rip), %rsi      # 0x32d18
leaq 0x58(%rsp), %rdx
callq 0x9f86
leaq 0xe0(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %rsi
movq %r13, %rdx
callq 0x233ce
movq 0xe0(%rsp), %rdi
callq 0x3370
movsd %xmm0, 0x50(%rsp)
movq %r12, %rdi
callq 0x3578
movq %r13, %rdi
callq 0x3578
movsd 0x50(%rsp), %xmm0
jmp 0x2871c
cmpl $0x2, 0x18(%rsp)
jl 0x283aa
movq %r15, %rdi
leaq 0xa92c(%rip), %rsi      # 0x32c7f
callq 0x32d0
movq %rax, %rdi
movl %r14d, %esi
callq 0x34d0
movq %rax, %rdi
leaq 0xa91c(%rip), %rsi      # 0x32c89
callq 0x32d0
movq %rax, %rdi
leaq 0x60(%rsp), %rsi
callq 0x32b0
movq %rax, %rdi
callq 0x3130
movq %r15, %rdi
movl 0x18(%rsp), %esi
callq 0x34d0
movq %rax, %rdi
leaq 0xa8f0(%rip), %rsi      # 0x32c8d
callq 0x32d0
movq %rax, %rdi
callq 0x3130
cmpl $0x3, 0xc(%rsp)
jne 0x283ee
leaq 0xbd8(%rsp), %r12
movq %r12, %rdi
leaq 0x9fbb(%rip), %rsi      # 0x3237e
leaq 0xe0(%rsp), %rdx
callq 0x9f86
leaq 0x128(%rsp), %rdi
movl 0x18(%rsp), %esi
leaq 0x100(%rsp), %rdx
movq %r12, %rcx
callq 0x20d64
jmp 0x28429
leaq 0xbb8(%rsp), %r12
movq %r12, %rdi
leaq 0xa0aa(%rip), %rsi      # 0x324aa
leaq 0xe0(%rsp), %rdx
callq 0x9f86
leaq 0x128(%rsp), %rdi
movl 0x18(%rsp), %esi
leaq 0x100(%rsp), %rdx
movq %r12, %rcx
callq 0x20d64
movq %r12, %rdi
callq 0x3578
movq 0x100(%rsp), %rcx
movq 0x108(%rsp), %rax
leaq 0xa8e7(%rip), %rsi      # 0x32d2f
cmpq %rcx, %rax
je 0x28567
xorl %r13d, %r13d
subq %rcx, %rax
sarq $0x3, %rax
cmpq %r13, %rax
jbe 0x287de
movq %rbx, %rdi
leaq 0xa8c6(%rip), %rsi      # 0x32d34
leaq 0xe0(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
movq %rbx, %rsi
callq 0x233b8
movl %eax, %r12d
movq %rbx, %rdi
callq 0x3578
testb %r12b, %r12b
jne 0x284a9
movq 0x100(%rsp), %rax
movq (%rax,%r13,8), %rdi
callq 0x30f1c
movq 0x100(%rsp), %rax
movq (%rax,%r13,8), %rdi
cmpb $0x0, 0x10(%rsp)
je 0x284c6
movq %r15, %rsi
callq 0x301d4
jmp 0x284ce
movq %r15, %rsi
callq 0x30b4a
movq %r15, %rdi
callq 0x3130
movq 0x100(%rsp), %rax
movq (%rax,%r13,8), %rdi
callq 0x30e7a
incq %r13
movq 0x100(%rsp), %rcx
movq 0x108(%rsp), %rax
jmp 0x28454
movq 0x23aea(%rip), %rdi     # 0x4bff0
leaq 0xa7f4(%rip), %rsi      # 0x32d01
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq %r15, %rdi
leaq 0xa75b(%rip), %rsi      # 0x32c7f
callq 0x32d0
movq %rax, %rdi
movl %r14d, %esi
callq 0x34d0
movq %rax, %rdi
leaq 0xa7d1(%rip), %rsi      # 0x32d0f
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x32b0
movq %rax, %rdi
callq 0x3130
leaq 0xa724(%rip), %rsi      # 0x32c8b
movq %r15, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
jmp 0x287de
leaq 0xc18(%rsp), %r13
movq %r13, %rdi
leaq 0xa784(%rip), %rsi      # 0x32d12
leaq 0xe0(%rsp), %rdx
callq 0x9f86
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x233b8
movl %eax, %r12d
movq %r13, %rdi
callq 0x3578
pushq $0x64
popq %rax
movl %eax, 0x50(%rsp)
testb %r12b, %r12b
je 0x28614
leaq 0xbf8(%rsp), %r13
movq %r13, %rdi
leaq 0xa741(%rip), %rsi      # 0x32d12
leaq 0x58(%rsp), %rdx
callq 0x9f86
leaq 0xe0(%rsp), %r12
movq %r12, %rdi
leaq 0x20(%rsp), %rsi
movq %r13, %rdx
callq 0x233ce
movq 0xe0(%rsp), %rdi
callq 0x3430
movl %eax, 0x50(%rsp)
movq %r12, %rdi
callq 0x3578
movq %r13, %rdi
callq 0x3578
andq $0x0, 0x58(%rsp)
andq $0x0, 0xe0(%rsp)
leaq 0x708(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x33c0
leaq 0x128(%rsp), %rdi
leaq 0x708(%rsp), %r13
movq %r13, %rsi
callq 0x20cf8
movq %rax, %r12
movq %r13, %rdi
callq 0x3578
movsd 0x9f4d(%rip), %xmm0     # 0x325b0
testq %r12, %r12
je 0x2871c
leaq 0x228(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x33c0
leaq 0x128(%rsp), %rdi
leaq 0x228(%rsp), %rsi
callq 0x20cf8
movq %rax, %rdi
pushq $0x1
popq %rsi
leaq 0xe0(%rsp), %rdx
callq 0x23a78
leaq 0x228(%rsp), %rdi
callq 0x3578
movsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
leaq 0x208(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x33c0
leaq 0x128(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x20cf8
movq %rax, %rdi
movl 0x50(%rsp), %esi
leaq 0x58(%rsp), %rdx
callq 0x23a78
leaq 0x208(%rsp), %rdi
callq 0x3578
movsd 0xe0(%rsp), %xmm0
subsd 0x58(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
ucomisd 0x9c36(%rip), %xmm0     # 0x32360
jbe 0x28770
movq 0x238bd(%rip), %rdi     # 0x4bff0
leaq 0xa5e8(%rip), %rsi      # 0x32d22
callq 0x32d0
movq %rax, %rdi
movsd 0x50(%rsp), %xmm0
callq 0x3490
movq %rax, %rdi
callq 0x3130
leaq 0x128(%rsp), %rdi
leaq 0x90(%rsp), %rsi
movsd 0x50(%rsp), %xmm0
callq 0x20fbe
leaq 0x128(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x210f8
movq %r15, %rdi
leaq 0xa4f5(%rip), %rsi      # 0x32c7f
callq 0x32d0
movq %rax, %rdi
movl %r14d, %esi
callq 0x34d0
movq %rax, %rdi
leaq 0xa56b(%rip), %rsi      # 0x32d0f
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
callq 0x32b0
movq %rax, %rdi
callq 0x3130
leaq 0x128(%rsp), %rdi
movq %r15, %rsi
callq 0x1ec8c
movq %r15, %rdi
callq 0x3130
leaq 0x90(%rsp), %rdi
callq 0x3578
leaq 0x128(%rsp), %rdi
callq 0x292fe
leaq 0x100(%rsp), %rdi
callq 0x295a0
leaq 0x60(%rsp), %r12
movq %r12, %rdi
callq 0x3578
jmp 0x280e7
leaq 0x60(%rsp), %rdi
callq 0x3578
callq 0x31f0
subq 0x23af3(%rip), %rax     # 0x4c320
movq %rax, 0x23aec(%rip)     # 0x4c320
movq 0x237b5(%rip), %rdi     # 0x4bff0
leaq 0xa4fc(%rip), %rsi      # 0x32d3e
callq 0x32d0
cvtsi2sdq 0x23ad0(%rip), %xmm0 # 0x4c320
divsd 0x9d60(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x9814(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x23772(%rip), %rdi     # 0x4bff0
leaq 0xa4c3(%rip), %rsi      # 0x32d48
callq 0x32d0
cvtsi2sdq 0x23add(%rip), %xmm0 # 0x4c370
divsd 0x9d1d(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x97d1(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq %rax, %rdi
callq 0x3130
movq 0x23727(%rip), %rdi     # 0x4bff0
leaq 0xa48b(%rip), %rsi      # 0x32d5b
callq 0x32d0
cvtsi2sdq 0x23a4a(%rip), %xmm0 # 0x4c328
divsd 0x9cd2(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x9786(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x236e4(%rip), %rdi     # 0x4bff0
leaq 0xa45f(%rip), %rsi      # 0x32d72
callq 0x32d0
cvtsi2sdq 0x23a0f(%rip), %xmm0 # 0x4c330
divsd 0x9c8f(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x9743(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq %rax, %rdi
callq 0x3130
movq 0x23699(%rip), %rdi     # 0x4bff0
leaq 0xa42a(%rip), %rsi      # 0x32d88
callq 0x32d0
cvtsi2sdq 0x239ac(%rip), %xmm0 # 0x4c318
divsd 0x9c44(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x96f8(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x23656(%rip), %rdi     # 0x4bff0
leaq 0xa400(%rip), %rsi      # 0x32da1
callq 0x32d0
cvtsi2sdq 0x23999(%rip), %xmm0 # 0x4c348
divsd 0x9c01(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x96b5(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq %rax, %rdi
callq 0x3130
movq 0x2360b(%rip), %rdi     # 0x4bff0
leaq 0xa3cc(%rip), %rsi      # 0x32db8
callq 0x32d0
cvtsi2sdq 0x23946(%rip), %xmm0 # 0x4c340
divsd 0x9bb6(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x966a(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x235c8(%rip), %rdi     # 0x4bff0
leaq 0xa3a1(%rip), %rsi      # 0x32dd0
callq 0x32d0
cvtsi2sdq 0x238fb(%rip), %xmm0 # 0x4c338
divsd 0x9b73(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x9627(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq %rax, %rdi
callq 0x3130
movq 0x2357d(%rip), %rdi     # 0x4bff0
leaq 0xa36c(%rip), %rsi      # 0x32de6
callq 0x32d0
cvtsi2sdq 0x238c8(%rip), %xmm0 # 0x4c350
divsd 0x9b28(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x95dc(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x2353a(%rip), %rdi     # 0x4bff0
leaq 0xa33e(%rip), %rsi      # 0x32dfb
callq 0x32d0
cvtsi2sdq 0x2388d(%rip), %xmm0 # 0x4c358
divsd 0x9ae5(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x9599(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x234f7(%rip), %rdi     # 0x4bff0
leaq 0xa307(%rip), %rsi      # 0x32e07
callq 0x32d0
cvtsi2sdq 0x23852(%rip), %xmm0 # 0x4c360
divsd 0x9aa2(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x9556(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
movq 0x234b4(%rip), %rdi     # 0x4bff0
leaq 0xa2dd(%rip), %rsi      # 0x32e20
callq 0x32d0
cvtsi2sdq 0x23817(%rip), %xmm0 # 0x4c368
divsd 0x9a5f(%rip), %xmm0     # 0x325b8
movq %rax, %rdi
callq 0x3490
leaq 0x9513(%rip), %rsi      # 0x3207b
movq %rax, %rdi
callq 0x32d0
movq %rax, %rdi
callq 0x3130
leaq 0x990(%rsp), %rdi
callq 0x30b0
leaq 0x788(%rsp), %rdi
callq 0x293da
leaq 0xb0(%rsp), %rdi
callq 0x3578
jmp 0x27c54
callq 0x269bc
leaq 0x1c8(%rsp), %rdi
jmp 0x28bc0
callq 0x269bc
leaq 0x1a8(%rsp), %rdi
callq 0x3578
callq 0x269bc
callq 0x269bc
jmp 0x28ed1
jmp 0x28ed1
movq %rax, %rbx
leaq 0x248(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x288(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x2c8(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x308(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x388(%rsp), %rdi
jmp 0x28d5e
jmp 0x28d68
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
jmp 0x28d5e
jmp 0x28d68
movq %rax, %rbx
leaq 0xbf8(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
leaq 0x268(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x2a8(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x2e8(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x328(%rsp), %rdi
jmp 0x291c4
jmp 0x290fa
movq %rax, %rbx
leaq 0x448(%rsp), %rdi
jmp 0x28f7e
jmp 0x290fa
jmp 0x290d6
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x3578
jmp 0x28cef
movq %rax, %rbx
leaq 0x348(%rsp), %rdi
jmp 0x28d1b
movq %rax, %rbx
leaq 0x488(%rsp), %rdi
jmp 0x28f7e
jmp 0x28d25
jmp 0x290d6
movq %rax, %rbx
leaq 0x368(%rsp), %rdi
callq 0x3578
jmp 0x291d6
movq %rax, %rbx
jmp 0x291d6
movq %rax, %rbx
leaq 0x4c8(%rsp), %rdi
jmp 0x28f7e
jmp 0x290d6
movq %rax, %rbx
leaq 0x3a8(%rsp), %rdi
jmp 0x28d5e
jmp 0x28d68
jmp 0x28d68
movq %rax, %rbx
leaq 0x3e8(%rsp), %rdi
callq 0x3578
jmp 0x291e3
movq %rax, %rbx
jmp 0x291e3
jmp 0x290de
movq %rax, %rbx
leaq 0x408(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0xc38(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
leaq 0x708(%rsp), %rdi
jmp 0x29171
movq %rax, %rbx
leaq 0xc18(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
leaq 0x208(%rsp), %rdi
jmp 0x29171
movq %rax, %rbx
leaq 0x228(%rsp), %rdi
jmp 0x29171
movq %rax, %rbx
leaq 0x568(%rsp), %rdi
jmp 0x29288
jmp 0x28f59
movq %rax, %rbx
leaq 0x5a8(%rsp), %rdi
jmp 0x29288
jmp 0x28f59
movq %rax, %rbx
leaq 0x468(%rsp), %rdi
jmp 0x28f7e
jmp 0x290d6
movq %rax, %rbx
leaq 0x4a8(%rsp), %rdi
jmp 0x28f7e
jmp 0x290d6
movq %rax, %rbx
leaq 0x4e8(%rsp), %rdi
jmp 0x28f7e
jmp 0x290d6
jmp 0x2904a
movq %rax, %rbx
leaq 0x788(%rsp), %rdi
callq 0x3578
jmp 0x28e67
movq %rax, %rbx
leaq 0x508(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0x528(%rsp), %rdi
callq 0x3578
jmp 0x28ea0
jmp 0x28e9d
movq %rax, %rbx
leaq 0x428(%rsp), %rdi
jmp 0x291eb
movq %rax, %rbx
leaq 0x1a8(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
jmp 0x290de
movq %rax, %rbx
leaq 0x6a8(%rsp), %rdi
callq 0x3578
jmp 0x2900f
jmp 0x2900c
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
jmp 0x291c4
movq %rax, %rbx
leaq 0xbd8(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
leaq 0xbb8(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
leaq 0xc58(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
leaq 0x728(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
leaq 0x588(%rsp), %rdi
jmp 0x29288
jmp 0x28f59
movq %rax, %rbx
leaq 0x5c8(%rsp), %rdi
jmp 0x29288
jmp 0x28f59
movq %rax, %rbx
jmp 0x2928d
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x3578
jmp 0x28f76
movq %rax, %rbx
leaq 0x5e8(%rsp), %rdi
callq 0x3578
jmp 0x2929a
jmp 0x290d6
jmp 0x2904a
movq %rax, %rbx
leaq 0x788(%rsp), %rdi
callq 0x3578
jmp 0x28fa7
movq %rax, %rbx
leaq 0x608(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0x628(%rsp), %rdi
callq 0x3578
jmp 0x28fe0
jmp 0x28fdd
movq %rax, %rbx
leaq 0x548(%rsp), %rdi
jmp 0x291eb
movq %rax, %rbx
leaq 0x1c8(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
jmp 0x290de
movq %rax, %rbx
leaq 0x668(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x3578
jmp 0x29079
jmp 0x29076
movq %rax, %rbx
leaq 0x6c8(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0x748(%rsp), %rdi
jmp 0x29171
jmp 0x29180
movq %rax, %rbx
jmp 0x292a7
movq %rax, %rbx
leaq 0x648(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0x688(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0x188(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
movq %rax, %rbx
leaq 0x6e8(%rsp), %rdi
jmp 0x291eb
jmp 0x290de
jmp 0x2909c
movq %rax, %rbx
jmp 0x291a5
movq %rax, %rbx
leaq 0xc98(%rsp), %rdi
callq 0x3578
jmp 0x291b2
movq %rax, %rbx
jmp 0x291b2
movq %rax, %rbx
leaq 0xc78(%rsp), %rdi
jmp 0x29171
jmp 0x29195
movq %rax, %rbx
jmp 0x2929a
movq %rax, %rbx
jmp 0x292b4
movq %rax, %rbx
jmp 0x291bf
jmp 0x29195
jmp 0x290fa
jmp 0x29195
movq %rax, %rbx
jmp 0x291c9
jmp 0x29188
jmp 0x29180
movq %rax, %rbx
jmp 0x2911b
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x3578
leaq 0x768(%rsp), %rdi
callq 0x3578
jmp 0x29257
jmp 0x29266
movq %rax, %rbx
leaq 0xd38(%rsp), %rdi
callq 0x3578
jmp 0x29276
movq %rax, %rbx
jmp 0x29276
movq %rax, %rbx
leaq 0xd18(%rsp), %rdi
callq 0x3578
jmp 0x29269
jmp 0x29195
movq %rax, %rbx
leaq 0xb98(%rsp), %rdi
callq 0x3578
jmp 0x29198
movq %rax, %rbx
jmp 0x29283
movq %rax, %rbx
jmp 0x29257
movq %rax, %rbx
jmp 0x2924a
jmp 0x29266
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x3578
leaq 0x128(%rsp), %rdi
callq 0x292fe
leaq 0x100(%rsp), %rdi
callq 0x295a0
leaq 0x60(%rsp), %rdi
callq 0x3578
leaq 0x990(%rsp), %rdi
callq 0x30b0
leaq 0x788(%rsp), %rdi
callq 0x293da
leaq 0xb0(%rsp), %rdi
callq 0x3578
jmp 0x292b4
movq %rax, %rbx
leaq 0xcd8(%rsp), %rdi
callq 0x3578
jmp 0x2921c
movq %rax, %rbx
leaq 0xcf8(%rsp), %rdi
callq 0x3578
jmp 0x2922b
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x292fe
jmp 0x2922b
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x295a0
jmp 0x2923d
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x3578
leaq 0x788(%rsp), %rdi
callq 0x30b0
leaq 0xb0(%rsp), %rdi
callq 0x29448
jmp 0x2929a
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x292fe
leaq 0x90(%rsp), %rdi
callq 0x295a0
leaq 0x60(%rsp), %rdi
callq 0x3578
leaq 0x788(%rsp), %rdi
callq 0x30b0
leaq 0x128(%rsp), %rdi
callq 0x29314
leaq 0x990(%rsp), %rdi
callq 0x30b0
leaq 0x20(%rsp), %rdi
callq 0x233a6
movq %rbx, %rdi
callq 0x34f0