// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x698, %rsp            # imm = 0x698
movq %rsi, %r15
movl %edi, %r13d
callq 0x3140
movq %rax, %r14
leaq 0xfd34(%rip), %rbx      # 0x1381e
leaq -0x400(%rbp), %rdi
leaq -0x370(%rbp), %rdx
movq %rbx, %rsi
callq 0x5492
leaq -0x3c0(%rbp), %rdi
leaq -0x370(%rbp), %rdx
movq %rbx, %rsi
callq 0x5492
leaq 0xfd01(%rip), %rsi      # 0x1381e
leaq -0x3a0(%rbp), %rdi
leaq -0x370(%rbp), %rdx
callq 0x5492
movq %r14, -0x378(%rbp)
leaq 0xfce0(%rip), %rsi      # 0x1381e
leaq -0x3e0(%rbp), %rdi
leaq -0x370(%rbp), %rdx
callq 0x5492
movb $0x1, %al
movl $0x0, -0xc0(%rbp)
pushq $0x1
popq %rdx
pushq $-0x1
popq %rsi
leaq 0xf788(%rip), %r14      # 0x132f2
leaq 0xf4a7(%rip), %r12      # 0x13018
movl $0x0, -0xb4(%rbp)
movq %rsi, -0x1a0(%rbp)
movl %esi, -0x38(%rbp)
movl $0x0, -0xb8(%rbp)
movl %edx, -0x2c(%rbp)
movl $0x0, -0xbc(%rbp)
movl %edx, %ecx
movq %rcx, -0x1a8(%rbp)
movl %edx, -0xc4(%rbp)
movq %rcx, -0x58(%rbp)
movb $0x1, %cl
movl %ecx, -0x34(%rbp)
movl %eax, %ebx
movl %r13d, %edi
movq %r15, %rsi
movq %r14, %rdx
callq 0x3080
leal -0x61(%rax), %ecx
cmpl $0x17, %ecx
ja 0x3d27
xorl %eax, %eax
movslq (%r12,%rcx,4), %rcx
addq %r12, %rcx
leaq -0x400(%rbp), %rdi
jmpq *%rcx
movq 0x1a3d7(%rip), %rax     # 0x1dfc0
movq (%rax), %rax
movq %rax, -0x198(%rbp)
movb $0x1, %al
movl %eax, -0xc0(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movl $0x0, -0x34(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movb $0x1, %al
movl %eax, -0xb4(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movq 0x1a3a3(%rip), %rax     # 0x1dfc0
movq (%rax), %rdi
callq 0x32e0
movl %eax, -0xbc(%rbp)
movl %ebx, %eax
jmp 0x3bb4
leaq -0x3c0(%rbp), %rdi
jmp 0x3c61
leaq -0x3e0(%rbp), %rdi
jmp 0x3c61
movq 0x1a378(%rip), %rax     # 0x1dfc0
movq (%rax), %rdi
callq 0x32e0
movl %eax, -0x38(%rbp)
movl %ebx, %eax
jmp 0x3bb4
leaq -0x3a0(%rbp), %rdi
movq 0x1a358(%rip), %rax     # 0x1dfc0
movq (%rax), %rsi
callq 0x3360
movl %ebx, %eax
jmp 0x3bb4
movb $0x1, %al
movl %eax, -0xb8(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movq 0x1a333(%rip), %rax     # 0x1dfc0
movq (%rax), %rax
movq %rax, -0x380(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movq 0x1a31b(%rip), %rax     # 0x1dfc0
movq (%rax), %rdi
callq 0x32e0
movq %rax, -0x58(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movq 0x1a301(%rip), %rax     # 0x1dfc0
movq (%rax), %rdi
callq 0x32e0
movq %rax, -0x1a0(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movq 0x1a2e4(%rip), %rax     # 0x1dfc0
movq (%rax), %rdi
callq 0x32e0
movl %eax, -0x2c(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movq 0x1a2cb(%rip), %rax     # 0x1dfc0
movq (%rax), %rdi
callq 0x32e0
movl %eax, -0xc4(%rbp)
movl %ebx, %eax
jmp 0x3bb4
movq 0x1a2af(%rip), %rax     # 0x1dfc0
movq (%rax), %rdi
callq 0x32e0
movq %rax, -0x1a8(%rbp)
movl %ebx, %eax
jmp 0x3bb4
cmpl $-0x1, %eax
je 0x3d40
cmpl $0x3f, %eax
jne 0x3d33
jmp 0x3d33
callq 0x387c
pushq $-0x1
popq %rbx
jmp 0x4416
movq -0x1a0(%rbp), %rdi
testl %edi, %edi
jns 0x3d55
xorl %edi, %edi
callq 0x31b0
movq %rax, %rdi
callq 0x31d0
leaq 0xf5b1(%rip), %rsi      # 0x13312
leaq -0x6c0(%rbp), %r14
movq %r14, %rdi
movq -0x380(%rbp), %r15
movq %r15, %rdx
movl -0x2c(%rbp), %ecx
movl -0x38(%rbp), %r8d
movl -0xc4(%rbp), %r13d
movl %r13d, %r9d
xorl %eax, %eax
movq -0x1a8(%rbp), %r12
pushq %r12
pushq -0x58(%rbp)
callq 0x3050
popq %rcx
popq %rdx
leaq -0xb0(%rbp), %rdi
movq %r14, %rsi
movl -0xbc(%rbp), %edx
callq 0x54ce
leaq -0x5b8(%rbp), %rdi
leaq -0x370(%rbp), %rdx
movq %r15, %rsi
callq 0x5492
movl -0xc0(%rbp), %r14d
leaq -0x498(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0xd056
leaq -0x5b8(%rbp), %rdi
callq 0x3110
testb $0x1, %r14b
je 0x3ea5
testb $0x1, %bl
je 0x3e34
leaq -0x598(%rbp), %rdi
leaq -0x370(%rbp), %rdx
movq -0x198(%rbp), %rbx
movq %rbx, %rsi
callq 0x5492
leaq -0x498(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0xd35c
leaq -0x598(%rbp), %rdi
jmp 0x3e6b
leaq -0x578(%rbp), %rdi
leaq -0x370(%rbp), %rdx
movq -0x198(%rbp), %rbx
movq %rbx, %rsi
callq 0x5492
leaq -0x498(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0xd53e
leaq -0x578(%rbp), %rdi
callq 0x3110
movq -0xb0(%rbp), %rsi
leaq 0xf4af(%rip), %rdi      # 0x1332d
callq 0x3220
movq -0xb0(%rbp), %rsi
movq %rbx, %rdi
callq 0x3220
movq -0xb0(%rbp), %rsi
leaq 0xf6ec(%rip), %rdi      # 0x1358c
callq 0x3220
testb $0x1, -0xb4(%rbp)
je 0x3ecb
movl $0x1, -0x478(%rbp)
movq -0xb0(%rbp), %rsi
leaq 0xf473(%rip), %rdi      # 0x13339
callq 0x3220
testb $0x1, -0xb8(%rbp)
je 0x3ee9
movq -0xb0(%rbp), %rsi
leaq -0x498(%rbp), %rdi
xorl %edx, %edx
callq 0x727c
xorpd %xmm0, %xmm0
movapd %xmm0, -0x50(%rbp)
andq $0x0, -0x40(%rbp)
leaq 0xf920(%rip), %rsi      # 0x1381e
leaq -0x3c0(%rbp), %rdi
callq 0x554a
testb %al, %al
je 0x3f43
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
xorl %edx, %edx
callq 0xb43e
leaq -0x50(%rbp), %rdi
leaq -0x370(%rbp), %rbx
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
jmp 0x4019
testb $0x1, -0x34(%rbp)
je 0x3f93
leaq -0x558(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x3290
leaq -0x370(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0x555a
leaq -0x50(%rbp), %rdi
leaq -0x370(%rbp), %rbx
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
leaq -0x558(%rbp), %rdi
jmp 0x3fdb
leaq -0x538(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x3290
leaq -0x370(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x5700
leaq -0x50(%rbp), %rdi
leaq -0x370(%rbp), %rbx
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
leaq -0x538(%rbp), %rdi
callq 0x3110
movq -0xb0(%rbp), %rsi
leaq 0xf35d(%rip), %rdi      # 0x1334b
callq 0x3220
movq -0x3c0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0x3220
movq -0xb0(%rbp), %rsi
leaq 0xf578(%rip), %rdi      # 0x1358c
callq 0x3220
xorpd %xmm0, %xmm0
movapd %xmm0, -0xe0(%rbp)
andq $0x0, -0xd0(%rbp)
leaq 0xf7ea(%rip), %rsi      # 0x1381e
leaq -0x3a0(%rbp), %rdi
callq 0x554a
testb %al, %al
je 0x4075
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
xorl %edx, %edx
callq 0xb43e
leaq -0xe0(%rbp), %rdi
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
jmp 0x4143
testb $0x1, -0x34(%rbp)
je 0x40c1
leaq -0x518(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x3290
leaq -0x370(%rbp), %rdi
leaq -0x518(%rbp), %rsi
callq 0x555a
leaq -0xe0(%rbp), %rdi
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
leaq -0x518(%rbp), %rdi
jmp 0x4105
leaq -0x4f8(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x3290
leaq -0x370(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0x5700
leaq -0xe0(%rbp), %rdi
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
leaq -0x4f8(%rbp), %rdi
callq 0x3110
movq -0xb0(%rbp), %rsi
leaq 0xf246(%rip), %rdi      # 0x1335e
callq 0x3220
movq -0x3a0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0x3220
movq -0xb0(%rbp), %rsi
leaq 0xf44e(%rip), %rdi      # 0x1358c
callq 0x3220
xorpd %xmm0, %xmm0
movapd %xmm0, -0x100(%rbp)
andq $0x0, -0xf0(%rbp)
leaq 0xf6c0(%rip), %rsi      # 0x1381e
leaq -0x400(%rbp), %rdi
callq 0x554a
testb %al, %al
je 0x419d
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0xb4ca
leaq -0x100(%rbp), %rdi
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
jmp 0x421f
leaq -0x4d8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x3290
leaq -0x370(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x555a
leaq -0x100(%rbp), %rdi
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
leaq -0x4d8(%rbp), %rdi
callq 0x3110
movq -0xb0(%rbp), %rsi
leaq 0xf179(%rip), %rdi      # 0x1336d
callq 0x3220
movq -0x400(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0x3220
movq -0xb0(%rbp), %rsi
leaq 0xf372(%rip), %rdi      # 0x1358c
callq 0x3220
xorpd %xmm0, %xmm0
movapd %xmm0, -0x190(%rbp)
andq $0x0, -0x180(%rbp)
testb $0x1, %r14b
je 0x4305
leaq 0xf5da(%rip), %rsi      # 0x1381e
leaq -0x3e0(%rbp), %rdi
callq 0x554a
testb %al, %al
je 0x4283
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0x7222
leaq -0x190(%rbp), %rdi
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
jmp 0x4305
leaq -0x4b8(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x3290
leaq -0x370(%rbp), %rdi
leaq -0x4b8(%rbp), %rsi
callq 0x555a
leaq -0x190(%rbp), %rdi
movq %rbx, %rsi
callq 0x68a8
movq %rbx, %rdi
callq 0x6886
leaq -0x4b8(%rbp), %rdi
callq 0x3110
movq -0xb0(%rbp), %rsi
leaq 0xf093(%rip), %rdi      # 0x1336d
callq 0x3220
movq -0x3e0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0x3220
movq -0xb0(%rbp), %rsi
leaq 0xf28c(%rip), %rdi      # 0x1358c
callq 0x3220
leaq -0x200(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0xfa38
leaq -0x498(%rbp), %rdi
callq 0xb548
movl %eax, %esi
leaq -0x370(%rbp), %rdx
andl $0x0, (%rdx)
leaq -0x118(%rbp), %rdi
leaq -0x178(%rbp), %rcx
callq 0x58a6
movl -0x38(%rbp), %eax
cmpl $0x6, %eax
jbe 0x445a
leaq -0xb0(%rbp), %rbx
movq (%rbx), %r14
callq 0x3140
subq -0x378(%rbp), %rax
cvtsi2sd %rax, %xmm0
divsd 0xec96(%rip), %xmm0     # 0x13008
leaq 0xf0ac(%rip), %rsi      # 0x13425
movq %r14, %rdi
movb $0x1, %al
callq 0x32a0
movq (%rbx), %rcx
leaq 0xf0af(%rip), %r14      # 0x1343c
pushq $0x16
popq %r15
pushq $0x1
popq %r12
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x3370
movq 0x19c06(%rip), %rax     # 0x1dfb0
movq (%rax), %rcx
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x3370
leaq -0x118(%rbp), %rdi
callq 0x694e
leaq -0x200(%rbp), %rdi
callq 0xfa56
leaq -0x190(%rbp), %rdi
callq 0x6886
leaq -0x100(%rbp), %rdi
callq 0x6886
leaq -0xe0(%rbp), %rdi
callq 0x6886
leaq -0x50(%rbp), %rdi
callq 0x6886
leaq -0x498(%rbp), %rdi
callq 0xd944
movq %rbx, %rdi
callq 0x5c3a
xorl %ebx, %ebx
leaq -0x3e0(%rbp), %rdi
callq 0x3110
leaq -0x3a0(%rbp), %rdi
callq 0x3110
leaq -0x3c0(%rbp), %rdi
callq 0x3110
leaq -0x400(%rbp), %rdi
callq 0x3110
movl %ebx, %eax
addq $0x698, %rsp            # imm = 0x698
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %eax, %eax
leaq 0xec15(%rip), %rcx      # 0x13078
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x19b65(%rip), %r14     # 0x1dfd8
movq (%r14), %rcx
leaq 0xef05(%rip), %rdi      # 0x13382
pushq $0xd
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl %r12d, %edx
xorl %ecx, %ecx
callq 0x8c40
leaq -0x370(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xdeb0
leaq -0x370(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdeb6
leaq -0x370(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xdebc
movq -0xb0(%rbp), %rsi
leaq -0x370(%rbp), %rdi
callq 0xa742
movq -0xb0(%rbp), %rbx
leaq -0x370(%rbp), %rdi
callq 0x8ca4
divsd 0xeb04(%rip), %xmm0     # 0x13008
leaq 0xee85(%rip), %rsi      # 0x13390
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
leaq -0x370(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rsi), %rdx
leaq -0x178(%rbp), %rdi
callq *0x20(%rax)
leaq -0x200(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x5906
leaq -0x178(%rbp), %rdi
callq 0xfa56
movq -0xb0(%rbp), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xeaae(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xee3a(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq (%r14), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xea86(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xee12(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq -0xa8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0xfa60
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xa3b0
movq -0xa0(%rbp), %rdx
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
pushq $0x2
popq %rcx
callq 0xe0f6
movq -0x90(%rbp), %rcx
leaq 0xedc7(%rip), %rdi      # 0x133bc
pushq $0xc
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
movq -0x90(%rbp), %rsi
leaq -0x370(%rbp), %rdi
callq 0x592c
leaq -0xb0(%rbp), %rbx
movq 0x20(%rbx), %rcx
leaq 0xeda4(%rip), %rdi      # 0x133c9
pushq $0x2
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
movq %rbx, %rdi
callq 0x595a
leaq -0x370(%rbp), %rdi
callq 0x8c9e
jmp 0x434f
movq 0x19988(%rip), %r14     # 0x1dfd8
movq (%r14), %rcx
leaq 0xed9f(%rip), %rdi      # 0x133f9
pushq $0xc
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl %r13d, %edx
movl -0x2c(%rbp), %ecx
movl %r12d, %r8d
callq 0xb8a4
leaq -0x370(%rbp), %rdi
andl $0x0, 0x5c(%rdi)
leaq -0x50(%rbp), %rsi
callq 0xdeb0
leaq -0x370(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdeb6
leaq -0x370(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xdebc
leaq -0x370(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xcfd0
leaq -0x370(%rbp), %rdi
movq -0x58(%rbp), %rax
movl %eax, 0x58(%rdi)
movq -0xb0(%rbp), %rsi
callq 0x5bf6
movq -0xb0(%rbp), %rbx
leaq -0x370(%rbp), %rdi
callq 0xb962
divsd 0xe905(%rip), %xmm0     # 0x13008
leaq 0xec86(%rip), %rsi      # 0x13390
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
leaq -0x178(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xba9a
leaq -0x200(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x5906
leaq -0x178(%rbp), %rdi
callq 0xfa56
movq -0xb0(%rbp), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe8b4(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xec40(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq (%r14), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe88c(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xec18(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq -0xa8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0xfa60
leaq -0x498(%rbp), %rdi
callq 0x71fa
movl %eax, %esi
leaq -0x11c(%rbp), %rdx
andl $0x0, (%rdx)
leaq -0x178(%rbp), %rdi
leaq -0x2d(%rbp), %rcx
callq 0x58a6
leaq -0x370(%rbp), %rdi
leaq -0x178(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xbd58
movq -0x98(%rbp), %rdx
leaq -0x370(%rbp), %rdi
leaq -0x178(%rbp), %rsi
pushq $0x2
popq %rcx
callq 0xce9e
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xbc76
movq -0xa0(%rbp), %rdx
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
pushq $0x2
popq %rcx
callq 0xe0f6
leaq -0xb0(%rbp), %rdi
callq 0x595a
leaq -0x178(%rbp), %rdi
callq 0x694e
jmp 0x5186
movq 0x19777(%rip), %r14     # 0x1dfd8
movq (%r14), %rcx
leaq 0xeb70(%rip), %rdi      # 0x133db
pushq $0xb
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl %r13d, %edx
movl -0x2c(%rbp), %ecx
movl %r12d, %r8d
callq 0xc18c
leaq -0x370(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xdeb0
leaq -0x370(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdeb6
leaq -0x370(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xdebc
movq -0xb0(%rbp), %rsi
leaq -0x370(%rbp), %rdi
callq 0x5a6a
movq -0xb0(%rbp), %rbx
movq -0x88(%rbp), %rax
leaq -0x370(%rbp), %rdi
movq %rax, 0x68(%rdi)
callq 0xc23a
divsd 0xe707(%rip), %xmm0     # 0x13008
leaq 0xea88(%rip), %rsi      # 0x13390
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
leaq -0x178(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xc4ec
leaq -0x200(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x5906
leaq -0x178(%rbp), %rdi
callq 0xfa56
movq -0xb0(%rbp), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe6b6(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xea42(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq (%r14), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe68e(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xea1a(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq -0xa8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0xfa60
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xc788
movq -0xa0(%rbp), %rdx
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
pushq $0x2
popq %rcx
callq 0xe0f6
movq -0x90(%rbp), %rsi
leaq -0x370(%rbp), %rdi
pushq $0xa
popq %rdx
callq 0x5ac0
leaq -0xb0(%rbp), %rdi
callq 0x595a
leaq -0x370(%rbp), %rdi
callq 0xc1e8
jmp 0x434f
movq 0x195bf(%rip), %r14     # 0x1dfd8
movq (%r14), %rcx
leaq 0xe9c4(%rip), %rdi      # 0x133e7
pushq $0x11
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl %r13d, %edx
movl -0x2c(%rbp), %ecx
movl %r12d, %r8d
callq 0xf260
leaq -0x370(%rbp), %rdi
andl $0x0, 0x5c(%rdi)
leaq -0x50(%rbp), %rsi
callq 0xdeb0
leaq -0x370(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdeb6
leaq -0x370(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xdebc
leaq -0x370(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xcfd0
leaq -0x370(%rbp), %rdi
movq -0x58(%rbp), %rax
movl %eax, 0x58(%rdi)
movq -0xb0(%rbp), %rsi
callq 0x5b36
movq -0xb0(%rbp), %rbx
movq -0x88(%rbp), %rax
leaq -0x370(%rbp), %rdi
movq %rax, 0xb0(%rdi)
callq 0xf31e
divsd 0xe52e(%rip), %xmm0     # 0x13008
leaq 0xe8af(%rip), %rsi      # 0x13390
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
leaq -0x178(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xf650
leaq -0x200(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x5906
leaq -0x178(%rbp), %rdi
callq 0xfa56
movq -0xb0(%rbp), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe4dd(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe869(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq (%r14), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe4b5(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe841(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq -0xa8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0xfa60
leaq -0x498(%rbp), %rdi
callq 0x71fa
movl %eax, %esi
leaq -0x11c(%rbp), %rdx
andl $0x0, (%rdx)
leaq -0x178(%rbp), %rdi
leaq -0x2d(%rbp), %rcx
callq 0x58a6
leaq -0x370(%rbp), %rdi
leaq -0x178(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xf9f0
movq -0x98(%rbp), %rdx
leaq -0x370(%rbp), %rdi
leaq -0x178(%rbp), %rsi
pushq $0x2
popq %rcx
callq 0xce9e
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xf90e
movq -0xa0(%rbp), %rdx
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
pushq $0x2
popq %rcx
callq 0xe0f6
movq -0x90(%rbp), %rsi
leaq -0x370(%rbp), %rdi
pushq $0xa
popq %rdx
callq 0x5b7a
leaq -0xb0(%rbp), %rdi
callq 0x595a
leaq -0x178(%rbp), %rdi
callq 0x694e
jmp 0x4fba
movq 0x1938a(%rip), %r14     # 0x1dfd8
movq (%r14), %rcx
leaq 0xe774(%rip), %rdi      # 0x133cc
pushq $0xe
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl %r13d, %edx
movl -0x2c(%rbp), %ecx
movl %r12d, %r8d
callq 0xeaa4
leaq -0x370(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xdeb0
leaq -0x370(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdeb6
leaq -0x370(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xdebc
movq -0xb0(%rbp), %rsi
leaq -0x370(%rbp), %rdi
callq 0x599e
movq -0xb0(%rbp), %rbx
movq -0x88(%rbp), %rax
leaq -0x370(%rbp), %rdi
movq %rax, 0x68(%rdi)
callq 0xeb52
divsd 0xe31a(%rip), %xmm0     # 0x13008
leaq 0xe69b(%rip), %rsi      # 0x13390
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
leaq -0x178(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xee44
leaq -0x200(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x5906
leaq -0x178(%rbp), %rdi
callq 0xfa56
movq -0xb0(%rbp), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe2c9(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe655(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq (%r14), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe2a1(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe62d(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq -0xa8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0xfa60
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0xf0e0
movq -0xa0(%rbp), %rdx
leaq -0x370(%rbp), %rdi
leaq -0x118(%rbp), %rsi
pushq $0x2
popq %rcx
callq 0xe0f6
movq -0x90(%rbp), %rsi
leaq -0x370(%rbp), %rdi
pushq $0xa
popq %rdx
callq 0x59f4
leaq -0xb0(%rbp), %rdi
callq 0x595a
leaq -0x370(%rbp), %rdi
callq 0xeb00
jmp 0x434f
movq 0x191d2(%rip), %r14     # 0x1dfd8
movq (%r14), %rcx
leaq 0xe5f6(%rip), %rdi      # 0x13406
pushq $0x10
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl %r13d, %edx
movl -0x2c(%rbp), %ecx
movl %r12d, %r8d
callq 0xf260
leaq -0x370(%rbp), %rdi
andl $0x0, 0x5c(%rdi)
leaq -0x50(%rbp), %rsi
callq 0xdeb0
leaq -0x370(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdeb6
leaq -0x370(%rbp), %rdi
movl $0x5, 0x60(%rdi)
leaq -0x100(%rbp), %rsi
callq 0xdebc
leaq -0x370(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xcfd0
leaq -0x370(%rbp), %rdi
movq -0x58(%rbp), %rax
movl %eax, 0x58(%rdi)
movq -0xb0(%rbp), %rsi
callq 0x5b36
movq -0xb0(%rbp), %rbx
leaq -0x370(%rbp), %rdi
callq 0xf31e
divsd 0xe148(%rip), %xmm0     # 0x13008
leaq 0xe4c9(%rip), %rsi      # 0x13390
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
leaq -0x178(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xf650
leaq -0x200(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x5906
leaq -0x178(%rbp), %rdi
callq 0xfa56
movq -0xb0(%rbp), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe0f7(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe483(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq (%r14), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xe0cf(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe45b(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq -0xa8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0xfa60
leaq -0x370(%rbp), %rdi
callq 0xf870
movq -0xa0(%rbp), %rsi
leaq -0x370(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0xe076
leaq -0x370(%rbp), %rdi
callq 0xf956
movq -0x98(%rbp), %rsi
leaq -0x370(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0xce22
leaq -0xb0(%rbp), %rdi
callq 0x595a
leaq -0x370(%rbp), %rdi
callq 0xf2c6
jmp 0x434f
movq 0x19006(%rip), %r14     # 0x1dfd8
movq (%r14), %rcx
leaq 0xe43b(%rip), %rdi      # 0x13417
pushq $0xd
popq %rsi
pushq $0x1
popq %rdx
callq 0x3370
leaq -0x370(%rbp), %rdi
leaq -0x498(%rbp), %rsi
movl %r13d, %edx
movl -0x2c(%rbp), %ecx
movl %r12d, %r8d
callq 0xb8a4
leaq -0x370(%rbp), %rdi
andl $0x0, 0x5c(%rdi)
leaq -0x50(%rbp), %rsi
callq 0xdeb0
leaq -0x370(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdeb6
leaq -0x370(%rbp), %rdi
movl $0x6, 0x60(%rdi)
leaq -0x100(%rbp), %rsi
callq 0xdebc
leaq -0x370(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xcfd0
leaq -0x370(%rbp), %rdi
movq -0x58(%rbp), %rax
movl %eax, 0x58(%rdi)
movq -0xb0(%rbp), %rsi
callq 0x5bf6
movq -0xb0(%rbp), %rbx
leaq -0x370(%rbp), %rdi
callq 0xb962
divsd 0xdf7c(%rip), %xmm0     # 0x13008
leaq 0xe2fd(%rip), %rsi      # 0x13390
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
leaq -0x178(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xba9a
leaq -0x200(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x5906
leaq -0x178(%rbp), %rdi
callq 0xfa56
movq -0xb0(%rbp), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xdf2b(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe2b7(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq (%r14), %rbx
leaq -0x200(%rbp), %rdi
movsd 0xdf03(%rip), %xmm0     # 0x13010
callq 0xfa78
leaq 0xe28f(%rip), %rsi      # 0x133a8
movq %rbx, %rdi
movb $0x1, %al
callq 0x32a0
movq -0xa8(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0xfa60
leaq -0x370(%rbp), %rdi
callq 0xbbd8
movq -0xa0(%rbp), %rsi
leaq -0x370(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0xe076
leaq -0x370(%rbp), %rdi
callq 0xbcbe
movq -0x98(%rbp), %rsi
leaq -0x370(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0xce22
leaq -0xb0(%rbp), %rdi
callq 0x595a
leaq -0x370(%rbp), %rdi
callq 0xb90a
jmp 0x434f
jmp 0x53ce
jmp 0x53d3
jmp 0x53ce
jmp 0x53d3
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0x694e
jmp 0x53d6
movq %rax, %rbx
leaq -0x4b8(%rbp), %rdi
callq 0x3110
jmp 0x5410
jmp 0x535a
jmp 0x535a
movq %rax, %rbx
leaq -0x4f8(%rbp), %rdi
jmp 0x51f3
movq %rax, %rbx
leaq -0x518(%rbp), %rdi
callq 0x3110
jmp 0x5428
jmp 0x527b
jmp 0x527b
movq %rax, %rbx
leaq -0x538(%rbp), %rdi
jmp 0x5217
movq %rax, %rbx
leaq -0x558(%rbp), %rdi
callq 0x3110
jmp 0x5434
jmp 0x5283
jmp 0x5283
movq %rax, %rbx
leaq -0x578(%rbp), %rdi
jmp 0x523b
movq %rax, %rbx
leaq -0x598(%rbp), %rdi
callq 0x3110
jmp 0x543d
jmp 0x528b
jmp 0x528b
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0x694e
jmp 0x53d1
movq %rax, %rbx
leaq -0x4d8(%rbp), %rdi
callq 0x3110
jmp 0x541c
jmp 0x5273
movq %rax, %rbx
jmp 0x541c
movq %rax, %rbx
jmp 0x5428
movq %rax, %rbx
jmp 0x5434
movq %rax, %rbx
jmp 0x543d
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0xfa56
jmp 0x53db
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0xfa56
jmp 0x53ec
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0xfa56
jmp 0x53d1
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0xfa56
jmp 0x53d6
jmp 0x53d8
jmp 0x53e9
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0xfa56
jmp 0x539e
jmp 0x53ce
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0xfa56
jmp 0x53af
jmp 0x53d3
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
callq 0xfa56
jmp 0x53c0
jmp 0x539b
jmp 0x53ac
jmp 0x53bd
jmp 0x5348
jmp 0x5348
jmp 0x5348
jmp 0x5348
jmp 0x5348
jmp 0x5348
movq %rax, %rbx
jmp 0x53f8
jmp 0x5352
movq %rax, %rbx
jmp 0x5404
movq %rax, %rbx
jmp 0x5410
movq %rax, %rbx
leaq -0x5b8(%rbp), %rdi
callq 0x3110
jmp 0x5449
movq %rax, %rbx
jmp 0x5449
jmp 0x5457
movq %rax, %rbx
jmp 0x5466
movq %rax, %rbx
jmp 0x5472
movq %rax, %rbx
jmp 0x547e
movq %rax, %rbx
leaq -0x370(%rbp), %rdi
callq 0xeb00
jmp 0x53f8
movq %rax, %rbx
leaq -0x370(%rbp), %rdi
callq 0xc1e8
jmp 0x53f8
movq %rax, %rbx
leaq -0x370(%rbp), %rdi
callq 0x8c9e
jmp 0x53f8
movq %rax, %rbx
jmp 0x53ec
movq %rax, %rbx
jmp 0x53db
movq %rax, %rbx
leaq -0x370(%rbp), %rdi
callq 0xb90a
jmp 0x53f8
movq %rax, %rbx
leaq -0x370(%rbp), %rdi
callq 0xf2c6
leaq -0x118(%rbp), %rdi
callq 0x694e
leaq -0x200(%rbp), %rdi
callq 0xfa56
leaq -0x190(%rbp), %rdi
callq 0x6886
leaq -0x100(%rbp), %rdi
callq 0x6886
leaq -0xe0(%rbp), %rdi
callq 0x6886
leaq -0x50(%rbp), %rdi
callq 0x6886
leaq -0x498(%rbp), %rdi
callq 0xd944
leaq -0xb0(%rbp), %rdi
callq 0x5c3a
jmp 0x545a
movq %rax, %rbx
leaq -0x3e0(%rbp), %rdi
callq 0x3110
leaq -0x3a0(%rbp), %rdi
callq 0x3110
leaq -0x3c0(%rbp), %rdi
callq 0x3110
leaq -0x400(%rbp), %rdi
callq 0x3110
movq %rbx, %rdi
callq 0x3330