user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<intToAscii>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  test   %edi,%edi
  jne    L94
  mov    $0x30,%eax
  pop    %rbx
  pop    %rbp
  mov    %ax,(%rsi)
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax)
L94:
  mov    %edi,%r12d
  mov    $0xd1b71759,%eax
  neg    %r12d
  cmovs  %edi,%r12d
  mov    %r12d,%ebx
  imul   %rax,%rbx
  shr    $0x2d,%rbx
  lea    0x30(%rbx),%r13d
  test   %bl,%bl
  jne    L49
  imul   $0x2710,%ebx,%ebx
  mov    %r12d,%r13d
  sub    %ebx,%r13d
  mov    %r13d,%r12d
  imul   $0x10624dd3,%r12,%rax
  shr    $0x26,%rax
  lea    0x30(%rax),%ebx
  test   %al,%al
  jne    L58
  imul   $0x3e8,%eax,%eax
  sub    %eax,%r13d
  mov    %r13d,%ebx
  imul   $0x51eb851f,%rbx,%rax
  mov    %rbx,%r12
  shr    $0x25,%rax
  lea    0x30(%rax),%r13d
  test   %al,%al
  jne    L65
  imul   $0x64,%eax,%eax
  sub    %eax,%ebx
  mov    $0xcccccccd,%eax
  mov    %ebx,%r12d
  imul   %r12,%rax
  shr    $0x23,%rax
  lea    0x30(%rax),%r13d
  test   %al,%al
  jne    L91
  lea    (%rax,%rax,4),%eax
  xor    %r14d,%r14d
  add    %eax,%eax
  sub    %eax,%ebx
  lea    0x30(%rbx),%r12d
  test   %bl,%bl
  jne    L70
L103:
  movzbl %r14b,%eax
  pop    %rbx
  movb   $0x0,0x0(%rbp,%rax,1)
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L49:
  movsbl %r13b,%edi
  call   <isdigit@plt>
  test   %eax,%eax
  je     L155
  imul   $0x2710,%ebx,%ebx
  mov    %r13b,0x0(%rbp)
  mov    %r12d,%r13d
  mov    $0x1,%r14d
  sub    %ebx,%r13d
  mov    %r13d,%r12d
  imul   $0x10624dd3,%r12,%rbx
  shr    $0x26,%rbx
  add    $0x30,%ebx
L110:
  movsbl %bl,%edi
  call   <isdigit@plt>
  test   %eax,%eax
  je     L103
  imul   $0x10624dd3,%r12,%r12
  movzbl %r14b,%eax
  add    $0x1,%r14d
  mov    %bl,0x0(%rbp,%rax,1)
  shr    $0x26,%r12
  imul   $0x3e8,%r12d,%eax
  sub    %eax,%r13d
  mov    %r13d,%ebx
  imul   $0x51eb851f,%rbx,%r13
  mov    %rbx,%r12
  shr    $0x25,%r13
  add    $0x30,%r13d
L61:
  movsbl %r13b,%edi
  call   <isdigit@plt>
  test   %eax,%eax
  je     L103
  imul   $0x51eb851f,%rbx,%rbx
  movzbl %r14b,%eax
  add    $0x1,%r14d
  mov    %r13b,0x0(%rbp,%rax,1)
  mov    $0xcccccccd,%r13d
  shr    $0x25,%rbx
  imul   $0x64,%ebx,%eax
  mov    %r12d,%ebx
  sub    %eax,%ebx
  mov    %ebx,%r12d
  imul   %r12,%r13
  shr    $0x23,%r13
  add    $0x30,%r13d
L97:
  movsbl %r13b,%edi
  call   <isdigit@plt>
  test   %eax,%eax
  je     L103
  movzbl %r14b,%eax
  add    $0x1,%r14d
  mov    %r13b,0x0(%rbp,%rax,1)
  mov    $0xcccccccd,%eax
  imul   %rax,%r12
  shr    $0x23,%r12
  lea    (%r12,%r12,4),%eax
  add    %eax,%eax
  sub    %eax,%ebx
  mov    %ebx,%r12d
  add    $0x30,%r12d
L70:
  movsbl %r12b,%edi
  call   <isdigit@plt>
  test   %eax,%eax
  je     L103
  movzbl %r14b,%eax
  add    $0x1,%r14d
  mov    %r12b,0x0(%rbp,%rax,1)
  jmp    L103
L155:
  xor    %r14d,%r14d
  jmp    L103
L58:
  xor    %r14d,%r14d
  jmp    L110
L65:
  xor    %r14d,%r14d
  jmp    L61
L91:
  xor    %r14d,%r14d
  jmp    L97
```

assistant: ```c
void intToAscii(int value, char *target) {
  int div;
  unsigned char i = 0;
  unsigned char removeZeroes = 1;
  if (value < 0)
    value *= -1;
  if (value == 0) {
    target[0] = '0';
    target[1] = '\0';
  } else {
    for (div = 10000; div != 0; div /= 10) {
      char ch = (value / div) + '0';
      if (removeZeroes && ch == '0') {
        ;
      } else {
        if (!isdigit(ch))
          break;
        removeZeroes = 0;
        target[i] = ch;
        i++;
      }
      value %= div;
    }
    target[i] = '\0';
  }
}
```