// File: /workspace/github_c_makefile_star2_O0/annoroad[P]fqtools_plus/fqtools.c
// Function: main
int main(int argc, char** argv){

	if (argc < 2){
		puts(HELP);
		exit(-1);
	}
	int function=0;
	char* HELP_output=NULL;
	if (strcmp(argv[1],"filter")==0){
		function = 1;
		HELP_output = (char*)HELP1;
	}else if(strcmp(argv[1],"cutadapt")==0){
		function = 2;
		HELP_output = (char*)HELP2;
	}else{
		fprintf(stderr, "%s\n",HELP);
		exit(0);
	}

	setvbuf(stdout,NULL,_IONBF,0);
	setvbuf(stderr,NULL,_IONBF,0);
	time_t start,end;
	time(&start);
	//fprintf(stdout,"%s\n", ctime(&start));
	//-------------------------------------------------
	g.single_or_pair=0;
	g.CUT=0;
	g.start=0;
	g.QUOTA=0;
	g.LOWQ = 19;
	g.HIGHQ = 30;
	g.LOW_QUALITY=0.5;
	g.highN=0.05;
	g.highAT=0.8;
	g.highGC=0.8;
	g.ployAT=0;
	g.ASCII = 33;
	g.Nthread = 1;

	g.read1Count=0;
	g.read2Count=0;

	g.sequence1 = (char*)malloc(512);
	g.sequence2 = (char*)malloc(512);

	g.min_overlap = 5;
	g.table1=init_hash();
	g.table2=init_hash();
	g.fq1 = (char*)malloc(1024);
	g.fq2 = (char*)malloc(1024);
	g.rawcutfq1 = (char*)malloc(1024);
	g.rawcutfq2 = (char*)malloc(1024);
	g.adapter1 = (char*)malloc(1024);
	g.adapter2 = (char*)malloc(1024);
	g.outfq1 = (char*)malloc(1024);
	g.outfq2 = (char*)malloc(1024);
	g.speedy_gzip = (char*)malloc(1024);
	char* files1[3]={g.fq1, g.adapter1, g.outfq1};
	char* files2[6]={g.fq1, g.fq2, g.adapter1, g.adapter2, g.outfq1, g.outfq2};
	char* files3[2]={g.fq1, g.outfq1};
	char* files4[4]={g.fq1, g.fq2, g.outfq1, g.outfq2};
	char** selectfiles=NULL;
	int n=0;
	int i;
	char x=1;
	for (i=2; i < argc; i++){
		if (argv[i][0] == '-'){
			if (strcmp(argv[i],"--c")==0 || strcmp(argv[i],"-c")==0){
				if(parameter(argv[i+1],&g.CUT,"int")==0){
					puts("--c INT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--start")==0 || strcmp(argv[i],"-start")==0){
				if(parameter(argv[i+1],&g.start,"int")==0){
					puts("--start INT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if(strcmp(argv[i],"--q")==0 || strcmp(argv[i],"-q")==0){
				if(parameter(argv[i+1],&g.QUOTA,"long")==0){
					puts("--q INT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--ql")==0 || strcmp(argv[i],"-ql")==0){
				if(parameter(argv[i+1],&g.LOWQ,"int")==0){
					puts("--ql INT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--qh")==0 || strcmp(argv[i],"-qh")==0){
				if(parameter(argv[i+1],&g.HIGHQ,"int")==0){
					puts("--qh INT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--Q")==0 || strcmp(argv[i],"-Q")==0){
				if(parameter(argv[i+1],&g.LOW_QUALITY,"float")==0){
					puts("--Q FLOAT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--n")==0 || strcmp(argv[i],"-n")==0){
				if(parameter(argv[i+1],&g.highN,"float")==0){
					puts("--n FLOAT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--AT")==0 || strcmp(argv[i],"-AT")==0){
				if(parameter(argv[i+1],&g.highAT,"float")==0){
					puts("--highAT FLOAT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--GC")==0 || strcmp(argv[i],"-GC")==0){
				if(parameter(argv[i+1],&g.highGC,"float")==0){
					puts("--highGC FLOAT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--ployAT")==0 || strcmp(argv[i],"-ployAT")==0){
				if(parameter(argv[i+1],&g.ployAT,"int")==0){
					puts("--ployAT INT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--i")==0 || strcmp(argv[i],"-i")==0){
				if(parameter(argv[i+1],&g.ASCII,"int")==0){
					puts("--i INT\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--adapt1")==0 || strcmp(argv[i],"-adapt")==0){
				if(parameter(argv[i+1],&g.sequence1,"str")==0){
					puts("--adapt1 string\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--adapt2")==0 || strcmp(argv[i],"-adapt")==0){
				if(parameter(argv[i+1],&g.sequence2,"str")==0){
					puts("--adapt2 string\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"-min_overlap")==0 || strcmp(argv[i],"--min_overlap")==0){
				if(parameter(argv[i+1],&g.min_overlap,"int")==0){
					puts("-min_overlap int\n");
					puts(HELP_output);
					exit(-1);
				}
				i++;
				continue;
			}else if (strcmp(argv[i],"--m")==0 || strcmp(argv[i],"-m")==0){
				if(parameter(argv[i+1],&g.Nthread,"int")==0){
					puts("--m int\n");
					puts(HELP);
					exit(-1);
				}
				i++;
				continue;
			}else{
				fprintf(stderr,"invalid option %s\n",argv[i]);
				exit(0);
			}
		}else {
			if (function == 2){
				strcpy(g.fq1,argv[i]);
				break;	
			}
			if (x){
				if (argc - i == 2){
					g.single_or_pair = 0;
					if (*g.sequence1) selectfiles = files3;
					else selectfiles = files1;
				}else if(argc - i == 3){
					g.single_or_pair = 0;
					if (*g.sequence1) selectfiles = files3;
					else selectfiles = files1;
				}else if(argc - i == 4){
					g.single_or_pair = 1;
					if (*g.sequence1) selectfiles = files4;
					else selectfiles = files2;
				}else if(argc - i == 6){
					g.single_or_pair = 1;
					if (*g.sequence1) selectfiles = files4;
					else selectfiles = files2;
				}else{
					fprintf(stderr, "wrong !\n%s\n",HELP_output);
				}
			}
			x=0;
			strcpy(selectfiles[n],argv[i]);
			n++;
		}
	}

	if (*g.fq1 == '\0') {printf("%s\n",HELP_output);exit(0);}
	if (g.single_or_pair && *g.fq2 == '\0') {printf("%s\n",HELP_output);exit(0);}
	if (*g.outfq1 == '\0' && function == 1) {printf("%s\n",HELP_output);exit(0);}
	if (g.single_or_pair && *g.outfq2 == '\0') {printf("%s\n",HELP_output);exit(0);}

	int out1len = strlen(g.outfq1);
	int out2len = strlen(g.outfq2);
	if (strcmp(g.outfq1+out1len-3,".gz")==0) *(g.outfq1+out1len-3) = '\0';
	if (g.single_or_pair && strcmp(g.outfq2+out2len-3,".gz")==0) *(g.outfq2+out2len-3) = '\0';

	if (*g.sequence1 == '\0'){
		if (function==1) {
			if (*g.adapter1 == '\0') {printf("%s\n",HELP_output);exit(0);}
			if (g.single_or_pair && *g.adapter2 == '\0') {printf("%s\n",HELP_output);exit(0);}
		}else if (function==2){
			printf("%s\n",HELP_output);exit(0);
		}
	}else{
		if (g.single_or_pair){
			if (*g.sequence2 == '\0'){fprintf(stderr, "%s\n",HELP_output);exit(0);}
		}
	}

	if (g.QUOTA < 0){
		puts("-q num > 0");
		exit(-1);
	}else if(g.QUOTA > 0){
		sprintf(g.rawcutfq1,"%s.cut.raw",g.outfq1);
		if (g.single_or_pair) sprintf(g.rawcutfq2,"%s.cut.raw",g.outfq2);
	}
	
	if (g.CUT < 0){
		puts("--c num >= 0");
		exit(-1);
	}

	if (g.Nthread < 3){
		g.Nthread = 1;
	}else{
		if (g.QUOTA != 0){
			if (g.Nthread < 4){
				fprintf(stderr, "--m 不正确\n%s\n",HELP1);
				exit(0);
			}
		}
	}

	//-----------------------------------------
	if (function ==1){
		char statfile[strlen(g.outfq1)+20];
		sprintf(statfile,"%s.gz.stat",g.outfq1);
		char reportfile1[strlen(g.outfq1)+20];
		char reportfile2[strlen(g.outfq2)+20];
		sprintf(reportfile1,"%s.gz.report",g.outfq1);
		sprintf(reportfile2,"%s.gz.report",g.outfq2);
		if (*g.sequence1 == '\0'){
			readadapter();
		}
		if (g.Nthread >= 3){
			sprintf(g.speedy_gzip,"%s -f -p 3 ",speedy_gzip_software);
		}else{
			sprintf(g.speedy_gzip,"%s -f -p 1 ",speedy_gzip_software);	
		}
		//-----------------main func---------------
		process();
		//---------------outstat-------------------
		outstat(statfile);
		outreport(allstat.base1, allstat.quality1, reportfile1);
		if (g.single_or_pair) outreport(allstat.base2, allstat.quality2, reportfile2);
		//-----------------------------------------
	}else if (function == 2){
		cutadapt_main(g.fq1,g.sequence1,g.min_overlap);
	}
		
	time(&end);
	//fprintf(stdout,"%s\n", ctime(&end));
	return(0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
jge 0x52f5
movq 0x7ed2(%rip), %rdi      # 0xd1b8
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl $0x0, -0x14(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x5067(%rip), %rsi      # 0xa37a
callq 0x2140
cmpl $0x0, %eax
jne 0x5331
movl $0x1, -0x14(%rbp)
movq 0x7e95(%rip), %rax      # 0xd1c0
movq %rax, -0x20(%rbp)
jmp 0x5386
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x5041(%rip), %rsi      # 0xa381
callq 0x2140
cmpl $0x0, %eax
jne 0x535e
movl $0x2, -0x14(%rbp)
movq 0x7e70(%rip), %rax      # 0xd1c8
movq %rax, -0x20(%rbp)
jmp 0x5384
movq 0x7c93(%rip), %rax      # 0xcff8
movq (%rax), %rdi
movq 0x7e49(%rip), %rdx      # 0xd1b8
leaq 0x5ef1(%rip), %rsi      # 0xb267
movb $0x0, %al
callq 0x2150
xorl %edi, %edi
callq 0x22a0
jmp 0x5386
movq 0x7c4b(%rip), %rax      # 0xcfd8
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %ecx
movl $0x2, %edx
movq %rcx, %rsi
callq 0x21d0
movq 0x7c50(%rip), %rax      # 0xcff8
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %ecx
movl $0x2, %edx
movq %rcx, %rsi
callq 0x21d0
leaq -0x28(%rbp), %rdi
callq 0x2170
movb $0x0, 0x7e0c(%rip)      # 0xd1d8
movl $0x0, 0x7e06(%rip)      # 0xd1dc
movl $0x0, 0x7e00(%rip)      # 0xd1e0
movq $0x0, 0x7dfd(%rip) # 0xd1e8
movl $0x13, 0x7dfb(%rip)     # 0xd1f0
movl $0x1e, 0x7df5(%rip)     # 0xd1f4
movss 0x4f45(%rip), %xmm0     # 0xa34c
movss %xmm0, 0x7de9(%rip)     # 0xd1f8
movss 0x4f31(%rip), %xmm0     # 0xa348
movss %xmm0, 0x7ddd(%rip)     # 0xd1fc
movss 0x4f1d(%rip), %xmm0     # 0xa344
movss %xmm0, 0x7dd1(%rip)     # 0xd200
movss 0x4f0d(%rip), %xmm0     # 0xa344
movss %xmm0, 0x7dc5(%rip)     # 0xd204
movl $0x0, 0x7dbf(%rip)      # 0xd208
movl $0x21, 0x7db9(%rip)     # 0xd20c
movl $0x1, 0x7db3(%rip)      # 0xd210
movq $0x0, 0x7db0(%rip) # 0xd218
movq $0x0, 0x7dad(%rip) # 0xd220
movl $0x200, %edi            # imm = 0x200
callq 0x21b0
movq %rax, 0x7da4(%rip)      # 0xd228
movl $0x200, %edi            # imm = 0x200
callq 0x21b0
movq %rax, 0x7d9b(%rip)      # 0xd230
movl $0x5, 0x7d99(%rip)      # 0xd238
callq 0x8860
movq %rax, 0x7d95(%rip)      # 0xd240
callq 0x8860
movq %rax, 0x7d91(%rip)      # 0xd248
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d88(%rip)      # 0xd250
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d7f(%rip)      # 0xd258
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d86(%rip)      # 0xd270
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d7d(%rip)      # 0xd278
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d74(%rip)      # 0xd280
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d6b(%rip)      # 0xd288
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d32(%rip)      # 0xd260
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d29(%rip)      # 0xd268
movl $0x400, %edi            # imm = 0x400
callq 0x21b0
movq %rax, 0x7d70(%rip)      # 0xd2c0
movq 0x7cf9(%rip), %rax      # 0xd250
movq %rax, -0x50(%rbp)
movq 0x7d1e(%rip), %rax      # 0xd280
movq %rax, -0x48(%rbp)
movq 0x7cf3(%rip), %rax      # 0xd260
movq %rax, -0x40(%rbp)
movq 0x7cd8(%rip), %rax      # 0xd250
movq %rax, -0x80(%rbp)
movq 0x7cd5(%rip), %rax      # 0xd258
movq %rax, -0x78(%rbp)
movq 0x7cf2(%rip), %rax      # 0xd280
movq %rax, -0x70(%rbp)
movq 0x7cef(%rip), %rax      # 0xd288
movq %rax, -0x68(%rbp)
movq 0x7cbc(%rip), %rax      # 0xd260
movq %rax, -0x60(%rbp)
movq 0x7cb9(%rip), %rax      # 0xd268
movq %rax, -0x58(%rbp)
movq 0x7c96(%rip), %rax      # 0xd250
movq %rax, -0x90(%rbp)
movq 0x7c98(%rip), %rax      # 0xd260
movq %rax, -0x88(%rbp)
movq 0x7c7a(%rip), %rax      # 0xd250
movq %rax, -0xb0(%rbp)
movq 0x7c74(%rip), %rax      # 0xd258
movq %rax, -0xa8(%rbp)
movq 0x7c6e(%rip), %rax      # 0xd260
movq %rax, -0xa0(%rbp)
movq 0x7c68(%rip), %rax      # 0xd268
movq %rax, -0x98(%rbp)
movq $0x0, -0xb8(%rbp)
movl $0x0, -0xbc(%rbp)
movb $0x1, -0xc1(%rbp)
movl $0x2, -0xc0(%rbp)
movl -0xc0(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x61bc
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x6015
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4d1d(%rip), %rsi      # 0xa38a
callq 0x2140
cmpl $0x0, %eax
je 0x5697
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4cfe(%rip), %rsi      # 0xa38b
callq 0x2140
cmpl $0x0, %eax
jne 0x56fa
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x7b26(%rip), %rsi      # 0xd1d8
addq $0x4, %rsi
leaq 0x4cd1(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x56e6
leaq 0x4cc4(%rip), %rdi      # 0xa392
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4c8b(%rip), %rsi      # 0xa39b
callq 0x2140
cmpl $0x0, %eax
je 0x573a
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4c6c(%rip), %rsi      # 0xa39c
callq 0x2140
cmpl $0x0, %eax
jne 0x579d
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x7a83(%rip), %rsi      # 0xd1d8
addq $0x8, %rsi
leaq 0x4c2e(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x5789
leaq 0x4c32(%rip), %rdi      # 0xa3a3
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4bfd(%rip), %rsi      # 0xa3b0
callq 0x2140
cmpl $0x0, %eax
je 0x57dd
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4bde(%rip), %rsi      # 0xa3b1
callq 0x2140
cmpl $0x0, %eax
jne 0x5840
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x79e0(%rip), %rsi      # 0xd1d8
addq $0x10, %rsi
leaq 0x4bb1(%rip), %rdx      # 0xa3b4
callq 0x66d0
cmpl $0x0, %eax
jne 0x582c
leaq 0x4ba5(%rip), %rdi      # 0xa3b9
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4b6c(%rip), %rsi      # 0xa3c2
callq 0x2140
cmpl $0x0, %eax
je 0x5880
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4b4d(%rip), %rsi      # 0xa3c3
callq 0x2140
cmpl $0x0, %eax
jne 0x58e3
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x793d(%rip), %rsi      # 0xd1d8
addq $0x18, %rsi
leaq 0x4ae8(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x58cf
leaq 0x4b10(%rip), %rdi      # 0xa3c7
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4ad8(%rip), %rsi      # 0xa3d1
callq 0x2140
cmpl $0x0, %eax
je 0x5923
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4ab9(%rip), %rsi      # 0xa3d2
callq 0x2140
cmpl $0x0, %eax
jne 0x5986
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x789a(%rip), %rsi      # 0xd1d8
addq $0x1c, %rsi
leaq 0x4a45(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x5972
leaq 0x4a7c(%rip), %rdi      # 0xa3d6
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4a44(%rip), %rsi      # 0xa3e0
callq 0x2140
cmpl $0x0, %eax
je 0x59c6
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4a25(%rip), %rsi      # 0xa3e1
callq 0x2140
cmpl $0x0, %eax
jne 0x5a29
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x77f7(%rip), %rsi      # 0xd1d8
addq $0x20, %rsi
leaq 0x49f8(%rip), %rdx      # 0xa3e4
callq 0x66d0
cmpl $0x0, %eax
jne 0x5a15
leaq 0x49ed(%rip), %rdi      # 0xa3ea
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x49b6(%rip), %rsi      # 0xa3f5
callq 0x2140
cmpl $0x0, %eax
je 0x5a69
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4997(%rip), %rsi      # 0xa3f6
callq 0x2140
cmpl $0x0, %eax
jne 0x5acc
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x7754(%rip), %rsi      # 0xd1d8
addq $0x24, %rsi
leaq 0x4955(%rip), %rdx      # 0xa3e4
callq 0x66d0
cmpl $0x0, %eax
jne 0x5ab8
leaq 0x4959(%rip), %rdi      # 0xa3f9
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4922(%rip), %rsi      # 0xa404
callq 0x2140
cmpl $0x0, %eax
je 0x5b0c
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4903(%rip), %rsi      # 0xa405
callq 0x2140
cmpl $0x0, %eax
jne 0x5b6f
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x76b1(%rip), %rsi      # 0xd1d8
addq $0x28, %rsi
leaq 0x48b2(%rip), %rdx      # 0xa3e4
callq 0x66d0
cmpl $0x0, %eax
jne 0x5b5b
leaq 0x48c6(%rip), %rdi      # 0xa409
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4894(%rip), %rsi      # 0xa419
callq 0x2140
cmpl $0x0, %eax
je 0x5baf
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4875(%rip), %rsi      # 0xa41a
callq 0x2140
cmpl $0x0, %eax
jne 0x5c12
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x760e(%rip), %rsi      # 0xd1d8
addq $0x2c, %rsi
leaq 0x480f(%rip), %rdx      # 0xa3e4
callq 0x66d0
cmpl $0x0, %eax
jne 0x5bfe
leaq 0x4838(%rip), %rdi      # 0xa41e
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4806(%rip), %rsi      # 0xa42e
callq 0x2140
cmpl $0x0, %eax
je 0x5c52
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x47e7(%rip), %rsi      # 0xa42f
callq 0x2140
cmpl $0x0, %eax
jne 0x5cb5
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x756b(%rip), %rsi      # 0xd1d8
addq $0x30, %rsi
leaq 0x4716(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x5ca1
leaq 0x47ae(%rip), %rdi      # 0xa437
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x477a(%rip), %rsi      # 0xa445
callq 0x2140
cmpl $0x0, %eax
je 0x5cf5
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x475b(%rip), %rsi      # 0xa446
callq 0x2140
cmpl $0x0, %eax
jne 0x5d58
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x74c8(%rip), %rsi      # 0xd1d8
addq $0x34, %rsi
leaq 0x4673(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x5d44
leaq 0x471d(%rip), %rdi      # 0xa449
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x46e4(%rip), %rsi      # 0xa452
callq 0x2140
cmpl $0x0, %eax
je 0x5d98
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x46cd(%rip), %rsi      # 0xa45b
callq 0x2140
cmpl $0x0, %eax
jne 0x5dfb
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x7425(%rip), %rsi      # 0xd1d8
addq $0x50, %rsi
leaq 0x46a4(%rip), %rdx      # 0xa462
callq 0x66d0
cmpl $0x0, %eax
jne 0x5de7
leaq 0x4697(%rip), %rdi      # 0xa466
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x4666(%rip), %rsi      # 0xa477
callq 0x2140
cmpl $0x0, %eax
je 0x5e3b
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x462a(%rip), %rsi      # 0xa45b
callq 0x2140
cmpl $0x0, %eax
jne 0x5e9e
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x7382(%rip), %rsi      # 0xd1d8
addq $0x58, %rsi
leaq 0x4601(%rip), %rdx      # 0xa462
callq 0x66d0
cmpl $0x0, %eax
jne 0x5e8a
leaq 0x460e(%rip), %rdi      # 0xa480
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x45de(%rip), %rsi      # 0xa492
callq 0x2140
cmpl $0x0, %eax
je 0x5ede
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x45bd(%rip), %rsi      # 0xa491
callq 0x2140
cmpl $0x0, %eax
jne 0x5f41
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x72df(%rip), %rsi      # 0xd1d8
addq $0x60, %rsi
leaq 0x448a(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x5f2d
leaq 0x458a(%rip), %rdi      # 0xa49f
callq 0x2070
movq -0x20(%rbp), %rdi
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x455a(%rip), %rsi      # 0xa4b1
callq 0x2140
cmpl $0x0, %eax
je 0x5f81
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x453b(%rip), %rsi      # 0xa4b2
callq 0x2140
cmpl $0x0, %eax
jne 0x5fe7
movq -0x10(%rbp), %rax
movl -0xc0(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x723c(%rip), %rsi      # 0xd1d8
addq $0x38, %rsi
leaq 0x43e7(%rip), %rdx      # 0xa38e
callq 0x66d0
cmpl $0x0, %eax
jne 0x5fd3
leaq 0x44fd(%rip), %rdi      # 0xa4b5
callq 0x2070
movq 0x71f4(%rip), %rdi      # 0xd1b8
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x61a8
movq 0x700a(%rip), %rax      # 0xcff8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0x44b7(%rip), %rsi      # 0xa4be
movb $0x0, %al
callq 0x2150
xorl %edi, %edi
callq 0x22a0
cmpl $0x2, -0x14(%rbp)
jne 0x603b
movq 0x722e(%rip), %rdi      # 0xd250
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x2050
jmp 0x61bc
cmpb $0x0, -0xc1(%rbp)
je 0x616a
movl -0x8(%rbp), %eax
subl -0xc0(%rbp), %eax
cmpl $0x2, %eax
jne 0x6089
movb $0x0, 0x717b(%rip)      # 0xd1d8
movq 0x71c4(%rip), %rax      # 0xd228
cmpb $0x0, (%rax)
je 0x6079
leaq -0x90(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x6084
leaq -0x50(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x6168
movl -0x8(%rbp), %eax
subl -0xc0(%rbp), %eax
cmpl $0x3, %eax
jne 0x60ca
movb $0x0, 0x713a(%rip)      # 0xd1d8
movq 0x7183(%rip), %rax      # 0xd228
cmpb $0x0, (%rax)
je 0x60ba
leaq -0x90(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x60c5
leaq -0x50(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x6166
movl -0x8(%rbp), %eax
subl -0xc0(%rbp), %eax
cmpl $0x4, %eax
jne 0x6108
movb $0x1, 0x70f9(%rip)      # 0xd1d8
movq 0x7142(%rip), %rax      # 0xd228
cmpb $0x0, (%rax)
je 0x60fb
leaq -0xb0(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x6106
leaq -0x80(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x6164
movl -0x8(%rbp), %eax
subl -0xc0(%rbp), %eax
cmpl $0x6, %eax
jne 0x6146
movb $0x1, 0x70bb(%rip)      # 0xd1d8
movq 0x7104(%rip), %rax      # 0xd228
cmpb $0x0, (%rax)
je 0x6139
leaq -0xb0(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x6144
leaq -0x80(%rbp), %rax
movq %rax, -0xb8(%rbp)
jmp 0x6162
movq 0x6eab(%rip), %rax      # 0xcff8
movq (%rax), %rdi
movq -0x20(%rbp), %rdx
leaq 0x4376(%rip), %rsi      # 0xa4d1
movb $0x0, %al
callq 0x2150
jmp 0x6164
jmp 0x6166
jmp 0x6168
jmp 0x616a
movb $0x0, -0xc1(%rbp)
movq -0xb8(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x10(%rbp), %rax
movslq -0xc0(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x2050
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0x61a8
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x562d
movq 0x708d(%rip), %rax      # 0xd250
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x61e4
movq -0x20(%rbp), %rsi
leaq 0x5091(%rip), %rdi      # 0xb267
movb $0x0, %al
callq 0x20e0
xorl %edi, %edi
callq 0x22a0
movzbl 0x6fed(%rip), %eax      # 0xd1d8
cmpl $0x0, %eax
je 0x6218
movq 0x7061(%rip), %rax      # 0xd258
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x6218
movq -0x20(%rbp), %rsi
leaq 0x505d(%rip), %rdi      # 0xb267
movb $0x0, %al
callq 0x20e0
xorl %edi, %edi
callq 0x22a0
movq 0x7041(%rip), %rax      # 0xd260
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x6246
cmpl $0x1, -0x14(%rbp)
jne 0x6246
movq -0x20(%rbp), %rsi
leaq 0x502f(%rip), %rdi      # 0xb267
movb $0x0, %al
callq 0x20e0
xorl %edi, %edi
callq 0x22a0
movzbl 0x6f8b(%rip), %eax      # 0xd1d8
cmpl $0x0, %eax
je 0x627a
movq 0x700f(%rip), %rax      # 0xd268
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x627a
movq -0x20(%rbp), %rsi
leaq 0x4ffb(%rip), %rdi      # 0xb267
movb $0x0, %al
callq 0x20e0
xorl %edi, %edi
callq 0x22a0
movq 0x6fdf(%rip), %rdi      # 0xd260
callq 0x20c0
movl %eax, -0xc8(%rbp)
movq 0x6fd5(%rip), %rdi      # 0xd268
callq 0x20c0
movl %eax, -0xcc(%rbp)
movq 0x6fbb(%rip), %rdi      # 0xd260
movslq -0xc8(%rbp), %rax
addq %rax, %rdi
addq $-0x3, %rdi
leaq 0x4223(%rip), %rsi      # 0xa4dd
callq 0x2140
cmpl $0x0, %eax
jne 0x62d7
movq 0x6f95(%rip), %rax      # 0xd260
movslq -0xc8(%rbp), %rcx
movb $0x0, -0x3(%rax,%rcx)
movzbl 0x6efa(%rip), %eax      # 0xd1d8
cmpl $0x0, %eax
je 0x631c
movq 0x6f7e(%rip), %rdi      # 0xd268
movslq -0xcc(%rbp), %rax
addq %rax, %rdi
addq $-0x3, %rdi
leaq 0x41de(%rip), %rsi      # 0xa4dd
callq 0x2140
cmpl $0x0, %eax
jne 0x631c
movq 0x6f58(%rip), %rax      # 0xd268
movslq -0xcc(%rbp), %rcx
movb $0x0, -0x3(%rax,%rcx)
movq 0x6f05(%rip), %rax      # 0xd228
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x63b6
cmpl $0x1, -0x14(%rbp)
jne 0x6393
movq 0x6f44(%rip), %rax      # 0xd280
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x635d
movq -0x20(%rbp), %rsi
leaq 0x4f18(%rip), %rdi      # 0xb267
movb $0x0, %al
callq 0x20e0
xorl %edi, %edi
callq 0x22a0
movzbl 0x6e74(%rip), %eax      # 0xd1d8
cmpl $0x0, %eax
je 0x6391
movq 0x6f18(%rip), %rax      # 0xd288
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x6391
movq -0x20(%rbp), %rsi
leaq 0x4ee4(%rip), %rdi      # 0xb267
movb $0x0, %al
callq 0x20e0
xorl %edi, %edi
callq 0x22a0
jmp 0x63b4
cmpl $0x2, -0x14(%rbp)
jne 0x63b2
movq -0x20(%rbp), %rsi
leaq 0x4ec3(%rip), %rdi      # 0xb267
movb $0x0, %al
callq 0x20e0
xorl %edi, %edi
callq 0x22a0
jmp 0x63b4
jmp 0x63f5
cmpb $0x0, 0x6e1b(%rip)      # 0xd1d8
je 0x63f3
movq 0x6e6a(%rip), %rax      # 0xd230
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x63f1
movq 0x6c23(%rip), %rax      # 0xcff8
movq (%rax), %rdi
movq -0x20(%rbp), %rdx
leaq 0x4e84(%rip), %rsi      # 0xb267
movb $0x0, %al
callq 0x2150
xorl %edi, %edi
callq 0x22a0
jmp 0x63f3
jmp 0x63f5
cmpq $0x0, 0x6deb(%rip)      # 0xd1e8
jge 0x6415
leaq 0x40db(%rip), %rdi      # 0xa4e1
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
cmpq $0x0, 0x6dcb(%rip)      # 0xd1e8
jle 0x6462
movq 0x6e4a(%rip), %rdi      # 0xd270
movq 0x6e33(%rip), %rdx      # 0xd260
leaq 0x40b8(%rip), %rsi      # 0xa4ec
movb $0x0, %al
callq 0x2290
cmpb $0x0, 0x6d96(%rip)      # 0xd1d8
je 0x6460
movq 0x6e2d(%rip), %rdi      # 0xd278
movq 0x6e16(%rip), %rdx      # 0xd268
leaq 0x4093(%rip), %rsi      # 0xa4ec
movb $0x0, %al
callq 0x2290
jmp 0x6462
jmp 0x6464
cmpl $0x0, 0x6d71(%rip)      # 0xd1dc
jge 0x6483
leaq 0x4083(%rip), %rdi      # 0xa4f7
callq 0x2070
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x22a0
cmpl $0x3, 0x6d86(%rip)      # 0xd210
jge 0x6498
movl $0x1, 0x6d7a(%rip)      # 0xd210
jmp 0x64d5
cmpq $0x0, 0x6d48(%rip)      # 0xd1e8
je 0x64d3
cmpl $0x4, 0x6d67(%rip)      # 0xd210
jge 0x64d1
movq 0x6b46(%rip), %rax      # 0xcff8
movq (%rax), %rdi
movq 0x6d04(%rip), %rdx      # 0xd1c0
leaq 0x4041(%rip), %rsi      # 0xa504
movb $0x0, %al
callq 0x2150
xorl %edi, %edi
callq 0x22a0
jmp 0x64d3
jmp 0x64d5
cmpl $0x1, -0x14(%rbp)
jne 0x6697
movq 0x6d7a(%rip), %rdi      # 0xd260
callq 0x20c0
movq %rax, %rcx
movq %rcx, %rax
addq $0x14, %rax
movq %rsp, %rdx
movq %rdx, -0xd8(%rbp)
addq $0x23, %rcx
andq $-0x10, %rcx
movq %rsp, %rdi
subq %rcx, %rdi
movq %rdi, -0x108(%rbp)
movq %rdi, %rsp
movq %rax, -0xe0(%rbp)
movq 0x6d3b(%rip), %rdx      # 0xd260
leaq 0x3fea(%rip), %rsi      # 0xa516
xorl %eax, %eax
callq 0x2290
movq 0x6d26(%rip), %rdi      # 0xd260
callq 0x20c0
movq %rax, %rdx
movq %rdx, %rax
addq $0x14, %rax
addq $0x23, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x100(%rbp)
movq %rcx, %rsp
movq %rax, -0xe8(%rbp)
movq 0x6cf9(%rip), %rdi      # 0xd268
callq 0x20c0
movq -0x100(%rbp), %rdi
movq %rax, %rdx
movq %rdx, %rax
addq $0x14, %rax
addq $0x23, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0xf8(%rbp)
movq %rcx, %rsp
movq %rax, -0xf0(%rbp)
movq 0x6cb5(%rip), %rdx      # 0xd260
leaq 0x3f6f(%rip), %rsi      # 0xa521
movb $0x0, %al
callq 0x2290
movq -0xf8(%rbp), %rdi
movq 0x6ca1(%rip), %rdx      # 0xd268
leaq 0x3f53(%rip), %rsi      # 0xa521
movb $0x0, %al
callq 0x2290
movq 0x6c4c(%rip), %rax      # 0xd228
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x65e9
callq 0x6930
cmpl $0x3, 0x6c20(%rip)      # 0xd210
jl 0x6610
movq 0x6cc7(%rip), %rdi      # 0xd2c0
leaq 0x3f2e(%rip), %rsi      # 0xa52e
leaq 0x3f33(%rip), %rdx      # 0xa53a
movb $0x0, %al
callq 0x2290
jmp 0x662c
movq 0x6ca9(%rip), %rdi      # 0xd2c0
leaq 0x3f67(%rip), %rsi      # 0xa585
leaq 0x3f15(%rip), %rdx      # 0xa53a
movb $0x0, %al
callq 0x2290
callq 0x6b30
movq -0x108(%rbp), %rdi
callq 0x6ff0
movq -0x100(%rbp), %rdx
leaq 0x6ccd(%rip), %rsi      # 0xd318
movq %rsi, %rdi
addq $0x74, %rdi
addq $0xa074, %rsi           # imm = 0xA074
callq 0x7430
cmpb $0x0, 0x6b73(%rip)      # 0xd1d8
je 0x668b
movq -0xf8(%rbp), %rdx
leaq 0x6ca3(%rip), %rsi      # 0xd318
movq %rsi, %rdi
addq $0x5074, %rdi           # imm = 0x5074
addq $0x3c074, %rsi          # imm = 0x3C074
callq 0x7430
movq -0xd8(%rbp), %rax
movq %rax, %rsp
jmp 0x66b8
cmpl $0x2, -0x14(%rbp)
jne 0x66b6
movq 0x6bac(%rip), %rdi      # 0xd250
movq 0x6b7d(%rip), %rsi      # 0xd228
movl 0x6b87(%rip), %edx      # 0xd238
callq 0x91a0
jmp 0x66b8
leaq -0x30(%rbp), %rdi
callq 0x2170
xorl %eax, %eax
movq %rbp, %rsp
popq %rbp
retq
nopl (%rax,%rax)