user: Demonstrate the C code that generates the assembly output below:

```asm
<get_rtm_typestr>:
  endbr64
  add    $0xffffff80,%edi
  cmp    $0x10,%edi
  ja     L7
  lea    D172(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  lea    D164(%rip),%rax
  ret
  lea    D89(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D98(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D28(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D58(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D64(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D124(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D47(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D63(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D77(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D161(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D174(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D70(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D186(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D14(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D44(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D136(%rip),%rax
  ret
L7:
  lea    D123(%rip),%rax
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D164
type_infered: string
name: unpack_data
arguments: data_label: D89
type_infered: string
name: unpack_data
arguments: data_label: D98
type_infered: string
name: unpack_data
arguments: data_label: D28
type_infered: string
name: unpack_data
arguments: data_label: D58
type_infered: string
name: unpack_data
arguments: data_label: D64
type_infered: string
name: unpack_data
arguments: data_label: D124
type_infered: string
name: unpack_data
arguments: data_label: D47
type_infered: string
name: unpack_data
arguments: data_label: D63
type_infered: string
name: unpack_data
arguments: data_label: D77
type_infered: string
name: unpack_data
arguments: data_label: D161
type_infered: string
name: unpack_data
arguments: data_label: D174
type_infered: string
name: unpack_data
arguments: data_label: D70
type_infered: string
name: unpack_data
arguments: data_label: D186
type_infered: string
name: unpack_data
arguments: data_label: D14
type_infered: string
name: unpack_data
arguments: data_label: D44
type_infered: string
name: unpack_data
arguments: data_label: D136
type_infered: string
name: unpack_data
arguments: data_label: D123
type_infered: string

tool: D164: RTM_GETADDR

tool: D89: RTM_GETLINK

tool: D98: RTM_GETADDRLABEL

tool: D28: RTM_GETANYCAST

tool: D58: RTM_GETMDB

tool: D64: RTM_GETNEIGHTBL

tool: D124: RTM_GETNEIGH

tool: D47: RTM_GETMULTICAST

tool: D63: RTM_GETDCB

tool: D77: RTM_GETACTION

tool: D161: RTM_GETTFILTER

tool: D174: RTM_GETTCLASS

tool: D70: RTM_GETSTATS

tool: D186: RTM_GETRULE

tool: D14: RTM_GETROUTE

tool: D44: RTM_GETQDISC

tool: D136: RTM_GETNSID

tool: D123: unspecified

assistant: ```c
const char *get_rtm_typestr(int type) {
  switch (type) {
  case RTM_GETLINK:
    return "RTM_GETLINK";
  case RTM_GETADDR:
    return "RTM_GETADDR";
  case RTM_GETROUTE:
    return "RTM_GETROUTE";
  case RTM_GETNEIGH:
    return "RTM_GETNEIGH";
  case RTM_GETRULE:
    return "RTM_GETRULE";
  case RTM_GETQDISC:
    return "RTM_GETQDISC";
  case RTM_GETTCLASS:
    return "RTM_GETTCLASS";
  case RTM_GETTFILTER:
    return "RTM_GETTFILTER";
  case RTM_GETACTION:
    return "RTM_GETACTION";
  case RTM_GETMULTICAST:
    return "RTM_GETMULTICAST";
  case RTM_GETANYCAST:
    return "RTM_GETANYCAST";
  case RTM_GETNEIGHTBL:
    return "RTM_GETNEIGHTBL";
  case RTM_GETADDRLABEL:
    return "RTM_GETADDRLABEL";
  case RTM_GETDCB:
    return "RTM_GETDCB";
  case RTM_GETMDB:
    return "RTM_GETMDB";
  case RTM_GETNSID:
    return "RTM_GETNSID";
  case RTM_GETSTATS:
    return "RTM_GETSTATS";
  default:
    return "unspecified";
  }
}
```