// File: /workspace/github_c_makefile_star2_O0/jiqingxiaoxi[P]RPA/single.c
// Function: main
void main(int argc, char **argv) 
{
	double stackEntropies[625],stackEnthalpies[625],stackint2Entropies[625],stackint2Enthalpies[625],dangleEntropies3[125],dangleEnthalpies3[125],dangleEntropies5[125],dangleEnthalpies5[125];
        double hairpinLoopEntropies[30],interiorLoopEntropies[30],bulgeLoopEntropies[30],hairpinLoopEnthalpies[30],interiorLoopEnthalpies[30],bulgeLoopEnthalpies[30],tstackEntropies[625],tstackEnthalpies[625],tstack2Entropies[625],tstack2Enthalpies[625];
        char *triloopEntropies1,*triloopEnthalpies1,*tetraloopEntropies1,*tetraloopEnthalpies1;
        double *triloopEntropies2,*triloopEnthalpies2,*tetraloopEntropies2,*tetraloopEnthalpies2,atpS[25],atpH[25];
	char *store_path,*prefix,*tm_path,*curren_path,*input,*par_path,*seq,*temp;
	FILE *fp,*Primer,*Probe;
	int i,flag[10],length,numTriloops,numTetraloops,Num[3];
	float deltah[16],deltas[16],temp1,temp2;
	struct stat statbuf;
//flag: 0:input; 1: out_prefix; 2: dir; 3: NoExo; 4: No secondary structure; 5: path for secondary structure
        time_t start,end;
	
	start=time(NULL);
//get input

	for(i=0;i<6;i++)
	{
		flag[i]=0;
	}
	flag[8]=1;

	for(i=1;i<argc;)
	{
		if(strcmp(argv[i],"-in")==0)
		{
			flag[0]=1;
			if(i+1==argc)
			{
				printf("Error! The \"-in\" parameter is not completed.\n");
				usage();
				exit(1);
			}
			length=strlen(argv[i+1]);
			input=(char *)malloc(length+1);
			memset(input,'\0',length+1);
			strcpy(input,argv[i+1]);
			i=i+2;
		}
		else if(strcmp(argv[i],"-out")==0)
		{
			flag[1]=1;
			if(i+1==argc)
                        {
                                printf("Error! The \"-out\" parameter is not completed.\n");
                                usage();
                                exit(1);
                        }
			length=strlen(argv[i+1]);
			prefix=(char *)malloc(length+1);
			memset(prefix,'\0',length+1);
			strcpy(prefix,argv[i+1]);
			i=i+2;
		}
                else if(strcmp(argv[i],"-dir")==0)
                {
			flag[2]=1;
			if(i+1==argc)
                        {
                                printf("Error! The \"-dir\" parameter is not completed.\n");
                                usage();
                                exit(1);
                        }
			length=strlen(argv[i+1]);
			if(argv[i+1][length-1]=='/')
			{
				store_path=(char *)malloc(length+1);
				memset(store_path,'\0',length+1);
                        	strcpy(store_path,argv[i+1]);
			}
			else
			{
				store_path=(char *)malloc(length+2);
                                memset(store_path,'\0',length+2);
                                strcpy(store_path,argv[i+1]);
				store_path[length]='/';
			}
			i=i+2;
                }
		else if(strcmp(argv[i],"-h")==0 || strcmp(argv[i],"-help")==0)
                {
                        usage();
                       	exit(1);
                }
		else if(strcmp(argv[i],"-NoExo")==0)
		{
			flag[3]=1;
			i++;
		}
		else if(strcmp(argv[i],"-NoCheck")==0)
		{
			flag[4]=1;
			i++;
		}
		else if(strcmp(argv[i],"-par")==0)
		{
			flag[5]=1;
			if(i+1==argc)
                        {
                                printf("Error! The \"-par\" parameter is not completed.\n");
                                usage();
                                exit(1);
                        }
			length=strlen(argv[i+1]);
			if(argv[i+1][length-1]=='/')
			{
				par_path=(char *)malloc(length+1);
				strcpy(par_path,argv[i+1]);
				par_path[length]='\0';
			}
			else
			{
				par_path=(char *)malloc(length+2);
                                strcpy(par_path,argv[i+1]);
                                par_path[length]='/';
				par_path[length+1]='\0';
			}
                        i=i+2;
                }
		else
		{
			printf("Error: don't have the parameter: %s\n",argv[i]);
			usage();
			exit(1);
		}
	}

//check paramters
	if(flag[0]==0)
	{
		printf("Error! Users must input the reference sequence file with -in!\n");
		usage();
		exit(1);
	}
	if(flag[1]==0)
	{
		printf("Error! Users must supply the prefix name for output file with -out!\n");
		usage();
		exit(1);
	}
	for(i=0;i<strlen(prefix);i++)
	{
		if(prefix[i]=='/')
		{
			printf("Error! the -out parameter couldn't contain any directory!\n");
			usage();
			exit(1);
		}
	}

//prepare 
	temp=(char *)malloc(4096);
	memset(temp,'\0',4096);
	getcwd(temp,4096);
	length=strlen(temp);
	curren_path=(char *)malloc(length+1);
	memset(curren_path,'\0',length+1);
	strcpy(curren_path,temp);
	if(flag[2]==0)
        {
                store_path=(char *)malloc(length+2);
                memset(store_path,'\0',length+2);
                strcpy(store_path,temp);
                store_path[length]='/';
        }
	free(temp);

	length=strlen(store_path)+strlen(prefix)+10;
	temp=(char *)malloc(length);
	memset(temp,'\0',length);
	strcpy(temp,store_path);
	strcat(temp,"Primer/");
	mkdir(temp,0755);
	strcat(temp,prefix);
	Primer=fopen(temp,"w");
	if(Primer==NULL)
	{
		printf("Error! Can't create the %s file!\n",temp);
		exit(1);
	}

	if(flag[3]==0)
	{
		memset(temp,'\0',length);       
        	strcpy(temp,store_path);      
        	strcat(temp,"Probe/");
		mkdir(temp,0755);
        	strcat(temp,prefix);
        	Probe=fopen(temp,"w");
        	if(Probe==NULL)
        	{
        	        printf("Error! Can't create the %s file!\n",temp);
        	        exit(1);       
        	}
	}
	free(temp);

	if(flag[5]==0)  
        {
                length=strlen(curren_path);
                par_path=(char *)malloc(length+10);
                memset(par_path,'\0',length+10);
                strcpy(par_path,curren_path);
                i=length-1;  
                if(par_path[i]!='/')
                {
                        par_path[i+1]='/';
                        par_path[i+2]='\0';
                }            
                strcat(par_path,"Par/");
        }
//tm parameter file
	tm_path=(char *)malloc(length+30);
	memset(tm_path,'\0',length+30);
	strcpy(tm_path,par_path);
	strcat(tm_path,"tm_nn_parameter.txt");

//secondary structure
	if((flag[4]==0)&&(flag[5]==0))
	{
		length=strlen(curren_path);
                par_path=(char *)malloc(length+10);
                memset(par_path,'\0',length+10);
                strcpy(par_path,curren_path);
                i=length-1;
                if(par_path[i]!='/')
                {
			par_path[i+1]='/';
                        par_path[i+2]='\0';
                }
                strcat(par_path,"Par/");
	}

	if(flag[4]==0)//check
	{
		getStack(stackEntropies,stackEnthalpies,par_path);
		getStackint2(stackint2Entropies,stackint2Enthalpies,par_path);
		getDangle(dangleEntropies3,dangleEnthalpies3,dangleEntropies5,dangleEnthalpies5,par_path);
		getLoop(hairpinLoopEntropies,interiorLoopEntropies,bulgeLoopEntropies,hairpinLoopEnthalpies,interiorLoopEnthalpies,bulgeLoopEnthalpies,par_path);
		getTstack(tstackEntropies,tstackEnthalpies,par_path);
		getTstack2(tstack2Entropies,tstack2Enthalpies,par_path);

		numTriloops=get_num_line(par_path,0);
		triloopEntropies1=(char *)malloc(numTriloops*5);
		triloopEnthalpies1=(char *)malloc(numTriloops*5);
		triloopEntropies2=(double *)malloc(numTriloops*sizeof(double));
		triloopEnthalpies2=(double *)malloc(numTriloops*sizeof(double));
		getTriloop(triloopEntropies1,triloopEnthalpies1,triloopEntropies2,triloopEnthalpies2,par_path);
        
		numTetraloops=get_num_line(par_path,1);
		tetraloopEntropies1=(char *)malloc(numTetraloops*6);
		tetraloopEnthalpies1=(char *)malloc(numTetraloops*6);
		tetraloopEntropies2=(double *)malloc(numTetraloops*sizeof(double));
		tetraloopEnthalpies2=(double *)malloc(numTetraloops*sizeof(double));
		getTetraloop(tetraloopEntropies1,tetraloopEnthalpies1,tetraloopEntropies2,tetraloopEnthalpies2,par_path);
		tableStartATS(6.9,atpS);
		tableStartATH(2200.0,atpH);
	}

//input reference sequence
	if(access(input,0)==-1)
	{
		printf("Error! Don't have the %s file.\n",input);
		exit(1);
	}
	stat(input,&statbuf);
	length=statbuf.st_size;
	length=length+100;
	temp=(char *)malloc(length);
	memset(temp,'\0',length);
	seq=(char *)malloc(length*sizeof(char));
	memset(seq,'\0',length*sizeof(char));

	fp=fopen(input,"r");   //open the sequence file
	if(fp==NULL)
	{
		printf("Error! can't open the %s file!\n",input);
		exit(1);
	}
	fread(temp,length*sizeof(char),1,fp);
        fclose(fp); 

        length=0;
        i=0;
        while(temp[i]!='\n')
        {
                i++;
        }
        i++;
        while(temp[i]!='\0')
        {
                if(temp[i]=='\n')
                {
                        i++;
                        continue;
                }
		if(temp[i]=='a'||temp[i]=='A')
	                seq[length]='A';
		else if(temp[i]=='t'||temp[i]=='T')
			seq[length]='T';
		else if(temp[i]=='c'||temp[i]=='C')
                        seq[length]='C';
		else if(temp[i]=='g'||temp[i]=='G')
                        seq[length]='G';
		else
			seq[length]='N';
                i++;
                length++;
        }
        free(temp);
	length=strlen(seq);

//input Tm parameter
	fp=fopen(tm_path,"r");  //read the paramter of deltah and deltas
	if(fp==NULL)
	{
		printf("Error: can't open the %s file!\n",tm_path);
		exit(1);
	}
	while(fscanf(fp,"%d\t%f\t%f",&i,&temp1,&temp2)!=EOF)
	{
		deltah[i]=temp1;
		deltas[i]=temp2;
	}
	fclose(fp);

	end=time(NULL);
	printf("It takes %d seconds to prepare.\n",(int)difftime(end,start));
	start=time(NULL);
	Num[0]=0; //primer
	Num[1]=0; //probe
	candidate_primer(seq,flag,Primer,Probe,Num,deltah,deltas,length,stackEntropies,stackEnthalpies,stackint2Entropies,stackint2Enthalpies,dangleEntropies3,dangleEnthalpies3,dangleEntropies5,dangleEnthalpies5,hairpinLoopEntropies,interiorLoopEntropies,bulgeLoopEntropies,hairpinLoopEnthalpies,interiorLoopEnthalpies,bulgeLoopEnthalpies,tstackEntropies,tstackEnthalpies,tstack2Entropies,tstack2Enthalpies,triloopEntropies1,triloopEnthalpies1,tetraloopEntropies1,tetraloopEnthalpies1,triloopEntropies2,triloopEnthalpies2,tetraloopEntropies2,tetraloopEnthalpies2,numTriloops,numTetraloops,atpS,atpH);
	free(seq);
	printf("There are %d candidate primers.\n",Num[0]);
	fclose(Primer);
	if(flag[3]==0)
	{
		printf("There are %d candidate exo probes.\n",Num[1]);
		fclose(Probe);
	}
	//check
	if(Num[0]<2)
		printf("Warning: there don't have enough primers(>=2).\n");
	if(flag[3]==0 && Num[1]<1)
		printf("Warning: there don't have any probes.\n");

	end=time(NULL);
        printf("It takes %d seconds to identify candidate single primer or probe regions.\n",(int)difftime(end,start));

	free(store_path);
	free(prefix);
	free(tm_path);
	free(curren_path);
	free(input);
	if(flag[4]==0)
	{
		free(triloopEntropies1);
	        free(triloopEnthalpies1);
	        free(tetraloopEntropies1);
	        free(tetraloopEnthalpies1);
	        free(triloopEntropies2);
	        free(triloopEnthalpies2);
	        free(tetraloopEntropies2);
	        free(tetraloopEnthalpies2);
	}
	if((flag[4]==0)||flag[5])
		free(par_path);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb778, %rsp           # imm = 0xB778
movl %edi, -0x2c(%rbp)
movq %rsi, -0x38(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x1150
movq %rax, -0xb5c0(%rbp)
movl $0x0, -0xb44c(%rbp)
cmpl $0x6, -0xb44c(%rbp)
jge 0x11681
movslq -0xb44c(%rbp), %rax
movl $0x0, -0xb480(%rbp,%rax,4)
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11655
movl $0x1, -0xb460(%rbp)
movl $0x1, -0xb44c(%rbp)
movl -0xb44c(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x11c34
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1fce(%rip), %rsi      # 0x13688
callq 0x1120
cmpl $0x0, %eax
jne 0x11782
movl $0x1, -0xb480(%rbp)
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
cmpl -0x2c(%rbp), %eax
jne 0x116fd
leaq 0x1fa5(%rip), %rdi      # 0x1368c
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb418(%rbp)
movq -0xb418(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb418(%rbp), %rdi
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1050
movl -0xb44c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11c2f
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1f22(%rip), %rsi      # 0x136ba
callq 0x1120
cmpl $0x0, %eax
jne 0x11860
movl $0x1, -0xb47c(%rbp)
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
cmpl -0x2c(%rbp), %eax
jne 0x117db
leaq 0x1efa(%rip), %rdi      # 0x136bf
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb400(%rbp)
movq -0xb400(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb400(%rbp), %rdi
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1050
movl -0xb44c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11c2d
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1e78(%rip), %rsi      # 0x136ee
callq 0x1120
cmpl $0x0, %eax
jne 0x119cd
movl $0x1, -0xb478(%rbp)
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
cmpl -0x2c(%rbp), %eax
jne 0x118b9
leaq 0x1e50(%rip), %rdi      # 0x136f3
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movl -0xb484(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jne 0x11955
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb3f8(%rbp)
movq -0xb3f8(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb3f8(%rbp), %rdi
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1050
jmp 0x119b9
movl -0xb484(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb3f8(%rbp)
movq -0xb3f8(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb3f8(%rbp), %rdi
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1050
movq -0xb3f8(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x2f, (%rax,%rcx)
movl -0xb44c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11c2b
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1d3f(%rip), %rsi      # 0x13722
callq 0x1120
cmpl $0x0, %eax
je 0x11a0d
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1d22(%rip), %rsi      # 0x13725
callq 0x1120
cmpl $0x0, %eax
jne 0x11a1c
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1cf9(%rip), %rsi      # 0x1372b
callq 0x1120
cmpl $0x0, %eax
jne 0x11a5a
movl $0x1, -0xb474(%rbp)
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11c27
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1cc2(%rip), %rsi      # 0x13732
callq 0x1120
cmpl $0x0, %eax
jne 0x11a98
movl $0x1, -0xb470(%rbp)
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11c25
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1c8d(%rip), %rsi      # 0x1373b
callq 0x1120
cmpl $0x0, %eax
jne 0x11bf7
movl $0x1, -0xb46c(%rbp)
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
cmpl -0x2c(%rbp), %eax
jne 0x11af1
leaq 0x1c65(%rip), %rdi      # 0x13740
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movl -0xb484(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jne 0x11b85
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb420(%rbp)
movq -0xb420(%rbp), %rdi
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1050
movq -0xb420(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x11be6
movl -0xb484(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb420(%rbp)
movq -0xb420(%rbp), %rdi
movq -0x38(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1050
movq -0xb420(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x2f, (%rax,%rcx)
movq -0xb420(%rbp), %rax
movl -0xb484(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x0, (%rax,%rcx)
movl -0xb44c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11c23
movq -0x38(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0x1b62(%rip), %rdi      # 0x1376f
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
jmp 0x11c25
jmp 0x11c27
jmp 0x11c29
jmp 0x11c2b
jmp 0x11c2d
jmp 0x11c2f
jmp 0x11695
cmpl $0x0, -0xb480(%rbp)
jne 0x11c5a
leaq 0x1b50(%rip), %rdi      # 0x13794
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
cmpl $0x0, -0xb47c(%rbp)
jne 0x11c80
leaq 0x1b69(%rip), %rdi      # 0x137d3
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
movl $0x0, -0xb44c(%rbp)
movslq -0xb44c(%rbp), %rax
movq %rax, -0xb5d0(%rbp)
movq -0xb400(%rbp), %rdi
callq 0x10b0
movq %rax, %rcx
movq -0xb5d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x11cfa
movq -0xb400(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jne 0x11ce7
leaq 0x1b47(%rip), %rdi      # 0x13818
movb $0x0, %al
callq 0x10c0
callq 0x114f0
movl $0x1, %edi
callq 0x11b0
jmp 0x11ce9
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x11c8a
movl $0x1000, %edi           # imm = 0x1000
callq 0x1160
movq %rax, -0xb430(%rbp)
movq -0xb430(%rbp), %rdi
xorl %esi, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0x10e0
movq -0xb430(%rbp), %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x10f0
movq -0xb430(%rbp), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb410(%rbp)
movq -0xb410(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb410(%rbp), %rdi
movq -0xb430(%rbp), %rsi
callq 0x1050
cmpl $0x0, -0xb478(%rbp)
jne 0x11de6
movl -0xb484(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb3f8(%rbp)
movq -0xb3f8(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0x2, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb3f8(%rbp), %rdi
movq -0xb430(%rbp), %rsi
callq 0x1050
movq -0xb3f8(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x2f, (%rax,%rcx)
movq -0xb430(%rbp), %rdi
callq 0x1030
movq -0xb3f8(%rbp), %rdi
callq 0x10b0
movq %rax, -0xb5d8(%rbp)
movq -0xb400(%rbp), %rdi
callq 0x10b0
movq %rax, %rcx
movq -0xb5d8(%rbp), %rax
addq %rcx, %rax
addq $0xa, %rax
movl %eax, -0xb484(%rbp)
movslq -0xb484(%rbp), %rdi
callq 0x1160
movq %rax, -0xb430(%rbp)
movq -0xb430(%rbp), %rdi
movslq -0xb484(%rbp), %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb430(%rbp), %rdi
movq -0xb3f8(%rbp), %rsi
callq 0x1050
movq -0xb430(%rbp), %rdi
leaq 0x19e2(%rip), %rsi      # 0x13853
callq 0x11a0
movq -0xb430(%rbp), %rdi
movl $0x1ed, %esi            # imm = 0x1ED
callq 0x1070
movq -0xb430(%rbp), %rdi
movq -0xb400(%rbp), %rsi
callq 0x11a0
movq -0xb430(%rbp), %rdi
leaq 0x19b3(%rip), %rsi      # 0x1385b
callq 0x1190
movq %rax, -0xb440(%rbp)
cmpq $0x0, -0xb440(%rbp)
jne 0x11edd
movq -0xb430(%rbp), %rsi
leaq 0x1991(%rip), %rdi      # 0x1385d
movb $0x0, %al
callq 0x10c0
movl $0x1, %edi
callq 0x11b0
cmpl $0x0, -0xb474(%rbp)
jne 0x11f8e
movq -0xb430(%rbp), %rdi
movslq -0xb484(%rbp), %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb430(%rbp), %rdi
movq -0xb3f8(%rbp), %rsi
callq 0x1050
movq -0xb430(%rbp), %rdi
leaq 0x195f(%rip), %rsi      # 0x1387f
callq 0x11a0
movq -0xb430(%rbp), %rdi
movl $0x1ed, %esi            # imm = 0x1ED
callq 0x1070
movq -0xb430(%rbp), %rdi
movq -0xb400(%rbp), %rsi
callq 0x11a0
movq -0xb430(%rbp), %rdi
leaq 0x1904(%rip), %rsi      # 0x1385b
callq 0x1190
movq %rax, -0xb448(%rbp)
cmpq $0x0, -0xb448(%rbp)
jne 0x11f8c
movq -0xb430(%rbp), %rsi
leaq 0x18e2(%rip), %rdi      # 0x1385d
movb $0x0, %al
callq 0x10c0
movl $0x1, %edi
callq 0x11b0
jmp 0x11f8e
movq -0xb430(%rbp), %rdi
callq 0x1030
cmpl $0x0, -0xb46c(%rbp)
jne 0x12065
movq -0xb410(%rbp), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movl -0xb484(%rbp), %eax
addl $0xa, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb420(%rbp)
movq -0xb420(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0xa, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb420(%rbp), %rdi
movq -0xb410(%rbp), %rsi
callq 0x1050
movl -0xb484(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xb44c(%rbp)
movq -0xb420(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
je 0x12052
movq -0xb420(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x2f, (%rax,%rcx)
movq -0xb420(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb $0x0, (%rax,%rcx)
movq -0xb420(%rbp), %rdi
leaq 0x1826(%rip), %rsi      # 0x13886
callq 0x11a0
movl -0xb484(%rbp), %eax
addl $0x1e, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb408(%rbp)
movq -0xb408(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0x1e, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb408(%rbp), %rdi
movq -0xb420(%rbp), %rsi
callq 0x1050
movq -0xb408(%rbp), %rdi
leaq 0x17d3(%rip), %rsi      # 0x1388b
callq 0x11a0
cmpl $0x0, -0xb470(%rbp)
jne 0x12195
cmpl $0x0, -0xb46c(%rbp)
jne 0x12195
movq -0xb410(%rbp), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movl -0xb484(%rbp), %eax
addl $0xa, %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb420(%rbp)
movq -0xb420(%rbp), %rdi
movl -0xb484(%rbp), %eax
addl $0xa, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb420(%rbp), %rdi
movq -0xb410(%rbp), %rsi
callq 0x1050
movl -0xb484(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xb44c(%rbp)
movq -0xb420(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
je 0x12182
movq -0xb420(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movb $0x2f, (%rax,%rcx)
movq -0xb420(%rbp), %rax
movl -0xb44c(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movb $0x0, (%rax,%rcx)
movq -0xb420(%rbp), %rdi
leaq 0x16f6(%rip), %rsi      # 0x13886
callq 0x11a0
cmpl $0x0, -0xb470(%rbp)
jne 0x123c3
leaq -0x13c0(%rbp), %rdi
leaq -0x2750(%rbp), %rsi
movq -0xb420(%rbp), %rdx
callq 0x1630
leaq -0x3ae0(%rbp), %rdi
leaq -0x4e70(%rbp), %rsi
movq -0xb420(%rbp), %rdx
callq 0x1ab0
leaq -0x5260(%rbp), %rdi
leaq -0x5650(%rbp), %rsi
leaq -0x5a40(%rbp), %rdx
leaq -0x5e30(%rbp), %rcx
movq -0xb420(%rbp), %r8
callq 0x1f30
leaq -0x5f20(%rbp), %rdi
leaq -0x6010(%rbp), %rsi
leaq -0x6100(%rbp), %rdx
leaq -0x61f0(%rbp), %rcx
leaq -0x62e0(%rbp), %r8
leaq -0x63d0(%rbp), %r9
movq -0xb420(%rbp), %rax
movq %rax, (%rsp)
callq 0x2670
leaq -0x7760(%rbp), %rdi
leaq -0x8af0(%rbp), %rsi
movq -0xb420(%rbp), %rdx
callq 0x2880
leaq -0x9e80(%rbp), %rdi
leaq -0xb210(%rbp), %rsi
movq -0xb420(%rbp), %rdx
callq 0x2d50
movq -0xb420(%rbp), %rdi
xorl %esi, %esi
callq 0x3220
movl %eax, -0xb488(%rbp)
imull $0x5, -0xb488(%rbp), %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb218(%rbp)
imull $0x5, -0xb488(%rbp), %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb220(%rbp)
movslq -0xb488(%rbp), %rdi
shlq $0x3, %rdi
callq 0x1160
movq %rax, -0xb238(%rbp)
movslq -0xb488(%rbp), %rdi
shlq $0x3, %rdi
callq 0x1160
movq %rax, -0xb240(%rbp)
movq -0xb218(%rbp), %rdi
movq -0xb220(%rbp), %rsi
movq -0xb238(%rbp), %rdx
movq -0xb240(%rbp), %rcx
movq -0xb420(%rbp), %r8
callq 0x3330
movq -0xb420(%rbp), %rdi
movl $0x1, %esi
callq 0x3220
movl %eax, -0xb48c(%rbp)
imull $0x6, -0xb48c(%rbp), %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb228(%rbp)
imull $0x6, -0xb48c(%rbp), %eax
movslq %eax, %rdi
callq 0x1160
movq %rax, -0xb230(%rbp)
movslq -0xb48c(%rbp), %rdi
shlq $0x3, %rdi
callq 0x1160
movq %rax, -0xb248(%rbp)
movslq -0xb48c(%rbp), %rdi
shlq $0x3, %rdi
callq 0x1160
movq %rax, -0xb250(%rbp)
movq -0xb228(%rbp), %rdi
movq -0xb230(%rbp), %rsi
movq -0xb248(%rbp), %rdx
movq -0xb250(%rbp), %rcx
movq -0xb420(%rbp), %r8
callq 0x3600
leaq -0xb320(%rbp), %rdi
movsd 0xdae(%rip), %xmm0      # 0x13158
callq 0x38c0
leaq -0xb3f0(%rbp), %rdi
movsd 0xd92(%rip), %xmm0      # 0x13150
callq 0x3940
movq -0xb418(%rbp), %rdi
xorl %esi, %esi
callq 0x1180
cmpl $-0x1, %eax
jne 0x123f5
movq -0xb418(%rbp), %rsi
leaq 0x14bb(%rip), %rdi      # 0x1389f
movb $0x0, %al
callq 0x10c0
movl $0x1, %edi
callq 0x11b0
movq -0xb418(%rbp), %rdi
leaq -0xb5b8(%rbp), %rsi
callq 0x1140
movq -0xb588(%rbp), %rax
movl %eax, -0xb484(%rbp)
movl -0xb484(%rbp), %eax
addl $0x64, %eax
movl %eax, -0xb484(%rbp)
movslq -0xb484(%rbp), %rdi
callq 0x1160
movq %rax, -0xb430(%rbp)
movq -0xb430(%rbp), %rdi
movslq -0xb484(%rbp), %rdx
xorl %esi, %esi
callq 0x10e0
movslq -0xb484(%rbp), %rdi
shlq $0x0, %rdi
callq 0x1160
movq %rax, -0xb428(%rbp)
movq -0xb428(%rbp), %rdi
movslq -0xb484(%rbp), %rdx
shlq $0x0, %rdx
xorl %esi, %esi
callq 0x10e0
movq -0xb418(%rbp), %rdi
leaq 0x12b4(%rip), %rsi      # 0x1373e
callq 0x1190
movq %rax, -0xb438(%rbp)
cmpq $0x0, -0xb438(%rbp)
jne 0x124bf
movq -0xb418(%rbp), %rsi
leaq 0x1411(%rip), %rdi      # 0x138bf
movb $0x0, %al
callq 0x10c0
movl $0x1, %edi
callq 0x11b0
movq -0xb430(%rbp), %rdi
movslq -0xb484(%rbp), %rsi
shlq $0x0, %rsi
movq -0xb438(%rbp), %rcx
movl $0x1, %edx
callq 0x1080
movq -0xb438(%rbp), %rdi
callq 0x10a0
movl $0x0, -0xb484(%rbp)
movl $0x0, -0xb44c(%rbp)
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
je 0x1252a
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x12502
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x126c5
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
jne 0x1257c
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
jmp 0x12539
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x61, %eax
je 0x125aa
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x41, %eax
jne 0x125c1
movq -0xb428(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x41, (%rax,%rcx)
jmp 0x126a2
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x74, %eax
je 0x125ef
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x54, %eax
jne 0x12606
movq -0xb428(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x54, (%rax,%rcx)
jmp 0x126a0
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x63, %eax
je 0x12634
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x43, %eax
jne 0x12648
movq -0xb428(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x43, (%rax,%rcx)
jmp 0x1269e
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x67, %eax
je 0x12676
movq -0xb430(%rbp), %rax
movslq -0xb44c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x47, %eax
jne 0x1268a
movq -0xb428(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x47, (%rax,%rcx)
jmp 0x1269c
movq -0xb428(%rbp), %rax
movslq -0xb484(%rbp), %rcx
movb $0x4e, (%rax,%rcx)
jmp 0x1269e
jmp 0x126a0
jmp 0x126a2
movl -0xb44c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb44c(%rbp)
movl -0xb484(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb484(%rbp)
jmp 0x12539
movq -0xb430(%rbp), %rdi
callq 0x1030
movq -0xb428(%rbp), %rdi
callq 0x10b0
movl %eax, -0xb484(%rbp)
movq -0xb408(%rbp), %rdi
leaq 0x104d(%rip), %rsi      # 0x1373e
callq 0x1190
movq %rax, -0xb438(%rbp)
cmpq $0x0, -0xb438(%rbp)
jne 0x12726
movq -0xb408(%rbp), %rsi
leaq 0x11ca(%rip), %rdi      # 0x138df
movb $0x0, %al
callq 0x10c0
movl $0x1, %edi
callq 0x11b0
jmp 0x12728
movq -0xb438(%rbp), %rdi
leaq 0x11c9(%rip), %rsi      # 0x138ff
leaq -0xb44c(%rbp), %rdx
leaq -0xb524(%rbp), %rcx
leaq -0xb528(%rbp), %r8
movb $0x0, %al
callq 0x1060
cmpl $-0x1, %eax
je 0x12789
movss -0xb524(%rbp), %xmm0
movslq -0xb44c(%rbp), %rax
movss %xmm0, -0xb4e0(%rbp,%rax,4)
movss -0xb528(%rbp), %xmm0
movslq -0xb44c(%rbp), %rax
movss %xmm0, -0xb520(%rbp,%rax,4)
jmp 0x12728
movq -0xb438(%rbp), %rdi
callq 0x10a0
xorl %eax, %eax
movl %eax, %edi
callq 0x1150
movq %rax, -0xb5c8(%rbp)
movq -0xb5c8(%rbp), %rdi
movq -0xb5c0(%rbp), %rsi
callq 0x10d0
cvttsd2si %xmm0, %esi
leaq 0x1145(%rip), %rdi      # 0x13908
movb $0x0, %al
callq 0x10c0
xorl %eax, %eax
movl %eax, %edi
callq 0x1150
movq %rax, -0xb5c0(%rbp)
movl $0x0, -0xb498(%rbp)
movl $0x0, -0xb494(%rbp)
movq -0xb428(%rbp), %rdi
leaq -0xb480(%rbp), %rsi
movq -0xb440(%rbp), %rdx
movq -0xb448(%rbp), %rcx
leaq -0xb498(%rbp), %r8
leaq -0xb4e0(%rbp), %r9
leaq -0xb520(%rbp), %rax
movq %rax, -0xb6a0(%rbp)
movl -0xb484(%rbp), %eax
movl %eax, -0xb694(%rbp)
leaq -0x13c0(%rbp), %rax
movq %rax, -0xb690(%rbp)
leaq -0x2750(%rbp), %rax
movq %rax, -0xb688(%rbp)
leaq -0x3ae0(%rbp), %rax
movq %rax, -0xb680(%rbp)
leaq -0x4e70(%rbp), %rax
movq %rax, -0xb678(%rbp)
leaq -0x5260(%rbp), %rax
movq %rax, -0xb670(%rbp)
leaq -0x5650(%rbp), %rax
movq %rax, -0xb668(%rbp)
leaq -0x5a40(%rbp), %rax
movq %rax, -0xb660(%rbp)
leaq -0x5e30(%rbp), %rax
movq %rax, -0xb658(%rbp)
leaq -0x5f20(%rbp), %rax
movq %rax, -0xb650(%rbp)
leaq -0x6010(%rbp), %rax
movq %rax, -0xb648(%rbp)
leaq -0x6100(%rbp), %rax
movq %rax, -0xb640(%rbp)
leaq -0x61f0(%rbp), %rax
movq %rax, -0xb638(%rbp)
leaq -0x62e0(%rbp), %rax
movq %rax, -0xb630(%rbp)
leaq -0x63d0(%rbp), %rax
movq %rax, -0xb628(%rbp)
leaq -0x7760(%rbp), %rax
movq %rax, -0xb620(%rbp)
leaq -0x8af0(%rbp), %rax
movq %rax, -0xb618(%rbp)
leaq -0x9e80(%rbp), %rax
movq %rax, -0xb610(%rbp)
leaq -0xb210(%rbp), %rax
movq %rax, -0xb608(%rbp)
movq -0xb218(%rbp), %rax
movq %rax, -0xb600(%rbp)
movq -0xb220(%rbp), %rax
movq %rax, -0xb5f8(%rbp)
movq -0xb228(%rbp), %rax
movq %rax, -0xb5f0(%rbp)
movq -0xb230(%rbp), %rax
movq %rax, -0xb5e8(%rbp)
movq -0xb238(%rbp), %r13
movq -0xb240(%rbp), %r12
movq -0xb248(%rbp), %r15
movq -0xb250(%rbp), %r14
movl -0xb488(%rbp), %ebx
movl -0xb48c(%rbp), %r11d
leaq -0xb320(%rbp), %r10
leaq -0xb3f0(%rbp), %rax
movq %rax, -0xb5e0(%rbp)
movq -0xb6a0(%rbp), %rax
movq %rax, (%rsp)
movl -0xb694(%rbp), %eax
movl %eax, 0x8(%rsp)
movq -0xb690(%rbp), %rax
movq %rax, 0x10(%rsp)
movq -0xb688(%rbp), %rax
movq %rax, 0x18(%rsp)
movq -0xb680(%rbp), %rax
movq %rax, 0x20(%rsp)
movq -0xb678(%rbp), %rax
movq %rax, 0x28(%rsp)
movq -0xb670(%rbp), %rax
movq %rax, 0x30(%rsp)
movq -0xb668(%rbp), %rax
movq %rax, 0x38(%rsp)
movq -0xb660(%rbp), %rax
movq %rax, 0x40(%rsp)
movq -0xb658(%rbp), %rax
movq %rax, 0x48(%rsp)
movq -0xb650(%rbp), %rax
movq %rax, 0x50(%rsp)
movq -0xb648(%rbp), %rax
movq %rax, 0x58(%rsp)
movq -0xb640(%rbp), %rax
movq %rax, 0x60(%rsp)
movq -0xb638(%rbp), %rax
movq %rax, 0x68(%rsp)
movq -0xb630(%rbp), %rax
movq %rax, 0x70(%rsp)
movq -0xb628(%rbp), %rax
movq %rax, 0x78(%rsp)
movq -0xb620(%rbp), %rax
movq %rax, 0x80(%rsp)
movq -0xb618(%rbp), %rax
movq %rax, 0x88(%rsp)
movq -0xb610(%rbp), %rax
movq %rax, 0x90(%rsp)
movq -0xb608(%rbp), %rax
movq %rax, 0x98(%rsp)
movq -0xb600(%rbp), %rax
movq %rax, 0xa0(%rsp)
movq -0xb5f8(%rbp), %rax
movq %rax, 0xa8(%rsp)
movq -0xb5f0(%rbp), %rax
movq %rax, 0xb0(%rsp)
movq -0xb5e8(%rbp), %rax
movq %rax, 0xb8(%rsp)
movq -0xb5e0(%rbp), %rax
movq %r13, 0xc0(%rsp)
movq %r12, 0xc8(%rsp)
movq %r15, 0xd0(%rsp)
movq %r14, 0xd8(%rsp)
movl %ebx, 0xe0(%rsp)
movl %r11d, 0xe8(%rsp)
movq %r10, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
callq 0xef50
movq -0xb428(%rbp), %rdi
callq 0x1030
movl -0xb498(%rbp), %esi
leaq 0xdec(%rip), %rdi       # 0x13929
movb $0x0, %al
callq 0x10c0
movq -0xb440(%rbp), %rdi
callq 0x10a0
cmpl $0x0, -0xb474(%rbp)
jne 0x12b79
movl -0xb494(%rbp), %esi
leaq 0xde4(%rip), %rdi       # 0x1394a
movb $0x0, %al
callq 0x10c0
movq -0xb448(%rbp), %rdi
callq 0x10a0
cmpl $0x2, -0xb498(%rbp)
jge 0x12b90
leaq 0xde5(%rip), %rdi       # 0x1396e
movb $0x0, %al
callq 0x10c0
cmpl $0x0, -0xb474(%rbp)
jne 0x12bb0
cmpl $0x1, -0xb494(%rbp)
jge 0x12bb0
leaq 0xdf5(%rip), %rdi       # 0x1399e
movb $0x0, %al
callq 0x10c0
xorl %eax, %eax
movl %eax, %edi
callq 0x1150
movq %rax, -0xb5c8(%rbp)
movq -0xb5c8(%rbp), %rdi
movq -0xb5c0(%rbp), %rsi
callq 0x10d0
cvttsd2si %xmm0, %esi
leaq 0xde7(%rip), %rdi       # 0x139c5
movb $0x0, %al
callq 0x10c0
movq -0xb3f8(%rbp), %rdi
callq 0x1030
movq -0xb400(%rbp), %rdi
callq 0x1030
movq -0xb408(%rbp), %rdi
callq 0x1030
movq -0xb410(%rbp), %rdi
callq 0x1030
movq -0xb418(%rbp), %rdi
callq 0x1030
cmpl $0x0, -0xb470(%rbp)
jne 0x12c8a
movq -0xb218(%rbp), %rdi
callq 0x1030
movq -0xb220(%rbp), %rdi
callq 0x1030
movq -0xb228(%rbp), %rdi
callq 0x1030
movq -0xb230(%rbp), %rdi
callq 0x1030
movq -0xb238(%rbp), %rdi
callq 0x1030
movq -0xb240(%rbp), %rdi
callq 0x1030
movq -0xb248(%rbp), %rdi
callq 0x1030
movq -0xb250(%rbp), %rdi
callq 0x1030
cmpl $0x0, -0xb470(%rbp)
je 0x12c9c
cmpl $0x0, -0xb46c(%rbp)
je 0x12ca8
movq -0xb420(%rbp), %rdi
callq 0x1030
addq $0xb778, %rsp           # imm = 0xB778
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq