user: Demonstrate the C code that generates the assembly output below:

```asm
<arg_print_formatted>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %edx,-0x30(%rbp)
  mov    %rcx,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x8(%rbp)
  movl   $0x0,-0x14(%rbp)
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x30(%rbp),%eax
  sub    -0x2c(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x10(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jae    L113
  mov    -0x38(%rbp),%rdx
  mov    -0x28(%rbp),%rax
  lea    D3(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  jmp    L113
L107:
  addl   $0x1,-0x14(%rbp)
L80:
  mov    -0x14(%rbp),%edx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isspace@plt>
  test   %rax,%rax
  jne    L107
  mov    -0x10(%rbp),%eax
  sub    -0x14(%rbp),%eax
  cmp    %eax,-0x4(%rbp)
  jae    L16
  mov    -0x14(%rbp),%edx
  mov    -0x4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  jmp    L16
L131:
  subl   $0x1,-0x10(%rbp)
L16:
  mov    -0x10(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jbe    L133
  mov    -0x10(%rbp),%eax
  sub    -0x14(%rbp),%eax
  cmp    %eax,-0x4(%rbp)
  jae    L133
  mov    -0x10(%rbp),%edx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isspace@plt>
  test   %rax,%rax
  je     L131
L133:
  subl   $0x1,-0x10(%rbp)
  jmp    L121
L25:
  mov    -0x14(%rbp),%edx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    -0x28(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <fputc@plt>
  addl   $0x1,-0x14(%rbp)
L121:
  mov    -0x14(%rbp),%eax
  cmp    -0x10(%rbp),%eax
  jb     L25
  mov    -0x28(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x10(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0x8(%rbp)
  jbe    L64
  movl   $0x0,-0xc(%rbp)
  jmp    L33
L12:
  mov    -0x28(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  addl   $0x1,-0xc(%rbp)
L33:
  mov    -0xc(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jb     L12
  mov    -0x8(%rbp),%eax
  mov    %eax,-0x10(%rbp)
L64:
  addl   $0x1,-0x10(%rbp)
L113:
  mov    -0x10(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  jb     L80
  nop
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D3
data_type: string

tool: D3: %s


assistant: ```c
void arg_print_formatted(FILE *fp, const unsigned lmargin, const unsigned rmargin, const char *text) {
  const unsigned textlen = strlen(text);
  unsigned line_start = 0;
  unsigned line_end = textlen + 1;
  const unsigned colwidth = (rmargin - lmargin) + 1;
  if (line_end < line_start) {
    fprintf(fp, "%s\n", text);
  }
  while (line_end - 1 > line_start) {
    while (isspace(*(text + line_start))) {
      line_start++;
    }
    if ((line_end - line_start) > colwidth) {
      line_end = line_start + colwidth;
    }
    while ((line_end > line_start) && (line_end - line_start > colwidth) && !isspace(*(text + line_end))) {
      line_end--;
    }
    line_end--;
    while (line_start < line_end) {
      fputc(*(text + line_start), fp);
      line_start++;
    }
    fputc('\n', fp);
    if (line_end + 1 < textlen) {
      unsigned i;
      for (i = 0; i < lmargin; i++) {
        fputc(' ', fp);
      }
      line_end = textlen;
    }
    line_end++;
  }
}
```