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

```asm
<print_label>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%rbx
  mov    %esi,%r15d
  mov    %edx,%r14d
  mov    %ecx,%r13d
  mov    %r8d,0xc(%rsp)
  cmpb   $0x20,(%rdi)
  jne    L174
L259:
  add    $0x1,%rbx
  cmpb   $0x20,(%rbx)
  je     L259
L174:
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%r12d
  cmp    %r15d,%eax
  jle    L62
  movslq %r15d,%r12
  add    %rbx,%r12
  cmp    %rbx,%r12
  je     L27
  mov    %r12,%rax
L105:
  cmpb   $0x20,(%rax)
  je     L57
  sub    $0x1,%rax
  cmp    %rbx,%rax
  jne    L105
  cmpb   $0x20,(%rbx)
  je     L132
L70:
  mov    %rbx,%rbp
  jmp    L8
L62:
  mov    $0x0,%ebp
  test   %r14d,%r14d
  je     L107
  movzbl (%rbx),%edi
  test   %dil,%dil
  je     L48
L41:
  add    $0x1,%rbx
  movsbl %dil,%edi
  call   <putchar@plt>
  add    $0x1,%ebp
  movzbl (%rbx),%edi
  test   %dil,%dil
  jne    L41
L177:
  lea    0x1(%r12),%ebx
  cmp    %r15d,%r12d
  jge    L241
  add    $0x1,%r15d
  mov    $0x20,%r12d
  jmp    L85
L48:
  mov    $0x0,%ebp
  jmp    L177
L63:
  call   <putchar@plt>
  add    $0x1,%ebx
  cmp    %r15d,%ebx
  je     L179
L85:
  mov    %r12d,%edi
  test   %r13d,%r13d
  je     L63
  add    $0x1,%ebp
  mov    %ebp,%eax
  cltd
  idiv   %r13d
  test   %edx,%edx
  mov    0xc(%rsp),%edi
  cmovne %r12d,%edi
  jmp    L63
L179:
  mov    $0x0,%ebp
L107:
  mov    %rbp,%rax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L115:
  add    $0x1,%rbp
  cmp    %rbp,%r12
  je     L212
L8:
  test   %r14d,%r14d
  je     L115
  movsbl 0x0(%rbp),%edi
  call   <putchar@plt>
  jmp    L115
L212:
  mov    %rbp,%rax
  sub    %rbx,%rax
  mov    %eax,%ebx
  sub    %eax,%r15d
L16:
  test   %r14d,%r14d
  je     L107
  lea    -0x1(%r15),%r12d
  test   %r15d,%r15d
  jle    L107
  mov    $0x20,%r14d
  jmp    L193
L223:
  call   <putchar@plt>
  sub    $0x1,%r12d
  cmp    $0xffffffff,%r12d
  je     L107
L193:
  mov    %r14d,%edi
  test   %r13d,%r13d
  je     L223
  add    $0x1,%ebx
  mov    %ebx,%eax
  cltd
  idiv   %r13d
  test   %edx,%edx
  mov    0xc(%rsp),%edi
  cmovne %r14d,%edi
  jmp    L223
L241:
  mov    $0x0,%ebp
  jmp    L107
L132:
  mov    %rbx,%rax
L57:
  mov    %rax,%r12
  sub    $0x1,%rax
  cmpb   $0x20,(%rax)
  je     L57
  cmp    %r12,%rbx
  jne    L70
  mov    %r12,%rbp
  mov    $0x0,%ebx
  jmp    L16
L27:
  cmpb   $0x20,(%rbx)
  je     L61
  mov    %rbx,%rbp
  mov    $0x0,%ebx
  jmp    L16
L61:
  mov    %rbx,%rax
  jmp    L57
```

assistant: ```c
char *print_label(char *s, int len, int pflag, int spacing, int dot) {
  char *x;
  int n;
  int i;
  while (*s == ' ')
    s++;
  n = strlen(s);
  if (n <= len) {
    if (pflag) {
      i = 0;
      while (*s) {
        putchar(*s++);
        i++;
      }
      while (n++ < len)
        putchar(spacing && ++i % spacing == 0 ? dot : ' ');
    }
    return NULL;
  }
  for (x = s + len; x != s; x--)
    if (*x == ' ')
      break;
  if (*x != ' ')
    x = s + len;
  else {
    while (*x == ' ')
      x--;
    x++;
  }
  i = 0;
  while (s != x) {
    if (pflag)
      putchar(*s);
    i++;
    s++;
    len--;
  }
  if (pflag) {
    while (len-- > 0)
      putchar(spacing && ++i % spacing == 0 ? dot : ' ');
  }
  return s;
}
```