// File: /workspace/github_c_makefile_star2_O1/jiqingxiaoxi[P]RPA/RPA.c
// Function: read_parPrimer
struct Primer *read_parPrimer(char *path,int common_flag,int specific_flag)
{
	char *in,line[100];
	int pos,len,gi,position,plus,minus,size,i,flag,total,*store,*temp,*data;
	float Tm;
	struct Primer *new_primer,*p_primer,*head;
	struct Node *new_node,*p_node;
	FILE *fp;

///read the  primer file
	if(access(path,0)==-1)
	{
		printf("Error! Don't have the %s file!\n",path);
		exit(1);
	}
        fp=fopen(path,"r");
        if(fp==NULL)
        {
                printf("Error: can't open the %s file!\n",path);
                exit(1);
        }
	
	size=sizeof(struct Primer);
	i=0;
        while(fscanf(fp,"pos:%d\tlength:%d\t+:%d\t-:%d\t%f\n",&pos,&len,&plus,&minus,&Tm)!=EOF)
        {
		new_primer=(struct Primer *)malloc(size);
		new_primer->pos=pos;
		new_primer->len=len;
		new_primer->total=1;
		new_primer->plus=plus;
		new_primer->minus=minus;
		new_primer->Tm=Tm;
		new_primer->next=NULL;
		new_primer->other=NULL;
		new_primer->common=NULL;
		new_primer->specific=NULL;
		new_primer->ignore=0;

		if(i==0)
		{
			head=new_primer;
			p_primer=new_primer;
			i++;
		}
		else
		{
			p_primer->next=new_primer;
			p_primer=new_primer;
		}
        }
	fclose(fp);
        if(i==0)
        {
                printf("Sorry! Don't have any candidate single primers in %s!\n",path);
                exit(1);
        }

//parameter of common
	if(common_flag==1)
	{
		i=strlen(path);
		in=(char *)malloc(i+20);
        	memset(in,'\0',i+20);
        	strcpy(in,path);
        	strcat(in,"-common.txt"); //suffix of parameter
		if(access(in,0)==-1)
		{
			printf("Error! Don't have the %s file!\n",in);
			exit(1);
		}

        	fp=fopen(in,"r");
        	if(fp==NULL)
        	{
        	        printf("Error: can't open the %s file!\n",in);
        	        exit(1);
        	}
		
		total=0;
		while(fgets(line,100,fp)!=NULL)
			total++;
		rewind(fp);
		store=(int *)malloc(total*sizeof(int));
		temp=(int *)malloc(total*sizeof(int));
		data=(int *)malloc(6*total*sizeof(int));
		total=0;
		while(fscanf(fp,"%d\t%d\t%d\t%d\t%d\t%d\n",&pos,&len,&gi,&position,&plus,&minus)!=EOF)
		{
			data[6*total]=pos;
			data[6*total+1]=len;
			data[6*total+2]=gi;
			data[6*total+3]=position;
			data[6*total+4]=plus;
			data[6*total+5]=minus;
			store[total]=total;
			total++;
		}
		fclose(fp);
		sort_merge(store,temp,data,0,(total-1));

		p_primer=head;
		size=sizeof(struct Node);
		flag=0;
		i=0;
		while(p_primer&&i<total)
		{
		//pos
			if(data[store[i]*6]<p_primer->pos)
			{
				i++;
				continue;
			}
			if(data[store[i]*6]>p_primer->pos)
			{
				p_primer=p_primer->next;
				flag=0;
				continue;
			}
		//len
			if(data[store[i]*6+1]<p_primer->len)
                        {
                                i++;
                                continue;
                        }
                        if(data[store[i]*6+1]>p_primer->len)
                        {
                                p_primer=p_primer->next;
				flag=0;
                                continue;
                        }
			new_node=(struct Node *)malloc(size);
			new_node->gi=data[store[i]*6+2];
			new_node->pos=data[store[i]*6+3];
			new_node->plus=data[store[i]*6+4];
			new_node->minus=data[store[i]*6+5];
                        new_node->next=NULL;
			if(flag==0)
			{
				flag++;
				p_primer->common=new_node;
				p_node=new_node;
			}
			else
			{
                        	p_node->next=new_node;
				p_node=new_node;
			}
			i++;
        	}
		free(in);
		free(data);
		free(store);
		free(temp);
	}
//paramter for specific
	if(specific_flag==1)
	{
		i=strlen(path);
		in=(char *)malloc(i+20);
		memset(in,'\0',i+20);
        	strcpy(in,path);
        	strcat(in,"-specific.txt"); //suffix of parameter
		if(access(in,0)==-1)
		{
			printf("Error! Don't have the %s file!\n",in);
			exit(1);
		}

        	fp=fopen(in,"r");
        	if(fp==NULL)
        	{
        	        printf("Error: can't open the %s file!\n",in);
        	        exit(1);
        	}
		total=0;
                while(fgets(line,100,fp)!=NULL)
                        total++;
                rewind(fp);
                store=(int *)malloc(total*sizeof(int));
                temp=(int *)malloc(total*sizeof(int));
                data=(int *)malloc(6*total*sizeof(int));
                total=0;
                while(fscanf(fp,"%d\t%d\t%d\t%d\t%d\t%d\n",&pos,&len,&gi,&position,&plus,&minus)!=EOF)
                {
                        data[6*total]=pos;
                        data[6*total+1]=len;
                        data[6*total+2]=gi;
                        data[6*total+3]=position;
                        data[6*total+4]=plus;
                        data[6*total+5]=minus;
                        store[total]=total;
                        total++;
                }
                fclose(fp);
                sort_merge(store,temp,data,0,(total-1));

                p_primer=head;
                size=sizeof(struct Node);
                flag=0;
		i=0;
                while(p_primer&&i<total)
                {
                //pos
                        if(data[store[i]*6]<p_primer->pos)
                        {
                                i++;
                                continue;
                        }
                        if(data[store[i]*6]>p_primer->pos)
                        {
                                p_primer=p_primer->next;
				flag=0;
                                continue;
                        }
                //len
                        if(data[store[i]*6+1]<p_primer->len)
                        {
                                i++;
                                continue;
                        }
                        if(data[store[i]*6+1]>p_primer->len)
                        {
                                p_primer=p_primer->next;
				flag=0;
                                continue;
                        }
                        new_node=(struct Node *)malloc(size);
                        new_node->gi=data[store[i]*6+2];
                        new_node->pos=data[store[i]*6+3];
                        new_node->plus=data[store[i]*6+4];
                        new_node->minus=data[store[i]*6+5];
                        new_node->next=NULL;
			if(flag==0)
			{
				flag++;
				p_primer->specific=new_node;
				p_node=new_node;
			}
			else
			{
                        	p_node->next=new_node;
                        	p_node=new_node;
			}
                        i++;
                }
		free(in);
                free(data);
                free(store);
                free(temp);

	//ignore info
		i=strlen(path);
                in=(char *)malloc(i+20);
                memset(in,'\0',i+20);
                strcpy(in,path);
                strcat(in,"-ignore.txt"); //suffix of parameter
                if(access(in,0)==-1)
                {
                        printf("Error! Don't have the %s file!\n",in);
                        exit(1);
                }

                fp=fopen(in,"r");
                if(fp==NULL)
                {
                        printf("Error: can't open the %s file!\n",in);
                        exit(1);
                }
		p_primer=head;
                while(fscanf(fp,"%d\n",&pos)!=EOF)
                {
			while(p_primer)
			{
				if(p_primer->pos<pos)
				{
					p_primer=p_primer->next;
					continue;
				}
				if(p_primer->pos>pos)
					break;
				p_primer->ignore=1;
				p_primer=p_primer->next;
			}
                }
                fclose(fp);
                free(in);
	}
	return head;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movl %edx, %r14d
movl %esi, %r12d
movq %rdi, %rbx
xorl %esi, %esi
callq 0x11b0
cmpl $-0x1, %eax
je 0xbf7e
leaq 0x2aae(%rip), %rsi      # 0xe20e
movq %rbx, %rdi
callq 0x11c0
testq %rax, %rax
je 0xbf87
movq %rax, %r15
movl %r12d, -0x50(%rbp)
movl %r14d, -0x80(%rbp)
movq %rbx, -0x88(%rbp)
subq $0x8, %rsp
leaq -0x64(%rbp), %r10
leaq 0x2d21(%rip), %rsi      # 0xe4b3
leaq -0x2c(%rbp), %rdx
leaq -0x38(%rbp), %rcx
leaq -0x34(%rbp), %r8
leaq -0x30(%rbp), %r9
movq %rax, %rdi
xorl %eax, %eax
pushq %r10
callq 0x1060
addq $0x10, %rsp
movl %eax, -0x40(%rbp)
cmpl $-0x1, %eax
je 0xb870
movb $0x1, %r13b
movl $0x40, %edi
callq 0x1190
movq %rax, %r12
movl -0x2c(%rbp), %eax
movl %eax, (%r12)
movl -0x38(%rbp), %eax
movl %eax, 0x4(%r12)
movl $0x1, 0x10(%r12)
movl -0x34(%rbp), %eax
movl %eax, 0x8(%r12)
movl -0x30(%rbp), %eax
movl %eax, 0xc(%r12)
movss -0x64(%rbp), %xmm0
movss %xmm0, 0x18(%r12)
movl $0x0, 0x14(%r12)
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%r12)
movups %xmm0, 0x20(%r12)
movq %r12, %rax
testb $0x1, %r13b
jne 0xb82a
movq %r12, 0x28(%r14)
movq %rbx, %rax
subq $0x8, %rsp
xorl %r13d, %r13d
movq %rax, %rbx
movq %r15, %rdi
leaq 0x2c75(%rip), %rsi      # 0xe4b3
leaq -0x2c(%rbp), %rdx
leaq -0x38(%rbp), %rcx
leaq -0x34(%rbp), %r8
leaq -0x30(%rbp), %r9
xorl %eax, %eax
leaq -0x64(%rbp), %r10
pushq %r10
callq 0x1060
movq %rbx, %rcx
addq $0x10, %rsp
movq %r12, %r14
cmpl $-0x1, %eax
jne 0xb7c1
jmp 0xb870
movq %rcx, -0x70(%rbp)
movq %r15, %rdi
callq 0x10a0
cmpl $-0x1, -0x40(%rbp)
movq -0x88(%rbp), %r14
je 0xbf93
cmpl $0x1, -0x50(%rbp)
jne 0xbb80
movq %r14, %rdi
callq 0x10b0
addl $0x14, %eax
movslq %eax, %rbx
movq %rbx, %rdi
callq 0x1190
movq %rax, %r12
movq %rax, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x1100
movq %r12, %rdi
movq %r14, %rsi
callq 0x1050
movq %r12, %rdi
callq 0x10b0
movabsq $0x2e6e6f6d6d6f632d, %rcx # imm = 0x2E6E6F6D6D6F632D
movq %rcx, (%r12,%rax)
movl $0x747874, 0x8(%r12,%rax) # imm = 0x747874
movq %r12, %rdi
xorl %esi, %esi
callq 0x11b0
cmpl $-0x1, %eax
je 0xbf9c
leaq 0x290d(%rip), %rsi      # 0xe20e
movq %r12, %rdi
callq 0x11c0
testq %rax, %rax
je 0xbfa5
movq %rax, %r15
movq %r12, -0x78(%rbp)
movq $-0x4, %rbx
movl $0xfffffffa, %r12d      # imm = 0xFFFFFFFA
leaq -0x100(%rbp), %r14
movq %r14, %rdi
movl $0x64, %esi
movq %r15, %rdx
callq 0x1130
addq $0x4, %rbx
addl $0x6, %r12d
testq %rax, %rax
jne 0xb92d
movq %r15, %rdi
callq 0x10e0
movq %rbx, %rdi
callq 0x1190
movq %rax, %r14
movq %rbx, %rdi
callq 0x1190
movq %rax, -0x60(%rbp)
movl %r12d, %edi
shlq $0x2, %rdi
callq 0x1190
movq %rax, %r13
leaq 0x2b96(%rip), %rsi      # 0xe515
xorl %r12d, %r12d
leaq -0x2c(%rbp), %rdx
leaq -0x38(%rbp), %rcx
leaq -0x48(%rbp), %r8
leaq -0x44(%rbp), %r9
movq %r15, %rdi
xorl %eax, %eax
leaq -0x30(%rbp), %r10
pushq %r10
leaq -0x34(%rbp), %r10
pushq %r10
callq 0x1060
addq $0x10, %rsp
cmpl $-0x1, %eax
movq %r13, -0x50(%rbp)
movq %r14, -0x40(%rbp)
je 0xba36
addq $0x14, %r13
xorl %r12d, %r12d
leaq -0x34(%rbp), %r14
leaq -0x30(%rbp), %rbx
movl -0x2c(%rbp), %eax
movl %eax, -0x14(%r13)
movl -0x38(%rbp), %eax
movl %eax, -0x10(%r13)
movl -0x48(%rbp), %eax
movl %eax, -0xc(%r13)
movl -0x44(%rbp), %eax
movl %eax, -0x8(%r13)
movl -0x34(%rbp), %eax
movl %eax, -0x4(%r13)
movl -0x30(%rbp), %eax
movl %eax, (%r13)
movq -0x40(%rbp), %rax
movl %r12d, (%rax,%r12,4)
incq %r12
movq %r15, %rdi
leaq 0x2b0e(%rip), %rsi      # 0xe515
leaq -0x2c(%rbp), %rdx
leaq -0x38(%rbp), %rcx
leaq -0x48(%rbp), %r8
leaq -0x44(%rbp), %r9
xorl %eax, %eax
pushq %rbx
pushq %r14
callq 0x1060
addq $0x10, %rsp
addq $0x18, %r13
cmpl $-0x1, %eax
jne 0xb9c8
movq -0x40(%rbp), %r14
movq -0x50(%rbp), %r13
movq %r15, %rdi
callq 0x10a0
leal -0x1(%r12), %r8d
xorl %ebx, %ebx
movq %r14, %rdi
movq -0x60(%rbp), %rsi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0xb6b3
testl %r12d, %r12d
setg %al
movq -0x70(%rbp), %r15
testq %r15, %r15
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xbb56
movl %r12d, %r8d
xorl %r13d, %r13d
movslq %r13d, %r13
movq -0x50(%rbp), %rdi
movslq (%r14,%r13,4), %rcx
addq %rcx, %rcx
leaq (%rcx,%rcx,2), %r14
movl (%rdi,%r14,4), %ecx
leal 0x1(%r14), %edx
movslq %edx, %rdx
cmpl (%r15), %ecx
jl 0xbabd
jg 0xbaa6
movl 0x4(%r15), %esi
cmpl %esi, (%rdi,%rdx,4)
jl 0xbabd
jle 0xbad1
movq 0x28(%r15), %r15
testq %r15, %r15
setne %sil
xorl %ebx, %ebx
testb %al, %sil
jne 0xba94
jmp 0xbb4e
incq %r13
cmpq %r8, %r13
setl %al
movq -0x40(%rbp), %r14
jl 0xba7e
jmp 0xbf75
movl $0x18, %edi
movq %r8, -0x90(%rbp)
movq %r9, -0x58(%rbp)
callq 0x1190
movq -0x90(%rbp), %r8
movq -0x50(%rbp), %rdx
movl 0x8(%rdx,%r14,4), %ecx
movl %ecx, 0x4(%rax)
movl 0xc(%rdx,%r14,4), %ecx
movl %ecx, (%rax)
movl 0x10(%rdx,%r14,4), %ecx
movl %ecx, 0x8(%rax)
movl 0x14(%rdx,%r14,4), %ecx
movl %ecx, 0xc(%rax)
movq $0x0, 0x10(%rax)
movq -0x58(%rbp), %rdx
addq $0x10, %rdx
leaq 0x30(%r15), %rcx
testl %ebx, %ebx
cmovneq %rdx, %rcx
movq %rax, (%rcx)
incl %r13d
movl $0x1, %ebx
movq %rax, -0x58(%rbp)
movq %rax, %r9
cmpl %r12d, %r13d
setl %al
movq -0x40(%rbp), %r14
jl 0xba77
jmp 0xbb56
movq %r9, -0x58(%rbp)
movq -0x40(%rbp), %r14
movq -0x78(%rbp), %rdi
callq 0x1030
movq -0x50(%rbp), %rdi
callq 0x1030
movq %r14, %rdi
callq 0x1030
movq -0x60(%rbp), %rdi
callq 0x1030
movq -0x88(%rbp), %r14
cmpl $0x1, -0x80(%rbp)
jne 0xbf5f
movq %r14, %rdi
callq 0x10b0
addl $0x14, %eax
movslq %eax, %rbx
movq %rbx, %rdi
callq 0x1190
movq %rax, %r12
movq %rax, %rdi
xorl %esi, %esi
movq %rbx, %rdx
callq 0x1100
movq %r12, %rdi
movq %r14, %rsi
callq 0x1050
movq %r12, %rdi
callq 0x10b0
movabsq $0x696669636570732d, %rcx # imm = 0x696669636570732D
movq %rcx, (%r12,%rax)
movabsq $0x7478742e636966, %rcx # imm = 0x7478742E636966
movq %rcx, 0x6(%r12,%rax)
movq %r12, %rdi
xorl %esi, %esi
callq 0x11b0
cmpl $-0x1, %eax
je 0xbf9c
leaq 0x2614(%rip), %rsi      # 0xe20e
movq %r12, %rdi
callq 0x11c0
testq %rax, %rax
je 0xbfa5
movq %rax, %r15
movq %r12, -0x80(%rbp)
movq $-0x4, %rbx
movl $0xfffffffa, %r12d      # imm = 0xFFFFFFFA
leaq -0x100(%rbp), %r14
movq %r14, %rdi
movl $0x64, %esi
movq %r15, %rdx
callq 0x1130
addq $0x4, %rbx
addl $0x6, %r12d
testq %rax, %rax
jne 0xbc26
movq %r15, %rdi
callq 0x10e0
movq %rbx, %rdi
callq 0x1190
movq %rax, -0x40(%rbp)
movq %rbx, %rdi
callq 0x1190
movq %rax, -0x50(%rbp)
movl %r12d, %edi
shlq $0x2, %rdi
callq 0x1190
movq %rax, %r13
leaq 0x289c(%rip), %rsi      # 0xe515
xorl %r12d, %r12d
leaq -0x2c(%rbp), %rdx
leaq -0x38(%rbp), %rcx
leaq -0x48(%rbp), %r8
leaq -0x44(%rbp), %r9
movq %r15, %rdi
xorl %eax, %eax
leaq -0x30(%rbp), %r10
pushq %r10
leaq -0x34(%rbp), %r10
movq -0x40(%rbp), %r14
pushq %r10
callq 0x1060
addq $0x10, %rsp
cmpl $-0x1, %eax
je 0xbd2c
movq %r13, -0x60(%rbp)
addq $0x14, %r13
leaq -0x44(%rbp), %rbx
xorl %r12d, %r12d
movl -0x2c(%rbp), %eax
movl %eax, -0x14(%r13)
movl -0x38(%rbp), %eax
movl %eax, -0x10(%r13)
movl -0x48(%rbp), %eax
movl %eax, -0xc(%r13)
movl -0x44(%rbp), %eax
movl %eax, -0x8(%r13)
movl -0x34(%rbp), %eax
movl %eax, -0x4(%r13)
movl -0x30(%rbp), %eax
movl %eax, (%r13)
movl %r12d, (%r14,%r12,4)
incq %r12
movq %r15, %rdi
leaq 0x281c(%rip), %rsi      # 0xe515
leaq -0x2c(%rbp), %rdx
leaq -0x38(%rbp), %rcx
leaq -0x48(%rbp), %r8
movq %rbx, %r9
xorl %eax, %eax
leaq -0x30(%rbp), %r10
pushq %r10
leaq -0x34(%rbp), %r10
pushq %r10
callq 0x1060
addq $0x10, %rsp
addq $0x18, %r13
cmpl $-0x1, %eax
jne 0xbcbe
movq -0x60(%rbp), %r13
movq %r15, %rdi
callq 0x10a0
leal -0x1(%r12), %r8d
xorl %ebx, %ebx
movq %r14, %rdi
movq -0x50(%rbp), %rsi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0xb6b3
testl %r12d, %r12d
setg %al
movq -0x70(%rbp), %r15
testq %r15, %r15
setne %cl
andb %al, %cl
cmpb $0x1, %cl
movq -0x58(%rbp), %rdi
movq %r13, %r8
jne 0xbe36
movl %r12d, %r9d
xorl %r13d, %r13d
movslq %r13d, %r13
movq -0x40(%rbp), %rcx
movslq (%rcx,%r13,4), %rcx
addq %rcx, %rcx
leaq (%rcx,%rcx,2), %r14
movl (%r8,%r14,4), %ecx
leal 0x1(%r14), %edx
movslq %edx, %rdx
cmpl (%r15), %ecx
jl 0xbdb8
jg 0xbda4
movl 0x4(%r15), %esi
cmpl %esi, (%r8,%rdx,4)
jl 0xbdb8
jle 0xbdc5
movq 0x28(%r15), %r15
testq %r15, %r15
setne %sil
xorl %ebx, %ebx
testb %al, %sil
jne 0xbd91
jmp 0xbe36
incq %r13
cmpq %r9, %r13
setl %al
jl 0xbd77
jmp 0xbe36
movq %rdi, -0x58(%rbp)
movl $0x18, %edi
movq %r8, -0x60(%rbp)
movq %r9, -0x78(%rbp)
callq 0x1190
movq -0x78(%rbp), %r9
movq -0x60(%rbp), %r8
movl 0x8(%r8,%r14,4), %ecx
movl %ecx, 0x4(%rax)
movl 0xc(%r8,%r14,4), %ecx
movl %ecx, (%rax)
movl 0x10(%r8,%r14,4), %ecx
movl %ecx, 0x8(%rax)
movl 0x14(%r8,%r14,4), %ecx
movl %ecx, 0xc(%rax)
movq $0x0, 0x10(%rax)
movq -0x58(%rbp), %rdx
addq $0x10, %rdx
leaq 0x38(%r15), %rcx
testl %ebx, %ebx
cmovneq %rdx, %rcx
movq %rax, (%rcx)
incl %r13d
movl $0x1, %ebx
movq %rax, %rdi
cmpl %r12d, %r13d
setl %al
jl 0xbd74
movq -0x80(%rbp), %rdi
movq %r8, %rbx
callq 0x1030
movq %rbx, %rdi
callq 0x1030
movq -0x40(%rbp), %rdi
callq 0x1030
movq -0x50(%rbp), %rdi
callq 0x1030
movq -0x88(%rbp), %rbx
movq %rbx, %rdi
callq 0x10b0
shlq $0x20, %rax
movabsq $0x1400000000, %r15     # imm = 0x1400000000
addq %rax, %r15
sarq $0x20, %r15
movq %r15, %rdi
callq 0x1190
movq %rax, %r14
movq %rax, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0x1100
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1050
movq %r14, %rdi
callq 0x10b0
movabsq $0x2e65726f6e67692d, %rcx # imm = 0x2E65726F6E67692D
movq %rcx, (%r14,%rax)
movl $0x747874, 0x8(%r14,%rax) # imm = 0x747874
movq %r14, %rdi
xorl %esi, %esi
callq 0x11b0
cmpl $-0x1, %eax
je 0xbfb1
leaq 0x2332(%rip), %rsi      # 0xe20e
movq %r14, %rdi
callq 0x11c0
testq %rax, %rax
je 0xbfba
movq %rax, %r15
leaq 0x262d(%rip), %rsi      # 0xe524
leaq -0x2c(%rbp), %rdx
movq %rax, %rdi
xorl %eax, %eax
callq 0x1060
cmpl $-0x1, %eax
je 0xbf4f
leaq 0x2613(%rip), %rbx      # 0xe524
leaq -0x2c(%rbp), %r12
movq -0x70(%rbp), %r13
testq %r13, %r13
je 0xbf3a
movl -0x2c(%rbp), %eax
cmpl %eax, (%r13)
jl 0xbf31
jg 0xbf3a
movl $0x1, 0x14(%r13)
movq 0x28(%r13), %r13
testq %r13, %r13
jne 0xbf21
movq %r15, %rdi
movq %rbx, %rsi
movq %r12, %rdx
xorl %eax, %eax
callq 0x1060
cmpl $-0x1, %eax
jne 0xbf19
movq %r15, %rdi
callq 0x10a0
movq %r14, %rdi
callq 0x1030
movq -0x70(%rbp), %rax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r9, -0x58(%rbp)
jmp 0xbb56
leaq 0x22bd(%rip), %rdi      # 0xe242
jmp 0xbf8e
leaq 0x2505(%rip), %rdi      # 0xe493
movq %rbx, %rsi
jmp 0xbfc4
leaq 0x2538(%rip), %rdi      # 0xe4d2
jmp 0xbfc1
leaq 0x229f(%rip), %rdi      # 0xe242
jmp 0xbfac
leaq 0x24e7(%rip), %rdi      # 0xe493
movq %r12, %rsi
jmp 0xbfc4
leaq 0x228a(%rip), %rdi      # 0xe242
jmp 0xbfc1
leaq 0x24d2(%rip), %rdi      # 0xe493
movq %r14, %rsi
xorl %eax, %eax
callq 0x10c0
movl $0x1, %edi
callq 0x11f0