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

```asm
<_pst_debug_hexdump>:
  endbr64
  push   %r15
  mov    $0x1e,%eax
  push   %r14
  push   %r13
  mov    %rdx,%r13
  push   %r12
  mov    %rsi,%r12
  mov    %rdi,%rsi
  push   %rbp
  mov    %rdi,%rbp
  mov    $0xa,%edi
  push   %rbx
  sub    $0x18,%rsp
  cmp    $0xffffffff,%ecx
  cmovne %ecx,%eax
  mov    %eax,0x8(%rsp)
  call   <fputc@plt>
  test   %r13,%r13
  je     L144
  xor    %r14d,%r14d
  nopl   0x0(%rax,%rax,1)
L132:
  mov    %r14d,%edx
  lea    D17(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    0x8(%rsp),%eax
  movslq %r14d,%rbx
  test   %eax,%eax
  jle    L20
  cmp    %rbx,%r13
  jbe    L123
  sub    $0x1,%eax
  mov    %rbx,%r14
  add    %rbx,%rax
  mov    %rax,(%rsp)
  mov    $0x1,%eax
  sub    %ebx,%eax
  mov    %eax,0xc(%rsp)
  jmp    L8
  xchg   %ax,%ax
L27:
  add    $0x1,%r14
  cmp    %r13,%r14
  jae    L17
L8:
  movzbl (%r12,%r14,1),%edx
  lea    D26(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    0xc(%rsp),%eax
  lea    (%rax,%r14,1),%r15d
  cmp    (%rsp),%r14
  jne    L27
  mov    %rbp,%rsi
  mov    $0x3a,%edi
  call   <fputc@plt>
L57:
  movslq 0x8(%rsp),%rax
  lea    (%rax,%rbx,1),%r15
  jmp    L115
  nopl   0x0(%rax)
L131:
  cmp    %rbx,%r13
  jbe    L47
L115:
  movzbl (%r12,%rbx,1),%edi
  call   <isgraph@plt>
  mov    $0x2e,%edi
  test   %rax,%rax
  je     L58
  movzbl (%r12,%rbx,1),%edi
L58:
  mov    %rbp,%rsi
  call   <fputc@plt>
  lea    0x1(%rbx),%eax
  add    $0x1,%rbx
  cmp    %r15,%rbx
  jne    L131
  mov    %eax,%r14d
L24:
  mov    %rbp,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  cmp    %r13,%r15
  jb     L132
  jmp    L144
  nopl   0x0(%rax)
L123:
  xor    %r15d,%r15d
  nopl   0x0(%rax,%rax,1)
L17:
  mov    %rbp,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  add    $0x1,%r15d
  lea    D21(%rip),%rdi
  call   <fwrite@plt>
  cmp    %r15d,0x8(%rsp)
  jg     L17
  mov    %rbp,%rsi
  mov    $0x3a,%edi
  call   <fputc@plt>
  cmp    %rbx,%r13
  ja     L57
  nopw   0x0(%rax,%rax,1)
L47:
  mov    %rbp,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
L144:
  add    $0x18,%rsp
  mov    %rbp,%rsi
  mov    $0xa,%edi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1080 <fputc@plt>
L20:
  mov    %rbp,%rsi
  mov    $0x3a,%edi
  mov    %rbx,%r15
  call   <fputc@plt>
  jmp    L24
```

tool_calls: name: parse_data
arguments: tag: D17
type_guessed: string
name: parse_data
arguments: tag: D26
type_guessed: string
name: parse_data
arguments: tag: D21
type_guessed: string

tool: D17: %X	:

tool: D26: %02hhx 

tool: D21:    

assistant: ```c
void _pst_debug_hexdump(FILE *out, unsigned char *buf, size_t size, int col) {
  int off = 0, toff;
  int count = 0;
  if (col == -1) {
    col = 30;
  }
  fprintf(out, "\n");
  while (off < size) {
    fprintf(out, "%X\t:", off);
    toff = off;
    while (count < col && off < size) {
      fprintf(out, "%02hhx ", buf[off]);
      off++;
      count++;
    }
    off = toff;
    while (count < col) {
      fprintf(out, "   ");
      count++;
    }
    count = 0;
    fprintf(out, ":");
    while (count < col && off < size) {
      fprintf(out, "%c", isgraph(buf[off]) ? buf[off] : '.');
      off++;
      count++;
    }
    fprintf(out, "\n");
    count = 0;
  }
  fprintf(out, "\n");
}
```