user: 请从给定的汇编指令推导出C源代码:

```asm
<pretraducir>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  sub    $0x28,%rsp
  movzbl (%rdi),%r15d
  mov    %rdi,(%rsp)
  test   %r15b,%r15b
  je     L617
  xor    %r12d,%r12d
  mov    %r15d,%eax
  mov    %rdi,%rbx
  xor    %r14d,%r14d
  mov    %r12d,%r15d
  mov    %eax,%r12d
  jmp    L577
  nopw   0x0(%rax,%rax,1)
L441:
  cmpb   $0x65,0x1(%rbx)
  jne    L531
  cmpb   $0x73,0x2(%rbx)
  jne    L531
L726:
  mov    $0x6572,%eax
  movb   $0x73,0x2(%r13)
  lea    0x3(%r15),%ebx
  add    $0x3,%r14d
  mov    %ax,0x0(%r13)
  mov    %rbx,%r15
  add    (%rsp),%rbx
L942:
  movzbl (%rbx),%r12d
  test   %r12b,%r12b
  je     L606
L577:
  mov    %r14d,%r13d
  add    %rbp,%r13
  cmp    $0x69,%r12b
  je     L266
  mov    $0x7,%edx
  lea    D206(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L257
  movzbl (%rbx),%r8d
  cmp    $0x72,%r8d
  je     L441
L531:
  cmp    $0x61,%r8d
  jne    L18
  cmpb   $0x6e,0x1(%rbx)
  jne    L18
  cmpb   $0x73,0x2(%rbx)
  je     L726
  nop
L18:
  mov    $0x4,%edx
  lea    D1(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r8d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r8d
  lea    0x1(%r14),%r9d
  test   %eax,%eax
  jne    L734
  lea    0x4(%r15),%ebx
  movb   $0x61,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  movzbl (%rbx),%r12d
  test   %r12b,%r12b
  jne    L577
  nopw   0x0(%rax,%rax,1)
L606:
  mov    %r14d,%r8d
  add    %r8,%rbp
L617:
  movb   $0x0,0x0(%rbp)
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L257:
  lea    0x7(%r15),%ebx
  mov    $0x6d6f,%edx
  movb   $0x70,0x6(%r13)
  add    $0x7,%r14d
  mov    %rbx,%r15
  mov    %dx,0x4(%r13)
  add    (%rsp),%rbx
  movl   $0x43736572,0x0(%r13)
  jmp    L942
  nopl   0x0(%rax,%rax,1)
L266:
  mov    (%rsp),%rax
  lea    0x1(%r15),%edx
  mov    %rdx,%r15
  lea    (%rax,%rdx,1),%r12
  xor    %eax,%eax
  movsbl (%r12),%edi
  call   <esOperador@plt>
  mov    %eax,%r8d
  lea    0x1(%r14),%eax
  test   %r8d,%r8d
  jne    L184
  movzbl (%r12),%ecx
  mov    %ecx,%esi
  and    $0xfffffff7,%esi
  cmp    $0x21,%sil
  je     L184
  test   %cl,%cl
  jne    L232
L184:
  movzbl (%rbx),%ecx
  mov    %eax,%r14d
  mov    %r12,%rbx
  mov    %cl,0x0(%r13)
  jmp    L942
  nopl   0x0(%rax)
L734:
  cmp    $0x73,%r8d
  je     L992
L225:
  cmp    $0x63,%r8d
  jne    L839
  cmpb   $0x6f,0x1(%rbx)
  jne    L839
  cmpb   $0x73,0x2(%rbx)
  jne    L839
  lea    0x3(%r15),%ebx
  movb   $0x63,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L992:
  cmpb   $0x69,0x1(%rbx)
  je     L877
L792:
  cmp    $0x73,%r8d
  jne    L225
  cmpb   $0x65,0x1(%rbx)
  jne    L225
  cmpb   $0x6e,0x2(%rbx)
  je     L1036
  jmp    L225
  nopw   0x0(%rax,%rax,1)
L877:
  cmpb   $0x6e,0x2(%rbx)
  jne    L792
L1036:
  lea    0x3(%r15),%ebx
  movb   $0x62,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
  xchg   %ax,%ax
L232:
  movzbl (%rbx),%ecx
  add    $0x2,%r14d
  mov    %r12,%rbx
  mov    %cl,0x0(%r13)
  movb   $0x2a,0x0(%rbp,%rax,1)
  jmp    L942
  nopl   0x0(%rax,%rax,1)
L839:
  cmp    $0x74,%r8d
  je     L1065
L889:
  mov    $0x4,%edx
  lea    D63(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  mov    %r8d,0x10(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  je     L374
  mov    $0x4,%edx
  lea    D209(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  mov    0x10(%rsp),%r8d
  test   %eax,%eax
  je     L374
  mov    $0x4,%edx
  lea    D208(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r8d,0x10(%rsp)
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  mov    0x10(%rsp),%r8d
  test   %eax,%eax
  jne    L295
  lea    0x4(%r15),%ebx
  movb   $0x66,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L1065:
  cmpb   $0x61,0x1(%rbx)
  jne    L889
  cmpb   $0x6e,0x2(%rbx)
  jne    L889
  lea    0x3(%r15),%ebx
  movb   $0x64,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L374:
  lea    0x4(%r15),%ebx
  movb   $0x65,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L295:
  mov    $0x4,%edx
  lea    D93(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r8d,0x10(%rsp)
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  mov    0x10(%rsp),%r8d
  test   %eax,%eax
  jne    L101
  lea    0x4(%r15),%ebx
  movb   $0x67,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L101:
  cmp    $0x65,%r8d
  jne    L124
  cmpb   $0x78,0x1(%rbx)
  jne    L124
  cmpb   $0x70,0x2(%rbx)
  jne    L124
  lea    0x3(%r15),%ebx
  movb   $0x68,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L124:
  cmpb   $0x6c,(%rbx)
  jne    L575
  cmpb   $0x6e,0x1(%rbx)
  jne    L575
  lea    0x2(%r15),%ebx
  movb   $0x7a,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L575:
  mov    $0x3,%edx
  lea    D194(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L357
  lea    0x3(%r15),%ebx
  movb   $0x6b,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L357:
  mov    $0x2,%edx
  lea    D139(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L115
  lea    0x2(%r15),%ebx
  movb   $0x6c,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L115:
  mov    $0x2,%edx
  lea    D199(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L896
  lea    0x2(%r15),%ebx
  movb   $0x6d,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L896:
  mov    $0x2,%edx
  lea    D151(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L407
  lea    0x2(%r15),%ebx
  movb   $0x6e,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L407:
  mov    $0x3,%edx
  lea    D205(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L935
  lea    0x3(%r15),%ebx
  movb   $0x6f,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L935:
  mov    $0x3,%edx
  lea    D153(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L1060
  lea    0x3(%r15),%ebx
  movb   $0x70,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L1060:
  mov    $0x3,%edx
  lea    D182(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L73
  lea    0x3(%r15),%ebx
  movb   $0x71,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L73:
  mov    $0x3,%edx
  lea    D27(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L826
  lea    0x3(%r15),%ebx
  movb   $0x72,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L826:
  mov    $0x6,%edx
  lea    D162(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L96
  lea    0x6(%r15),%ebx
  movb   $0x77,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L96:
  mov    $0x9,%edx
  lea    D97(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L697
  lea    0x9(%r15),%ebx
  movb   $0x74,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L697:
  mov    $0x5,%edx
  lea    D56(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L396
  lea    0x5(%r15),%ebx
  movb   $0x75,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L396:
  mov    $0x4,%edx
  lea    D80(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L91
  lea    0x4(%r15),%ebx
  movb   $0x76,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L91:
  mov    $0x5,%edx
  lea    D20(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L836
  lea    0x5(%r15),%ebx
  movb   $0x73,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L836:
  mov    $0x2,%edx
  lea    D131(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L23
  lea    0x2(%r15),%ebx
  movb   $0x55,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L23:
  cmp    $0x65,%r12b
  je     L579
  mov    $0x2,%edx
  lea    D91(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L121
  lea    0x2(%r15),%ebx
  movb   $0x57,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L579:
  lea    0x1(%r15),%ebx
  movb   $0x56,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L942
L121:
  mov    %r9d,%eax
  add    %rbp,%rax
  mov    %rax,0x10(%rsp)
  test   %r15d,%r15d
  jne    L492
  cmp    $0x2d,%r12b
  je     L454
L492:
  lea    0x1(%r15),%ebx
  mov    %ebx,0xc(%rsp)
  add    (%rsp),%rbx
  cmp    $0x28,%r12b
  je     L510
  cmp    $0x29,%r12b
  je     L505
L186:
  movsbl %r12b,%r15d
  mov    %r9d,0x18(%rsp)
  mov    %r15d,%edi
  call   <isalpha@plt>
  mov    0x18(%rsp),%r9d
  test   %eax,%eax
  jne    L212
  sub    $0x30,%r15d
  cmp    $0x9,%r15d
  ja     L368
  movzbl (%rbx),%eax
  cmp    $0x28,%al
  je     L254
  movsbl %al,%edi
  mov    %r9d,0x18(%rsp)
  call   <isalpha@plt>
  test   %eax,%eax
  jne    L254
L830:
  mov    0x18(%rsp),%r9d
L368:
  mov    %r12b,0x0(%r13)
  mov    0xc(%rsp),%r15d
  mov    %r9d,%r14d
  jmp    L942
L454:
  movb   $0x30,0x0(%r13)
  mov    0x10(%rsp),%rcx
  add    $0x2,%r14d
  mov    $0x1,%r15d
  movzbl (%rbx),%eax
  mov    %al,(%rcx)
  mov    (%rsp),%rax
  lea    0x1(%rax),%rbx
  jmp    L942
L505:
  cmpb   $0x28,(%rbx)
  je     L969
  mov    $0x29,%edi
  mov    %r9d,0x18(%rsp)
  call   <isalpha@plt>
  mov    0x18(%rsp),%r9d
  test   %eax,%eax
  je     L863
  mov    $0x29,%r15d
L212:
  movsbl (%rbx),%edi
  mov    %r9d,0x1c(%rsp)
  mov    %dil,0x18(%rsp)
  call   <isalpha@plt>
  movzbl 0x18(%rsp),%edx
  mov    0x1c(%rsp),%r9d
  test   %eax,%eax
  jne    L799
  cmp    $0x28,%dl
  je     L799
  cmp    $0x29,%r12b
  je     L844
  movsbl %r12b,%eax
  sub    $0x30,%eax
  cmp    $0x9,%eax
  jbe    L12
L844:
  movsbl (%rbx),%edx
L538:
  sub    $0x30,%edx
  cmp    $0x9,%edx
  ja     L339
L254:
  mov    0x10(%rsp),%rax
  mov    %r12b,0x0(%r13)
  add    $0x2,%r14d
  mov    0xc(%rsp),%r15d
  movb   $0x2a,(%rax)
  jmp    L942
L339:
  mov    %r15d,%edi
  mov    %r9d,0x10(%rsp)
  call   <toupper@plt>
  mov    0x10(%rsp),%r14d
  mov    0xc(%rsp),%r15d
  mov    %al,0x0(%r13)
  jmp    L942
L510:
  cmpb   $0x2d,(%rbx)
  jne    L186
  mov    0x10(%rsp),%rcx
  movb   $0x28,0x0(%r13)
  lea    0x2(%r14),%eax
  add    $0x2,%r15d
  add    $0x3,%r14d
  movb   $0x30,(%rcx)
  movzbl (%rbx),%edx
  mov    %r15d,%ebx
  add    (%rsp),%rbx
  mov    %dl,0x0(%rbp,%rax,1)
  jmp    L942
L863:
  movsbl (%rbx),%edi
  mov    %r9d,0x18(%rsp)
  call   <isalpha@plt>
  test   %eax,%eax
  je     L830
L969:
  mov    0x10(%rsp),%rax
  movb   $0x29,0x0(%r13)
  add    $0x2,%r14d
  mov    0xc(%rsp),%r15d
  movb   $0x2a,(%rax)
  jmp    L942
L799:
  mov    %r15d,%edi
  add    $0x2,%r14d
  call   <toupper@plt>
  mov    0xc(%rsp),%r15d
  mov    %al,0x0(%r13)
  mov    0x10(%rsp),%rax
  movb   $0x2a,(%rax)
  jmp    L942
L12:
  movsbl (%rbx),%edx
  mov    %r9d,0x1c(%rsp)
  mov    %edx,%edi
  mov    %edx,0x18(%rsp)
  call   <isalpha@plt>
  test   %eax,%eax
  jne    L254
  mov    0x18(%rsp),%edx
  mov    0x1c(%rsp),%r9d
  jmp    L538
```

tool_calls: name: read_data
arguments: label: D206
type_infered: string
name: read_data
arguments: label: D1
type_infered: string
name: read_data
arguments: label: D63
type_infered: string
name: read_data
arguments: label: D209
type_infered: string
name: read_data
arguments: label: D208
type_infered: string
name: read_data
arguments: label: D93
type_infered: string
name: read_data
arguments: label: D194
type_infered: string
name: read_data
arguments: label: D139
type_infered: string
name: read_data
arguments: label: D199
type_infered: string
name: read_data
arguments: label: D151
type_infered: string
name: read_data
arguments: label: D205
type_infered: string
name: read_data
arguments: label: D153
type_infered: string
name: read_data
arguments: label: D182
type_infered: string
name: read_data
arguments: label: D27
type_infered: string
name: read_data
arguments: label: D162
type_infered: string
name: read_data
arguments: label: D97
type_infered: string
name: read_data
arguments: label: D56
type_infered: string
name: read_data
arguments: label: D80
type_infered: string
name: read_data
arguments: label: D20
type_infered: string
name: read_data
arguments: label: D131
type_infered: string
name: read_data
arguments: label: D91
type_infered: string

tool: D206: resComp

tool: D1: sqrt

tool: D63: asin

tool: D209: asen

tool: D208: acos

tool: D93: atan

tool: D194: log

tool: D139: sh

tool: D199: ch

tool: D151: th

tool: D205: ash

tool: D153: ach

tool: D182: ath

tool: D27: pow

tool: D162: gamma'

tool: D97: factorial

tool: D56: betha

tool: D80: prim

tool: D20: gamma

tool: D131: pi

tool: D91: 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;
}
```