// File: /workspace/github_c_makefile_star2_O0/Astor-Bizard[P]ProjetS5_Groupe2/src/affichage_relocation.c
// Function: affichage_relocation
Str_Reloc affichage_relocation(FILE* f,
    Elf32_Ehdr header,
    SectionsHeadersList liste_sections, 
    ListeSymboles table_symbol,
    int silent)
{
    // initialisation
    Str_Reloc RETOUR;
    RETOUR.nb_Rel=0;
    RETOUR.Rel=NULL;
    RETOUR.Sec_Rel=NULL;

	int i=0,ok=0;
    char* CurrentSectionName;

    // on parcours les titres des sections pour trouver les sections de reallocation.
    i=0;
	while(i<header.e_shnum)
	{
        CurrentSectionName = liste_sections.names + liste_sections.headers[i].sh_name;
		// on vérifie toutes les sections
		// si ce sont des sections de relocations:
		/*if( CurrentSectionName[0]=='.' 
			&& CurrentSectionName[1]=='r' 
			&& CurrentSectionName[2]=='e' 
			&& CurrentSectionName[3]=='l' 
			&& CurrentSectionName[4]=='a' )
		{
            //printf("Nom de la section courante:%s n°%i\n",CurrentSectionName,i);
			//afficher_sectionRA(f, liste_sections, header, i, &RETOUR, table_symbol);
		}
		else */if (CurrentSectionName[0]=='.' 
            && CurrentSectionName[1]=='r' 
            && CurrentSectionName[2]=='e' 
            && CurrentSectionName[3]=='l' )
		{
            //printf("Nom de la section courante:%s n°%i\n", CurrentSectionName, i);
			afficher_sectionR(f, liste_sections, header, i, &RETOUR, table_symbol, silent);
			ok = 1;
		}
        i++;
	}
	if(!ok && !silent) printf("\nThere are no relocations in this file.\n");
    return RETOUR;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x48(%rbp)
movq %rdi, %rax
movq %rax, -0x40(%rbp)
leaq 0x60(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq 0x48(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq %rsi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
movl $0x0, (%rdi)
movq $0x0, 0x8(%rdi)
movq $0x0, 0x10(%rdi)
movl $0x0, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movl $0x0, -0x10(%rbp)
movq -0x28(%rbp), %rcx
movl -0x10(%rbp), %eax
movzwl 0x30(%rcx), %ecx
cmpl %ecx, %eax
jge 0x47f9
movq -0x30(%rbp), %rcx
movq 0x8(%rcx), %rax
movq (%rcx), %rcx
movslq -0x10(%rbp), %rdx
imulq $0x28, %rdx, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x47eb
movq -0x20(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x72, %eax
jne 0x47eb
movq -0x20(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x65, %eax
jne 0x47eb
movq -0x20(%rbp), %rax
movsbl 0x3(%rax), %eax
cmpl $0x6c, %eax
jne 0x47eb
movq -0x48(%rbp), %rdx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movq -0x38(%rbp), %r10
movq -0x8(%rbp), %rdi
movl -0x10(%rbp), %esi
movl -0xc(%rbp), %ecx
movq 0x10(%r10), %r11
movq %rsp, %rax
movq %rax, -0x50(%rbp)
movq %r11, 0x60(%rax)
movups (%r10), %xmm0
movups %xmm0, 0x50(%rax)
movl 0x30(%r9), %r10d
movl %r10d, 0x48(%rax)
movups (%r9), %xmm0
movups 0x10(%r9), %xmm1
movups 0x20(%r9), %xmm2
movups %xmm2, 0x38(%rax)
movups %xmm1, 0x28(%rax)
movups %xmm0, 0x18(%rax)
movq 0x10(%r8), %r9
movq %r9, 0x10(%rax)
movups (%r8), %xmm0
movups %xmm0, (%rax)
callq 0x4320
movl $0x1, -0x14(%rbp)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x4710
cmpl $0x0, -0x14(%rbp)
jne 0x4813
cmpl $0x0, -0xc(%rbp)
jne 0x4813
leaq 0x1b2b(%rip), %rdi      # 0x6337
movb $0x0, %al
callq 0x1070
movq -0x40(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq