user: What is the c source code of the assembly code below:

```asm
<dumpdata>:
  endbr64
  push   %r15
  lea    (%rcx,%r8,1),%rax
  mov    %rdi,%r15
  push   %r14
  push   %r13
  lea    D8(%rip),%r13
  push   %r12
  lea    D11(%rip),%r12
  push   %rbp
  mov    %rcx,%rbp
  lea    (%rdx,%rdx,1),%ecx
  push   %rbx
  sub    $0x28,%rsp
  mov    %rsi,0x18(%rsp)
  mov    %rax,0x8(%rsp)
  mov    %ecx,0x14(%rsp)
  cmp    %rax,%rbp
  jae    L65
  nopl   0x0(%rax)
L70:
  mov    0x8(%rsp),%rbx
  mov    0x14(%rsp),%ecx
  mov    %r15,%rdi
  xor    %eax,%eax
  mov    0x18(%rsp),%rdx
  lea    D0(%rip),%r8
  lea    D16(%rip),%rsi
  sub    %rbp,%rbx
  cmp    $0xf,%rbx
  jbe    L108
  call   <fprintf@plt>
  mov    $0x10,%ebx
L9:
  xor    %r14d,%r14d
  nopl   0x0(%rax,%rax,1)
L23:
  movzbl 0x0(%rbp,%r14,1),%edx
  mov    %r13,%rsi
  mov    %r15,%rdi
  xor    %eax,%eax
  add    $0x1,%r14
  call   <fprintf@plt>
  cmp    %r14,%rbx
  ja     L23
  test   %rbx,%rbx
  mov    $0x1,%r8d
  cmovne %rbx,%r8
  mov    %r8,%r14
  cmp    $0x10,%r8
  je     L56
  xchg   %ax,%ax
L11:
  mov    %r15,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    %r12,%rdi
  call   <fwrite@plt>
  add    $0x1,%r14
  cmp    $0x10,%r14
  jne    L11
  mov    %r15,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    %r12,%rdi
  call   <fwrite@plt>
  test   %rbx,%rbx
  je     L20
L16:
  mov    %rbp,%r14
  add    %rbp,%rbx
  nop
L105:
  movzbl (%r14),%edi
  mov    %r15,%rsi
  lea    -0x20(%rdi),%eax
  cmp    $0x5e,%al
  jbe    L81
  mov    $0x2e,%edi
L81:
  call   <fputc@plt>
  add    $0x1,%r14
  cmp    %r14,%rbx
  jne    L105
L20:
  mov    %r15,%rsi
  mov    $0xa,%edi
  add    $0x10,%rbp
  call   <fputc@plt>
  cmp    %rbp,0x8(%rsp)
  ja     L70
L65:
  add    $0x28,%rsp
  mov    %r15,%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    10a0 <fflush@plt>
  nopl   0x0(%rax,%rax,1)
L108:
  call   <fprintf@plt>
  test   %rbx,%rbx
  jne    L9
  xor    %r14d,%r14d
  jmp    L11
  xchg   %ax,%ax
L56:
  mov    %r15,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    %r12,%rdi
  call   <fwrite@plt>
  jmp    L16
```

tool_calls: name: parse_data
arguments: data_label: D8
type_guessed: string
name: parse_data
arguments: data_label: D11
type_guessed: string
name: parse_data
arguments: data_label: D0
type_guessed: string
name: parse_data
arguments: data_label: D16
type_guessed: string

tool: D8: %02x

tool: D11:   

tool: 

tool: D16: %s%*s  

assistant: ```c
void dumpdata(FILE *stream, const char *leader, unsigned int depth, const unsigned char *data, size_t len) {
  const unsigned char *dataend = data + len;
  const unsigned char *p;
  const size_t rowsize = 16;
  for (p = data; p < dataend; p += rowsize) {
    size_t amt = rowsize;
    size_t i;
    if (amt > (dataend - p))
      amt = (dataend - p);
    fprintf(stream, "%s%*s  ", leader, 2 * depth, "");
    for (i = 0; i < amt; ++i) {
      fprintf(stream, "%02x", p[i]);
    }
    for (; i < rowsize; ++i) {
      fprintf(stream, "  ");
    }
    fprintf(stream, "  ");
    for (i = 0; i < amt; ++i) {
      if (p[i] >= ' ' && p[i] <= '~') {
        fprintf(stream, "%c", p[i]);
      } else {
        fprintf(stream, ".");
      }
    }
    fprintf(stream, "\n");
  }
  fflush(stream);
}
```