user: 请将以下的汇编代码转换成C语言代码：

```asm
<convert_elf_phdrs>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L13
L14:
  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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0xc(%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x10(%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x14(%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x18(%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %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
  sar    $0x8,%eax
  and    $0xff00,%eax
  or     %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    0x1c(%rax),%eax
  sar    $0x18,%eax
  or     %edx,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,0x1c(%rax)
  addl   $0x1,-0x4(%rbp)
  addq   $0x20,-0x18(%rbp)
L13:
  mov    -0x4(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jl     L14
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void convert_elf_phdrs(Elf32_Phdr *p, int num) {
  int i;
  for (i = 0; i < num; i++, p++) {
    p->p_type = ((unsigned int)((((uint32_t)(p->p_type) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_type) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_type) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_type) & (uint32_t)0xff000000UL) >> 24)));
    p->p_offset = ((unsigned int)((((uint32_t)(p->p_offset) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_offset) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_offset) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_offset) & (uint32_t)0xff000000UL) >> 24)));
    p->p_vaddr = ((unsigned int)((((uint32_t)(p->p_vaddr) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_vaddr) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_vaddr) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_vaddr) & (uint32_t)0xff000000UL) >> 24)));
    p->p_paddr = ((unsigned int)((((uint32_t)(p->p_paddr) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_paddr) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_paddr) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_paddr) & (uint32_t)0xff000000UL) >> 24)));
    p->p_filesz = ((unsigned int)((((uint32_t)(p->p_filesz) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_filesz) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_filesz) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_filesz) & (uint32_t)0xff000000UL) >> 24)));
    p->p_memsz = ((unsigned int)((((uint32_t)(p->p_memsz) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_memsz) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_memsz) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_memsz) & (uint32_t)0xff000000UL) >> 24)));
    p->p_flags = ((unsigned int)((((uint32_t)(p->p_flags) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_flags) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_flags) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_flags) & (uint32_t)0xff000000UL) >> 24)));
    p->p_align = ((unsigned int)((((uint32_t)(p->p_align) & (uint32_t)0x000000ffUL) << 24) | (((uint32_t)(p->p_align) & (uint32_t)0x0000ff00UL) << 8) | (((uint32_t)(p->p_align) & (uint32_t)0x00ff0000UL) >> 8) | (((uint32_t)(p->p_align) & (uint32_t)0xff000000UL) >> 24)));
  }
}
```