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     L441
  xor    %r12d,%r12d
  mov    %r15d,%eax
  mov    %rdi,%rbx
  xor    %r14d,%r14d
  mov    %r12d,%r15d
  mov    %eax,%r12d
  jmp    L549
  nopw   0x0(%rax,%rax,1)
L217:
  cmpb   $0x65,0x1(%rbx)
  jne    L508
  cmpb   $0x73,0x2(%rbx)
  jne    L508
L405:
  mov    $0x6572,%eax
  movb   $0x73,0x2(%r13)
  lea    0x3(%r15),%ebx
  add    $0x3,%r14d
  mov    %ax,0x0(%r13)
  mov    %rbx,%r15
  add    (%rsp),%rbx
L106:
  movzbl (%rbx),%r12d
  test   %r12b,%r12b
  je     L429
L549:
  mov    %r14d,%r13d
  add    %rbp,%r13
  cmp    $0x69,%r12b
  je     L19
  mov    $0x7,%edx
  lea    D170(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L466
  movzbl (%rbx),%r8d
  cmp    $0x72,%r8d
  je     L217
L508:
  cmp    $0x61,%r8d
  jne    L885
  cmpb   $0x6e,0x1(%rbx)
  jne    L885
  cmpb   $0x73,0x2(%rbx)
  je     L405
  nop
L885:
  mov    $0x4,%edx
  lea    D173(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r8d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r8d
  lea    0x1(%r14),%r9d
  test   %eax,%eax
  jne    L521
  lea    0x4(%r15),%ebx
  movb   $0x61,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  movzbl (%rbx),%r12d
  test   %r12b,%r12b
  jne    L549
  nopw   0x0(%rax,%rax,1)
L429:
  mov    %r14d,%r8d
  add    %r8,%rbp
L441:
  movb   $0x0,0x0(%rbp)
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L466:
  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    L106
  nopl   0x0(%rax,%rax,1)
L19:
  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    L614
  movzbl (%r12),%ecx
  mov    %ecx,%esi
  and    $0xfffffff7,%esi
  cmp    $0x21,%sil
  je     L614
  test   %cl,%cl
  jne    L529
L614:
  movzbl (%rbx),%ecx
  mov    %eax,%r14d
  mov    %r12,%rbx
  mov    %cl,0x0(%r13)
  jmp    L106
  nopl   0x0(%rax)
L521:
  cmp    $0x73,%r8d
  je     L552
L409:
  cmp    $0x63,%r8d
  jne    L157
  cmpb   $0x6f,0x1(%rbx)
  jne    L157
  cmpb   $0x73,0x2(%rbx)
  jne    L157
  lea    0x3(%r15),%ebx
  movb   $0x63,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L552:
  cmpb   $0x69,0x1(%rbx)
  je     L437
L119:
  cmp    $0x73,%r8d
  jne    L409
  cmpb   $0x65,0x1(%rbx)
  jne    L409
  cmpb   $0x6e,0x2(%rbx)
  je     L1000
  jmp    L409
  nopw   0x0(%rax,%rax,1)
L437:
  cmpb   $0x6e,0x2(%rbx)
  jne    L119
L1000:
  lea    0x3(%r15),%ebx
  movb   $0x62,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
  xchg   %ax,%ax
L529:
  movzbl (%rbx),%ecx
  add    $0x2,%r14d
  mov    %r12,%rbx
  mov    %cl,0x0(%r13)
  movb   $0x2a,0x0(%rbp,%rax,1)
  jmp    L106
  nopl   0x0(%rax,%rax,1)
L157:
  cmp    $0x74,%r8d
  je     L488
L247:
  mov    $0x4,%edx
  lea    D88(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  mov    %r8d,0x10(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  je     L37
  mov    $0x4,%edx
  lea    D6(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  mov    0x10(%rsp),%r8d
  test   %eax,%eax
  je     L37
  mov    $0x4,%edx
  lea    D182(%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    L454
  lea    0x4(%r15),%ebx
  movb   $0x66,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L488:
  cmpb   $0x61,0x1(%rbx)
  jne    L247
  cmpb   $0x6e,0x2(%rbx)
  jne    L247
  lea    0x3(%r15),%ebx
  movb   $0x64,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L37:
  lea    0x4(%r15),%ebx
  movb   $0x65,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L454:
  mov    $0x4,%edx
  lea    D32(%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    L25
  lea    0x4(%r15),%ebx
  movb   $0x67,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L25:
  cmp    $0x65,%r8d
  jne    L338
  cmpb   $0x78,0x1(%rbx)
  jne    L338
  cmpb   $0x70,0x2(%rbx)
  jne    L338
  lea    0x3(%r15),%ebx
  movb   $0x68,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L338:
  cmpb   $0x6c,(%rbx)
  jne    L706
  cmpb   $0x6e,0x1(%rbx)
  jne    L706
  lea    0x2(%r15),%ebx
  movb   $0x7a,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L706:
  mov    $0x3,%edx
  lea    D123(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L28
  lea    0x3(%r15),%ebx
  movb   $0x6b,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L28:
  mov    $0x2,%edx
  lea    D109(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L490
  lea    0x2(%r15),%ebx
  movb   $0x6c,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L490:
  mov    $0x2,%edx
  lea    D27(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L1051
  lea    0x2(%r15),%ebx
  movb   $0x6d,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L1051:
  mov    $0x2,%edx
  lea    D125(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L1029
  lea    0x2(%r15),%ebx
  movb   $0x6e,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L1029:
  mov    $0x3,%edx
  lea    D12(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L213
  lea    0x3(%r15),%ebx
  movb   $0x6f,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L213:
  mov    $0x3,%edx
  lea    D86(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L983
  lea    0x3(%r15),%ebx
  movb   $0x70,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L983:
  mov    $0x3,%edx
  lea    D17(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L314
  lea    0x3(%r15),%ebx
  movb   $0x71,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L314:
  mov    $0x3,%edx
  lea    D146(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L656
  lea    0x3(%r15),%ebx
  movb   $0x72,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L656:
  mov    $0x6,%edx
  lea    D192(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L535
  lea    0x6(%r15),%ebx
  movb   $0x77,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L535:
  mov    $0x9,%edx
  lea    D39(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L658
  lea    0x9(%r15),%ebx
  movb   $0x74,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L658:
  mov    $0x5,%edx
  lea    D42(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L39
  lea    0x5(%r15),%ebx
  movb   $0x75,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L39:
  mov    $0x4,%edx
  lea    D196(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L1014
  lea    0x4(%r15),%ebx
  movb   $0x76,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L1014:
  mov    $0x5,%edx
  lea    D107(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L756
  lea    0x5(%r15),%ebx
  movb   $0x73,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L756:
  mov    $0x2,%edx
  lea    D38(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L263
  lea    0x2(%r15),%ebx
  movb   $0x55,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L263:
  cmp    $0x65,%r12b
  je     L758
  mov    $0x2,%edx
  lea    D87(%rip),%rsi
  mov    %rbx,%rdi
  mov    %r9d,0xc(%rsp)
  call   <strncmp@plt>
  mov    0xc(%rsp),%r9d
  test   %eax,%eax
  jne    L638
  lea    0x2(%r15),%ebx
  movb   $0x57,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L758:
  lea    0x1(%r15),%ebx
  movb   $0x56,0x0(%r13)
  mov    %r9d,%r14d
  mov    %rbx,%r15
  add    (%rsp),%rbx
  jmp    L106
L638:
  mov    %r9d,%eax
  add    %rbp,%rax
  mov    %rax,0x10(%rsp)
  test   %r15d,%r15d
  jne    L20
  cmp    $0x2d,%r12b
  je     L877
L20:
  lea    0x1(%r15),%ebx
  mov    %ebx,0xc(%rsp)
  add    (%rsp),%rbx
  cmp    $0x28,%r12b
  je     L868
  cmp    $0x29,%r12b
  je     L585
L475:
  movsbl %r12b,%r15d
  mov    %r9d,0x18(%rsp)
  mov    %r15d,%edi
  call   <isalpha@plt>
  mov    0x18(%rsp),%r9d
  test   %eax,%eax
  jne    L925
  sub    $0x30,%r15d
  cmp    $0x9,%r15d
  ja     L500
  movzbl (%rbx),%eax
  cmp    $0x28,%al
  je     L401
  movsbl %al,%edi
  mov    %r9d,0x18(%rsp)
  call   <isalpha@plt>
  test   %eax,%eax
  jne    L401
L129:
  mov    0x18(%rsp),%r9d
L500:
  mov    %r12b,0x0(%r13)
  mov    0xc(%rsp),%r15d
  mov    %r9d,%r14d
  jmp    L106
L877:
  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    L106
L585:
  cmpb   $0x28,(%rbx)
  je     L181
  mov    $0x29,%edi
  mov    %r9d,0x18(%rsp)
  call   <isalpha@plt>
  mov    0x18(%rsp),%r9d
  test   %eax,%eax
  je     L518
  mov    $0x29,%r15d
L925:
  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    L833
  cmp    $0x28,%dl
  je     L833
  cmp    $0x29,%r12b
  je     L219
  movsbl %r12b,%eax
  sub    $0x30,%eax
  cmp    $0x9,%eax
  jbe    L852
L219:
  movsbl (%rbx),%edx
L254:
  sub    $0x30,%edx
  cmp    $0x9,%edx
  ja     L373
L401:
  mov    0x10(%rsp),%rax
  mov    %r12b,0x0(%r13)
  add    $0x2,%r14d
  mov    0xc(%rsp),%r15d
  movb   $0x2a,(%rax)
  jmp    L106
L373:
  mov    %r15d,%edi
  mov    %r9d,0x10(%rsp)
  call   <toupper@plt>
  mov    0x10(%rsp),%r14d
  mov    0xc(%rsp),%r15d
  mov    %al,0x0(%r13)
  jmp    L106
L868:
  cmpb   $0x2d,(%rbx)
  jne    L475
  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    L106
L518:
  movsbl (%rbx),%edi
  mov    %r9d,0x18(%rsp)
  call   <isalpha@plt>
  test   %eax,%eax
  je     L129
L181:
  mov    0x10(%rsp),%rax
  movb   $0x29,0x0(%r13)
  add    $0x2,%r14d
  mov    0xc(%rsp),%r15d
  movb   $0x2a,(%rax)
  jmp    L106
L833:
  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    L106
L852:
  movsbl (%rbx),%edx
  mov    %r9d,0x1c(%rsp)
  mov    %edx,%edi
  mov    %edx,0x18(%rsp)
  call   <isalpha@plt>
  test   %eax,%eax
  jne    L401
  mov    0x18(%rsp),%edx
  mov    0x1c(%rsp),%r9d
  jmp    L254
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D170
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D173
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D88
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D6
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D182
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D32
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D123
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D109
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D27
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D125
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D12
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D86
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D17
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D146
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D192
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D39
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D42
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D196
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D107
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D38
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D87
type_guessed: string

tool: D170: resComp

tool: D173: sqrt

tool: D88: asin

tool: D6: asen

tool: D182: acos

tool: D32: atan

tool: D123: log

tool: D109: sh

tool: D27: ch

tool: D125: th

tool: D12: ash

tool: D86: ach

tool: D17: ath

tool: D146: pow

tool: D192: gamma'

tool: D39: factorial

tool: D42: betha

tool: D196: prim

tool: D107: gamma

tool: D38: pi

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