user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  sub    $0x58,%rsp
  pxor   %xmm0,%xmm0
  lea    D77(%rip),%rdi
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  movaps %xmm0,0x20(%rsp)
  movaps %xmm0,0x30(%rsp)
  movq   $0x0,0x40(%rsp)
  call   <printf@plt>
  lea    0x1c(%rsp),%rsi
  lea    D3(%rip),%rdi
  call   <scanf@plt>
  mov    0x1c(%rsp),%edx
  test   %edx,%edx
  js     L2
  je     L64
L47:
  mov    $0xcccccccd,%edi
  nop
L98:
  mov    %edx,%eax
  imul   %rdi,%rax
  shr    $0x23,%rax
  lea    (%rax,%rax,4),%esi
  mov    %eax,%ecx
  mov    %edx,%eax
  add    %esi,%esi
  sub    %esi,%eax
  cltq
  addl   $0x1,0x20(%rsp,%rax,4)
  mov    %edx,%eax
  mov    %ecx,%edx
  cmp    $0x9,%eax
  jg     L98
  mov    %ecx,0x1c(%rsp)
L64:
  xor    %eax,%eax
  cmpl   $0x1,0x20(%rsp)
  jle    L63
  xor    %esi,%esi
  lea    D20(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%eax
L63:
  cmpl   $0x1,0x24(%rsp)
  jle    L200
  mov    $0x1,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L200:
  cmpl   $0x1,0x28(%rsp)
  jle    L162
  mov    $0x2,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L162:
  cmpl   $0x1,0x2c(%rsp)
  jle    L4
  mov    $0x3,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L4:
  cmpl   $0x1,0x30(%rsp)
  jle    L116
  mov    $0x4,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L116:
  cmpl   $0x1,0x34(%rsp)
  jle    L114
  mov    $0x5,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L114:
  cmpl   $0x1,0x38(%rsp)
  jle    L224
  mov    $0x6,%esi
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L224:
  cmpl   $0x1,0x3c(%rsp)
  jg     L196
  cmpl   $0x1,0x40(%rsp)
  jg     L111
  cmpl   $0x1,0x44(%rsp)
  jg     L147
  test   %eax,%eax
  jne    L15
  lea    D98(%rip),%rdi
  call   <printf@plt>
  jmp    L15
L111:
  lea    D20(%rip),%rdi
L83:
  xor    %eax,%eax
  mov    $0x8,%esi
  mov    %rdi,0x8(%rsp)
  call   <printf@plt>
  cmpl   $0x1,0x44(%rsp)
  jg     L102
L15:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L119
  xor    %eax,%eax
  add    $0x58,%rsp
  ret
L196:
  lea    D20(%rip),%rdi
  xor    %eax,%eax
  mov    $0x7,%esi
  mov    %rdi,0x8(%rsp)
  call   <printf@plt>
  cmpl   $0x1,0x40(%rsp)
  mov    0x8(%rsp),%rdi
  jg     L83
  cmpl   $0x1,0x44(%rsp)
  jle    L15
L1:
  mov    $0x9,%esi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L15
L2:
  neg    %edx
  jmp    L47
L102:
  mov    0x8(%rsp),%rdi
  jmp    L1
L147:
  lea    D20(%rip),%rdi
  jmp    L1
L119:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D77
data_type: string
name: read_data
arguments: data_tag: D3
data_type: string
name: read_data
arguments: data_tag: D20
data_type: string
name: read_data
arguments: data_tag: D98
data_type: string

tool: D77: Enter n:

tool: D3: %d

tool: D20: Digit %d repeats


tool: D98: No repeating digits

assistant: ```c
int main() {
  int a[10] = {0}, i, n, p;
  printf("Enter n:");
  scanf("%d", &n);
  if (n < 0) {
    n = n * (-1);
  }
  while (n > 0) {
    int p = n % 10;
    a[p]++;
    n = n / 10;
  }
  int r = 0;
  for (i = 0; i < 10; i++) {
    if (a[i] > 1) {
      printf("Digit %d repeats\n", i);
      r = 1;
    }
  }
  if (!r) {
    printf("No repeating digits");
  }
}
```