// File: /workspace/github_c_makefile_star2_O0/Astor-Bizard[P]ProjetS5_Groupe2/src/ecritureSH.c
// Function: writeSectionsHeadersToFile
void writeSectionsHeadersToFile(FILE *f, Elf32_Ehdr elfHeader, SectionsHeadersList shList) {
	int i;

	fseek(f, elfHeader.e_shoff, 0);
	for(i=0; i<shList.size; i++) {
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_name);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_type);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_flags);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_addr);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_offset);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_size);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_link);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_info);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_addralign);
		fwrite32(f, elfHeader.e_ident[EI_DATA], shList.headers[i].sh_entsize);
	}

	printf("%d en-têtes de sections écrites\n", i);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
leaq 0x48(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movl 0x20(%rax), %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x1100
movl $0x0, -0xc(%rbp)
movq -0x20(%rbp), %rcx
movl -0xc(%rbp), %eax
cmpl 0x10(%rcx), %eax
jge 0x65ec
movq -0x20(%rbp), %rax
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x18(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x20(%rax), %edx
callq 0x53c0
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq -0x8(%rbp), %rdi
movzbl 0x5(%rcx), %esi
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x24(%rax), %edx
callq 0x53c0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x6453
movl -0xc(%rbp), %esi
leaq 0x1e4c(%rip), %rdi      # 0x8442
movb $0x0, %al
callq 0x1070
addq $0x20, %rsp
popq %rbp
retq