// File: dcarrey[P]hgt-detection/./utils_tree.cpp
// Function: filtrerMatrice(double**, double**, char**, char**, int, int, char*)
void filtrerMatrice(double **dissSpecies, double **dissGene, char **nomsSpecies, char **nomsGene,int nbSpecies, int nbGene, char * fichier){

		int i,j,temoin;
		FILE * out;
		
		if((out = fopen(fichier,"a+")) == NULL){
			printf("Can't open %s",fichier);
			exit(-1);
		}
		
		fprintf(out,"\n=>Filtre");
		
		
		for(i=1;i<=nbSpecies;i++){
			//printf("\n%s -",nomsSpecies[i]);
			temoin = 0;
			for(j=1;j<=nbGene;j++){
				//printf(" %s",nomsGene[j]);
				if(strcmp(nomsSpecies[i],nomsGene[j])==0)
					temoin=1;
			}
			if(temoin == 0){
				fprintf(out,"\nSpecies:%s",nomsSpecies[i]);
				for(j=1;j<=nbSpecies;j++){
						dissSpecies[i][j] = dissSpecies[j][i] = -1;
				}
				strcpy(nomsSpecies[i],"");
			}
		}
		//printf("==============");
		for(i=1;i<=nbGene;i++){
			//printf("\n%s -",nomsGene[i]);
			temoin = 0;
			for(j=1;j<=nbSpecies;j++){
			//	printf(" %s",nomsSpecies[j]); 	
				//if(strlen(nomsSpecies[j]) > 1) 
					if(strcmp(nomsSpecies[j],nomsGene[i])==0)
						temoin=1;
			}
			if(temoin == 0){
				fprintf(out,"\nGene:%s",nomsGene[i]);
				for(j=1;j<=nbGene;j++){
					dissGene[i][j] = dissGene[j][i] = -1;
				}
				strcpy(nomsGene[i],"");
			}
		}

		fclose(out);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movl %r9d, -0x28(%rbp)
movq 0x10(%rbp), %rdi
leaq 0x1b0a5(%rip), %rsi     # 0x25774
callq 0x10c0
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0xa6fa
movq 0x10(%rbp), %rsi
leaq 0x1b08e(%rip), %rdi     # 0x25777
movb $0x0, %al
callq 0x1030
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x10f0
movq -0x40(%rbp), %rdi
leaq 0x1b080(%rip), %rsi     # 0x25785
movb $0x0, %al
callq 0x1140
movl $0x1, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jg 0xa80f
movl $0x0, -0x34(%rbp)
movl $0x1, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x28(%rbp), %eax
jg 0xa76b
movq -0x18(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x20(%rbp), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1130
cmpl $0x0, %eax
jne 0xa75e
movl $0x1, -0x34(%rbp)
jmp 0xa760
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xa72d
cmpl $0x0, -0x34(%rbp)
jne 0xa7ff
movq -0x40(%rbp), %rdi
movq -0x18(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0x1b003(%rip), %rsi     # 0x2578f
movb $0x0, %al
callq 0x1140
movl $0x1, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x24(%rbp), %eax
jg 0xa7e7
movq -0x8(%rbp), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsd 0x1a8a6(%rip), %xmm0    # 0x25060
movsd %xmm0, (%rax,%rcx,8)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsd 0x1a889(%rip), %xmm0    # 0x25060
movsd %xmm0, (%rax,%rcx,8)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xa79a
movq -0x18(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1b9fe(%rip), %rsi     # 0x261f8
callq 0x1080
jmp 0xa801
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xa713
movl $0x1, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x28(%rbp), %eax
jg 0xa912
movl $0x0, -0x34(%rbp)
movl $0x1, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x24(%rbp), %eax
jg 0xa86e
movq -0x18(%rbp), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1130
cmpl $0x0, %eax
jne 0xa861
movl $0x1, -0x34(%rbp)
jmp 0xa863
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xa830
cmpl $0x0, -0x34(%rbp)
jne 0xa902
movq -0x40(%rbp), %rdi
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0x1af0c(%rip), %rsi     # 0x2579b
movb $0x0, %al
callq 0x1140
movl $0x1, -0x30(%rbp)
movl -0x30(%rbp), %eax
cmpl -0x28(%rbp), %eax
jg 0xa8ea
movq -0x10(%rbp), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x2c(%rbp), %rcx
movsd 0x1a7a3(%rip), %xmm0    # 0x25060
movsd %xmm0, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x30(%rbp), %rcx
movsd 0x1a786(%rip), %xmm0    # 0x25060
movsd %xmm0, (%rax,%rcx,8)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0xa89d
movq -0x20(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1b8fb(%rip), %rsi     # 0x261f8
callq 0x1080
jmp 0xa904
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0xa816
movq -0x40(%rbp), %rdi
callq 0x1090
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)