user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  sub    $0x58,%rsp
  pxor   %xmm0,%xmm0
  lea    D7(%rip),%rdi
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  lea    0x1c(%rsp),%rsi
  movaps %xmm0,0x20(%rsp)
  movq   $0x0,0x40(%rsp)
  movaps %xmm0,0x30(%rsp)
  call   <scanf@plt>
  mov    0x1c(%rsp),%edx
  test   %edx,%edx
  js     L164
  je     L187
L144:
  mov    $0xcccccccd,%edi
  nopl   0x0(%rax,%rax,1)
L162:
  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     L162
  mov    %ecx,0x1c(%rsp)
L187:
  xor    %eax,%eax
  cmpl   $0x1,0x20(%rsp)
  jle    L208
  xor    %esi,%esi
  lea    D39(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%eax
L208:
  cmpl   $0x1,0x24(%rsp)
  jle    L213
  mov    $0x1,%esi
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L213:
  cmpl   $0x1,0x28(%rsp)
  jle    L34
  mov    $0x2,%esi
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L34:
  cmpl   $0x1,0x2c(%rsp)
  jle    L215
  mov    $0x3,%esi
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L215:
  cmpl   $0x1,0x30(%rsp)
  jle    L77
  mov    $0x4,%esi
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L77:
  cmpl   $0x1,0x34(%rsp)
  jle    L186
  mov    $0x5,%esi
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L186:
  cmpl   $0x1,0x38(%rsp)
  jle    L145
  mov    $0x6,%esi
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%eax
L145:
  cmpl   $0x1,0x3c(%rsp)
  jg     L63
  cmpl   $0x1,0x40(%rsp)
  jg     L130
  cmpl   $0x1,0x44(%rsp)
  jg     L193
  test   %eax,%eax
  jne    L79
  lea    D73(%rip),%rdi
  call   <puts@plt>
  jmp    L79
L130:
  lea    D39(%rip),%rdi
L60:
  xor    %eax,%eax
  mov    $0x8,%esi
  mov    %rdi,0x8(%rsp)
  call   <printf@plt>
  cmpl   $0x1,0x44(%rsp)
  jg     L20
L79:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L90
  xor    %eax,%eax
  add    $0x58,%rsp
  ret
L63:
  lea    D39(%rip),%rdi
  xor    %eax,%eax
  mov    $0x7,%esi
  mov    %rdi,0x8(%rsp)
  call   <printf@plt>
  cmpl   $0x1,0x40(%rsp)
  mov    0x8(%rsp),%rdi
  jg     L60
  cmpl   $0x1,0x44(%rsp)
  jle    L79
L120:
  mov    $0x9,%esi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L79
L164:
  neg    %edx
  jmp    L144
L20:
  mov    0x8(%rsp),%rdi
  jmp    L120
L193:
  lea    D39(%rip),%rdi
  jmp    L120
L90:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_label: D7
data_type: string
name: unpack_data
arguments: data_label: D39
data_type: string
name: unpack_data
arguments: data_label: D73
data_type: string

tool: D7: %d

tool: D39: Cifrata %d se povtarq


tool: D73: nqma povtarqshti se cifri

assistant: ```c
int main() {
  int i;
  int digits[10] = {0};
  int number;
  scanf("%d", &number);
  if (number < 0) {
    number *= -1;
  }
  while (number > 0) {
    int helper = number % 10;
    digits[helper]++;
    number /= 10;
  }
  int repeat = 0;
  for (i = 0; i < 10; i++) {
    if (digits[i] > 1) {
      printf("Cifrata %d se povtarq\n", i);
      repeat = 1;
    }
  }
  if (!repeat) {
    printf("nqma povtarqshti se cifri\n");
  }
}
```