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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x80(%rbp),%rax
  mov    %rax,%rsi
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movl   $0x0,-0x7c(%rbp)
  jmp    L214
L303:
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <gets@plt>
  movl   $0x0,-0x78(%rbp)
  movl   $0x0,-0x74(%rbp)
  jmp    L23
L183:
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x61,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x64,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x67,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x6a,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x6d,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x70,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x74,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x77,%al
  je     L130
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x20,%al
  jne    L204
L130:
  addl   $0x1,-0x74(%rbp)
  jmp    L13
L204:
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x62,%al
  je     L153
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x65,%al
  je     L153
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x68,%al
  je     L153
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x6b,%al
  je     L153
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x6e,%al
  je     L153
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x71,%al
  je     L153
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x75,%al
  je     L153
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x78,%al
  jne    L236
L153:
  addl   $0x2,-0x74(%rbp)
  jmp    L13
L236:
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x63,%al
  je     L355
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x66,%al
  je     L355
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x69,%al
  je     L355
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x6c,%al
  je     L355
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x6f,%al
  je     L355
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x72,%al
  je     L355
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x76,%al
  je     L355
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x79,%al
  jne    L57
L355:
  addl   $0x3,-0x74(%rbp)
  jmp    L13
L57:
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x73,%al
  je     L344
  mov    -0x78(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  cmp    $0x7a,%al
  jne    L13
L344:
  addl   $0x4,-0x74(%rbp)
L13:
  addl   $0x1,-0x78(%rbp)
L23:
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    %eax,-0x78(%rbp)
  jl     L183
  cmpl   $0x0,-0x7c(%rbp)
  je     L192
  mov    -0x74(%rbp),%edx
  mov    -0x7c(%rbp),%eax
  mov    %eax,%esi
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L192:
  addl   $0x1,-0x7c(%rbp)
L214:
  mov    -0x80(%rbp),%eax
  cmp    %eax,-0x7c(%rbp)
  jle    L303
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L184
  call   <__stack_chk_fail@plt>
L184:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D19
datatype: string
name: extract_symbolic_data
arguments: data_tag: D4
datatype: string

tool: D19: %d

tool: D4: Case #%d: %d


assistant: ```c
int main() {
  char str[102];
  int t, i, j, count;
  scanf("%d", &t);
  for (i = 0; i <= t; i++) {
    gets(str);
    j = 0;
    count = 0;
    while (j < strlen(str)) {
      if (str[j] == 'a' || str[j] == 'd' || str[j] == 'g' || str[j] == 'j' || str[j] == 'm' || str[j] == 'p' || str[j] == 't' || str[j] == 'w' || str[j] == ' ')
        count++;
      else if (str[j] == 'b' || str[j] == 'e' || str[j] == 'h' || str[j] == 'k' || str[j] == 'n' || str[j] == 'q' || str[j] == 'u' || str[j] == 'x')
        count += 2;
      else if (str[j] == 'c' || str[j] == 'f' || str[j] == 'i' || str[j] == 'l' || str[j] == 'o' || str[j] == 'r' || str[j] == 'v' || str[j] == 'y')
        count += 3;
      else if (str[j] == 's' || str[j] == 'z')
        count += 4;
      j++;
    }
    if (i != 0)
      printf("Case #%d: %d\n", i, count);
  }
  return 0;
}
```