user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0xb4(%rbp)
  lea    -0xb0(%rbp),%rax
  mov    %rax,%rsi
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movl   $0x0,-0xb8(%rbp)
  jmp    L117
L299:
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x61,%al
  je     L53
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x64,%al
  je     L53
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x67,%al
  je     L53
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x6a,%al
  je     L53
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x6d,%al
  je     L53
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x70,%al
  je     L53
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x74,%al
  je     L53
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x77,%al
  jne    L173
L53:
  addl   $0x1,-0xb4(%rbp)
L173:
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x62,%al
  je     L188
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x65,%al
  je     L188
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x68,%al
  je     L188
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x6b,%al
  je     L188
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x6e,%al
  je     L188
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x71,%al
  je     L188
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x75,%al
  je     L188
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x78,%al
  jne    L72
L188:
  addl   $0x2,-0xb4(%rbp)
L72:
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x63,%al
  je     L204
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x66,%al
  je     L204
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x69,%al
  je     L204
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x6c,%al
  je     L204
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x6f,%al
  je     L204
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x72,%al
  je     L204
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x76,%al
  je     L204
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x79,%al
  jne    L124
L204:
  addl   $0x3,-0xb4(%rbp)
L124:
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x73,%al
  je     L20
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x7a,%al
  jne    L199
L20:
  addl   $0x4,-0xb4(%rbp)
L199:
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  cmp    $0x20,%al
  jne    L172
  addl   $0x1,-0xb4(%rbp)
L172:
  addl   $0x1,-0xb8(%rbp)
L117:
  mov    -0xb8(%rbp),%eax
  cltq
  movzbl -0xb0(%rbp,%rax,1),%eax
  test   %al,%al
  jne    L299
  mov    -0xb4(%rbp),%eax
  mov    %eax,%esi
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L286
  call   <__stack_chk_fail@plt>
L286:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D12
datatype: string
name: read_data
arguments: data_tag: D11
datatype: string

tool: D12: %[^
]s

tool: D11: %d

assistant: ```c
int main() {
  char words[159];
  int counter, sum = 0;
  scanf("%[^\n]s", words);
  for (counter = 0; words[counter] != 0; counter++) {
    if (words[counter] == 'a' || words[counter] == 'd' || words[counter] == 'g' || words[counter] == 'j' || words[counter] == 'm' || words[counter] == 'p' || words[counter] == 't' || words[counter] == 'w')
      sum += 1;
    if (words[counter] == 'b' || words[counter] == 'e' || words[counter] == 'h' || words[counter] == 'k' || words[counter] == 'n' || words[counter] == 'q' || words[counter] == 'u' || words[counter] == 'x')
      sum += 2;
    if (words[counter] == 'c' || words[counter] == 'f' || words[counter] == 'i' || words[counter] == 'l' || words[counter] == 'o' || words[counter] == 'r' || words[counter] == 'v' || words[counter] == 'y')
      sum += 3;
    if (words[counter] == 's' || words[counter] == 'z')
      sum += 4;
    if (words[counter] == 32)
      sum += 1;
  }
  printf("%d", sum);
  return 0;
}
```