user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<codon_table>:
  endbr64
  push   %r12
  lea    D118(%rip),%rsi
  mov    $0x41,%r12d
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x8,%rsp
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D50(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L439
L245:
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
  nopw   0x0(%rax,%rax,1)
L439:
  lea    D493(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D419(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D574(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x52,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D340(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D168(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D479(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D256(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D324(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D135(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4e,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D3(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D149(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x44,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D457(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D57(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x43,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D516(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D412(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x51,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D131(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D386(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x45,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D211(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D32(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x47,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D387(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D343(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D302(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D15(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x48,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D1(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D279(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x49,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D156(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D205(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D414(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4d,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D500(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4c,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D523(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D304(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D357(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D120(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D270(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D104(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4b,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D106(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D215(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x46,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D233(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D543(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x50,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D305(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D475(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D538(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D583(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x53,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D17(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D48(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D329(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D319(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D421(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D16(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x54,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D526(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D182(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D602(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D519(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x57,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D379(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x59,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D139(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D567(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x56,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D94(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D69(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D362(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D26(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x2a,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D306(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L245
  lea    D23(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%eax
  sbb    %r12d,%r12d
  and    $0xffffffd2,%r12d
  add    $0x58,%r12d
  jmp    L245
```

tool_calls: name: unpack_data
arguments: data_tag: D118
datatype: string
name: unpack_data
arguments: data_tag: D50
datatype: string
name: unpack_data
arguments: data_tag: D493
datatype: string
name: unpack_data
arguments: data_tag: D419
datatype: string
name: unpack_data
arguments: data_tag: D574
datatype: string
name: unpack_data
arguments: data_tag: D340
datatype: string
name: unpack_data
arguments: data_tag: D168
datatype: string
name: unpack_data
arguments: data_tag: D479
datatype: string
name: unpack_data
arguments: data_tag: D256
datatype: string
name: unpack_data
arguments: data_tag: D324
datatype: string
name: unpack_data
arguments: data_tag: D135
datatype: string
name: unpack_data
arguments: data_tag: D3
datatype: string
name: unpack_data
arguments: data_tag: D149
datatype: string
name: unpack_data
arguments: data_tag: D457
datatype: string
name: unpack_data
arguments: data_tag: D57
datatype: string
name: unpack_data
arguments: data_tag: D516
datatype: string
name: unpack_data
arguments: data_tag: D412
datatype: string
name: unpack_data
arguments: data_tag: D131
datatype: string
name: unpack_data
arguments: data_tag: D386
datatype: string
name: unpack_data
arguments: data_tag: D211
datatype: string
name: unpack_data
arguments: data_tag: D32
datatype: string
name: unpack_data
arguments: data_tag: D387
datatype: string
name: unpack_data
arguments: data_tag: D343
datatype: string
name: unpack_data
arguments: data_tag: D302
datatype: string
name: unpack_data
arguments: data_tag: D15
datatype: string
name: unpack_data
arguments: data_tag: D1
datatype: string
name: unpack_data
arguments: data_tag: D279
datatype: string
name: unpack_data
arguments: data_tag: D156
datatype: string
name: unpack_data
arguments: data_tag: D205
datatype: string
name: unpack_data
arguments: data_tag: D414
datatype: string
name: unpack_data
arguments: data_tag: D500
datatype: string
name: unpack_data
arguments: data_tag: D523
datatype: string
name: unpack_data
arguments: data_tag: D304
datatype: string
name: unpack_data
arguments: data_tag: D357
datatype: string
name: unpack_data
arguments: data_tag: D120
datatype: string
name: unpack_data
arguments: data_tag: D270
datatype: string
name: unpack_data
arguments: data_tag: D104
datatype: string
name: unpack_data
arguments: data_tag: D106
datatype: string
name: unpack_data
arguments: data_tag: D215
datatype: string
name: unpack_data
arguments: data_tag: D233
datatype: string
name: unpack_data
arguments: data_tag: D543
datatype: string
name: unpack_data
arguments: data_tag: D305
datatype: string
name: unpack_data
arguments: data_tag: D475
datatype: string
name: unpack_data
arguments: data_tag: D538
datatype: string
name: unpack_data
arguments: data_tag: D583
datatype: string
name: unpack_data
arguments: data_tag: D17
datatype: string
name: unpack_data
arguments: data_tag: D48
datatype: string
name: unpack_data
arguments: data_tag: D329
datatype: string
name: unpack_data
arguments: data_tag: D319
datatype: string
name: unpack_data
arguments: data_tag: D421
datatype: string
name: unpack_data
arguments: data_tag: D16
datatype: string
name: unpack_data
arguments: data_tag: D526
datatype: string
name: unpack_data
arguments: data_tag: D182
datatype: string
name: unpack_data
arguments: data_tag: D602
datatype: string
name: unpack_data
arguments: data_tag: D519
datatype: string
name: unpack_data
arguments: data_tag: D379
datatype: string
name: unpack_data
arguments: data_tag: D139
datatype: string
name: unpack_data
arguments: data_tag: D567
datatype: string
name: unpack_data
arguments: data_tag: D94
datatype: string
name: unpack_data
arguments: data_tag: D69
datatype: string
name: unpack_data
arguments: data_tag: D362
datatype: string
name: unpack_data
arguments: data_tag: D26
datatype: string
name: unpack_data
arguments: data_tag: D306
datatype: string
name: unpack_data
arguments: data_tag: D23
datatype: string

tool: D118: GCT

tool: D50: GCC

tool: D493: GCA

tool: D419: GCG

tool: D574: CGT

tool: D340: CGC

tool: D168: CGA

tool: D479: CGG

tool: D256: AGA

tool: D324: AGG

tool: D135: AAT

tool: D3: AAC

tool: D149: GAT

tool: D457: GAC

tool: D57: TGT

tool: D516: TGC

tool: D412: CAA

tool: D131: CAG

tool: D386: GAA

tool: D211: GAG

tool: D32: GGT

tool: D387: GGC

tool: D343: GGA

tool: D302: GGG

tool: D15: CAT

tool: D1: CAC

tool: D279: ATT

tool: D156: ATC

tool: D205: ATA

tool: D414: ATG

tool: D500: TTA

tool: D523: TTG

tool: D304: CTT

tool: D357: CTC

tool: D120: CTA

tool: D270: CTG

tool: D104: AAA

tool: D106: AAG

tool: D215: TTT

tool: D233: TTC

tool: D543: CCT

tool: D305: CCC

tool: D475: CCA

tool: D538: CCG

tool: D583: TCT

tool: D17: TCC

tool: D48: TCA

tool: D329: TCG

tool: D319: AGT

tool: D421: AGC

tool: D16: ACT

tool: D526: ACC

tool: D182: ACA

tool: D602: ACG

tool: D519: TGG

tool: D379: TAT

tool: D139: TAC

tool: D567: GTT

tool: D94: GTC

tool: D69: GTA

tool: D362: GTG

tool: D26: TAG

tool: D306: TGA

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