user: 请从给定的汇编指令推导出C源代码:

```asm
<_conv>:
  endbr64
  movslq %edi,%rax
  mov    %esi,%ecx
  mov    %edx,%r8d
  mov    %edx,%esi
  imul   $0x66666667,%rax,%rax
  mov    %edi,%edx
  sar    $0x1f,%edx
  sar    $0x22,%rax
  sub    %edx,%eax
  mov    %edi,%edx
  lea    (%rax,%rax,4),%r9d
  add    %r9d,%r9d
  sub    %r9d,%edx
  lea    -0x1(%rcx),%r9d
  add    $0x30,%edx
  mov    %dl,D39(%rip)
  cmp    $0x9,%edi
  jle    L21
  movslq %eax,%rdx
  mov    %eax,%r10d
  imul   $0x66666667,%rdx,%rdx
  sar    $0x1f,%r10d
  sar    $0x22,%rdx
  sub    %r10d,%edx
  lea    (%rdx,%rdx,4),%r10d
  add    %r10d,%r10d
  sub    %r10d,%eax
  lea    -0x2(%rcx),%r10d
  add    $0x30,%eax
  mov    %al,D34(%rip)
  cmp    $0x63,%edi
  jle    L124
  movslq %edx,%rax
  mov    %edx,%r9d
  imul   $0x66666667,%rax,%rax
  sar    $0x1f,%r9d
  sar    $0x22,%rax
  sub    %r9d,%eax
  lea    (%rax,%rax,4),%r9d
  add    %r9d,%r9d
  sub    %r9d,%edx
  lea    -0x3(%rcx),%r9d
  add    $0x30,%edx
  mov    %dl,D22(%rip)
  cmp    $0x3e7,%edi
  jle    L43
  movslq %eax,%rdx
  mov    %eax,%r10d
  imul   $0x66666667,%rdx,%rdx
  sar    $0x1f,%r10d
  sar    $0x22,%rdx
  sub    %r10d,%edx
  lea    (%rdx,%rdx,4),%r10d
  add    %r10d,%r10d
  sub    %r10d,%eax
  lea    -0x4(%rcx),%r10d
  add    $0x30,%eax
  mov    %al,D59(%rip)
  cmp    $0x270f,%edi
  jle    L119
  movslq %edx,%rax
  mov    %edx,%r9d
  imul   $0x66666667,%rax,%rax
  sar    $0x1f,%r9d
  sar    $0x22,%rax
  sub    %r9d,%eax
  lea    (%rax,%rax,4),%r9d
  add    %r9d,%r9d
  sub    %r9d,%edx
  lea    -0x5(%rcx),%r9d
  add    $0x30,%edx
  mov    %dl,D55(%rip)
  cmp    $0x1869f,%edi
  jle    L170
  movslq %eax,%rdx
  mov    %eax,%r10d
  imul   $0x66666667,%rdx,%rdx
  sar    $0x1f,%r10d
  sar    $0x22,%rdx
  sub    %r10d,%edx
  lea    (%rdx,%rdx,4),%r10d
  add    %r10d,%r10d
  sub    %r10d,%eax
  lea    -0x6(%rcx),%r10d
  add    $0x30,%eax
  mov    %al,D106(%rip)
  cmp    $0xf423f,%edi
  jle    L70
  movslq %edx,%rax
  mov    %edx,%r9d
  imul   $0x66666667,%rax,%rax
  sar    $0x1f,%r9d
  sar    $0x22,%rax
  sub    %r9d,%eax
  lea    (%rax,%rax,4),%r9d
  add    %r9d,%r9d
  sub    %r9d,%edx
  lea    -0x7(%rcx),%r9d
  add    $0x30,%edx
  mov    %dl,D125(%rip)
  cmp    $0x98967f,%edi
  jle    L88
  movslq %eax,%rdx
  mov    %eax,%ecx
  lea    D130(%rip),%rdi
  imul   $0x66666667,%rdx,%rdx
  sar    $0x1f,%ecx
  sar    $0x22,%rdx
  sub    %ecx,%edx
  lea    (%rdx,%rdx,4),%edx
  add    %edx,%edx
  sub    %edx,%eax
  add    $0x30,%eax
  mov    %al,D117(%rip)
L153:
  xor    %esi,%esi
  jmp    1050 <_add@plt>
  nopl   0x0(%rax)
L119:
  lea    D55(%rip),%rax
  mov    %r9d,%ecx
  mov    %r10d,%r9d
  lea    0x1(%rax),%rdi
  nopl   0x0(%rax)
L78:
  test   %r8b,%r8b
  je     L153
  test   %r9d,%r9d
  jle    L153
  sub    $0x1,%ecx
  lea    D117(%rip),%r8
  sub    %eax,%ecx
  jmp    L118
  nopl   0x0(%rax,%rax,1)
L108:
  lea    (%rcx,%rax,1),%edx
  test   %edx,%edx
  jle    L153
L118:
  mov    %rax,%rdi
  sub    $0x1,%rax
  mov    %sil,0x1(%rax)
  cmp    %r8,%rax
  jne    L108
  xor    %esi,%esi
  jmp    1050 <_add@plt>
  xchg   %ax,%ax
L21:
  lea    D34(%rip),%rax
  lea    0x1(%rax),%rdi
  jmp    L78
  nopl   (%rax)
L124:
  lea    D22(%rip),%rax
  mov    %r9d,%ecx
  mov    %r10d,%r9d
  lea    0x1(%rax),%rdi
  jmp    L78
  nopl   0x0(%rax,%rax,1)
L43:
  lea    D59(%rip),%rax
  mov    %r10d,%ecx
  lea    0x1(%rax),%rdi
  jmp    L78
  nopl   0x0(%rax,%rax,1)
L170:
  lea    D106(%rip),%rax
  mov    %r10d,%ecx
  lea    0x1(%rax),%rdi
  jmp    L78
  nopl   0x0(%rax,%rax,1)
L70:
  lea    D125(%rip),%rax
  mov    %r9d,%ecx
  mov    %r10d,%r9d
  lea    0x1(%rax),%rdi
  jmp    L78
L88:
  lea    D117(%rip),%rax
  mov    %r10d,%ecx
  lea    0x1(%rax),%rdi
  jmp    L78
```

assistant: ```c
int _conv(int n, int digits, char pad) {
  static char buf[10];
  char *p = buf + sizeof(buf) - 2;
  do {
    *p-- = n % 10 + '0';
    n /= 10;
    --digits;
  } while (n > 0 && p > buf);
  if (pad)
    while (p > buf && digits-- > 0)
      *p-- = pad;
  return _add(++p, 0);
}
```