user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<convert_elf_shdrs>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L14
L4:
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x4(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x8(%rax)
  mov    -0x18(%rbp),%rax
  mov    0xc(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0xc(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0xc(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0xc(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0xc(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x10(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x10(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x10(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x10(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x10(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x14(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x14(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x14(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x14(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x14(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x18(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x18(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x18(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x18(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x18(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x1c(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x1c(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x1c(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x1c(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x1c(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x20(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x20(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x20(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x20(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x20(%rax)
  mov    -0x18(%rbp),%rax
  mov    0x24(%rax),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x24(%rax),%eax
  shl    $0x8,%eax
  and    $0xff0000,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x24(%rax),%eax
  shr    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x24(%rax),%eax
  shr    $0x18,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x24(%rax)
  addl   $0x1,-0x4(%rbp)
  addq   $0x28,-0x18(%rbp)
L14:
  mov    -0x4(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jl     L4
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void convert_elf_shdrs(Elf32_Shdr *s, int num) {
  int i;
  for (i = 0; i < num; i++, s++) {
    s->sh_name = ((unsigned int)((((unsigned int)(s->sh_name) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_name) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_name) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_name) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_type = ((unsigned int)((((unsigned int)(s->sh_type) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_type) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_type) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_type) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_flags = ((unsigned int)((((unsigned int)(s->sh_flags) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_flags) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_flags) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_flags) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_addr = ((unsigned int)((((unsigned int)(s->sh_addr) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_addr) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_addr) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_addr) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_offset = ((unsigned int)((((unsigned int)(s->sh_offset) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_offset) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_offset) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_offset) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_size = ((unsigned int)((((unsigned int)(s->sh_size) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_size) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_size) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_size) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_link = ((unsigned int)((((unsigned int)(s->sh_link) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_link) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_link) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_link) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_info = ((unsigned int)((((unsigned int)(s->sh_info) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_info) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_info) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_info) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_addralign = ((unsigned int)((((unsigned int)(s->sh_addralign) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_addralign) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_addralign) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_addralign) & (unsigned int)0xff000000UL) >> 24)));
    s->sh_entsize = ((unsigned int)((((unsigned int)(s->sh_entsize) & (unsigned int)0x000000ffUL) << 24) | (((unsigned int)(s->sh_entsize) & (unsigned int)0x0000ff00UL) << 8) | (((unsigned int)(s->sh_entsize) & (unsigned int)0x00ff0000UL) >> 8) | (((unsigned int)(s->sh_entsize) & (unsigned int)0xff000000UL) >> 24)));
  }
}
```