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

```asm
<signaltoname>:
  endbr64
  add    $0xffffff80,%edi
  cmp    $0x12,%edi
  ja     L7
  lea    D154(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  lea    D143(%rip),%rax
  ret
  lea    D72(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D38(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D141(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D148(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D130(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D10(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D194(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D16(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D169(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D102(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D40(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D197(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D175(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D0(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D74(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D37(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D6(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D115(%rip),%rax
  ret
L7:
  xor    %eax,%eax
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D143
type_guessed: string
name: extract_symbolic_data
arguments: label: D72
type_guessed: string
name: extract_symbolic_data
arguments: label: D38
type_guessed: string
name: extract_symbolic_data
arguments: label: D141
type_guessed: string
name: extract_symbolic_data
arguments: label: D148
type_guessed: string
name: extract_symbolic_data
arguments: label: D130
type_guessed: string
name: extract_symbolic_data
arguments: label: D10
type_guessed: string
name: extract_symbolic_data
arguments: label: D194
type_guessed: string
name: extract_symbolic_data
arguments: label: D16
type_guessed: string
name: extract_symbolic_data
arguments: label: D169
type_guessed: string
name: extract_symbolic_data
arguments: label: D102
type_guessed: string
name: extract_symbolic_data
arguments: label: D40
type_guessed: string
name: extract_symbolic_data
arguments: label: D197
type_guessed: string
name: extract_symbolic_data
arguments: label: D175
type_guessed: string
name: extract_symbolic_data
arguments: label: D0
type_guessed: string
name: extract_symbolic_data
arguments: label: D74
type_guessed: string
name: extract_symbolic_data
arguments: label: D37
type_guessed: string
name: extract_symbolic_data
arguments: label: D6
type_guessed: string
name: extract_symbolic_data
arguments: label: D115
type_guessed: string

tool: D143: HUP

tool: D72: INT

tool: D38: FPE

tool: D141: TSTP

tool: D148: TTIN

tool: D130: TTOU

tool: D10: USR1

tool: D194: USR2

tool: D16: ABRT

tool: D169: ALRM

tool: D102: CHLD

tool: D40: QUIT

tool: D197: SEGV

tool: D175: STOP

tool: D0: TERM

tool: D74: KILL

tool: D37: PIPE

tool: D6: ILL

tool: D115: CONT

assistant: ```c
const char *signaltoname(int sig) {
  switch (sig) {
  case SIGHUP:
    return "HUP";
  case SIGINT:
    return "INT";
  case SIGQUIT:
    return "QUIT";
  case SIGILL:
    return "ILL";
  case SIGABRT:
    return "ABRT";
  case SIGFPE:
    return "FPE";
  case SIGKILL:
    return "KILL";
  case SIGSEGV:
    return "SEGV";
  case SIGPIPE:
    return "PIPE";
  case SIGALRM:
    return "ALRM";
  case SIGTERM:
    return "TERM";
  case SIGUSR1:
    return "USR1";
  case SIGUSR2:
    return "USR2";
  case SIGCHLD:
    return "CHLD";
  case SIGCONT:
    return "CONT";
  case SIGSTOP:
    return "STOP";
  case SIGTSTP:
    return "TSTP";
  case SIGTTIN:
    return "TTIN";
  case SIGTTOU:
    return "TTOU";
  default:
    return 0;
  }
}
```