user: Translate the below assembly code into C programming language:

```asm
<translate_signal>:
  endbr64
  lea    -0x80(%rdi),%eax
  cmp    $0x1b,%eax
  ja     L9
  mov    %eax,%eax
  lea    D55(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D177(%rip),%rax
  ret
  lea    D176(%rip),%rax
  ret
  lea    D6(%rip),%rax
  ret
  lea    D138(%rip),%rax
  ret
  lea    D218(%rip),%rax
  ret
  lea    D249(%rip),%rax
  ret
  lea    D125(%rip),%rax
  ret
  lea    D75(%rip),%rax
  ret
  lea    D140(%rip),%rax
  ret
  lea    D4(%rip),%rax
  ret
  lea    D156(%rip),%rax
  ret
  lea    D170(%rip),%rax
  ret
  lea    D174(%rip),%rax
  ret
  lea    D2(%rip),%rax
  ret
  lea    D217(%rip),%rax
  ret
  lea    D19(%rip),%rax
  ret
  lea    D110(%rip),%rax
  ret
  lea    D121(%rip),%rax
  ret
  lea    D95(%rip),%rax
  ret
  lea    D295(%rip),%rax
  ret
  lea    D72(%rip),%rax
  ret
  lea    D275(%rip),%rax
  ret
  lea    D268(%rip),%rax
  ret
  lea    D280(%rip),%rax
  ret
  lea    D264(%rip),%rax
  ret
  lea    D115(%rip),%rax
  ret
  lea    D292(%rip),%rax
  ret
L9:
  push   %rbx
  mov    %edi,%edx
  lea    D159(%rip),%rsi
  lea    D147(%rip),%rbx
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rax
  pop    %rbx
  ret
  lea    D253(%rip),%rax
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D177
type: string
name: extract_symbolic_data
arguments: tag: D176
type: string
name: extract_symbolic_data
arguments: tag: D6
type: string
name: extract_symbolic_data
arguments: tag: D138
type: string
name: extract_symbolic_data
arguments: tag: D218
type: string
name: extract_symbolic_data
arguments: tag: D249
type: string
name: extract_symbolic_data
arguments: tag: D125
type: string
name: extract_symbolic_data
arguments: tag: D75
type: string
name: extract_symbolic_data
arguments: tag: D140
type: string
name: extract_symbolic_data
arguments: tag: D4
type: string
name: extract_symbolic_data
arguments: tag: D156
type: string
name: extract_symbolic_data
arguments: tag: D170
type: string
name: extract_symbolic_data
arguments: tag: D174
type: string
name: extract_symbolic_data
arguments: tag: D2
type: string
name: extract_symbolic_data
arguments: tag: D217
type: string
name: extract_symbolic_data
arguments: tag: D19
type: string
name: extract_symbolic_data
arguments: tag: D110
type: string
name: extract_symbolic_data
arguments: tag: D121
type: string
name: extract_symbolic_data
arguments: tag: D95
type: string
name: extract_symbolic_data
arguments: tag: D295
type: string
name: extract_symbolic_data
arguments: tag: D72
type: string
name: extract_symbolic_data
arguments: tag: D275
type: string
name: extract_symbolic_data
arguments: tag: D268
type: string
name: extract_symbolic_data
arguments: tag: D280
type: string
name: extract_symbolic_data
arguments: tag: D264
type: string
name: extract_symbolic_data
arguments: tag: D115
type: string
name: extract_symbolic_data
arguments: tag: D292
type: string
name: extract_symbolic_data
arguments: tag: D159
type: string
name: extract_symbolic_data
arguments: tag: D253
type: string

tool: D177: SIGINT

tool: D176: SIGQUIT

tool: D6: SIGILL

tool: D138: SIGABRT

tool: D218: SIGFPE

tool: D249: SIGKILL

tool: D125: SIGSEGV

tool: D75: SIGPIPE

tool: D140: SIGALRM

tool: D4: SIGTERM

tool: D156: SIGUSR1

tool: D170: SIGUSR2

tool: D174: SIGCHLD

tool: D2: SIGCONT

tool: D217: SIGSTOP

tool: D19: SIGTSTP

tool: D110: SIGTTIN

tool: D121: SIGTTOU

tool: D95: SIGBUS

tool: D295: SIGPOLL

tool: D72: SIGPROF

tool: D275: SIGSYS

tool: D268: SIGTRAP

tool: D280: SIGURG

tool: D264: SIGVTALRM

tool: D115: SIGXCPU

tool: D292: SIGXFSZ

tool: D159: signal %d

tool: D253: SIGHUP

assistant: ```c
const char *translate_signal(int sig) {
  switch (sig) {
  case SIGHUP:
    return "SIGHUP";
  case SIGINT:
    return "SIGINT";
  case SIGQUIT:
    return "SIGQUIT";
  case SIGILL:
    return "SIGILL";
  case SIGABRT:
    return "SIGABRT";
  case SIGFPE:
    return "SIGFPE";
  case SIGKILL:
    return "SIGKILL";
  case SIGSEGV:
    return "SIGSEGV";
  case SIGPIPE:
    return "SIGPIPE";
  case SIGALRM:
    return "SIGALRM";
  case SIGTERM:
    return "SIGTERM";
  case SIGUSR1:
    return "SIGUSR1";
  case SIGUSR2:
    return "SIGUSR2";
  case SIGCHLD:
    return "SIGCHLD";
  case SIGCONT:
    return "SIGCONT";
  case SIGSTOP:
    return "SIGSTOP";
  case SIGTSTP:
    return "SIGTSTP";
  case SIGTTIN:
    return "SIGTTIN";
  case SIGTTOU:
    return "SIGTTOU";
  case SIGBUS:
    return "SIGBUS";
  case SIGPOLL:
    return "SIGPOLL";
  case SIGPROF:
    return "SIGPROF";
  case SIGSYS:
    return "SIGSYS";
  case SIGTRAP:
    return "SIGTRAP";
  case SIGURG:
    return "SIGURG";
  case SIGVTALRM:
    return "SIGVTALRM";
  case SIGXCPU:
    return "SIGXCPU";
  case SIGXFSZ:
    return "SIGXFSZ";
  default: {
    static char buffer[50];
    sprintf(buffer, "signal %d", sig);
    return buffer;
  }
  }
}
```