user: What would the C source look like for the assembly code provided here:

```asm
<ltoa>:
  endbr64
  movb   $0x0,D72(%rip)
  test   %rdi,%rdi
  je     L23
  movabs $0x6666666666666667,%rsi
  mov    %rdi,%rax
  imul   %rsi
  mov    %rdi,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  mov    %rdx,%rcx
  sub    %rax,%rcx
  lea    (%rcx,%rcx,4),%rax
  add    %rax,%rax
  sub    %rax,%rdi
  mov    %dil,D4(%rip)
  test   %rcx,%rcx
  je     L68
  mov    %rcx,%rax
  imul   %rsi
  mov    %rcx,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  sub    %rax,%rdx
  lea    (%rdx,%rdx,4),%rdi
  mov    %rdx,%r8
  add    %rdi,%rdi
  sub    %rdi,%rcx
  mov    %cl,D173(%rip)
  test   %rdx,%rdx
  je     L8
  mov    %rdx,%rax
  imul   %rsi
  mov    %rdx,%rax
  mov    %r8,%rdx
  sar    $0x3f,%rdx
  sar    $0x2,%rax
  sub    %rdx,%rax
  lea    (%rax,%rax,4),%rdx
  mov    %rax,%rcx
  mov    %r8,%rax
  add    %rdx,%rdx
  sub    %rdx,%rax
  mov    %al,D33(%rip)
  test   %rcx,%rcx
  je     L131
  mov    %rcx,%rax
  imul   %rsi
  mov    %rdx,%rax
  mov    %rcx,%rdx
  sar    $0x3f,%rdx
  sar    $0x2,%rax
  sub    %rdx,%rax
  lea    (%rax,%rax,4),%rdx
  mov    %rax,%rdi
  mov    %rcx,%rax
  add    %rdx,%rdx
  sub    %rdx,%rax
  mov    %al,D80(%rip)
  test   %rdi,%rdi
  je     L67
  mov    %rdi,%rax
  imul   %rsi
  mov    %rdx,%rax
  mov    %rdi,%rdx
  sar    $0x3f,%rdx
  sar    $0x2,%rax
  sub    %rdx,%rax
  lea    (%rax,%rax,4),%rdx
  mov    %rax,%rcx
  mov    %rdi,%rax
  add    %rdx,%rdx
  sub    %rdx,%rax
  mov    %al,D175(%rip)
  test   %rcx,%rcx
  je     L50
  mov    %rcx,%rax
  imul   %rsi
  mov    %rdx,%rax
  mov    %rcx,%rdx
  sar    $0x3f,%rdx
  sar    $0x2,%rax
  sub    %rdx,%rax
  lea    (%rax,%rax,4),%rdx
  mov    %rax,%rdi
  mov    %rcx,%rax
  add    %rdx,%rdx
  sub    %rdx,%rax
  mov    %al,D110(%rip)
  test   %rdi,%rdi
  je     L126
  mov    %rdi,%rax
  imul   %rsi
  mov    %rdx,%rax
  mov    %rdi,%rdx
  sar    $0x3f,%rdx
  sar    $0x2,%rax
  sub    %rdx,%rax
  lea    (%rax,%rax,4),%rdx
  mov    %rax,%rcx
  mov    %rdi,%rax
  add    %rdx,%rdx
  sub    %rdx,%rax
  mov    %al,D164(%rip)
  test   %rcx,%rcx
  je     L174
  mov    %rcx,%rax
  imul   %rsi
  mov    %rdx,%rax
  mov    %rcx,%rdx
  sar    $0x3f,%rdx
  sar    $0x2,%rax
  sub    %rdx,%rax
  lea    (%rax,%rax,4),%rdx
  mov    %rax,%rdi
  mov    %rcx,%rax
  add    %rdx,%rdx
  sub    %rdx,%rax
  mov    %al,D41(%rip)
  test   %rdi,%rdi
  je     L44
  mov    %rdi,%rax
  imul   %rsi
  mov    %rdi,%rax
  sar    $0x3f,%rax
  mov    %rdx,%rcx
  sar    $0x2,%rcx
  sub    %rax,%rcx
  mov    %rdi,%rax
  lea    (%rcx,%rcx,4),%rdx
  add    %rdx,%rdx
  sub    %rdx,%rax
  mov    %al,D143(%rip)
  test   %rcx,%rcx
  je     L113
  mov    %rcx,%rax
  mov    %rsi,%rdi
  imul   %rsi
  mov    %rcx,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  mov    %rdx,%rsi
  sub    %rax,%rsi
  lea    (%rsi,%rsi,4),%rax
  add    %rax,%rax
  sub    %rax,%rcx
  mov    %cl,D128(%rip)
  test   %rsi,%rsi
  je     L212
  mov    %rsi,%rax
  imul   %rdi
  mov    %rsi,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  mov    %rdx,%rcx
  sub    %rax,%rcx
  lea    (%rcx,%rcx,4),%rax
  add    %rax,%rax
  sub    %rax,%rsi
  mov    %sil,D13(%rip)
  test   %rcx,%rcx
  je     L15
  mov    %rcx,%rax
  imul   %rdi
  mov    %rcx,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  mov    %rdx,%rsi
  sub    %rax,%rsi
  lea    (%rsi,%rsi,4),%rax
  add    %rax,%rax
  sub    %rax,%rcx
  mov    %cl,D133(%rip)
  test   %rsi,%rsi
  je     L91
  mov    %rsi,%rax
  imul   %rdi
  mov    %rsi,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  mov    %rdx,%rcx
  sub    %rax,%rcx
  lea    (%rcx,%rcx,4),%rax
  add    %rax,%rax
  sub    %rax,%rsi
  mov    %sil,D88(%rip)
  test   %rcx,%rcx
  je     L37
  mov    %rcx,%rax
  imul   %rdi
  mov    %rcx,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  mov    %rdx,%rsi
  sub    %rax,%rsi
  lea    (%rsi,%rsi,4),%rax
  add    %rax,%rax
  sub    %rax,%rcx
  mov    %cl,D28(%rip)
  test   %rsi,%rsi
  je     L287
  mov    %rsi,%rax
  imul   %rdi
  mov    %rsi,%rax
  sar    $0x3f,%rax
  sar    $0x2,%rdx
  sub    %rax,%rdx
  lea    (%rdx,%rdx,4),%rax
  add    %rax,%rax
  sub    %rax,%rsi
  xor    %eax,%eax
  mov    %sil,D165(%rip)
L190:
  lea    D165(%rip),%rdx
  add    %rdx,%rax
  ret
L50:
  mov    $0xa,%eax
  jmp    L190
  nopl   0x0(%rax)
L23:
  lea    D165(%rip),%rdx
  mov    $0xf,%eax
  add    %rdx,%rax
  ret
  nopl   0x0(%rax,%rax,1)
L68:
  mov    $0xe,%eax
  jmp    L190
L8:
  mov    $0xd,%eax
  jmp    L190
L131:
  mov    $0xc,%eax
  jmp    L190
L67:
  mov    $0xb,%eax
  jmp    L190
L126:
  mov    $0x9,%eax
  jmp    L190
L37:
  mov    $0x2,%eax
  jmp    L190
L174:
  mov    $0x8,%eax
  jmp    L190
L44:
  mov    $0x7,%eax
  jmp    L190
L113:
  mov    $0x6,%eax
  jmp    L190
L212:
  mov    $0x5,%eax
  jmp    L190
L15:
  mov    $0x4,%eax
  jmp    L190
L91:
  mov    $0x3,%eax
  jmp    L190
L287:
  mov    $0x1,%eax
  jmp    L190
```

assistant: ```c
char *ltoa(long num) {
  static char buf[16];
  int i = sizeof(buf) - 1;
  buf[i--] = '\0';
  while (num && i >= 0) {
    buf[i--] = num % 10;
    num /= 10;
  };
  return buf + i + 1;
}
```