user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<convert_elf_shdrs>:
  endbr64
  mov    %rdi,%rax
  test   %esi,%esi
  jle    L11
  movslq %esi,%rsi
  lea    (%rsi,%rsi,4),%rdx
  lea    (%rdi,%rdx,8),%rcx
  cs nopw 0x0(%rax,%rax,1)
L0:
  mov    (%rax),%edx
  add    $0x28,%rax
  bswap  %edx
  mov    %edx,-0x28(%rax)
  mov    -0x24(%rax),%edx
  bswap  %edx
  mov    %edx,-0x24(%rax)
  mov    -0x20(%rax),%edx
  bswap  %edx
  mov    %edx,-0x20(%rax)
  mov    -0x1c(%rax),%edx
  bswap  %edx
  mov    %edx,-0x1c(%rax)
  mov    -0x18(%rax),%edx
  bswap  %edx
  mov    %edx,-0x18(%rax)
  mov    -0x14(%rax),%edx
  bswap  %edx
  mov    %edx,-0x14(%rax)
  mov    -0x10(%rax),%edx
  bswap  %edx
  mov    %edx,-0x10(%rax)
  mov    -0xc(%rax),%edx
  bswap  %edx
  mov    %edx,-0xc(%rax)
  mov    -0x8(%rax),%edx
  bswap  %edx
  mov    %edx,-0x8(%rax)
  mov    -0x4(%rax),%edx
  bswap  %edx
  mov    %edx,-0x4(%rax)
  cmp    %rax,%rcx
  jne    L0
L11:
  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)));
  }
}
```