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

```asm
<rpn_type_to_string>:
  endbr64
  lea    0x2(%rdi),%eax
  cmp    $0x15,%eax
  ja     L0
  lea    D51(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  lea    D69(%rip),%rax
  ret
  lea    D24(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D74(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D72(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D112(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D59(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D56(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D63(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D186(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D220(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D191(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D198(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D134(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D40(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D58(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D7(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D75(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D144(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D139(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D14(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D61(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
L0:
  push   %rbx
  lea    D13(%rip),%rbx
  mov    %edi,%edx
  lea    D23(%rip),%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rax
  pop    %rbx
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D69
datatype: string
name: unpack_data
arguments: data_tag: D24
datatype: string
name: unpack_data
arguments: data_tag: D74
datatype: string
name: unpack_data
arguments: data_tag: D72
datatype: string
name: unpack_data
arguments: data_tag: D112
datatype: string
name: unpack_data
arguments: data_tag: D59
datatype: string
name: unpack_data
arguments: data_tag: D56
datatype: string
name: unpack_data
arguments: data_tag: D63
datatype: string
name: unpack_data
arguments: data_tag: D186
datatype: string
name: unpack_data
arguments: data_tag: D220
datatype: string
name: unpack_data
arguments: data_tag: D191
datatype: string
name: unpack_data
arguments: data_tag: D198
datatype: string
name: unpack_data
arguments: data_tag: D134
datatype: string
name: unpack_data
arguments: data_tag: D40
datatype: string
name: unpack_data
arguments: data_tag: D58
datatype: string
name: unpack_data
arguments: data_tag: D7
datatype: string
name: unpack_data
arguments: data_tag: D75
datatype: string
name: unpack_data
arguments: data_tag: D144
datatype: string
name: unpack_data
arguments: data_tag: D139
datatype: string
name: unpack_data
arguments: data_tag: D14
datatype: string
name: unpack_data
arguments: data_tag: D61
datatype: string
name: unpack_data
arguments: data_tag: D23
datatype: string

tool: D69: ANY_TYPE

tool: D24: OPAIR

tool: D74: TUPLE

tool: D72: LIST

tool: D112: TEXT_FILE

tool: D59: TEST_SET

tool: D56: TEST_ELT

tool: D63: TRAINING_SET

tool: D186: TRAINING_ELT

tool: D220: FILENAME

tool: D191: NEURAL_MLP

tool: D198: START_MARKER

tool: D134: LITTERAL

tool: D40: MATRIX

tool: D58: VECTOR_3

tool: D7: STRING

tool: D75: DOUBLE

tool: D144: INT

tool: D139: NIL

tool: D14: UNDEFINED

tool: D61: UNUSED

tool: D23: ??? (%d)

assistant: ```c
char *rpn_type_to_string(int type) {
  char *_str_type;
  static char _err_mesg[32];
  switch (type) {
  case (-2):
    _str_type = "ANY_TYPE";
    break;
  case (-1):
    _str_type = "UNUSED";
    break;
  case (0):
    _str_type = "UNDEFINED";
    break;
  case (1):
    _str_type = "NIL";
    break;
  case (2):
    _str_type = "INT";
    break;
  case (4):
    _str_type = "DOUBLE";
    break;
  case (5):
    _str_type = "STRING";
    break;
  case (6):
    _str_type = "VECTOR_3";
    break;
  case (7):
    _str_type = "MATRIX";
    break;
  case (8):
    _str_type = "LITTERAL";
    break;
  case (9):
    _str_type = "START_MARKER";
    break;
  case (10):
    _str_type = "NEURAL_MLP";
    break;
  case (11):
    _str_type = "FILENAME";
    break;
  case (12):
    _str_type = "TRAINING_ELT";
    break;
  case (13):
    _str_type = "TRAINING_SET";
    break;
  case (14):
    _str_type = "TEST_ELT";
    break;
  case (15):
    _str_type = "TEST_SET";
    break;
  case (16):
    _str_type = "TEXT_FILE";
    break;
  case (17):
    _str_type = "LIST";
    break;
  case (18):
    _str_type = "TUPLE";
    break;
  case (19):
    _str_type = "OPAIR";
    break;
  default:
    sprintf(_err_mesg, "??? (%d)", type);
    _str_type = _err_mesg;
    break;
  }
  return _str_type;
}
```