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

```asm
<print_label>:
  endbr64
  push   %r15
  push   %r14
  mov    %edx,%r14d
  push   %r13
  mov    %esi,%r13d
  push   %r12
  push   %rbp
  mov    %ecx,%ebp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x18,%rsp
  cmpb   $0x20,(%rdi)
  mov    %r8d,0xc(%rsp)
  jne    L227
  nopw   0x0(%rax,%rax,1)
L1:
  add    $0x1,%rbx
  cmpb   $0x20,(%rbx)
  je     L1
L227:
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%r12d
  cmp    %r13d,%eax
  jle    L97
  movslq %r13d,%r15
  add    %rbx,%r15
  cmp    %rbx,%r15
  je     L71
  mov    %r15,%rax
  jmp    L265
  nopl   0x0(%rax)
L133:
  cmp    %rbx,%rax
  je     L136
L265:
  movzbl (%rax),%ecx
  mov    %rax,%rdx
  lea    -0x1(%rax),%rax
  cmp    $0x20,%cl
  jne    L133
L229:
  mov    %rdx,%r15
  sub    $0x1,%rdx
  cmpb   $0x20,(%rdx)
  je     L229
  cmp    %r15,%rbx
  je     L155
L29:
  mov    %rbx,%r12
  jmp    L58
  nopw   0x0(%rax,%rax,1)
L26:
  add    $0x1,%r12
  cmp    %r12,%r15
  je     L128
L58:
  test   %r14d,%r14d
  je     L26
  movsbl (%r12),%edi
  add    $0x1,%r12
  call   <putchar@plt>
  cmp    %r12,%r15
  jne    L58
L128:
  mov    %r12,%rax
  sub    %rbx,%rax
  mov    %eax,%ebx
  sub    %eax,%r13d
L142:
  test   %r14d,%r14d
  je     L56
  lea    -0x1(%r13),%r15d
  test   %r13d,%r13d
  jle    L56
  mov    $0x20,%r13d
L212:
  mov    $0x20,%edi
  test   %ebp,%ebp
  je     L182
  add    $0x1,%ebx
  mov    0xc(%rsp),%edi
  mov    %ebx,%eax
  cltd
  idiv   %ebp
  test   %edx,%edx
  cmovne %r13d,%edi
L182:
  call   <putchar@plt>
  sub    $0x1,%r15d
  jae    L212
L56:
  add    $0x18,%rsp
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L136:
  cmpb   $0x20,(%rbx)
  jne    L29
  jmp    L152
  xchg   %ax,%ax
L97:
  test   %r14d,%r14d
  je     L88
  movsbl (%rbx),%edi
  xor    %r15d,%r15d
  test   %dil,%dil
  je     L172
L220:
  call   <putchar@plt>
  movsbl 0x1(%rbx),%edi
  add    $0x1,%rbx
  add    $0x1,%r15d
  test   %dil,%dil
  jne    L220
L172:
  lea    0x1(%r12),%ebx
  cmp    %r13d,%r12d
  jge    L88
  add    $0x1,%r13d
  mov    $0x20,%r12d
  nopw   0x0(%rax,%rax,1)
L246:
  mov    $0x20,%edi
  test   %ebp,%ebp
  je     L176
  add    $0x1,%r15d
  mov    0xc(%rsp),%edi
  mov    %r15d,%eax
  cltd
  idiv   %ebp
  test   %edx,%edx
  cmovne %r12d,%edi
L176:
  call   <putchar@plt>
  add    $0x1,%ebx
  cmp    %r13d,%ebx
  jne    L246
L88:
  xor    %r12d,%r12d
  jmp    L56
L155:
  mov    %rbx,%r12
  xor    %ebx,%ebx
  jmp    L142
L71:
  cmpb   $0x20,(%rbx)
  jne    L155
L152:
  mov    %rbx,%rdx
  jmp    L229
```

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;
}
```