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

```asm
<pretraducir>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L673
L402:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x69,%al
  jne    L142
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <esOperador@plt>
  test   %eax,%eax
  jne    L158
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L158
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x29,%al
  je     L158
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x21,%al
  je     L158
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L158:
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  jmp    L673
L142:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x7,%edx
  lea    D254(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L602
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movl   $0x43736572,(%rax)
  movw   $0x6d6f,0x4(%rax)
  movb   $0x70,0x6(%rax)
  addl   $0x7,-0x4(%rbp)
  addl   $0x7,-0x8(%rbp)
  jmp    L673
L602:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D78(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L303
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D124(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L469
L303:
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movw   $0x6572,(%rax)
  movb   $0x73,0x2(%rax)
  addl   $0x3,-0x4(%rbp)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L469:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x4,%edx
  lea    D177(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L8
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x61,(%rax)
  addl   $0x4,-0x8(%rbp)
  jmp    L673
L8:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L620
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D95(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L42
L620:
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x62,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L42:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D73(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L115
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x63,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L115:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D241(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L644
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x64,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L644:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x4,%edx
  lea    D251(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L597
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x4,%edx
  lea    D260(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L849
L597:
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x65,(%rax)
  addl   $0x4,-0x8(%rbp)
  jmp    L673
L849:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x4,%edx
  lea    D259(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L757
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x66,(%rax)
  addl   $0x4,-0x8(%rbp)
  jmp    L673
L757:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x4,%edx
  lea    D67(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L101
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x67,(%rax)
  addl   $0x4,-0x8(%rbp)
  jmp    L673
L101:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D294(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L138
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x68,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L138:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x2,%edx
  lea    D146(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L169
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x7a,(%rax)
  addl   $0x2,-0x8(%rbp)
  jmp    L673
L169:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D118(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L155
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x6b,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L155:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x2,%edx
  lea    D282(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L515
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x6c,(%rax)
  addl   $0x2,-0x8(%rbp)
  jmp    L673
L515:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x2,%edx
  lea    D106(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L145
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x6d,(%rax)
  addl   $0x2,-0x8(%rbp)
  jmp    L673
L145:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x2,%edx
  lea    D76(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L210
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x6e,(%rax)
  addl   $0x2,-0x8(%rbp)
  jmp    L673
L210:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D117(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L154
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x6f,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L154:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D84(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L485
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x70,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L485:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D100(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L86
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x71,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L86:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x3,%edx
  lea    D63(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L919
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x72,(%rax)
  addl   $0x3,-0x8(%rbp)
  jmp    L673
L919:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x6,%edx
  lea    D213(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L786
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x77,(%rax)
  addl   $0x6,-0x8(%rbp)
  jmp    L673
L786:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x9,%edx
  lea    D223(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L660
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x74,(%rax)
  addl   $0x9,-0x8(%rbp)
  jmp    L673
L660:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x5,%edx
  lea    D209(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L741
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x75,(%rax)
  addl   $0x5,-0x8(%rbp)
  jmp    L673
L741:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x4,%edx
  lea    D258(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L796
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x76,(%rax)
  addl   $0x4,-0x8(%rbp)
  jmp    L673
L796:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x5,%edx
  lea    D113(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L338
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x73,(%rax)
  addl   $0x5,-0x8(%rbp)
  jmp    L673
L338:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x2,%edx
  lea    D172(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L684
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x55,(%rax)
  addl   $0x1,-0x4(%rbp)
  addl   $0x2,-0x8(%rbp)
  jmp    L673
L684:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movzbl D136(%rip),%edx
  movzbl %al,%eax
  movzbl %dl,%edx
  sub    %edx,%eax
  test   %eax,%eax
  jne    L844
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x56,(%rax)
  addl   $0x1,-0x4(%rbp)
  addl   $0x1,-0x8(%rbp)
  jmp    L673
L844:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    $0x2,%edx
  lea    D276(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L496
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x57,(%rax)
  addl   $0x1,-0x4(%rbp)
  addl   $0x2,-0x8(%rbp)
  jmp    L673
L496:
  cmpl   $0x0,-0x8(%rbp)
  jne    L351
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L351
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x30,(%rax)
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  jmp    L673
L351:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x28,%al
  jne    L634
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L634
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x30,(%rax)
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  jmp    L673
L634:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x29,%al
  jne    L365
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x28,%al
  jne    L365
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L365:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %eax,%eax
  je     L394
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %eax,%eax
  je     L394
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L394:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %eax,%eax
  je     L804
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x28,%al
  jne    L804
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L804:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x29,%al
  jne    L282
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %eax,%eax
  je     L282
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L282:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x30,%eax
  cmp    $0x9,%eax
  ja     L637
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x28,%al
  jne    L637
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L637:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x30,%eax
  cmp    $0x9,%eax
  ja     L872
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %eax,%eax
  je     L872
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L872:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %eax,%eax
  je     L940
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x30,%eax
  cmp    $0x9,%eax
  ja     L940
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x2a,(%rax)
  jmp    L673
L940:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %eax,%eax
  je     L769
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <toupper@plt>
  mov    %eax,%ecx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    %ecx,%edx
  mov    %dl,(%rax)
  jmp    L673
L769:
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x8(%rbp)
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x4(%rbp)
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  movzbl (%rcx),%eax
  mov    %al,(%rdx)
L673:
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L402
  mov    -0x4(%rbp),%edx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D254
datatype: string
name: unpack_data
arguments: data_label: D78
datatype: string
name: unpack_data
arguments: data_label: D124
datatype: string
name: unpack_data
arguments: data_label: D177
datatype: string
name: unpack_data
arguments: data_label: D49
datatype: string
name: unpack_data
arguments: data_label: D95
datatype: string
name: unpack_data
arguments: data_label: D73
datatype: string
name: unpack_data
arguments: data_label: D241
datatype: string
name: unpack_data
arguments: data_label: D251
datatype: string
name: unpack_data
arguments: data_label: D260
datatype: string
name: unpack_data
arguments: data_label: D259
datatype: string
name: unpack_data
arguments: data_label: D67
datatype: string
name: unpack_data
arguments: data_label: D294
datatype: string
name: unpack_data
arguments: data_label: D146
datatype: string
name: unpack_data
arguments: data_label: D118
datatype: string
name: unpack_data
arguments: data_label: D282
datatype: string
name: unpack_data
arguments: data_label: D106
datatype: string
name: unpack_data
arguments: data_label: D76
datatype: string
name: unpack_data
arguments: data_label: D117
datatype: string
name: unpack_data
arguments: data_label: D84
datatype: string
name: unpack_data
arguments: data_label: D100
datatype: string
name: unpack_data
arguments: data_label: D63
datatype: string
name: unpack_data
arguments: data_label: D213
datatype: string
name: unpack_data
arguments: data_label: D223
datatype: string
name: unpack_data
arguments: data_label: D209
datatype: string
name: unpack_data
arguments: data_label: D258
datatype: string
name: unpack_data
arguments: data_label: D113
datatype: string
name: unpack_data
arguments: data_label: D172
datatype: string
name: unpack_data
arguments: data_label: D136
datatype: byte
name: unpack_data
arguments: data_label: D276
datatype: string

tool: D254: resComp

tool: D78: res

tool: D124: ans

tool: D177: sqrt

tool: D49: sin

tool: D95: sen

tool: D73: cos

tool: D241: tan

tool: D251: asin

tool: D260: asen

tool: D259: acos

tool: D67: atan

tool: D294: exp

tool: D146: ln

tool: D118: log

tool: D282: sh

tool: D106: ch

tool: D76: th

tool: D117: ash

tool: D84: ach

tool: D100: ath

tool: D63: pow

tool: D213: gamma'

tool: D223: factorial

tool: D209: betha

tool: D258: prim

tool: D113: gamma

tool: D172: pi

tool: D136: 101

tool: D276: r2

assistant: ```c
void pretraducir(char *origS, char *newS) {
  unsigned int i = 0, j = 0;
  while (origS[i] != '\0') {
    if (origS[i] == 'i') {
      if (!esOperador(origS[i + 1]) && origS[i + 1] != '\0' && origS[i + 1] != ')' && origS[i + 1] != '!') {
        newS[j++] = origS[i++];
        newS[j++] = '*';
      } else
        newS[j++] = origS[i++];
    } else if (strncmp(&origS[i], "resComp", strlen("resComp")) == 0) {
      strncpy(&newS[j], "resComp", strlen("resComp"));
      j += strlen("resComp");
      i += strlen("resComp");
    } else if (strncmp(&origS[i], "res", strlen("res")) == 0 || strncmp(&origS[i], "ans", strlen("ans")) == 0) {
      strncpy(&newS[j], "res", strlen("res"));
      j += strlen("res");
      i += strlen("res");
    } else if (strncmp(&origS[i], "sqrt", strlen("sqrt")) == 0) {
      newS[j++] = 'a';
      i += strlen("sqrt");
    } else if (strncmp(&origS[i], "sin", strlen("sin")) == 0 || strncmp(&origS[i], "sen", strlen("sen")) == 0) {
      newS[j++] = 'b';
      i += strlen("sin");
    } else if (strncmp(&origS[i], "cos", strlen("cos")) == 0) {
      newS[j++] = 'c';
      i += strlen("cos");
    } else if (strncmp(&origS[i], "tan", strlen("tan")) == 0) {
      newS[j++] = 'd';
      i += strlen("tan");
    } else if (strncmp(&origS[i], "asin", strlen("asin")) == 0 || strncmp(&origS[i], "asen", strlen("asen")) == 0) {
      newS[j++] = 'e';
      i += strlen("asin");
    } else if (strncmp(&origS[i], "acos", strlen("acos")) == 0) {
      newS[j++] = 'f';
      i += strlen("acos");
    } else if (strncmp(&origS[i], "atan", strlen("atan")) == 0) {
      newS[j++] = 'g';
      i += strlen("atan");
    } else if (strncmp(&origS[i], "exp", strlen("exp")) == 0) {
      newS[j++] = 'h';
      i += strlen("exp");
    } else if (strncmp(&origS[i], "ln", strlen("ln")) == 0) {
      newS[j++] = 'z';
      i += strlen("ln");
    } else if (strncmp(&origS[i], "log", strlen("log")) == 0) {
      newS[j++] = 'k';
      i += strlen("log");
    } else if (strncmp(&origS[i], "sh", strlen("sh")) == 0) {
      newS[j++] = 'l';
      i += strlen("sh");
    } else if (strncmp(&origS[i], "ch", strlen("ch")) == 0) {
      newS[j++] = 'm';
      i += strlen("ch");
    } else if (strncmp(&origS[i], "th", strlen("th")) == 0) {
      newS[j++] = 'n';
      i += strlen("th");
    } else if (strncmp(&origS[i], "ash", strlen("ash")) == 0) {
      newS[j++] = 'o';
      i += strlen("ash");
    } else if (strncmp(&origS[i], "ach", strlen("ach")) == 0) {
      newS[j++] = 'p';
      i += strlen("ach");
    } else if (strncmp(&origS[i], "ath", strlen("ath")) == 0) {
      newS[j++] = 'q';
      i += strlen("ath");
    } else if (strncmp(&origS[i], "pow", strlen("pow")) == 0) {
      newS[j++] = 'r';
      i += strlen("pow");
    } else if (strncmp(&origS[i], "gamma'", strlen("gamma'")) == 0) {
      newS[j++] = 'w';
      i += strlen("gamma'");
    } else if (strncmp(&origS[i], "factorial", strlen("factorial")) == 0) {
      newS[j++] = 't';
      i += strlen("factorial");
    } else if (strncmp(&origS[i], "betha", strlen("betha")) == 0) {
      newS[j++] = 'u';
      i += strlen("betha");
    } else if (strncmp(&origS[i], "prim", strlen("prim")) == 0) {
      newS[j++] = 'v';
      i += strlen("prim");
    } else if (strncmp(&origS[i], "gamma", strlen("gamma")) == 0) {
      newS[j++] = 's';
      i += strlen("gamma");
    } else if (strncmp(&origS[i], "pi", strlen("pi")) == 0) {
      newS[j] = 'U';
      j++;
      i += strlen("pi");
    } else if (strncmp(&origS[i], "e", strlen("e")) == 0) {
      newS[j] = 'V';
      j++;
      i += strlen("e");
    } else if (strncmp(&origS[i], "r2", strlen("r2")) == 0) {
      newS[j] = 'W';
      j++;
      i += strlen("r2");
    } else if (i == 0 && origS[i] == '-') {
      newS[j++] = '0';
      newS[j++] = origS[i++];
    } else if (origS[i] == '(' && origS[i + 1] == '-') {
      newS[j++] = origS[i++];
      newS[j++] = '0';
      newS[j++] = origS[i++];
    } else if ((origS[i] == ')') && (origS[i + 1] == '(')) {
      newS[j++] = origS[i++];
      newS[j++] = '*';
    } else if (isalpha(origS[i]) && isalpha(origS[i + 1])) {
      newS[j++] = toupper(origS[i++]);
      newS[j++] = '*';
    } else if (isalpha(origS[i]) && origS[i + 1] == '(') {
      newS[j++] = toupper(origS[i++]);
      newS[j++] = '*';
    } else if (origS[i] == ')' && isalpha(origS[i + 1])) {
      newS[j++] = origS[i++];
      newS[j++] = '*';
    } else if (isdigit(origS[i]) && origS[i + 1] == '(') {
      newS[j++] = origS[i++];
      newS[j++] = '*';
    } else if (isdigit(origS[i]) && isalpha(origS[i + 1])) {
      newS[j++] = origS[i++];
      newS[j++] = '*';
    } else if (isalpha(origS[i]) && isdigit(origS[i + 1])) {
      newS[j++] = origS[i++];
      newS[j++] = '*';
    } else if (isalpha(origS[i])) {
      newS[j++] = toupper(origS[i++]);
    } else
      newS[j++] = origS[i++];
  }
  newS[j] = '\0';
  return;
}
```