user: 请从给定的汇编指令推导出C源代码:

```asm
<OC_mkGenericConstTabEntry>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  lea    D58(%rip),%rax
  mov    %rax,%rsi
  lea    D65(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D114(%rip),%rax
  mov    %rax,%rsi
  lea    D161(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D123(%rip),%rax
  mov    %rax,%rsi
  lea    D91(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D95(%rip),%rax
  mov    %rax,%rsi
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D2(%rip),%rax
  mov    %rax,%rsi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D152(%rip),%rax
  mov    %rax,%rsi
  lea    D110(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D89(%rip),%rax
  mov    %rax,%rsi
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D51(%rip),%rax
  mov    %rax,%rsi
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  lea    D57(%rip),%rax
  mov    %rax,%rsi
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <OC_mkTabEntry@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <UTIL_appendStr@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D58
type_guessed: string
name: unpack_data
arguments: data_label: D65
type_guessed: string
name: unpack_data
arguments: data_label: D114
type_guessed: string
name: unpack_data
arguments: data_label: D161
type_guessed: string
name: unpack_data
arguments: data_label: D123
type_guessed: string
name: unpack_data
arguments: data_label: D91
type_guessed: string
name: unpack_data
arguments: data_label: D95
type_guessed: string
name: unpack_data
arguments: data_label: D92
type_guessed: string
name: unpack_data
arguments: data_label: D2
type_guessed: string
name: unpack_data
arguments: data_label: D1
type_guessed: string
name: unpack_data
arguments: data_label: D152
type_guessed: string
name: unpack_data
arguments: data_label: D110
type_guessed: string
name: unpack_data
arguments: data_label: D89
type_guessed: string
name: unpack_data
arguments: data_label: D100
type_guessed: string
name: unpack_data
arguments: data_label: D51
type_guessed: string
name: unpack_data
arguments: data_label: D97
type_guessed: string
name: unpack_data
arguments: data_label: D57
type_guessed: string
name: unpack_data
arguments: data_label: D31
type_guessed: string

tool: D58: overloadUMinusConstant

tool: D65: ~

tool: D114: overloadAbsConstant

tool: D161: abs

tool: D123: overloadPlusConstant

tool: D91: +

tool: D95: overloadMinusConstant

tool: D92: -

tool: D2: overloadTimeConstant

tool: D1: *

tool: D152: overloadLTConstant

tool: D110: <

tool: D89: overloadGTConstant

tool: D100: >

tool: D51: overloadLEConstant

tool: D97: <=

tool: D57: overloadGEConstant

tool: D31: >=

assistant: ```c
char *OC_mkGenericConstTabEntry(char *entries) {
  char *text;
  char *tabEntry;
  tabEntry = OC_mkTabEntry("~", "overloadUMinusConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry("abs", "overloadAbsConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry("+", "overloadPlusConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry("-", "overloadMinusConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry("*", "overloadTimeConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry("<", "overloadLTConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry(">", "overloadGTConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry("<=", "overloadLEConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  tabEntry = OC_mkTabEntry(">=", "overloadGEConstant");
  text = UTIL_appendStr(entries, tabEntry);
  free(tabEntry);
  free(entries);
  entries = text;
  return entries;
}
```