user: Converte this assembly snippet into its equivalent C code:

```asm
<codon_table>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  lea    D115(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x41,%eax
  test   %edx,%edx
  je     L304
  lea    D543(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x41,%eax
  test   %edx,%edx
  je     L304
  lea    D536(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x41,%eax
  test   %edx,%edx
  je     L304
  lea    D505(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x41,%eax
  test   %edx,%edx
  je     L304
  lea    D595(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x52,%eax
  test   %edx,%edx
  je     L304
  lea    D497(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x52,%eax
  test   %edx,%edx
  je     L304
  lea    D620(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x52,%eax
  test   %edx,%edx
  je     L304
  lea    D272(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x52,%eax
  test   %edx,%edx
  je     L304
  lea    D338(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x52,%eax
  test   %edx,%edx
  je     L304
  lea    D596(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x52,%eax
  test   %edx,%edx
  je     L304
  lea    D571(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4e,%eax
  test   %edx,%edx
  je     L304
  lea    D398(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4e,%eax
  test   %edx,%edx
  je     L304
  lea    D236(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x44,%eax
  test   %edx,%edx
  je     L304
  lea    D369(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x44,%eax
  test   %edx,%edx
  je     L304
  lea    D619(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x43,%eax
  test   %edx,%edx
  je     L304
  lea    D55(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x43,%eax
  test   %edx,%edx
  je     L304
  lea    D630(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x51,%eax
  test   %edx,%edx
  je     L304
  lea    D557(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x51,%eax
  test   %edx,%edx
  je     L304
  lea    D253(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x45,%eax
  test   %edx,%edx
  je     L304
  lea    D362(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x45,%eax
  test   %edx,%edx
  je     L304
  lea    D41(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x47,%eax
  test   %edx,%edx
  je     L304
  lea    D59(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x47,%eax
  test   %edx,%edx
  je     L304
  lea    D52(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x47,%eax
  test   %edx,%edx
  je     L304
  lea    D468(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x47,%eax
  test   %edx,%edx
  je     L304
  lea    D568(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x48,%eax
  test   %edx,%edx
  je     L304
  lea    D144(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x48,%eax
  test   %edx,%edx
  je     L304
  lea    D110(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x49,%eax
  test   %edx,%edx
  je     L304
  lea    D255(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x49,%eax
  test   %edx,%edx
  je     L304
  lea    D322(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x49,%eax
  test   %edx,%edx
  je     L304
  lea    D551(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4d,%eax
  test   %edx,%edx
  je     L304
  lea    D488(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4c,%eax
  test   %edx,%edx
  je     L304
  lea    D457(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4c,%eax
  test   %edx,%edx
  je     L304
  lea    D580(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4c,%eax
  test   %edx,%edx
  je     L304
  lea    D413(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4c,%eax
  test   %edx,%edx
  je     L304
  lea    D73(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4c,%eax
  test   %edx,%edx
  je     L304
  lea    D599(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4c,%eax
  test   %edx,%edx
  je     L304
  lea    D615(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4b,%eax
  test   %edx,%edx
  je     L304
  lea    D412(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x4b,%eax
  test   %edx,%edx
  je     L304
  lea    D556(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x46,%eax
  test   %edx,%edx
  je     L304
  lea    D587(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x46,%eax
  test   %edx,%edx
  je     L304
  lea    D334(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x50,%eax
  test   %edx,%edx
  je     L304
  lea    D461(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x50,%eax
  test   %edx,%edx
  je     L304
  lea    D348(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x50,%eax
  test   %edx,%edx
  je     L304
  lea    D607(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x50,%eax
  test   %edx,%edx
  je     L304
  lea    D529(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x53,%eax
  test   %edx,%edx
  je     L304
  lea    D203(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x53,%eax
  test   %edx,%edx
  je     L304
  lea    D481(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x53,%eax
  test   %edx,%edx
  je     L304
  lea    D486(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x53,%eax
  test   %edx,%edx
  je     L304
  lea    D372(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x53,%eax
  test   %edx,%edx
  je     L304
  lea    D522(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x53,%eax
  test   %edx,%edx
  je     L304
  lea    D531(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x54,%eax
  test   %edx,%edx
  je     L304
  lea    D84(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x54,%eax
  test   %edx,%edx
  je     L304
  lea    D37(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x54,%eax
  test   %edx,%edx
  je     L304
  lea    D494(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x54,%eax
  test   %edx,%edx
  je     L304
  lea    D440(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x57,%eax
  test   %edx,%edx
  je     L304
  lea    D228(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x59,%eax
  test   %edx,%edx
  je     L304
  lea    D632(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x59,%eax
  test   %edx,%edx
  je     L304
  lea    D193(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x56,%eax
  test   %edx,%edx
  je     L304
  lea    D482(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x56,%eax
  test   %edx,%edx
  je     L304
  lea    D532(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x56,%eax
  test   %edx,%edx
  je     L304
  lea    D245(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x56,%eax
  test   %edx,%edx
  je     L304
  lea    D130(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x2a,%eax
  test   %edx,%edx
  je     L304
  lea    D113(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x2a,%eax
  test   %edx,%edx
  je     L304
  lea    D101(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%eax
  sbb    %eax,%eax
  and    $0xffffffd2,%eax
  add    $0x58,%eax
L304:
  pop    %rbx
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D115
type_infered: string
name: disassemble_data
arguments: tag: D543
type_infered: string
name: disassemble_data
arguments: tag: D536
type_infered: string
name: disassemble_data
arguments: tag: D505
type_infered: string
name: disassemble_data
arguments: tag: D595
type_infered: string
name: disassemble_data
arguments: tag: D497
type_infered: string
name: disassemble_data
arguments: tag: D620
type_infered: string
name: disassemble_data
arguments: tag: D272
type_infered: string
name: disassemble_data
arguments: tag: D338
type_infered: string
name: disassemble_data
arguments: tag: D596
type_infered: string
name: disassemble_data
arguments: tag: D571
type_infered: string
name: disassemble_data
arguments: tag: D398
type_infered: string
name: disassemble_data
arguments: tag: D236
type_infered: string
name: disassemble_data
arguments: tag: D369
type_infered: string
name: disassemble_data
arguments: tag: D619
type_infered: string
name: disassemble_data
arguments: tag: D55
type_infered: string
name: disassemble_data
arguments: tag: D630
type_infered: string
name: disassemble_data
arguments: tag: D557
type_infered: string
name: disassemble_data
arguments: tag: D253
type_infered: string
name: disassemble_data
arguments: tag: D362
type_infered: string
name: disassemble_data
arguments: tag: D41
type_infered: string
name: disassemble_data
arguments: tag: D59
type_infered: string
name: disassemble_data
arguments: tag: D52
type_infered: string
name: disassemble_data
arguments: tag: D468
type_infered: string
name: disassemble_data
arguments: tag: D568
type_infered: string
name: disassemble_data
arguments: tag: D144
type_infered: string
name: disassemble_data
arguments: tag: D110
type_infered: string
name: disassemble_data
arguments: tag: D255
type_infered: string
name: disassemble_data
arguments: tag: D322
type_infered: string
name: disassemble_data
arguments: tag: D551
type_infered: string
name: disassemble_data
arguments: tag: D488
type_infered: string
name: disassemble_data
arguments: tag: D457
type_infered: string
name: disassemble_data
arguments: tag: D580
type_infered: string
name: disassemble_data
arguments: tag: D413
type_infered: string
name: disassemble_data
arguments: tag: D73
type_infered: string
name: disassemble_data
arguments: tag: D599
type_infered: string
name: disassemble_data
arguments: tag: D615
type_infered: string
name: disassemble_data
arguments: tag: D412
type_infered: string
name: disassemble_data
arguments: tag: D556
type_infered: string
name: disassemble_data
arguments: tag: D587
type_infered: string
name: disassemble_data
arguments: tag: D334
type_infered: string
name: disassemble_data
arguments: tag: D461
type_infered: string
name: disassemble_data
arguments: tag: D348
type_infered: string
name: disassemble_data
arguments: tag: D607
type_infered: string
name: disassemble_data
arguments: tag: D529
type_infered: string
name: disassemble_data
arguments: tag: D203
type_infered: string
name: disassemble_data
arguments: tag: D481
type_infered: string
name: disassemble_data
arguments: tag: D486
type_infered: string
name: disassemble_data
arguments: tag: D372
type_infered: string
name: disassemble_data
arguments: tag: D522
type_infered: string
name: disassemble_data
arguments: tag: D531
type_infered: string
name: disassemble_data
arguments: tag: D84
type_infered: string
name: disassemble_data
arguments: tag: D37
type_infered: string
name: disassemble_data
arguments: tag: D494
type_infered: string
name: disassemble_data
arguments: tag: D440
type_infered: string
name: disassemble_data
arguments: tag: D228
type_infered: string
name: disassemble_data
arguments: tag: D632
type_infered: string
name: disassemble_data
arguments: tag: D193
type_infered: string
name: disassemble_data
arguments: tag: D482
type_infered: string
name: disassemble_data
arguments: tag: D532
type_infered: string
name: disassemble_data
arguments: tag: D245
type_infered: string
name: disassemble_data
arguments: tag: D130
type_infered: string
name: disassemble_data
arguments: tag: D113
type_infered: string
name: disassemble_data
arguments: tag: D101
type_infered: string

tool: D115: GCT

tool: D543: GCC

tool: D536: GCA

tool: D505: GCG

tool: D595: CGT

tool: D497: CGC

tool: D620: CGA

tool: D272: CGG

tool: D338: AGA

tool: D596: AGG

tool: D571: AAT

tool: D398: AAC

tool: D236: GAT

tool: D369: GAC

tool: D619: TGT

tool: D55: TGC

tool: D630: CAA

tool: D557: CAG

tool: D253: GAA

tool: D362: GAG

tool: D41: GGT

tool: D59: GGC

tool: D52: GGA

tool: D468: GGG

tool: D568: CAT

tool: D144: CAC

tool: D110: ATT

tool: D255: ATC

tool: D322: ATA

tool: D551: ATG

tool: D488: TTA

tool: D457: TTG

tool: D580: CTT

tool: D413: CTC

tool: D73: CTA

tool: D599: CTG

tool: D615: AAA

tool: D412: AAG

tool: D556: TTT

tool: D587: TTC

tool: D334: CCT

tool: D461: CCC

tool: D348: CCA

tool: D607: CCG

tool: D529: TCT

tool: D203: TCC

tool: D481: TCA

tool: D486: TCG

tool: D372: AGT

tool: D522: AGC

tool: D531: ACT

tool: D84: ACC

tool: D37: ACA

tool: D494: ACG

tool: D440: TGG

tool: D228: TAT

tool: D632: TAC

tool: D193: GTT

tool: D482: GTC

tool: D532: GTA

tool: D245: GTG

tool: D130: TAG

tool: D113: TGA

tool: D101: TAA

assistant: ```c
char codon_table(char *temp) {
  char pep;
  if (strcmp(temp, "GCT") == 0 || strcmp(temp, "GCC") == 0 || strcmp(temp, "GCA") == 0 || strcmp(temp, "GCG") == 0) {
    pep = 'A';
  } else if (strcmp(temp, "CGT") == 0 || strcmp(temp, "CGC") == 0 || strcmp(temp, "CGA") == 0 || strcmp(temp, "CGG") == 0 || strcmp(temp, "AGA") == 0 || strcmp(temp, "AGG") == 0) {
    pep = 'R';
  } else if (strcmp(temp, "AAT") == 0 || strcmp(temp, "AAC") == 0) {
    pep = 'N';
  } else if (strcmp(temp, "GAT") == 0 || strcmp(temp, "GAC") == 0) {
    pep = 'D';
  } else if (strcmp(temp, "TGT") == 0 || strcmp(temp, "TGC") == 0) {
    pep = 'C';
  } else if (strcmp(temp, "CAA") == 0 || strcmp(temp, "CAG") == 0) {
    pep = 'Q';
  } else if (strcmp(temp, "GAA") == 0 || strcmp(temp, "GAG") == 0) {
    pep = 'E';
  } else if (strcmp(temp, "GGT") == 0 || strcmp(temp, "GGC") == 0 || strcmp(temp, "GGA") == 0 || strcmp(temp, "GGG") == 0) {
    pep = 'G';
  } else if (strcmp(temp, "CAT") == 0 || strcmp(temp, "CAC") == 0) {
    pep = 'H';
  } else if (strcmp(temp, "ATT") == 0 || strcmp(temp, "ATC") == 0 || strcmp(temp, "ATA") == 0) {
    pep = 'I';
  } else if (strcmp(temp, "ATG") == 0) {
    pep = 'M';
  } else if (strcmp(temp, "TTA") == 0 || strcmp(temp, "TTG") == 0 || strcmp(temp, "CTT") == 0 || strcmp(temp, "CTC") == 0 || strcmp(temp, "CTA") == 0 || strcmp(temp, "CTG") == 0) {
    pep = 'L';
  } else if (strcmp(temp, "AAA") == 0 || strcmp(temp, "AAG") == 0) {
    pep = 'K';
  } else if (strcmp(temp, "ATG") == 0) {
    pep = 'M';
  } else if (strcmp(temp, "TTT") == 0 || strcmp(temp, "TTC") == 0) {
    pep = 'F';
  } else if (strcmp(temp, "CCT") == 0 || strcmp(temp, "CCC") == 0 || strcmp(temp, "CCA") == 0 || strcmp(temp, "CCG") == 0) {
    pep = 'P';
  } else if (strcmp(temp, "TCT") == 0 || strcmp(temp, "TCC") == 0 || strcmp(temp, "TCA") == 0 || strcmp(temp, "TCG") == 0 || strcmp(temp, "AGT") == 0 || strcmp(temp, "AGC") == 0) {
    pep = 'S';
  } else if (strcmp(temp, "ACT") == 0 || strcmp(temp, "ACC") == 0 || strcmp(temp, "ACA") == 0 || strcmp(temp, "ACG") == 0) {
    pep = 'T';
  } else if (strcmp(temp, "TGG") == 0) {
    pep = 'W';
  } else if (strcmp(temp, "TAT") == 0 || strcmp(temp, "TAC") == 0) {
    pep = 'Y';
  } else if (strcmp(temp, "GTT") == 0 || strcmp(temp, "GTC") == 0 || strcmp(temp, "GTA") == 0 || strcmp(temp, "GTG") == 0) {
    pep = 'V';
  } else if (strcmp(temp, "TAG") == 0 || strcmp(temp, "TGA") == 0 || strcmp(temp, "TAA") == 0) {
    pep = '*';
  } else {
    if (temp[0] == 'N' || temp[1] == 'N' || temp[2] == 'N') {
      pep = 'X';
    } else {
      pep = 'X';
    }
  }
  return pep;
}
```