// File: /workspace/github_cpp_makefile_star2_O2/dcarrey[P]hgt-detection/./fonctions.cpp
// Function: printHGT(_IO_FILE*, _IO_FILE*, char*, CRITERIA*, char*, int, InputTree, HGT*, int, double*, char*, int)
void printHGT(FILE * res,FILE * res2,char *stepbystep,struct CRITERIA * multicheckTab,char *mode,int RFref,/*FILE *out,*/struct InputTree SpeciesTree,struct HGT *tabHGT, int nbHGT, double *tabBoot,char *subtree,int bootmin){
	int i,j,k;
	int diffHGT=0;
	FILE * res1 = res; //fopen ("result2.txt","w+");
	int nbTrivial=0;
	
	fprintf(res,"mode=%s\n",mode);
	
/*   if(strcmp(mode,"monocheck") == 0 || multicheckTab == NULL){
		for(i=1;i<=nbHGT;i++){
			if(i==1)
				diffHGT = RFref - tabHGT[i].crit.RF;
			else
				diffHGT = tabHGT[i-1].crit.RF - tabHGT[i].crit.RF;
		//	fprintf(out,"\n\n================ \n= HGT #%d %s \n==============",i,(diffHGT==1)?" (Trivial transfer: RF distance decreased by 1)":"");
			fprintf(res,"1");
            fprintf(res,"\nHGT %d %s",i,(diffHGT==1)?" Trivial":"");
			nbTrivial += tabHGT[i].trivial; //(diffHGT==1)?1:0;
	//		if(tabBoot != NULL)
	//			fprintf(out,"\nBootstrap value : %3.1lf%%",(double)tabBoot[i]);
			fprintf(res,"\n");
			for(int m=1;m<=tabHGT[i].listSource[0];m++){
				if(m == tabHGT[i].listSource[0])
					fprintf(res,"%s",SpeciesTree.SpeciesName[tabHGT[i].listSource[m]]);
				else
					fprintf(res,"%s, ",SpeciesTree.SpeciesName[tabHGT[i].listSource[m]]);
			}
			//fprintf(res,"\n%d",tabHGT[i].listDestination[0]);
			fprintf(res,"\n");
			for(int m=1;m<=tabHGT[i].listDestination[0];m++){
				if(m == tabHGT[i].listDestination[0])
					fprintf(res,"%s",SpeciesTree.SpeciesName[tabHGT[i].listDestination[m]]);
				else
					fprintf(res,"%s, ",SpeciesTree.SpeciesName[tabHGT[i].listDestination[m]]);
			}
	//		printTransfer(out,1,SpeciesTree.SpeciesName, SpeciesTree.size,tabHGT[i].source_A,tabHGT[i].source_B,tabHGT[i].dest_A,tabHGT[i].dest_B);
			printTransfer(res,1,SpeciesTree.SpeciesName, SpeciesTree.size,tabHGT[i].source_A,tabHGT[i].source_B,tabHGT[i].dest_A,tabHGT[i].dest_B);
	//		fprintf(out,"\nRF = %d \nLS = %lf \nBD = %lf",tabHGT[i].crit.RF,tabHGT[i].crit.LS,tabHGT[i].crit.BD,tabHGT[i].crit.QD);
			fprintf(res,"\nRF = %d , LS = %1.3lf , BD = %1.1lf\n",tabHGT[i].crit.RF,tabHGT[i].crit.LS,tabHGT[i].crit.BD,tabHGT[i].crit.QD);
		}
		if(nbHGT == 0){
	//		fprintf(out,"\n\nNo more HGT have been detected due to evolutionary constraints");
	//		fprintf(res,"\nNo more HGT have been detected due to evolutionary constraints\n");
		}
		else
			if(tabHGT[nbHGT].crit.RF != 0){
	//			fprintf(out,"\n\nNo more HGT have been detected due to evolutionary constraints ");
	//			fprintf(res,"\nNo more HGT have been detected due to evolutionary constraints\n");
			}
    
	} */
	// else{
		
		i=1;
		int lastRF=0;
		int trivial;
		int k1=1;
		for(j=1;j<=multicheckTab[0].m;j++){
		
			if(multicheckTab[j].nbHgtFound == 0) continue;
			//	fprintf(out,"\n\n=======> %d %s been found for this iteration",multicheckTab[j].nbHgtFound,(multicheckTab[j].nbHgtFound==1)?"hgt has":"hgts have");
				fprintf(res,"%d",multicheckTab[j].nbHgtFound);
				if(((j == multicheckTab[0].m) && (strcmp(stepbystep,"yes") == 0)) || (strcmp(stepbystep,"yes") != 0) ){
					fprintf(res2,"%d",multicheckTab[j].nbHgtFound);
				}
			for(k=1;k<=multicheckTab[j].nbHgtFound;k++){
				if(j==1)
					diffHGT = RFref - tabHGT[i].crit.RF;
				else
					diffHGT = multicheckTab[j-1].RF - tabHGT[i].crit.RF;
				trivial=0;
				if(
				  (tabHGT[i].source_A == tabHGT[i].dest_A ) ||
				  (tabHGT[i].source_A == tabHGT[i].dest_B ) ||
				  (tabHGT[i].source_B == tabHGT[i].dest_A ) ||
				  (tabHGT[i].source_B == tabHGT[i].dest_B ) 
				){
					trivial=1;
				}
			//			fprintf(out,"\n================ \n= HGT #%d/%d %s\n================",k,multicheckTab[j].nbHgtFound,(tabHGT[i].trivial == 1 )?" (Trivial transfer: RF distance decreased by 1)":"");//((trivial==1) && (diffHGT==1) )?" (Trivial transfer: RF distance decreased by 1)":"");
				fprintf(res,"\nHGT %d / %d %s%s%s%s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].trivial == 1 )?" Trivial":"",((tabHGT[i].valide == 2 ) || (tabHGT[i].valide == 6))?" Reverse":"",(tabHGT[i].valide == 3 )?" Canceled":"",(tabHGT[i].valide == 5 )?" Initial":"");
				// fprintf(res,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].valide == 2 )?" Reverse":"");
				// fprintf(res,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].valide == 3 )?" Canceled":"");
				// fprintf(res,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].valide == 5 )?" Initial":"");
				// fprintf(res,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].trivial == 6 )?" Reverse":"");
				
				if(((j == multicheckTab[0].m) && (strcmp(stepbystep,"yes") == 0)) || (strcmp(stepbystep,"yes") != 0) ){
					fprintf(res2,"\nHGT %d / %d %s%s%s%s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].trivial == 1 )?" Trivial":"",((tabHGT[i].valide == 2 ) || (tabHGT[i].valide == 6))?" Reverse":"",(tabHGT[i].valide == 3 )?" Canceled":"",(tabHGT[i].valide == 5 )?" Initial":"");
					// fprintf(res2,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].valide == 2 )?" Reverse":"");
					// fprintf(res2,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].valide == 3 )?" Canceled":"");
					// fprintf(res2,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].valide == 5 )?" Initial":"");
					// fprintf(res2,"\nHGT %d / %d %s",k,multicheckTab[j].nbHgtFound,(tabHGT[i].trivial == 6 )?" Reverse":"");
					fprintf(res2,"\nHGT %d / %d %s%s%s%s",k1++,nbHGT,(tabHGT[i].trivial == 1 )?" Trivial":"", ((tabHGT[i].valide == 2 ) || (tabHGT[i].valide == 6))?" Reverse":"",(tabHGT[i].valide == 3 )?" Canceled":"",(tabHGT[i].valide == 5 )?" Initial":"");
					
				}
				if(tabHGT[i].trivial == 1)
					nbTrivial ++;
			  //fprintf(out,"\n%s(%d)",(tabHGT[i].trivial == 1)?"TOTO":"TATA",tabHGT[i].trivial);
		//      if(tabBoot != NULL)
			//				fprintf(out,"\nBootstrap value : %3.1lf%%",(double)tabBoot[i]);

				if((tabBoot != NULL && tabBoot[i] >= bootmin) || (tabBoot == NULL)){
					//fprintf(res,"\n%d",tabHGT[i].listSource[0]);
					fprintf(res,"\n");
					for(int m=1;m<=tabHGT[i].listSource[0];m++){
						//fprintf(res,"%s ",SpeciesTree.SpeciesName[tabHGT[i].listSource[m]]);
						if(m == tabHGT[i].listSource[0])
							fprintf(res,"%s",SpeciesTree.SpeciesName[tabHGT[i].listSource[m]]);
						else
							fprintf(res,"%s, ",SpeciesTree.SpeciesName[tabHGT[i].listSource[m]]);
					}
					//fprintf(res,"\n%d",tabHGT[i].listDestination[0]);
					fprintf(res,"\n");
					for(int m=1;m<=tabHGT[i].listDestination[0];m++){
						//	fprintf(res,"%s ",SpeciesTree.SpeciesName[tabHGT[i].listDestination[m]]);
						if(m == tabHGT[i].listDestination[0])
							fprintf(res,"%s",SpeciesTree.SpeciesName[tabHGT[i].listDestination[m]]);	
						else
							fprintf(res,"%s, ",SpeciesTree.SpeciesName[tabHGT[i].listDestination[m]]);
								
					}
			//			printTransfer(out,1,SpeciesTree.SpeciesName, SpeciesTree.size,tabHGT[i].source_A,tabHGT[i].source_B,tabHGT[i].dest_A,tabHGT[i].dest_B);
					printTransfer(res1,1,SpeciesTree.SpeciesName, SpeciesTree.size,tabHGT[i].source_A,tabHGT[i].source_B,tabHGT[i].dest_A,tabHGT[i].dest_B);
					if(((j == multicheckTab[0].m) && (strcmp(stepbystep,"yes") == 0)) || (strcmp(stepbystep,"yes") != 0) ){
						//fprintf(res2,"\n%d--%d %d--%d",tabHGT[i].source_A,tabHGT[i].source_B,tabHGT[i].dest_A,tabHGT[i].dest_B);
						printTransfer(res2,1,SpeciesTree.SpeciesName, SpeciesTree.size,tabHGT[i].source_A,tabHGT[i].source_B,tabHGT[i].dest_A,tabHGT[i].dest_B);
					}
			//		  fprintf(out,"\nRF = %d \nLS = %lf \nBD = %lf",tabHGT[i].crit.RF,tabHGT[i].crit.LS,tabHGT[i].crit.BD,tabHGT[i].crit.QD);
					fprintf(res1,"\nRF = %d , LS = %1.3lf , BD = %1.1lf",tabHGT[i].crit.RF,tabHGT[i].crit.LS,tabHGT[i].crit.BD);
					fprintf(res1,"\nrRF = %d , rLS = %1.3lf , rBD = %1.1lf",tabHGT[i].crit.rRF,tabHGT[i].crit.rLS,tabHGT[i].crit.rBD);
					if(((j == multicheckTab[0].m) && (strcmp(stepbystep,"yes") == 0)) || (strcmp(stepbystep,"yes") != 0) ){
						fprintf(res2,"\nDIRECT : RF = %d , LS = %1.3lf , BD = %1.1lf",tabHGT[i].crit.RF,tabHGT[i].crit.LS,tabHGT[i].crit.BD);
						fprintf(res2,"\nREVERSE: RF = %d , LS = %1.3lf , BD = %1.1lf",tabHGT[i].crit.rRF,tabHGT[i].crit.rLS,tabHGT[i].crit.rBD);
					}
					i++;
				//	}
				}
			}
			//	fprintf(out,"\n\n=======> After this iteration the criteria are :");
		//		fprintf(out,"\nRF = %d \nLS = %lf \nBD = %lf",multicheckTab[j].RF,multicheckTab[j].LS,multicheckTab[j].BD,multicheckTab[j].QD);
			fprintf(res1,"\nRF = %d , LS = %1.3lf , BD = %1.1lf\n",multicheckTab[j].RF,multicheckTab[j].LS,multicheckTab[j].BD);
			if(((j == multicheckTab[0].m) && (strcmp(stepbystep,"yes") == 0)) || (strcmp(stepbystep,"yes") != 0) ){
				fprintf(res2,"\nRF = %d , LS = %1.3lf , BD = %1.1lf\n",multicheckTab[j].RF,multicheckTab[j].LS,multicheckTab[j].BD);
			}
			lastRF = multicheckTab[j].RF;
		}
	//		fprintf(out,"\n\nTotal number of HGTs : %d",nbHGT);
			
		if(lastRF != 0){
			//	fprintf(out,"\n\nNo more HGT have been detected due to evolutionary constraints");
		//		fprintf(res,"\nNo more HGT have been detected due to evolutionary constraints\n");
		}
		
	// }
	fprintf(res1,"Stat= %d %d",nbHGT,nbTrivial);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rcx, %r13
movq %rdx, -0x30(%rbp)
movq %rsi, -0x48(%rbp)
movq %rdi, %rbx
movq 0x78(%rbp), %rax
movq %rax, -0x98(%rbp)
movl 0x70(%rbp), %eax
movl %eax, -0x54(%rbp)
movq 0x68(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq 0x7e92(%rip), %rsi      # 0x151dd
movq %r8, %rdx
xorl %eax, %eax
callq 0x1170
cvtsi2sdl 0x88(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movq 0x28(%rbp), %r14
pushq $0x1
popq %rax
pushq $0x1
popq %rcx
movl 0x10(%rbp), %edx
movl %edx, -0x58(%rbp)
leaq 0x7613(%rip), %r15      # 0x1498f
movl %eax, -0x34(%rbp)
xorl %r12d, %r12d
movq %rax, -0x80(%rbp)
movq %r13, -0x70(%rbp)
movslq 0x38(%r13), %rax
cmpq %rax, %rcx
jg 0xd8b7
imulq $0x60, %rcx, %rax
movl 0x3c(%r13,%rax), %edx
testl %edx, %edx
je 0xd8af
addq %r13, %rax
movq %rax, -0x50(%rbp)
movq %rbx, %rdi
leaq 0x7e21(%rip), %rsi      # 0x151da
xorl %eax, %eax
movq %rcx, -0x40(%rbp)
callq 0x1170
movl 0x38(%r13), %eax
cmpq %rax, -0x40(%rbp)
jne 0xd3de
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd3ee
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd407
movq -0x50(%rbp), %rax
movl 0x3c(%rax), %edx
movq -0x48(%rbp), %rdi
leaq 0x7dda(%rip), %rsi      # 0x151da
xorl %eax, %eax
callq 0x1170
pushq $0x1
popq %r13
movl -0x34(%rbp), %eax
movq -0x50(%rbp), %rsi
movl 0x3c(%rsi), %ecx
cmpl %ecx, %r13d
movl %eax, -0x34(%rbp)
jg 0xd83e
movl %r12d, -0x78(%rbp)
movslq %eax, %rdx
movq %rdx, -0x68(%rbp)
imulq $0xa8, %rdx, %rax
movq -0x90(%rbp), %rsi
leaq (%rsi,%rax), %r12
movl (%rsi,%rax), %edx
cmpl $0x1, 0x90(%rsi,%rax)
leaq 0x8a26(%rip), %r11      # 0x15e76
movq %r11, %r8
leaq 0x7da2(%rip), %rax      # 0x151fc
cmoveq %rax, %r8
movl %edx, %eax
andl $-0x5, %eax
cmpl $0x2, %eax
movq %r11, %r9
leaq 0x7d95(%rip), %rax      # 0x15205
cmoveq %rax, %r9
cmpl $0x3, %edx
movq %r11, %r10
leaq 0x7d8d(%rip), %rax      # 0x1520e
cmoveq %rax, %r10
cmpl $0x5, %edx
leaq 0x7d89(%rip), %rax      # 0x15218
cmoveq %rax, %r11
movq %rbx, %rdi
leaq 0x7d49(%rip), %rsi      # 0x151e6
movl %r13d, -0x5c(%rbp)
movl %r13d, %edx
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x1170
popq %rcx
popq %rdx
movq -0x70(%rbp), %r13
movl 0x38(%r13), %eax
cmpq %rax, -0x40(%rbp)
jne 0xd4cf
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd4e3
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd5dd
movq -0x50(%rbp), %rax
movl 0x3c(%rax), %ecx
movl (%r12), %eax
cmpl $0x1, 0x90(%r12)
leaq 0x8978(%rip), %r13      # 0x15e76
movq %r13, %r8
leaq 0x7cf4(%rip), %rdx      # 0x151fc
cmoveq %rdx, %r8
movl %eax, %edx
andl $-0x5, %edx
cmpl $0x2, %edx
movq %r13, %r9
leaq 0x7ce7(%rip), %rdx      # 0x15205
cmoveq %rdx, %r9
cmpl $0x3, %eax
movq %r13, %r10
leaq 0x7cdf(%rip), %rdx      # 0x1520e
cmoveq %rdx, %r10
cmpl $0x5, %eax
movq %r13, %r11
leaq 0x7cd8(%rip), %rax      # 0x15218
cmoveq %rax, %r11
movq -0x48(%rbp), %r15
movq %r15, %rdi
leaq 0x7c94(%rip), %rsi      # 0x151e6
movl -0x5c(%rbp), %edx
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x1170
popq %rcx
popq %rdx
movq -0x80(%rbp), %rdx
leal 0x1(%rdx), %eax
movl %eax, -0x74(%rbp)
movl (%r12), %eax
cmpl $0x1, 0x90(%r12)
movq %r13, %r8
leaq 0x7c79(%rip), %rcx      # 0x151fc
cmoveq %rcx, %r8
movl %eax, %ecx
andl $-0x5, %ecx
cmpl $0x2, %ecx
movq %r13, %r9
leaq 0x7c6c(%rip), %rcx      # 0x15205
cmoveq %rcx, %r9
cmpl $0x3, %eax
movq %r13, %r10
leaq 0x7c64(%rip), %rcx      # 0x1520e
cmoveq %rcx, %r10
cmpl $0x5, %eax
leaq 0x7c60(%rip), %rax      # 0x15218
cmoveq %rax, %r13
movq %r15, %rdi
leaq 0x7c20(%rip), %rsi      # 0x151e6
movl -0x54(%rbp), %ecx
xorl %eax, %eax
pushq %r13
pushq %r10
callq 0x1170
popq %rcx
popq %rdx
movl -0x74(%rbp), %eax
movq %rax, -0x80(%rbp)
xorl %ecx, %ecx
cmpl $0x1, 0x90(%r12)
sete %dl
movq -0x98(%rbp), %rax
testq %rax, %rax
je 0xd619
movq -0x68(%rbp), %rsi
movsd (%rax,%rsi,8), %xmm0
ucomisd -0x88(%rbp), %xmm0
jae 0xd619
leaq 0x737e(%rip), %r15      # 0x1498f
movl -0x34(%rbp), %eax
jmp 0xd829
movb %dl, -0x68(%rbp)
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x1120
pushq $0x1
popq %r13
leaq 0x735d(%rip), %r15      # 0x1498f
movq 0x10(%r12), %rax
movslq (%rax), %rcx
cmpq %rcx, %r13
jg 0xd671
movl %ecx, %ecx
movslq (%rax,%r13,4), %rax
movq (%r14,%rax,8), %rdx
cmpq %rcx, %r13
jne 0xd65b
movq %rdx, %rdi
movq %rbx, %rsi
callq 0x10b0
jmp 0xd66c
movq %rbx, %rdi
leaq 0x7bbc(%rip), %rsi      # 0x15221
xorl %eax, %eax
callq 0x1170
incq %r13
jmp 0xd632
pushq $0xa
popq %rdi
movq %rbx, %rsi
callq 0x1120
pushq $0x1
popq %r13
movq 0x18(%r12), %rax
movslq (%rax), %rcx
cmpq %rcx, %r13
jg 0xd6bf
movl %ecx, %ecx
movslq (%rax,%r13,4), %rax
movq (%r14,%rax,8), %rdx
cmpq %rcx, %r13
jne 0xd6a9
movq %rdx, %rdi
movq %rbx, %rsi
callq 0x10b0
jmp 0xd6ba
movq %rbx, %rdi
leaq 0x7b6e(%rip), %rsi      # 0x15221
xorl %eax, %eax
callq 0x1170
incq %r13
jmp 0xd680
movl 0x80(%r12), %r8d
movl 0x84(%r12), %r9d
movl 0x88(%r12), %eax
movl 0x8c(%r12), %r10d
movq %rbx, %rdi
pushq $0x1
popq %rsi
movq %r14, %rdx
movl -0x58(%rbp), %ecx
pushq %r10
pushq %rax
callq 0xd0b5
popq %rax
popq %rcx
movq -0x70(%rbp), %r13
movl 0x38(%r13), %eax
cmpq %rax, -0x40(%rbp)
jne 0xd713
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd723
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd75a
movl 0x80(%r12), %r8d
movl 0x84(%r12), %r9d
movl 0x88(%r12), %eax
movl 0x8c(%r12), %r10d
movq -0x48(%rbp), %rdi
pushq $0x1
popq %rsi
movq %r14, %rdx
movl -0x58(%rbp), %ecx
pushq %r10
pushq %rax
callq 0xd0b5
popq %rax
popq %rcx
movl 0x50(%r12), %edx
movsd 0x20(%r12), %xmm0
movsd 0x30(%r12), %xmm1
movq %rbx, %rdi
leaq 0x7aaf(%rip), %rsi      # 0x15226
movb $0x2, %al
callq 0x1170
movl 0x40(%r12), %edx
movsd 0x28(%r12), %xmm0
movsd 0x38(%r12), %xmm1
movq %rbx, %rdi
leaq 0x7ab0(%rip), %rsi      # 0x1524b
movb $0x2, %al
callq 0x1170
movl 0x38(%r13), %eax
cmpq %rax, -0x40(%rbp)
jne 0xd7bc
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd7cc
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd81f
movl 0x50(%r12), %edx
movsd 0x20(%r12), %xmm0
movsd 0x30(%r12), %xmm1
movq -0x48(%rbp), %r15
movq %r15, %rdi
leaq 0x7a86(%rip), %rsi      # 0x15273
movb $0x2, %al
callq 0x1170
movl 0x40(%r12), %edx
movsd 0x28(%r12), %xmm0
movsd 0x38(%r12), %xmm1
movq %r15, %rdi
leaq 0x717e(%rip), %r15      # 0x1498f
leaq 0x7a89(%rip), %rsi      # 0x152a1
movb $0x2, %al
callq 0x1170
movl -0x34(%rbp), %eax
incl %eax
xorl %ecx, %ecx
movb -0x68(%rbp), %dl
movb %dl, %cl
movl -0x78(%rbp), %r12d
addl %ecx, %r12d
movl -0x5c(%rbp), %r13d
incl %r13d
jmp 0xd40e
movl 0x30(%rsi), %edx
movsd (%rsi), %xmm0
movsd 0x10(%rsi), %xmm1
movq %rbx, %rdi
leaq 0x7a7b(%rip), %rsi      # 0x152cf
movb $0x2, %al
callq 0x1170
movq -0x70(%rbp), %r13
movl 0x38(%r13), %eax
cmpq %rax, -0x40(%rbp)
jne 0xd879
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd889
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1160
testl %eax, %eax
je 0xd8ab
movq -0x50(%rbp), %rax
movl 0x30(%rax), %edx
movsd (%rax), %xmm0
movsd 0x10(%rax), %xmm1
movq -0x48(%rbp), %rdi
leaq 0x7a2b(%rip), %rsi      # 0x152cf
movb $0x2, %al
callq 0x1170
movq -0x40(%rbp), %rcx
incq %rcx
jmp 0xd38a
leaq 0x7a37(%rip), %rsi      # 0x152f5
movq %rbx, %rdi
movl -0x54(%rbp), %edx
movl %r12d, %ecx
xorl %eax, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1170