user: 下面的汇编指令对应的C源代码是什么：

```asm
<rpn_type_to_string>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  add    $0x2,%eax
  cmp    $0x15,%eax
  ja     L149
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D78(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D78(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D196(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D240(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D184(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D81(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D167(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D134(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D124(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D37(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D17(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D40(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D60(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D138(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D203(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D83(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D190(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D36(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D207(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D210(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D192(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D241(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
  lea    D87(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L157
L149:
  mov    -0x14(%rbp),%eax
  mov    %eax,%edx
  lea    D216(%rip),%rax
  mov    %rax,%rsi
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    D64(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L157:
  mov    -0x8(%rbp),%rax
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D196
datatype: string
name: parse_data
arguments: tag: D240
datatype: string
name: parse_data
arguments: tag: D184
datatype: string
name: parse_data
arguments: tag: D81
datatype: string
name: parse_data
arguments: tag: D167
datatype: string
name: parse_data
arguments: tag: D134
datatype: string
name: parse_data
arguments: tag: D124
datatype: string
name: parse_data
arguments: tag: D37
datatype: string
name: parse_data
arguments: tag: D17
datatype: string
name: parse_data
arguments: tag: D40
datatype: string
name: parse_data
arguments: tag: D60
datatype: string
name: parse_data
arguments: tag: D138
datatype: string
name: parse_data
arguments: tag: D203
datatype: string
name: parse_data
arguments: tag: D83
datatype: string
name: parse_data
arguments: tag: D190
datatype: string
name: parse_data
arguments: tag: D36
datatype: string
name: parse_data
arguments: tag: D207
datatype: string
name: parse_data
arguments: tag: D210
datatype: string
name: parse_data
arguments: tag: D192
datatype: string
name: parse_data
arguments: tag: D241
datatype: string
name: parse_data
arguments: tag: D87
datatype: string
name: parse_data
arguments: tag: D216
datatype: string

tool: D196: ANY_TYPE

tool: D240: UNUSED

tool: D184: UNDEFINED

tool: D81: NIL

tool: D167: INT

tool: D134: DOUBLE

tool: D124: STRING

tool: D37: VECTOR_3

tool: D17: MATRIX

tool: D40: LITTERAL

tool: D60: START_MARKER

tool: D138: NEURAL_MLP

tool: D203: FILENAME

tool: D83: TRAINING_ELT

tool: D190: TRAINING_SET

tool: D36: TEST_ELT

tool: D207: TEST_SET

tool: D210: TEXT_FILE

tool: D192: LIST

tool: D241: TUPLE

tool: D87: OPAIR

tool: D216: ??? (%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;
}
```