user: 下面的汇编指令对应的C源代码是什么:

```asm
<IntToCharArray>:
  endbr64
  push   %r12
  mov    %edi,%r12d
  push   %rbx
  sub    $0x8,%rsp
  call   <IntLength@plt>
  mov    $0xa,%edi
  lea    -0x1(%rax),%esi
  call   <IntPower@plt>
  mov    %r12d,%edi
  mov    %eax,%ebx
  call   <IntLength@plt>
  test   %eax,%eax
  jle    L62
  mov    %eax,%esi
  mov    %r12d,%eax
  movslq %ebx,%rdi
  mov    %ebx,%r8d
  cltd
  imul   $0x66666667,%rdi,%r10
  sar    $0x1f,%r8d
  idiv   %ebx
  mov    %r12d,%eax
  sar    $0x22,%r10
  sub    %r8d,%r10d
  sub    %edx,%eax
  mov    %edx,%ecx
  cltd
  idiv   %ebx
  add    $0x30,%eax
  mov    %al,D66(%rip)
  cmp    $0x1,%esi
  je     L62
  mov    %ecx,%eax
  cltd
  idiv   %r10d
  imul   $0x51eb851f,%rdi,%rax
  sar    $0x25,%rax
  sub    %r8d,%eax
  mov    %eax,%r11d
  mov    %ecx,%eax
  sub    %edx,%eax
  mov    %edx,%r9d
  cltd
  idiv   %r10d
  add    $0x30,%eax
  mov    %al,D18(%rip)
  cmp    $0x2,%esi
  je     L62
  mov    %r9d,%eax
  cltd
  idiv   %r11d
  imul   $0x10624dd3,%rdi,%rax
  sar    $0x26,%rax
  sub    %r8d,%eax
  mov    %eax,%r10d
  mov    %r9d,%eax
  sub    %edx,%eax
  mov    %edx,%ecx
  cltd
  idiv   %r11d
  add    $0x30,%eax
  mov    %al,D68(%rip)
  cmp    $0x3,%esi
  je     L62
  mov    %ecx,%eax
  cltd
  idiv   %r10d
  imul   $0x68db8bad,%rdi,%rax
  sar    $0x2c,%rax
  sub    %r8d,%eax
  mov    %eax,%r11d
  mov    %ecx,%eax
  sub    %edx,%eax
  mov    %edx,%r9d
  cltd
  idiv   %r10d
  add    $0x30,%eax
  mov    %al,D48(%rip)
  cmp    $0x4,%esi
  je     L62
  mov    %r9d,%eax
  cltd
  idiv   %r11d
  imul   $0x14f8b589,%rdi,%rax
  sar    $0x2d,%rax
  sub    %r8d,%eax
  mov    %eax,%r10d
  mov    %r9d,%eax
  sub    %edx,%eax
  mov    %edx,%ecx
  cltd
  idiv   %r11d
  add    $0x30,%eax
  mov    %al,D106(%rip)
  cmp    $0x5,%esi
  je     L62
  mov    %ecx,%eax
  imul   $0x431bde83,%rdi,%r11
  cltd
  idiv   %r10d
  mov    %ecx,%eax
  sar    $0x32,%r11
  sub    %r8d,%r11d
  sub    %edx,%eax
  mov    %edx,%r9d
  cltd
  idiv   %r10d
  add    $0x30,%eax
  mov    %al,D46(%rip)
  cmp    $0x6,%esi
  je     L62
  mov    %r9d,%eax
  imul   $0x6b5fca6b,%rdi,%rbx
  cltd
  idiv   %r11d
  mov    %r9d,%eax
  sar    $0x36,%rbx
  sub    %r8d,%ebx
  sub    %edx,%eax
  mov    %edx,%ecx
  cltd
  idiv   %r11d
  add    $0x30,%eax
  mov    %al,D85(%rip)
  cmp    $0x7,%esi
  je     L62
  mov    %ecx,%eax
  imul   $0x55e63b89,%rdi,%r9
  cltd
  idiv   %ebx
  mov    %ecx,%eax
  sar    $0x39,%r9
  sub    %r8d,%r9d
  sub    %edx,%eax
  mov    %edx,%r10d
  cltd
  idiv   %ebx
  add    $0x30,%eax
  mov    %al,D52(%rip)
  cmp    $0x8,%esi
  je     L62
  mov    %r10d,%eax
  imul   $0x44b82fa1,%rdi,%rdi
  cltd
  idiv   %r9d
  mov    %r10d,%eax
  sar    $0x3c,%rdi
  sub    %r8d,%edi
  sub    %edx,%eax
  mov    %edx,%ecx
  cltd
  idiv   %r9d
  add    $0x30,%eax
  mov    %al,D33(%rip)
  cmp    $0x9,%esi
  je     L62
  mov    %ecx,%eax
  cltd
  idiv   %edi
  mov    %ecx,%eax
  sub    %edx,%eax
  cltd
  idiv   %edi
  add    $0x30,%eax
  mov    %al,D11(%rip)
L62:
  add    $0x8,%rsp
  lea    D66(%rip),%rax
  pop    %rbx
  pop    %r12
  ret
```

assistant: ```c
char *IntToCharArray(int x) {
  int z, e, i, a, b, c, d;
  z = x;
  d = IntPower(10, IntLength(x) - 1);
  static char ch[10];
  e = IntLength(x);
  for (i = 0; i < e; i++) {
    a = x % d;
    b = x - a;
    c = b / d;
    d = d / 10;
    ch[i] = '0' + c;
    x = a;
  }
  return ch;
}
```