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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x94(%rbp),%rax
  mov    %rax,%rsi
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movl   $0x0,-0x90(%rbp)
  jmp    L159
L128:
  lea    -0x80(%rbp),%rax
  mov    %rax,%rsi
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x84(%rbp)
  movl   $0x0,-0x8c(%rbp)
  movl   $0x0,-0x88(%rbp)
  jmp    L13
L179:
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x31,%al
  je     L27
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x34,%al
  je     L27
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x37,%al
  je     L27
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x38,%al
  jne    L143
L27:
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x31,%al
  jne    L0
  addl   $0x2,-0x8c(%rbp)
L0:
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x34,%al
  jne    L96
  addl   $0x4,-0x8c(%rbp)
L96:
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x37,%al
  jne    L95
  addl   $0x3,-0x8c(%rbp)
L95:
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x38,%al
  jne    L57
  addl   $0x7,-0x8c(%rbp)
  jmp    L57
L143:
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x32,%al
  je     L208
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x33,%al
  je     L208
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x35,%al
  jne    L113
L208:
  addl   $0x5,-0x8c(%rbp)
  jmp    L57
L113:
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x36,%al
  je     L106
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x39,%al
  je     L106
  mov    -0x88(%rbp),%eax
  cltq
  movzbl -0x80(%rbp,%rax,1),%eax
  cmp    $0x30,%al
  jne    L57
L106:
  addl   $0x6,-0x8c(%rbp)
L57:
  addl   $0x1,-0x88(%rbp)
L13:
  mov    -0x88(%rbp),%eax
  cmp    -0x84(%rbp),%eax
  jl     L179
  mov    -0x8c(%rbp),%eax
  mov    %eax,%esi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  addl   $0x1,-0x90(%rbp)
L159:
  mov    -0x94(%rbp),%eax
  cmp    %eax,-0x90(%rbp)
  jl     L128
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L33
  call   <__stack_chk_fail@plt>
L33:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D4
type_guessed: string
name: parse_data
arguments: label: D15
type_guessed: string
name: parse_data
arguments: label: D1
type_guessed: string

tool: D4: %d

tool: D15: %s

tool: D1: %d leds


assistant: ```c
int main() {
  char Num[105];
  int N, cont, Led, cont2, Tam;
  scanf("%d", &N);
  for (cont = 0; cont < N; cont++) {
    scanf("%s", Num);
    Tam = strlen(Num);
    Led = 0;
    for (cont2 = 0; cont2 < Tam; cont2++) {
      if (Num[cont2] == '1' || Num[cont2] == '4' || Num[cont2] == '7' || Num[cont2] == '8') {
        if (Num[cont2] == '1')
          Led = Led + 2;
        if (Num[cont2] == '4')
          Led = Led + 4;
        if (Num[cont2] == '7')
          Led = Led + 3;
        if (Num[cont2] == '8')
          Led = Led + 7;
      } else {
        if (Num[cont2] == '2' || Num[cont2] == '3' || Num[cont2] == '5')
          Led = Led + 5;
        else if (Num[cont2] == '6' || Num[cont2] == '9' || Num[cont2] == '0')
          Led = Led + 6;
      }
    }
    printf("%d leds\n", Led);
  }
  return 0;
}
```