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

```asm
<wrap_printf>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xe0,%rsp
  mov    %edi,-0xd4(%rbp)
  mov    %rsi,-0xe0(%rbp)
  mov    %rdx,-0xa0(%rbp)
  mov    %rcx,-0x98(%rbp)
  mov    %r8,-0x90(%rbp)
  mov    %r9,-0x88(%rbp)
  test   %al,%al
  je     L118
  movaps %xmm0,-0x80(%rbp)
  movaps %xmm1,-0x70(%rbp)
  movaps %xmm2,-0x60(%rbp)
  movaps %xmm3,-0x50(%rbp)
  movaps %xmm4,-0x40(%rbp)
  movaps %xmm5,-0x30(%rbp)
  movaps %xmm6,-0x20(%rbp)
  movaps %xmm7,-0x10(%rbp)
L118:
  mov    %fs:0x28,%rax
  mov    %rax,-0xb8(%rbp)
  xor    %eax,%eax
  mov    D22(%rip),%eax
  test   %eax,%eax
  jne    L81
  movl   $0x0,-0xd0(%rbp)
  mov    D29(%rip),%rax
  mov    (%rax),%eax
  lea    -0xd0(%rbp),%rdx
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <ioctl@plt>
  mov    -0xd0(%rbp),%eax
  mov    %eax,D119(%rip)
  mov    D119(%rip),%eax
  test   %eax,%eax
  jg     L81
  movl   $0x50,D119(%rip)
L81:
  mov    -0xe0(%rbp),%rdx
  mov    -0xcc(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <va_start@plt>
  mov    -0xcc(%rbp),%edx
  mov    -0xc8(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <va_copy@plt>
  mov    -0xcc(%rbp),%edx
  mov    -0xe0(%rbp),%rax
  mov    %edx,%ecx
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <vsnprintf@plt>
  mov    %eax,-0xc4(%rbp)
  mov    -0xcc(%rbp),%eax
  mov    %eax,%edi
  call   <va_end@plt>
  mov    D119(%rip),%edx
  mov    -0xc4(%rbp),%eax
  add    %eax,%edx
  mov    D119(%rip),%eax
  cmp    %eax,%edx
  jle    L25
  mov    $0xa,%edi
  call   <putchar@plt>
  movl   $0x0,D119(%rip)
L25:
  mov    D119(%rip),%eax
  test   %eax,%eax
  jne    L32
  jmp    L74
L6:
  addq   $0x1,-0xe0(%rbp)
L74:
  mov    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L6
  mov    D119(%rip),%edx
  mov    -0xd4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,D68(%rip)
  jmp    L123
L54:
  mov    $0x20,%edi
  call   <putchar@plt>
L123:
  mov    -0xd4(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0xd4(%rbp)
  test   %eax,%eax
  jne    L54
L32:
  mov    -0xc8(%rbp),%edx
  mov    -0xe0(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <vprintf@plt>
  mov    %eax,-0xc4(%rbp)
  mov    -0xc8(%rbp),%eax
  mov    %eax,%edi
  call   <va_end@plt>
  cmpl   $0x0,-0xc4(%rbp)
  jle    L67
  mov    D68(%rip),%edx
  mov    -0xc4(%rbp),%eax
  add    %edx,%eax
  mov    %eax,D68(%rip)
L67:
  mov    -0xe0(%rbp),%rax
  mov    $0xa,%esi
  mov    %rax,%rdi
  call   <strrchr@plt>
  mov    %rax,-0xc0(%rbp)
  cmpq   $0x0,-0xc0(%rbp)
  je     L100
  mov    -0xc0(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L100
  movl   $0x0,D68(%rip)
L100:
  mov    -0xc4(%rbp),%eax
  mov    -0xb8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L124
  call   <__stack_chk_fail@plt>
L124:
  leave
  ret
```

assistant: ```c
int wrap_printf(int indent, char *format, ...) {
  static int columns, col;
  va_list ap1, ap2;
  int n;
  const char *nl;
  if (columns == 0) {
    struct winsize ws = {};
    ioctl(1, TIOCGWINSZ, &ws);
    columns = ws.ws_col;
    if (columns <= 0)
      columns = 80;
  }
  va_start(ap1, format);
  va_copy(ap2, ap1);
  n = vsnprintf(NULL, 0, format, ap1);
  va_end(ap1);
  if (col + n > columns) {
    putchar('\n');
    col = 0;
  }
  if (col == 0) {
    while (*format == ' ')
      format++;
    col += indent;
    while (indent--)
      putchar(' ');
  }
  n = vprintf(format, ap2);
  va_end(ap2);
  if (n > 0)
    col += n;
  nl = strrchr(format, '\n');
  if (nl && nl[1] == 0)
    col = 0;
  return n;
}
```