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

```asm
<tt_error_txt>:
  endbr64
  add    $0x17,%esi
  movb   $0x0,(%rdi)
  cmp    $0x17,%esi
  ja     L5
  lea    D164(%rip),%rdx
  movslq (%rdx,%rsi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  mov    %rdi,%rsi
  lea    D31(%rip),%rdi
  jmp    1050 <s_let@plt>
  nopw   0x0(%rax,%rax,1)
  mov    %rdi,%rsi
  lea    D92(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D207(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D71(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D171(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D112(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D130(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D28(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D106(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D212(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D184(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D42(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D20(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D175(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D7(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D120(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D38(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D230(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D15(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D6(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D117(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D140(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
  mov    %rdi,%rsi
  lea    D0(%rip),%rdi
  jmp    1050 <s_let@plt>
  nop
L5:
  mov    %rdi,%rax
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D31
type: string
name: retrieve_data
arguments: data_tag: D92
type: string
name: retrieve_data
arguments: data_tag: D207
type: string
name: retrieve_data
arguments: data_tag: D71
type: string
name: retrieve_data
arguments: data_tag: D171
type: string
name: retrieve_data
arguments: data_tag: D112
type: string
name: retrieve_data
arguments: data_tag: D130
type: string
name: retrieve_data
arguments: data_tag: D28
type: string
name: retrieve_data
arguments: data_tag: D106
type: string
name: retrieve_data
arguments: data_tag: D212
type: string
name: retrieve_data
arguments: data_tag: D184
type: string
name: retrieve_data
arguments: data_tag: D42
type: string
name: retrieve_data
arguments: data_tag: D20
type: string
name: retrieve_data
arguments: data_tag: D175
type: string
name: retrieve_data
arguments: data_tag: D7
type: string
name: retrieve_data
arguments: data_tag: D120
type: string
name: retrieve_data
arguments: data_tag: D38
type: string
name: retrieve_data
arguments: data_tag: D230
type: string
name: retrieve_data
arguments: data_tag: D15
type: string
name: retrieve_data
arguments: data_tag: D6
type: string
name: retrieve_data
arguments: data_tag: D117
type: string
name: retrieve_data
arguments: data_tag: D140
type: string
name: retrieve_data
arguments: data_tag: D0
type: string

tool: D31: Can't open file

tool: D92: Unspecified non-fatal error.

tool: D207: Unspecified fatal error.

tool: D71: Not enough memory.

tool: D171: Invalid topology.

tool: D112: Not found by lookup.

tool: D130: Unexpected EOF.

tool: D28: Too many topologies.

tool: D106: Double defined topology name.

tool: D212: Token conversion error.

tool: D184: Empty tables not allowed.

tool: D42: Can't initialize a scanner.

tool: D20: Call getToken without initializing of a scanner.

tool: D175: Two topologies in the table are coincide after reduction.

tool: D7: Too many alternative momenta sets.

tool: D120: Too long string.

tool: D38: Double defined translation token.

tool: D230: Undefined topology name.

tool: D15: Invalid re-ordering set.

tool: D6: Double defined remark name.

tool: D117: Empty name is not allowed.

tool: D140: Unexpected '='.

tool: D0: Can't write to disk.

assistant: ```c
char *tt_error_txt(char *arg, int i) {
  *arg = '\0';
  switch (i) {
  case 0:
    return s_let("Can't open file", arg);
  case -1:
    return s_let("Unspecified non-fatal error.", arg);
  case -2:
    return s_let("Unspecified fatal error.", arg);
  case -3:
    return s_let("Not enough memory.", arg);
  case -4:
    return s_let("Invalid topology.", arg);
  case -5:
    return s_let("Not found by lookup.", arg);
  case -7:
    return s_let("Unexpected EOF.", arg);
  case -8:
    return s_let("Too many topologies.", arg);
  case -9:
    return s_let("Double defined topology name.", arg);
  case -10:
    return s_let("Token conversion error.", arg);
  case -11:
    return s_let("Empty tables not allowed.", arg);
  case -12:
    return s_let("Can't initialize a scanner.", arg);
  case -13:
    return s_let("Call getToken without initializing of a scanner.", arg);
  case -14:
    return s_let("Two topologies in the table are coincide after reduction.", arg);
  case -15:
    return s_let("Too many alternative momenta sets.", arg);
  case -16:
    return s_let("Too long string.", arg);
  case -17:
    return s_let("Double defined translation token.", arg);
  case -18:
    return s_let("Undefined topology name.", arg);
  case -19:
    return s_let("Invalid re-ordering set.", arg);
  case -20:
    return s_let("Double defined remark name.", arg);
  case -21:
    return s_let("Empty name is not allowed.", arg);
  case -22:
    return s_let("Unexpected '='.", arg);
  case -23:
    return s_let("Can't write to disk.", arg);
  }
  return arg;
}
```