// File: 0asa[P]TTree-source/main.cpp
// Function: main
int main (int argc, char * const argv[]) {
	clock_t clock_start = clock();
	
	int option_char;
	char* jdb;
	char* block;
	bool blocked = false;
	bool snp = false;
	int seed = -1;
	int method = -1;
	bool log = false;
	int nbTree = 1;
	int k = 1;
	int inc = 0;
	int nmin = 1;
	int intc = 1;
	bool startend = true;
	bool startendlsts = true;
	std::string acfile = "";
	std::string lsfile = "";
	std::string tsfile = "";
	std::string gcfile = "";
	while ((option_char = getopt(argc, argv, "x?m:j:b:r:sl:t:k:i:a:g:v:fn:c:e")) != -1) {
		switch (option_char) {
			case 'e':	startend = false; break;
			case 'x':	startendlsts = false; break;
			case 'b':	block	= optarg; blocked = true; break;
			case 'a':	acfile	= optarg; break;
			case 'v':	tsfile	= optarg; break;
			case 'l':	lsfile	= optarg; break;
			case 'g':	gcfile	= optarg; break;
			case 'j':	jdb		= optarg; break;
			case 's':	snp		= true; break;
			case 'r':	seed	= atoi(optarg); break;
			case 'm':	method	= atoi(optarg); break;
			case 't':	nbTree	= atoi(optarg); break;
			case 'k':	k		= atoi(optarg); break;
			case 'i':	inc		= atoi(optarg); break;
			case 'n':	nmin	= atoi(optarg); break;
			case 'c':	intc	= atoi(optarg); break;
			case 'f':	log		= true; break;
			case '?':	printHelp(); return -1 ; break;
			default:	printHelp(); return -1 ; break;
		}
	}
	
	//return 0;
	
	if (seed>-1)
		srand(seed);
	else
		srand((unsigned int) time(NULL));
	
	// OUTPUT FILES 
	char prefix[256];
	sprintf(prefix, "%s_k%d_m%d_t%d_ic%d_nmin%d",jdb,k,method,nbTree,intc,nmin);
	Logs l(prefix,inc);
		
	// DATABASE INPUT
	JavaDB db(jdb);
	if (blocked) {
		if (startend)
			db.readBlockStartEnd(block);
		else
			db.readBlock(block);
		l.main("BLOCK FILE:"); l.main(block); l.main("\n");
	}
	if (snp) {
		db.setType(SNP);
		l.main("SNP DB MODE : ON\n");
	}
	if (log)
		db.print(l.main());
	
	// LEARNING, TEST SETS AND CANDIDATE ATTRIBUTES SETTINGS
	std::vector<SETREP> ls;
	if (lsfile == "") 
		ls = db.selectAll();
	else {
		if (startendlsts)
			ls = Sampler::readStartEndSet(lsfile);
		else 
			ls = Sampler::readSet(lsfile);
		l.main("LEARNING SET FILE:"); l.main(lsfile.c_str()); l.main("\n");
	}
	
	std::vector<SETREP> ts;
	if (tsfile == "")
		ts = db.selectAll();
	else {
		if (startendlsts)
			ts = Sampler::readStartEndSet(tsfile);
		else
			ts = Sampler::readSet(tsfile);
		l.main("TEST SET FILE:"); l.main(tsfile.c_str()); l.main("\n");
	}
	
	std::vector<unsigned int> attcand;
	if (acfile == "")
		attcand = db.selectAllAtt();
	else {
		attcand = Sampler::readStartEndSet(acfile);
		l.main("CANDIDATE ATT. FILE:"); l.main(acfile.c_str()); l.main("\n");
	}
	
	std::vector<unsigned int> groupcand;
	if (blocked) {
		if (gcfile == "")
			groupcand = db.selectAllGroup();
		else {
			groupcand = Sampler::readStartEndSet(gcfile);
			l.main("CANDIDATE ATT. FILE:"); l.main(gcfile.c_str()); l.main("\n");
		}
	}
	
	Result result(&db);

	std::vector<float> vim(db.getNbAtt(),0.0);
	
	switch (method) {
		case 0: {
			fprintf(stderr,"CLASSIC TREE\n");
			ClassicTree ct(&db,nmin);
			ct.setLS(&ls);
			ct.setTS(&ts);
			ct.setAttCand(&attcand);
			ct.print(l.main());
			fprintf(l.main(),"Learning Time : %f sec\n",	ct.learn()/CLOCKS_PER_SEC);
			result = ct.test();
			fprintf(l.main(),"Error rate : %f %%\n", result.getErrorRate());
			fprintf(stderr,"Error rate : %f %%\n", result.getErrorRate());
			result.printProb(l.roc());
			//ct.computeVimp();
			//ct.printVimp(l.varimp());
			
			ct.computeVimp(vim,ls);
			ct.printVimp(vim,l.varimp());
			
			fprintf(l.dot(),"digraph G {\n");
			ct.dotit(l.dot());
			fprintf(l.dot(),"}\n");
			
			l.flush();
			break; 
		} case 1: {
			fprintf(stderr,"RANDOM FOREST\n");
			RandomForest rf(&db,nbTree,k,nmin);
			rf.setLS(&ls);
			rf.setTS(&ts);
			rf.setAttCand(&attcand);
			rf.print(l.main());
			rf.setTreeInfo(l.tree());
			fprintf(l.main(),"Learning Time : %f sec\n",	rf.learn()/CLOCKS_PER_SEC);
			result = rf.test();
			fprintf(l.main(),"Error rate : %f %%\n", result.getErrorRate());	
			fprintf(stderr,"Error rate : %f %%\n", result.getErrorRate());
			result.printProb(l.roc());
			
			rf.computeVimp(vim,ls);
			rf.printVimp(vim,l.varimp());
			rf.dotit(l.dot(),10);
			
			l.flush();
			break; 
		} case 2: {
			fprintf(stderr,"EXTRATREES\n");
			ExtraTrees et(&db,nbTree,k,nmin);
			et.setLS(&ls);
			et.setTS(&ts);
			et.setAttCand(&attcand);
			et.print(l.main());
			et.setTreeInfo(l.tree());
			fprintf(l.main(),"Learning Time : %f sec\n",	et.learn()/CLOCKS_PER_SEC);
			result = et.test();
			fprintf(l.main(),"Error rate : %f %%\n", result.getErrorRate());	
			fprintf(stderr,"Error rate : %f %%\n", result.getErrorRate());
			result.printProb(l.roc());
			
			et.computeVimp(vim,ls);
			et.printVimp(vim,l.varimp());
			et.dotit(l.dot(),10);
					
			l.flush();
			break;
		} case 3: {
			fprintf(stderr,"RANDOM TT FOREST\n");
			RandomTTForest rttf(&db,nbTree,k,nmin);
			rttf.setKint(0);
			rttf.setLS(&ls);
			rttf.setTS(&ts);
			rttf.setAttCand(&attcand);
			rttf.setGroupCand(groupcand);
			rttf.setInternalComp(intc);
			rttf.print(l.main());
			rttf.setTreeInfo(l.tree());
			fprintf(l.main(),"Learning Time : %f sec\n",	rttf.learn()/CLOCKS_PER_SEC);
			result = rttf.test();
			fprintf(l.main(),"Error rate : %f %%\n", result.getErrorRate());
			fprintf(stderr,"Error rate : %f %%\n", result.getErrorRate());
			result.printProb(l.roc());
			
			
			std::vector<float> gim(db.getNbGroup(),0.0);
			rttf.computeGroupVimp(gim,ls);
			rttf.printGroupVimp(gim,l.groupimp());
			
			rttf.computeVimp(vim,ls);
			rttf.printVimp(vim, l.varimp());
			rttf.dotit(l.dot(),10);
			
			
			l.flush();
			break;
		} case 4: {
			fprintf(stderr,"EXTRATTREES\n");
			ExtraTTrees ett(&db,nbTree,k,nmin);
			ett.setKint(0);
			ett.setLS(&ls);
			ett.setTS(&ts);
			ett.setAttCand(&attcand);
			ett.setGroupCand(groupcand);
			ett.setInternalComp(intc);
			ett.print(l.main());
			fprintf(l.main(),"Learning Time : %f sec\n",	ett.learn()/CLOCKS_PER_SEC);
			result = ett.test();
			fprintf(l.main(),"Error rate : %f %%\n", result.getErrorRate());
			fprintf(stderr,"Error rate : %f %%\n", result.getErrorRate());
			result.printProb(l.roc());
			
			std::vector<float> gim(db.getNbGroup(),0.0);
			ett.computeGroupVimp(gim,ls);
			ett.printGroupVimp(gim,l.groupimp());	
			
			ett.computeVimp(vim,ls);
			ett.printVimp(vim,l.varimp());
			
			l.flush();
			break;
		} case 5: { // WIP...
			fprintf(stderr,"RANDOM TT STUMP\n");
			RandomTTForest rttf(&db,nbTree,k,nmin);
			rttf.setKint(0);
			rttf.setLS(&ls);
			rttf.setTS(&ts);
			rttf.setTreeType(RANDOMTTSTUMP);
			rttf.setAttCand(&attcand);
			rttf.setGroupCand(groupcand);
			rttf.setInternalComp(intc);
			rttf.print(l.main());
			fprintf(l.main(),"Learning Time : %f sec\n",	rttf.learn()/CLOCKS_PER_SEC);
			result = rttf.test();
			fprintf(l.main(),"Error rate : %f %%\n", result.getErrorRate());
			fprintf(stderr,"Error rate : %f %%\n", result.getErrorRate());
			result.printProb(l.roc());
			rttf.computeVimp();
			rttf.printVimp(l.varimp());
			rttf.computeGroupVimp();
			rttf.printGroupVimp(l.groupimp());
			l.flush();
			break;
		} case 6: { // WIP...
			fprintf(stderr,"EXTRATTSTUMP\n");
			ExtraTTrees ett(&db,nbTree,k,nmin);
			ett.setKint(0);
			ett.setLS(&ls);
			ett.setTS(&ts);
			ett.setTreeType(EXTRATTSTUMP);
			ett.setAttCand(&attcand);
			ett.setGroupCand(groupcand);
			ett.setInternalComp(intc);
			ett.print(l.main());
			fprintf(l.main(),"Learning Time : %f sec\n",	ett.learn()/CLOCKS_PER_SEC);
			result = ett.test();
			fprintf(l.main(),"Error rate : %f %%\n", result.getErrorRate());
			fprintf(stderr,"Error rate : %f %%\n", result.getErrorRate());
			result.printProb(l.roc());
			ett.computeVimp();
			ett.printVimp(l.varimp());
			ett.computeGroupVimp();
			ett.printGroupVimp(l.groupimp());	
			l.flush();			
			break;
		} default: break;
	}

	
	fprintf(l.main(),"Overall Time : %f sec\n",(clock()-clock_start) / (double) CLOCKS_PER_SEC);
	fprintf(l.main(),"Program terminated...\n");
	fprintf(stdout,"Program terminated...\n");

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1130, %rsp           # imm = 0x1130
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
callq 0x3180
movq %rax, -0x18(%rbp)
movb $0x0, -0x31(%rbp)
movb $0x0, -0x32(%rbp)
movl $0xffffffff, -0x38(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x3c(%rbp) # imm = 0xFFFFFFFF
movb $0x0, -0x3d(%rbp)
movl $0x1, -0x44(%rbp)
movl $0x1, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x1, -0x50(%rbp)
movl $0x1, -0x54(%rbp)
movb $0x1, -0x55(%rbp)
movb $0x1, -0x56(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0xdd0(%rbp)
callq 0x33f0
movq -0xdd0(%rbp), %rdx
leaq 0x2ca18(%rip), %rsi     # 0x308ad
leaq -0x78(%rbp), %rdi
callq 0x65d0
jmp 0x3ea0
leaq -0x79(%rbp), %rdi
callq 0x32b0
leaq -0xb1(%rbp), %rdi
movq %rdi, -0xdd8(%rbp)
callq 0x33f0
movq -0xdd8(%rbp), %rdx
leaq 0x2c9e3(%rip), %rsi     # 0x308ad
leaq -0xb0(%rbp), %rdi
callq 0x65d0
jmp 0x3ed8
leaq -0xb1(%rbp), %rdi
callq 0x32b0
leaq -0xd9(%rbp), %rdi
movq %rdi, -0xde0(%rbp)
callq 0x33f0
movq -0xde0(%rbp), %rdx
leaq 0x2c9a8(%rip), %rsi     # 0x308ad
leaq -0xd8(%rbp), %rdi
callq 0x65d0
jmp 0x3f13
leaq -0xd9(%rbp), %rdi
callq 0x32b0
leaq -0x101(%rbp), %rdi
movq %rdi, -0xde8(%rbp)
callq 0x33f0
movq -0xde8(%rbp), %rdx
leaq 0x2c96d(%rip), %rsi     # 0x308ad
leaq -0x100(%rbp), %rdi
callq 0x65d0
jmp 0x3f4e
leaq -0x101(%rbp), %rdi
callq 0x32b0
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0x2c412(%rip), %rdx     # 0x3037a
callq 0x3090
movl %eax, -0x1c(%rbp)
cmpl $-0x1, %eax
je 0x41d4
movl -0x1c(%rbp), %eax
addl $-0x3f, %eax
movl %eax, %ecx
movq %rcx, -0xdf0(%rbp)
subl $0x39, %eax
ja 0x41b4
movq -0xdf0(%rbp), %rax
leaq 0x2c095(%rip), %rcx     # 0x30034
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x79(%rbp), %rdi
callq 0x32b0
jmp 0x65c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x32b0
jmp 0x65b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xd9(%rbp), %rdi
callq 0x32b0
jmp 0x65ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x101(%rbp), %rdi
callq 0x32b0
jmp 0x65a0
movb $0x0, -0x55(%rbp)
jmp 0x41cf
movb $0x0, -0x56(%rbp)
jmp 0x41cf
movq 0x3cf76(%rip), %rax     # 0x40fc0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movb $0x1, -0x31(%rbp)
jmp 0x41cf
movq 0x3cf5f(%rip), %rax     # 0x40fc0
movq (%rax), %rsi
leaq -0x78(%rbp), %rdi
callq 0x3340
jmp 0x406f
jmp 0x41cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x6594
movq 0x3cf2e(%rip), %rax     # 0x40fc0
movq (%rax), %rsi
leaq -0xd8(%rbp), %rdi
callq 0x3340
jmp 0x40a3
jmp 0x41cf
movq 0x3cf11(%rip), %rax     # 0x40fc0
movq (%rax), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x3340
jmp 0x40c0
jmp 0x41cf
movq 0x3cef4(%rip), %rax     # 0x40fc0
movq (%rax), %rsi
leaq -0x100(%rbp), %rdi
callq 0x3340
jmp 0x40dd
jmp 0x41cf
movq 0x3ced7(%rip), %rax     # 0x40fc0
movq (%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x41cf
movb $0x1, -0x32(%rbp)
jmp 0x41cf
movq 0x3cebb(%rip), %rax     # 0x40fc0
movq (%rax), %rdi
callq 0x33a0
movl %eax, -0x38(%rbp)
jmp 0x41cf
movq 0x3cea4(%rip), %rax     # 0x40fc0
movq (%rax), %rdi
callq 0x33a0
movl %eax, -0x3c(%rbp)
jmp 0x41cf
movq 0x3ce8d(%rip), %rax     # 0x40fc0
movq (%rax), %rdi
callq 0x33a0
movl %eax, -0x44(%rbp)
jmp 0x41cf
movq 0x3ce76(%rip), %rax     # 0x40fc0
movq (%rax), %rdi
callq 0x33a0
movl %eax, -0x48(%rbp)
jmp 0x41cf
movq 0x3ce62(%rip), %rax     # 0x40fc0
movq (%rax), %rdi
callq 0x33a0
movl %eax, -0x4c(%rbp)
jmp 0x41cf
movq 0x3ce4e(%rip), %rax     # 0x40fc0
movq (%rax), %rdi
callq 0x33a0
movl %eax, -0x50(%rbp)
jmp 0x41cf
movq 0x3ce3a(%rip), %rax     # 0x40fc0
movq (%rax), %rdi
callq 0x33a0
movl %eax, -0x54(%rbp)
jmp 0x41cf
movb $0x1, -0x3d(%rbp)
jmp 0x41cf
callq 0x3bc0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x108(%rbp)
jmp 0x655b
callq 0x3bc0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x108(%rbp)
jmp 0x655b
jmp 0x3f5a
cmpl $-0x1, -0x38(%rbp)
jle 0x41e4
movl -0x38(%rbp), %edi
callq 0x3240
jmp 0x41f4
xorl %eax, %eax
movl %eax, %edi
callq 0x3220
movl %eax, %edi
callq 0x3240
movq -0x28(%rbp), %rdx
movl -0x48(%rbp), %ecx
movl -0x3c(%rbp), %r8d
movl -0x44(%rbp), %r9d
movl -0x54(%rbp), %esi
movl -0x50(%rbp), %edi
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %esi, (%rax)
leaq 0x2c182(%rip), %rsi     # 0x3039a
xorl %eax, %eax
leaq -0x210(%rbp), %rdi
movq %rdi, -0xdf8(%rbp)
callq 0x3060
movq -0xdf8(%rbp), %rsi
movl -0x4c(%rbp), %edx
leaq -0x268(%rbp), %rdi
callq 0x6680
jmp 0x4245
movq -0x28(%rbp), %rax
movq %rax, -0xe08(%rbp)
leaq -0x321(%rbp), %rdi
movq %rdi, -0xe00(%rbp)
callq 0x33f0
movq -0xe08(%rbp), %rsi
movq -0xe00(%rbp), %rdx
leaq -0x320(%rbp), %rdi
callq 0x65d0
jmp 0x427f
leaq -0x300(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x1dae0
jmp 0x4294
leaq -0x320(%rbp), %rdi
callq 0x3170
leaq -0x321(%rbp), %rdi
callq 0x32b0
testb $0x1, -0x31(%rbp)
je 0x44b3
testb $0x1, -0x55(%rbp)
je 0x43b2
movq -0x30(%rbp), %rax
movq %rax, -0xe18(%rbp)
leaq -0x349(%rbp), %rdi
movq %rdi, -0xe10(%rbp)
callq 0x33f0
movq -0xe18(%rbp), %rsi
movq -0xe10(%rbp), %rdx
leaq -0x348(%rbp), %rdi
callq 0x65d0
jmp 0x42fa
leaq -0x300(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x1e0b0
jmp 0x430f
leaq -0x348(%rbp), %rdi
callq 0x3170
leaq -0x349(%rbp), %rdi
callq 0x32b0
jmp 0x445e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x435e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x3170
leaq -0x321(%rbp), %rdi
callq 0x32b0
jmp 0x654d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x43a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x3170
leaq -0x349(%rbp), %rdi
callq 0x32b0
jmp 0x6541
movq -0x30(%rbp), %rax
movq %rax, -0xe28(%rbp)
leaq -0x371(%rbp), %rdi
movq %rdi, -0xe20(%rbp)
callq 0x33f0
movq -0xe28(%rbp), %rsi
movq -0xe20(%rbp), %rdx
leaq -0x370(%rbp), %rdi
callq 0x65d0
jmp 0x43ec
leaq -0x300(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x1e3a0
jmp 0x4401
leaq -0x370(%rbp), %rdi
callq 0x3170
leaq -0x371(%rbp), %rdi
callq 0x32b0
jmp 0x445e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x444d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x370(%rbp), %rdi
callq 0x3170
leaq -0x371(%rbp), %rdi
callq 0x32b0
jmp 0x6541
leaq 0x2bf50(%rip), %rsi     # 0x303b5
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x4473
movq -0x30(%rbp), %rsi
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x4485
leaq 0x2c188(%rip), %rsi     # 0x30614
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x449a
jmp 0x44b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x6541
testb $0x1, -0x32(%rbp)
je 0x44e3
leaq -0x300(%rbp), %rdi
movl $0x1, %esi
callq 0x6770
jmp 0x44cc
leaq 0x2beee(%rip), %rsi     # 0x303c1
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x44e1
jmp 0x44e3
testb $0x1, -0x3d(%rbp)
je 0x4517
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xe30(%rbp)
jmp 0x44fe
movq -0xe30(%rbp), %rsi
leaq -0x300(%rbp), %rdi
xorl %edx, %edx
callq 0xf1e0
jmp 0x4515
jmp 0x4517
leaq -0x390(%rbp), %rdi
callq 0x67b0
leaq 0x2c383(%rip), %rsi     # 0x308ad
leaq -0xb0(%rbp), %rdi
callq 0x67d0
movb %al, -0xe31(%rbp)
jmp 0x453e
movb -0xe31(%rbp), %al
testb $0x1, %al
jne 0x454a
jmp 0x459c
leaq -0x3a8(%rbp), %rdi
leaq -0x300(%rbp), %rsi
xorl %edx, %edx
callq 0x19090
jmp 0x4561
leaq -0x390(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x6800
leaq -0x3a8(%rbp), %rdi
callq 0x6830
jmp 0x46e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x6535
testb $0x1, -0x56(%rbp)
je 0x461f
leaq -0x3e0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x3120
jmp 0x45b7
leaq -0x3c0(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x6890
jmp 0x45cc
leaq -0x390(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x6800
leaq -0x3c0(%rbp), %rdi
callq 0x6830
leaq -0x3e0(%rbp), %rdi
callq 0x3170
jmp 0x4699
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x3170
jmp 0x6535
leaq -0x418(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x3120
jmp 0x4634
leaq -0x3f8(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x6bc0
jmp 0x4649
leaq -0x390(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x6800
leaq -0x3f8(%rbp), %rdi
callq 0x6830
leaq -0x418(%rbp), %rdi
callq 0x3170
jmp 0x4699
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x3170
jmp 0x6535
leaq 0x2bd33(%rip), %rsi     # 0x303d3
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x46ae
leaq -0xb0(%rbp), %rdi
callq 0x3100
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x46cb
leaq 0x2bf42(%rip), %rsi     # 0x30614
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x46e0
jmp 0x46e2
leaq -0x430(%rbp), %rdi
callq 0x67b0
leaq 0x2c1b8(%rip), %rsi     # 0x308ad
leaq -0xd8(%rbp), %rdi
callq 0x67d0
movb %al, -0xe32(%rbp)
jmp 0x4709
movb -0xe32(%rbp), %al
testb $0x1, %al
jne 0x4715
jmp 0x4767
leaq -0x448(%rbp), %rdi
leaq -0x300(%rbp), %rsi
xorl %edx, %edx
callq 0x19090
jmp 0x472c
leaq -0x430(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x6800
leaq -0x448(%rbp), %rdi
callq 0x6830
jmp 0x48ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x6529
testb $0x1, -0x56(%rbp)
je 0x47ea
leaq -0x480(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3120
jmp 0x4782
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x6890
jmp 0x4797
leaq -0x430(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x6800
leaq -0x460(%rbp), %rdi
callq 0x6830
leaq -0x480(%rbp), %rdi
callq 0x3170
jmp 0x4864
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x3170
jmp 0x6529
leaq -0x4b8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3120
jmp 0x47ff
leaq -0x498(%rbp), %rdi
leaq -0x4b8(%rbp), %rsi
callq 0x6bc0
jmp 0x4814
leaq -0x430(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0x6800
leaq -0x498(%rbp), %rdi
callq 0x6830
leaq -0x4b8(%rbp), %rdi
callq 0x3170
jmp 0x4864
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x3170
jmp 0x6529
leaq 0x2bb7b(%rip), %rsi     # 0x303e6
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x4879
leaq -0xd8(%rbp), %rdi
callq 0x3100
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x4896
leaq 0x2bd77(%rip), %rsi     # 0x30614
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x48ab
jmp 0x48ad
leaq -0x4d0(%rbp), %rdi
callq 0x67b0
leaq 0x2bfed(%rip), %rsi     # 0x308ad
leaq -0x78(%rbp), %rdi
callq 0x67d0
movb %al, -0xe33(%rbp)
jmp 0x48d1
movb -0xe33(%rbp), %al
testb $0x1, %al
jne 0x48dd
jmp 0x492d
leaq -0x4e8(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x19260
jmp 0x48f2
leaq -0x4d0(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x6800
leaq -0x4e8(%rbp), %rdi
callq 0x6830
jmp 0x49ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x651d
leaq -0x520(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x3120
jmp 0x493f
leaq -0x500(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0x6890
jmp 0x4954
leaq -0x4d0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
movq %rsi, -0xe40(%rbp)
callq 0x6800
movq -0xe40(%rbp), %rdi
callq 0x6830
leaq -0x520(%rbp), %rdi
callq 0x3170
leaq 0x2ba68(%rip), %rsi     # 0x303f5
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x499b
leaq -0x78(%rbp), %rdi
callq 0x3100
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x49b5
leaq 0x2bc58(%rip), %rsi     # 0x30614
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x49ca
jmp 0x49ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x3170
jmp 0x651d
leaq -0x538(%rbp), %rdi
callq 0x67b0
testb $0x1, -0x31(%rbp)
je 0x4b46
leaq 0x2bea1(%rip), %rsi     # 0x308ad
leaq -0x100(%rbp), %rdi
callq 0x67d0
movb %al, -0xe41(%rbp)
jmp 0x4a20
movb -0xe41(%rbp), %al
testb $0x1, %al
jne 0x4a2c
jmp 0x4a7c
leaq -0x550(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0xf130
jmp 0x4a41
leaq -0x538(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x6800
leaq -0x550(%rbp), %rdi
callq 0x6830
jmp 0x4b44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x6511
leaq -0x588(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3120
jmp 0x4a91
leaq -0x568(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x6890
jmp 0x4aa6
leaq -0x538(%rbp), %rdi
leaq -0x568(%rbp), %rsi
movq %rsi, -0xe50(%rbp)
callq 0x6800
movq -0xe50(%rbp), %rdi
callq 0x6830
leaq -0x588(%rbp), %rdi
callq 0x3170
leaq 0x2b916(%rip), %rsi     # 0x303f5
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x4aed
leaq -0x100(%rbp), %rdi
callq 0x3100
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x4b0a
leaq 0x2bb03(%rip), %rsi     # 0x30614
leaq -0x268(%rbp), %rdi
callq 0x6740
jmp 0x4b1f
jmp 0x4b44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x588(%rbp), %rdi
callq 0x3170
jmp 0x6511
jmp 0x4b46
leaq -0x5e0(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x24ac0
jmp 0x4b5b
leaq -0x300(%rbp), %rdi
callq 0x19410
movl %eax, -0xe54(%rbp)
jmp 0x4b6f
movl -0xe54(%rbp), %eax
movl %eax, %eax
movq %rax, -0xe68(%rbp)
movl $0x0, -0x5fc(%rbp)
leaq -0x5fd(%rbp), %rdi
movq %rdi, -0xe60(%rbp)
callq 0x6ed0
movq -0xe68(%rbp), %rsi
movq -0xe60(%rbp), %rcx
leaq -0x5f8(%rbp), %rdi
leaq -0x5fc(%rbp), %rdx
callq 0x6ef0
jmp 0x4bbe
leaq -0x5fd(%rbp), %rdi
callq 0x6f70
movl -0x3c(%rbp), %eax
movq %rax, -0xe70(%rbp)
subq $0x6, %rax
ja 0x63fb
movq -0xe70(%rbp), %rax
leaq 0x2b42c(%rip), %rcx     # 0x30018
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x6505
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x5fd(%rbp), %rdi
callq 0x6f70
jmp 0x6505
movq 0x3c3a2(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x2b7ca(%rip), %rsi     # 0x3040a
xorl %eax, %eax
movl %eax, -0xe74(%rbp)
callq 0x3360
movl -0xe74(%rbp), %ecx
movl -0x50(%rbp), %edx
leaq -0x770(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x132d0
jmp 0x4c6b
leaq -0x770(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x204d0
jmp 0x4c80
leaq -0x770(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x204f0
jmp 0x4c95
leaq -0x770(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x20510
jmp 0x4caa
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xe80(%rbp)
jmp 0x4cbf
movq -0xe80(%rbp), %rsi
leaq -0x770(%rbp), %rdi
callq 0x16760
jmp 0x4cd4
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xe88(%rbp)
jmp 0x4ce9
leaq -0x770(%rbp), %rdi
callq 0x13370
movsd %xmm0, -0xe90(%rbp)
jmp 0x4cff
movq -0xe88(%rbp), %rdi
movsd -0xe90(%rbp), %xmm0
movsd 0x2b2f2(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2b6f7(%rip), %rsi     # 0x30418
movb $0x1, %al
callq 0x3360
leaq -0x7c8(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x6f90
jmp 0x4d3d
leaq -0x5e0(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
callq 0x6fc0
jmp 0x4d52
leaq -0x7c8(%rbp), %rdi
callq 0x24b00
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xe98(%rbp)
jmp 0x4d73
leaq -0x5e0(%rbp), %rdi
movsd 0x2b28e(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xea0(%rbp)
jmp 0x4d91
movsd -0xea0(%rbp), %xmm0
movq -0xe98(%rbp), %rdi
leaq 0x2b689(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
movq 0x3c223(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, -0xeb0(%rbp)
leaq -0x5e0(%rbp), %rdi
movsd 0x2b242(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xea8(%rbp)
jmp 0x4ddd
movsd -0xea8(%rbp), %xmm0
movq -0xeb0(%rbp), %rdi
leaq 0x2b63d(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7000
movq %rax, -0xeb8(%rbp)
jmp 0x4e0f
movq -0xeb8(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x24b20
jmp 0x4e24
leaq -0x770(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x16120
jmp 0x4e40
leaq -0x268(%rbp), %rdi
callq 0x7020
movq %rax, -0xec0(%rbp)
jmp 0x4e55
movq -0xec0(%rbp), %rdx
leaq -0x770(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
movl $0x2, %ecx
callq 0x20b50
jmp 0x4e76
leaq -0x268(%rbp), %rdi
callq 0x7040
movq %rax, -0xec8(%rbp)
jmp 0x4e8b
movq -0xec8(%rbp), %rdi
leaq 0x2b5ab(%rip), %rsi     # 0x30444
xorl %eax, %eax
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7040
movq %rax, -0xed0(%rbp)
jmp 0x4eb5
movq -0xed0(%rbp), %rsi
leaq -0x770(%rbp), %rdi
callq 0x7060
jmp 0x4eca
leaq -0x268(%rbp), %rdi
callq 0x7040
movq %rax, -0xed8(%rbp)
jmp 0x4edf
movq -0xed8(%rbp), %rdi
leaq 0x2b564(%rip), %rsi     # 0x30451
xorl %eax, %eax
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x70a0
jmp 0x4f02
movl $0x5, -0x108(%rbp)
leaq -0x770(%rbp), %rdi
callq 0x13360
jmp 0x63fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x64f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x4f66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x7c8(%rbp), %rdi
callq 0x24b00
leaq -0x770(%rbp), %rdi
callq 0x13360
jmp 0x64f9
movq 0x3c05a(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x2b4cc(%rip), %rsi     # 0x30454
xorl %eax, %eax
callq 0x3360
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movl -0x50(%rbp), %r8d
leaq -0x838(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x22d10
jmp 0x4fae
leaq -0x838(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x204d0
jmp 0x4fc3
leaq -0x838(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x204f0
jmp 0x4fd8
leaq -0x838(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x20510
jmp 0x4fed
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xee0(%rbp)
jmp 0x5002
movq -0xee0(%rbp), %rsi
leaq -0x838(%rbp), %rdi
callq 0x7110
jmp 0x5017
leaq -0x268(%rbp), %rdi
callq 0x71a0
movq %rax, -0xee8(%rbp)
jmp 0x502c
movq -0xee8(%rbp), %rsi
leaq -0x838(%rbp), %rdi
callq 0x7180
jmp 0x5041
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xef0(%rbp)
jmp 0x5056
leaq -0x838(%rbp), %rdi
callq 0x22e50
movsd %xmm0, -0xef8(%rbp)
jmp 0x506c
movq -0xef0(%rbp), %rdi
movsd -0xef8(%rbp), %xmm0
movsd 0x2af85(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2b38a(%rip), %rsi     # 0x30418
movb $0x1, %al
callq 0x3360
leaq -0x890(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x23310
jmp 0x50aa
leaq -0x5e0(%rbp), %rdi
leaq -0x890(%rbp), %rsi
callq 0x6fc0
jmp 0x50bf
leaq -0x890(%rbp), %rdi
callq 0x24b00
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xf00(%rbp)
jmp 0x50e0
leaq -0x5e0(%rbp), %rdi
movsd 0x2af21(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xf08(%rbp)
jmp 0x50fe
movsd -0xf08(%rbp), %xmm0
movq -0xf00(%rbp), %rdi
leaq 0x2b31c(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
movq 0x3beb6(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, -0xf18(%rbp)
leaq -0x5e0(%rbp), %rdi
movsd 0x2aed5(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xf10(%rbp)
jmp 0x514a
movsd -0xf10(%rbp), %xmm0
movq -0xf18(%rbp), %rdi
leaq 0x2b2d0(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7000
movq %rax, -0xf20(%rbp)
jmp 0x517c
movq -0xf20(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x24b20
jmp 0x5191
leaq -0x838(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x237e0
jmp 0x51ad
leaq -0x268(%rbp), %rdi
callq 0x7020
movq %rax, -0xf28(%rbp)
jmp 0x51c2
movq -0xf28(%rbp), %rdx
leaq -0x838(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
movl $0x2, %ecx
callq 0x20b50
jmp 0x51e3
leaq -0x268(%rbp), %rdi
callq 0x7040
movq %rax, -0xf30(%rbp)
jmp 0x51f8
movq -0xf30(%rbp), %rsi
leaq -0x838(%rbp), %rdi
movl $0xa, %edx
callq 0x71c0
jmp 0x5212
leaq -0x268(%rbp), %rdi
callq 0x70a0
jmp 0x5220
movl $0x5, -0x108(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x22dc0
jmp 0x63fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x526d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x890(%rbp), %rdi
callq 0x24b00
leaq -0x838(%rbp), %rdi
callq 0x22dc0
jmp 0x64f9
movq 0x3bd53(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x2b1d4(%rip), %rsi     # 0x30463
xorl %eax, %eax
callq 0x3360
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movl -0x50(%rbp), %r8d
leaq -0x900(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x1ba90
jmp 0x52b5
leaq -0x900(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x204d0
jmp 0x52ca
leaq -0x900(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x204f0
jmp 0x52df
leaq -0x900(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x20510
jmp 0x52f4
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xf38(%rbp)
jmp 0x5309
movq -0xf38(%rbp), %rsi
leaq -0x900(%rbp), %rdi
callq 0x7260
jmp 0x531e
leaq -0x268(%rbp), %rdi
callq 0x71a0
movq %rax, -0xf40(%rbp)
jmp 0x5333
movq -0xf40(%rbp), %rsi
leaq -0x900(%rbp), %rdi
callq 0x72d0
jmp 0x5348
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xf48(%rbp)
jmp 0x535d
leaq -0x900(%rbp), %rdi
callq 0x1bbd0
movsd %xmm0, -0xf50(%rbp)
jmp 0x5373
movq -0xf48(%rbp), %rdi
movsd -0xf50(%rbp), %xmm0
movsd 0x2ac7e(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2b083(%rip), %rsi     # 0x30418
movb $0x1, %al
callq 0x3360
leaq -0x958(%rbp), %rdi
leaq -0x900(%rbp), %rsi
callq 0x1c030
jmp 0x53b1
leaq -0x5e0(%rbp), %rdi
leaq -0x958(%rbp), %rsi
callq 0x6fc0
jmp 0x53c6
leaq -0x958(%rbp), %rdi
callq 0x24b00
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xf58(%rbp)
jmp 0x53e7
leaq -0x5e0(%rbp), %rdi
movsd 0x2ac1a(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xf60(%rbp)
jmp 0x5405
movsd -0xf60(%rbp), %xmm0
movq -0xf58(%rbp), %rdi
leaq 0x2b015(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
movq 0x3bbaf(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, -0xf70(%rbp)
leaq -0x5e0(%rbp), %rdi
movsd 0x2abce(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xf68(%rbp)
jmp 0x5451
movsd -0xf68(%rbp), %xmm0
movq -0xf70(%rbp), %rdi
leaq 0x2afc9(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7000
movq %rax, -0xf78(%rbp)
jmp 0x5483
movq -0xf78(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x24b20
jmp 0x5498
leaq -0x900(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x1c500
jmp 0x54b4
leaq -0x268(%rbp), %rdi
callq 0x7020
movq %rax, -0xf80(%rbp)
jmp 0x54c9
movq -0xf80(%rbp), %rdx
leaq -0x900(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
movl $0x2, %ecx
callq 0x20b50
jmp 0x54ea
leaq -0x268(%rbp), %rdi
callq 0x7040
movq %rax, -0xf88(%rbp)
jmp 0x54ff
movq -0xf88(%rbp), %rsi
leaq -0x900(%rbp), %rdi
movl $0xa, %edx
callq 0x72f0
jmp 0x5519
leaq -0x268(%rbp), %rdi
callq 0x70a0
jmp 0x5527
movl $0x5, -0x108(%rbp)
leaq -0x900(%rbp), %rdi
callq 0x1bb40
jmp 0x63fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x5574
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x958(%rbp), %rdi
callq 0x24b00
leaq -0x900(%rbp), %rdi
callq 0x1bb40
jmp 0x64f9
movq 0x3ba4c(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x2aed9(%rip), %rsi     # 0x3046f
xorl %eax, %eax
callq 0x3360
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movl -0x50(%rbp), %r8d
leaq -0xa10(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x23c50
jmp 0x55bc
leaq -0xa10(%rbp), %rdi
xorl %esi, %esi
callq 0x7390
jmp 0x55cc
leaq -0xa10(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x204d0
jmp 0x55e1
leaq -0xa10(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x204f0
jmp 0x55f6
leaq -0xa10(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x20510
jmp 0x560b
leaq -0xa10(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x1d650
jmp 0x5620
movl -0x54(%rbp), %esi
leaq -0xa10(%rbp), %rdi
callq 0x73b0
jmp 0x5631
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xf90(%rbp)
jmp 0x5646
movq -0xf90(%rbp), %rsi
leaq -0xa10(%rbp), %rdi
callq 0x73d0
jmp 0x565b
leaq -0x268(%rbp), %rdi
callq 0x71a0
movq %rax, -0xf98(%rbp)
jmp 0x5670
movq -0xf98(%rbp), %rsi
leaq -0xa10(%rbp), %rdi
callq 0x7430
jmp 0x5685
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xfa0(%rbp)
jmp 0x569a
leaq -0xa10(%rbp), %rdi
callq 0x23dc0
movsd %xmm0, -0xfa8(%rbp)
jmp 0x56b0
movq -0xfa0(%rbp), %rdi
movsd -0xfa8(%rbp), %xmm0
movsd 0x2a941(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2ad46(%rip), %rsi     # 0x30418
movb $0x1, %al
callq 0x3360
leaq -0xa68(%rbp), %rdi
leaq -0xa10(%rbp), %rsi
callq 0x24330
jmp 0x56ee
leaq -0x5e0(%rbp), %rdi
leaq -0xa68(%rbp), %rsi
callq 0x6fc0
jmp 0x5703
leaq -0xa68(%rbp), %rdi
callq 0x24b00
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0xfb0(%rbp)
jmp 0x5724
leaq -0x5e0(%rbp), %rdi
movsd 0x2a8dd(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xfb8(%rbp)
jmp 0x5742
movsd -0xfb8(%rbp), %xmm0
movq -0xfb0(%rbp), %rdi
leaq 0x2acd8(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
movq 0x3b872(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, -0xfc8(%rbp)
leaq -0x5e0(%rbp), %rdi
movsd 0x2a891(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0xfc0(%rbp)
jmp 0x578e
movsd -0xfc0(%rbp), %xmm0
movq -0xfc8(%rbp), %rdi
leaq 0x2ac8c(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7000
movq %rax, -0xfd0(%rbp)
jmp 0x57c0
movq -0xfd0(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x24b20
jmp 0x57d5
leaq -0x300(%rbp), %rdi
callq 0xf0a0
movl %eax, -0xfd4(%rbp)
jmp 0x57e9
movl -0xfd4(%rbp), %eax
movl %eax, %eax
movq %rax, -0xfe8(%rbp)
movl $0x0, -0xa84(%rbp)
leaq -0xa85(%rbp), %rdi
movq %rdi, -0xfe0(%rbp)
callq 0x6ed0
movq -0xfe8(%rbp), %rsi
movq -0xfe0(%rbp), %rcx
leaq -0xa80(%rbp), %rdi
leaq -0xa84(%rbp), %rdx
callq 0x6ef0
jmp 0x5838
leaq -0xa85(%rbp), %rdi
callq 0x6f70
leaq -0xa10(%rbp), %rdi
leaq -0xa80(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x24a30
jmp 0x5860
leaq -0x268(%rbp), %rdi
callq 0x7450
movq %rax, -0xff0(%rbp)
jmp 0x5875
movq -0xff0(%rbp), %rdx
leaq -0xa10(%rbp), %rdi
leaq -0xa80(%rbp), %rsi
movl $0x2, %ecx
callq 0x1d380
jmp 0x5896
leaq -0xa10(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x24870
jmp 0x58b2
leaq -0x268(%rbp), %rdi
callq 0x7020
movq %rax, -0xff8(%rbp)
jmp 0x58c7
movq -0xff8(%rbp), %rdx
leaq -0xa10(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
movl $0x2, %ecx
callq 0x20b50
jmp 0x58e8
leaq -0x268(%rbp), %rdi
callq 0x7040
movq %rax, -0x1000(%rbp)
jmp 0x58fd
movq -0x1000(%rbp), %rsi
leaq -0xa10(%rbp), %rdi
movl $0xa, %edx
callq 0x7470
jmp 0x5917
leaq -0x268(%rbp), %rdi
callq 0x70a0
jmp 0x5925
movl $0x5, -0x108(%rbp)
leaq -0xa80(%rbp), %rdi
callq 0x7510
leaq -0xa10(%rbp), %rdi
callq 0x23d20
jmp 0x63fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x59be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xa68(%rbp), %rdi
callq 0x24b00
jmp 0x59be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xa85(%rbp), %rdi
callq 0x6f70
jmp 0x59be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xa80(%rbp), %rdi
callq 0x7510
leaq -0xa10(%rbp), %rdi
callq 0x23d20
jmp 0x64f9
movq 0x3b602(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x2aaa1(%rip), %rsi     # 0x30481
xorl %eax, %eax
callq 0x3360
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movl -0x50(%rbp), %r8d
leaq -0xb38(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x19ec0
jmp 0x5a06
leaq -0xb38(%rbp), %rdi
xorl %esi, %esi
callq 0x7390
jmp 0x5a16
leaq -0xb38(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x204d0
jmp 0x5a2b
leaq -0xb38(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x204f0
jmp 0x5a40
leaq -0xb38(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x20510
jmp 0x5a55
leaq -0xb38(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x1d650
jmp 0x5a6a
movl -0x54(%rbp), %esi
leaq -0xb38(%rbp), %rdi
callq 0x73b0
jmp 0x5a7b
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1008(%rbp)
jmp 0x5a90
movq -0x1008(%rbp), %rsi
leaq -0xb38(%rbp), %rdi
callq 0x7570
jmp 0x5aa5
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1010(%rbp)
jmp 0x5aba
leaq -0xb38(%rbp), %rdi
callq 0x1a030
movsd %xmm0, -0x1018(%rbp)
jmp 0x5ad0
movq -0x1010(%rbp), %rdi
movsd -0x1018(%rbp), %xmm0
movsd 0x2a521(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2a926(%rip), %rsi     # 0x30418
movb $0x1, %al
callq 0x3360
leaq -0xb90(%rbp), %rdi
leaq -0xb38(%rbp), %rsi
callq 0x1a230
jmp 0x5b0e
leaq -0x5e0(%rbp), %rdi
leaq -0xb90(%rbp), %rsi
callq 0x6fc0
jmp 0x5b23
leaq -0xb90(%rbp), %rdi
callq 0x24b00
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1020(%rbp)
jmp 0x5b44
leaq -0x5e0(%rbp), %rdi
movsd 0x2a4bd(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0x1028(%rbp)
jmp 0x5b62
movsd -0x1028(%rbp), %xmm0
movq -0x1020(%rbp), %rdi
leaq 0x2a8b8(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
movq 0x3b452(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, -0x1038(%rbp)
leaq -0x5e0(%rbp), %rdi
movsd 0x2a471(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0x1030(%rbp)
jmp 0x5bae
movsd -0x1030(%rbp), %xmm0
movq -0x1038(%rbp), %rdi
leaq 0x2a86c(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7000
movq %rax, -0x1040(%rbp)
jmp 0x5be0
movq -0x1040(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x24b20
jmp 0x5bf5
leaq -0x300(%rbp), %rdi
callq 0xf0a0
movl %eax, -0x1044(%rbp)
jmp 0x5c09
movl -0x1044(%rbp), %eax
movl %eax, %eax
movq %rax, -0x1058(%rbp)
movl $0x0, -0xbac(%rbp)
leaq -0xbad(%rbp), %rdi
movq %rdi, -0x1050(%rbp)
callq 0x6ed0
movq -0x1058(%rbp), %rsi
movq -0x1050(%rbp), %rcx
leaq -0xba8(%rbp), %rdi
leaq -0xbac(%rbp), %rdx
callq 0x6ef0
jmp 0x5c58
leaq -0xbad(%rbp), %rdi
callq 0x6f70
leaq -0xb38(%rbp), %rdi
leaq -0xba8(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x1a7b0
jmp 0x5c80
leaq -0x268(%rbp), %rdi
callq 0x7450
movq %rax, -0x1060(%rbp)
jmp 0x5c95
movq -0x1060(%rbp), %rdx
leaq -0xb38(%rbp), %rdi
leaq -0xba8(%rbp), %rsi
movl $0x2, %ecx
callq 0x1d380
jmp 0x5cb6
leaq -0xb38(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x1a5f0
jmp 0x5cd2
leaq -0x268(%rbp), %rdi
callq 0x7020
movq %rax, -0x1068(%rbp)
jmp 0x5ce7
movq -0x1068(%rbp), %rdx
leaq -0xb38(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
movl $0x2, %ecx
callq 0x20b50
jmp 0x5d08
leaq -0x268(%rbp), %rdi
callq 0x70a0
jmp 0x5d16
movl $0x5, -0x108(%rbp)
leaq -0xba8(%rbp), %rdi
callq 0x7510
leaq -0xb38(%rbp), %rdi
callq 0x19f90
jmp 0x63fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x5daf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xb90(%rbp), %rdi
callq 0x24b00
jmp 0x5daf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xbad(%rbp), %rdi
callq 0x6f70
jmp 0x5daf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xba8(%rbp), %rdi
callq 0x7510
leaq -0xb38(%rbp), %rdi
callq 0x19f90
jmp 0x64f9
movq 0x3b211(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x2a6bd(%rip), %rsi     # 0x3048e
xorl %eax, %eax
callq 0x3360
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movl -0x50(%rbp), %r8d
leaq -0xc68(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x23c50
jmp 0x5df7
leaq -0xc68(%rbp), %rdi
xorl %esi, %esi
callq 0x7390
jmp 0x5e07
leaq -0xc68(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x204d0
jmp 0x5e1c
leaq -0xc68(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x204f0
jmp 0x5e31
leaq -0xc68(%rbp), %rdi
movl $0x5, %esi
callq 0x75d0
jmp 0x5e44
leaq -0xc68(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x20510
jmp 0x5e59
leaq -0xc68(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x1d650
jmp 0x5e6e
movl -0x54(%rbp), %esi
leaq -0xc68(%rbp), %rdi
callq 0x73b0
jmp 0x5e7f
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1070(%rbp)
jmp 0x5e94
movq -0x1070(%rbp), %rsi
leaq -0xc68(%rbp), %rdi
callq 0x73d0
jmp 0x5ea9
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1078(%rbp)
jmp 0x5ebe
leaq -0xc68(%rbp), %rdi
callq 0x23dc0
movsd %xmm0, -0x1080(%rbp)
jmp 0x5ed4
movq -0x1078(%rbp), %rdi
movsd -0x1080(%rbp), %xmm0
movsd 0x2a11d(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2a522(%rip), %rsi     # 0x30418
movb $0x1, %al
callq 0x3360
leaq -0xcc0(%rbp), %rdi
leaq -0xc68(%rbp), %rsi
callq 0x24330
jmp 0x5f12
leaq -0x5e0(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x6fc0
jmp 0x5f27
leaq -0xcc0(%rbp), %rdi
callq 0x24b00
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1088(%rbp)
jmp 0x5f48
leaq -0x5e0(%rbp), %rdi
movsd 0x2a0b9(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0x1090(%rbp)
jmp 0x5f66
movsd -0x1090(%rbp), %xmm0
movq -0x1088(%rbp), %rdi
leaq 0x2a4b4(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
movq 0x3b04e(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, -0x10a0(%rbp)
leaq -0x5e0(%rbp), %rdi
movsd 0x2a06d(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0x1098(%rbp)
jmp 0x5fb2
movsd -0x1098(%rbp), %xmm0
movq -0x10a0(%rbp), %rdi
leaq 0x2a468(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7000
movq %rax, -0x10a8(%rbp)
jmp 0x5fe4
movq -0x10a8(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x24b20
jmp 0x5ff9
leaq -0xc68(%rbp), %rdi
callq 0x24710
jmp 0x6007
leaq -0x268(%rbp), %rdi
callq 0x7020
movq %rax, -0x10b0(%rbp)
jmp 0x601c
movq -0x10b0(%rbp), %rsi
leaq -0xc68(%rbp), %rdi
movl $0x1, %edx
callq 0x20a20
jmp 0x6036
leaq -0xc68(%rbp), %rdi
callq 0x248e0
jmp 0x6044
leaq -0x268(%rbp), %rdi
callq 0x7450
movq %rax, -0x10b8(%rbp)
jmp 0x6059
movq -0x10b8(%rbp), %rsi
leaq -0xc68(%rbp), %rdi
movl $0x1, %edx
callq 0x1d250
jmp 0x6073
leaq -0x268(%rbp), %rdi
callq 0x70a0
jmp 0x6081
movl $0x5, -0x108(%rbp)
leaq -0xc68(%rbp), %rdi
callq 0x23d20
jmp 0x63fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x60ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xcc0(%rbp), %rdi
callq 0x24b00
leaq -0xc68(%rbp), %rdi
callq 0x23d20
jmp 0x64f9
movq 0x3aef2(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x2a3af(%rip), %rsi     # 0x3049f
xorl %eax, %eax
callq 0x3360
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movl -0x50(%rbp), %r8d
leaq -0xd70(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x19ec0
jmp 0x6116
leaq -0xd70(%rbp), %rdi
xorl %esi, %esi
callq 0x7390
jmp 0x6126
leaq -0xd70(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x204d0
jmp 0x613b
leaq -0xd70(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x204f0
jmp 0x6150
leaq -0xd70(%rbp), %rdi
movl $0x6, %esi
callq 0x75d0
jmp 0x6163
leaq -0xd70(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x20510
jmp 0x6178
leaq -0xd70(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x1d650
jmp 0x618d
movl -0x54(%rbp), %esi
leaq -0xd70(%rbp), %rdi
callq 0x73b0
jmp 0x619e
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x10c0(%rbp)
jmp 0x61b3
movq -0x10c0(%rbp), %rsi
leaq -0xd70(%rbp), %rdi
callq 0x7570
jmp 0x61c8
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x10c8(%rbp)
jmp 0x61dd
leaq -0xd70(%rbp), %rdi
callq 0x1a030
movsd %xmm0, -0x10d0(%rbp)
jmp 0x61f3
movq -0x10c8(%rbp), %rdi
movsd -0x10d0(%rbp), %xmm0
movsd 0x29dfe(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2a203(%rip), %rsi     # 0x30418
movb $0x1, %al
callq 0x3360
leaq -0xdc8(%rbp), %rdi
leaq -0xd70(%rbp), %rsi
callq 0x1a230
jmp 0x6231
leaq -0x5e0(%rbp), %rdi
leaq -0xdc8(%rbp), %rsi
callq 0x6fc0
jmp 0x6246
leaq -0xdc8(%rbp), %rdi
callq 0x24b00
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x10d8(%rbp)
jmp 0x6267
leaq -0x5e0(%rbp), %rdi
movsd 0x29d9a(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0x10e0(%rbp)
jmp 0x6285
movsd -0x10e0(%rbp), %xmm0
movq -0x10d8(%rbp), %rdi
leaq 0x2a195(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
movq 0x3ad2f(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, -0x10f0(%rbp)
leaq -0x5e0(%rbp), %rdi
movsd 0x29d4e(%rip), %xmm0    # 0x30010
callq 0x24ba0
movsd %xmm0, -0x10e8(%rbp)
jmp 0x62d1
movsd -0x10e8(%rbp), %xmm0
movq -0x10f0(%rbp), %rdi
leaq 0x2a149(%rip), %rsi     # 0x30430
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x7000
movq %rax, -0x10f8(%rbp)
jmp 0x6303
movq -0x10f8(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
callq 0x24b20
jmp 0x6318
leaq -0xd70(%rbp), %rdi
callq 0x1a490
jmp 0x6326
leaq -0x268(%rbp), %rdi
callq 0x7020
movq %rax, -0x1100(%rbp)
jmp 0x633b
movq -0x1100(%rbp), %rsi
leaq -0xd70(%rbp), %rdi
movl $0x1, %edx
callq 0x20a20
jmp 0x6355
leaq -0xd70(%rbp), %rdi
callq 0x1a660
jmp 0x6363
leaq -0x268(%rbp), %rdi
callq 0x7450
movq %rax, -0x1108(%rbp)
jmp 0x6378
movq -0x1108(%rbp), %rsi
leaq -0xd70(%rbp), %rdi
movl $0x1, %edx
callq 0x1d250
jmp 0x6392
leaq -0x268(%rbp), %rdi
callq 0x70a0
jmp 0x63a0
movl $0x5, -0x108(%rbp)
leaq -0xd70(%rbp), %rdi
callq 0x19f90
jmp 0x63fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x63ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xdc8(%rbp), %rdi
callq 0x24b00
leaq -0xd70(%rbp), %rdi
callq 0x19f90
jmp 0x64f9
jmp 0x63fd
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1110(%rbp)
jmp 0x6412
callq 0x3180
movq -0x1110(%rbp), %rdi
movq -0x18(%rbp), %rcx
subq %rcx, %rax
cvtsi2sd %rax, %xmm0
movsd 0x29bd6(%rip), %xmm1    # 0x30008
divsd %xmm1, %xmm0
leaq 0x2a070(%rip), %rsi     # 0x304ad
movb $0x1, %al
callq 0x3360
leaq -0x268(%rbp), %rdi
callq 0x6790
movq %rax, -0x1118(%rbp)
jmp 0x6459
movq -0x1118(%rbp), %rdi
leaq 0x2a05d(%rip), %rsi     # 0x304c4
movb $0x0, %al
callq 0x3360
movq 0x3ab33(%rip), %rax     # 0x40fa8
movq (%rax), %rdi
leaq 0x2a045(%rip), %rsi     # 0x304c4
movb $0x0, %al
callq 0x3360
movl $0x0, -0x4(%rbp)
movl $0x1, -0x108(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0x7510
leaq -0x5e0(%rbp), %rdi
callq 0x24b00
leaq -0x538(%rbp), %rdi
callq 0x6830
leaq -0x4d0(%rbp), %rdi
callq 0x6830
leaq -0x430(%rbp), %rdi
callq 0x6830
leaq -0x390(%rbp), %rdi
callq 0x6830
leaq -0x300(%rbp), %rdi
callq 0x1ea60
leaq -0x268(%rbp), %rdi
callq 0x75f0
jmp 0x655b
leaq -0x5f8(%rbp), %rdi
callq 0x7510
leaq -0x5e0(%rbp), %rdi
callq 0x24b00
leaq -0x538(%rbp), %rdi
callq 0x6830
leaq -0x4d0(%rbp), %rdi
callq 0x6830
leaq -0x430(%rbp), %rdi
callq 0x6830
leaq -0x390(%rbp), %rdi
callq 0x6830
leaq -0x300(%rbp), %rdi
callq 0x1ea60
leaq -0x268(%rbp), %rdi
callq 0x75f0
jmp 0x6594
leaq -0x100(%rbp), %rdi
callq 0x3170
leaq -0xd8(%rbp), %rdi
callq 0x3170
leaq -0xb0(%rbp), %rdi
callq 0x3170
leaq -0x78(%rbp), %rdi
callq 0x3170
movl -0x4(%rbp), %eax
addq $0x1130, %rsp           # imm = 0x1130
popq %rbp
retq
leaq -0x100(%rbp), %rdi
callq 0x3170
leaq -0xd8(%rbp), %rdi
callq 0x3170
leaq -0xb0(%rbp), %rdi
callq 0x3170
leaq -0x78(%rbp), %rdi
callq 0x3170
movq -0x88(%rbp), %rdi
callq 0x33e0
nopl (%rax)