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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x9000(%rsp),%r11
L119:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L119
  sub    $0xc90,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x9c90(%rbp),%rax
  mov    %rax,%rsi
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movl   $0x0,-0x9c88(%rbp)
  jmp    L69
L177:
  movl   $0x0,-0x9c80(%rbp)
  movl   $0x0,-0x9c7c(%rbp)
  movl   $0x0,-0x9c78(%rbp)
  movl   $0x0,-0x9c74(%rbp)
  movl   $0x0,-0x9c70(%rbp)
  movl   $0x0,-0x9c6c(%rbp)
  movl   $0x0,-0x9c68(%rbp)
  movl   $0x0,-0x9c64(%rbp)
  movl   $0x0,-0x9c60(%rbp)
  movl   $0x0,-0x9c5c(%rbp)
  lea    -0x9c8c(%rbp),%rax
  mov    %rax,%rsi
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movl   $0x0,-0x9c84(%rbp)
  movl   $0x1,-0x9c58(%rbp)
  jmp    L55
L132:
  mov    -0x9c84(%rbp),%eax
  cltq
  mov    -0x9c58(%rbp),%edx
  mov    %edx,-0x9c50(%rbp,%rax,4)
  addl   $0x1,-0x9c84(%rbp)
  addl   $0x1,-0x9c58(%rbp)
L55:
  mov    -0x9c8c(%rbp),%eax
  cmp    %eax,-0x9c84(%rbp)
  jl     L132
  movl   $0x0,-0x9c84(%rbp)
  jmp    L53
L122:
  movl   $0x0,-0x9c58(%rbp)
  jmp    L91
L34:
  mov    -0x9c84(%rbp),%eax
  cltq
  mov    -0x9c50(%rbp,%rax,4),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  mov    %eax,-0x9c54(%rbp)
  mov    -0x9c54(%rbp),%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  sub    %eax,%edx
  mov    %edx,-0x9c54(%rbp)
  mov    -0x9c84(%rbp),%eax
  cltq
  mov    -0x9c50(%rbp,%rax,4),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  mov    -0x9c84(%rbp),%eax
  cltq
  mov    %edx,-0x9c50(%rbp,%rax,4)
  cmpl   $0x0,-0x9c54(%rbp)
  jne    L196
  addl   $0x1,-0x9c80(%rbp)
L196:
  cmpl   $0x1,-0x9c54(%rbp)
  jne    L14
  addl   $0x1,-0x9c7c(%rbp)
L14:
  cmpl   $0x2,-0x9c54(%rbp)
  jne    L110
  addl   $0x1,-0x9c78(%rbp)
L110:
  cmpl   $0x3,-0x9c54(%rbp)
  jne    L182
  addl   $0x1,-0x9c74(%rbp)
L182:
  cmpl   $0x4,-0x9c54(%rbp)
  jne    L106
  addl   $0x1,-0x9c70(%rbp)
L106:
  cmpl   $0x5,-0x9c54(%rbp)
  jne    L94
  addl   $0x1,-0x9c6c(%rbp)
L94:
  cmpl   $0x6,-0x9c54(%rbp)
  jne    L193
  addl   $0x1,-0x9c68(%rbp)
L193:
  cmpl   $0x7,-0x9c54(%rbp)
  jne    L56
  addl   $0x1,-0x9c64(%rbp)
L56:
  cmpl   $0x8,-0x9c54(%rbp)
  jne    L152
  addl   $0x1,-0x9c60(%rbp)
L152:
  cmpl   $0x9,-0x9c54(%rbp)
  jne    L7
  addl   $0x1,-0x9c5c(%rbp)
L7:
  addl   $0x1,-0x9c58(%rbp)
L91:
  mov    -0x9c84(%rbp),%eax
  cltq
  mov    -0x9c50(%rbp,%rax,4),%eax
  test   %eax,%eax
  jg     L34
  addl   $0x1,-0x9c84(%rbp)
L53:
  mov    -0x9c8c(%rbp),%eax
  cmp    %eax,-0x9c84(%rbp)
  jl     L122
  mov    -0x9c70(%rbp),%r8d
  mov    -0x9c74(%rbp),%edi
  mov    -0x9c78(%rbp),%ecx
  mov    -0x9c7c(%rbp),%edx
  mov    -0x9c80(%rbp),%eax
  sub    $0x8,%rsp
  mov    -0x9c5c(%rbp),%esi
  push   %rsi
  mov    -0x9c60(%rbp),%esi
  push   %rsi
  mov    -0x9c64(%rbp),%esi
  push   %rsi
  mov    -0x9c68(%rbp),%esi
  push   %rsi
  mov    -0x9c6c(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %eax,%esi
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  add    $0x30,%rsp
  addl   $0x1,-0x9c88(%rbp)
L69:
  mov    -0x9c90(%rbp),%eax
  cmp    %eax,-0x9c88(%rbp)
  jl     L177
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L58
  call   <__stack_chk_fail@plt>
L58:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_label: D5
type_guessed: string
name: read_data
arguments: data_label: D18
type_guessed: string

tool: D5: %d

tool: D18: %d %d %d %d %d %d %d %d %d %d


assistant: ```c
int main() {
  int t, i, n, ara[10002], j, zero, one, two, three, four, five, six, seven, eight, nine, k;
  scanf("%d", &t);
  for (i = 0; i < t; i++) {
    int lastdigit;
    zero = 0, one = 0, two = 0, three = 0, four = 0, five = 0, six = 0, seven = 0, eight = 0, nine = 0;
    scanf("%d", &n);
    for (j = 0, k = 1; j < n; j++, k++) {
      ara[j] = k;
    }
    for (j = 0; j < n; j++) {
      for (k = 0; ara[j] > 0; k++) {
        lastdigit = ara[j] % 10;
        ara[j] = ara[j] / 10;
        if (lastdigit == 0)
          zero++;
        if (lastdigit == 1)
          one++;
        if (lastdigit == 2)
          two++;
        if (lastdigit == 3)
          three++;
        if (lastdigit == 4)
          four++;
        if (lastdigit == 5)
          five++;
        if (lastdigit == 6)
          six++;
        if (lastdigit == 7)
          seven++;
        if (lastdigit == 8)
          eight++;
        if (lastdigit == 9)
          nine++;
      }
    }
    printf("%d %d %d %d %d %d %d %d %d %d\n", zero, one, two, three, four, five, six, seven, eight, nine);
  }
  return 0;
}
```