user: What is the c source code of the assembly code below?

```asm
<group_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %esi,-0xc(%rbp)
  cmpl   $0xeffffffd,-0xc(%rbp)
  je     L154
  cmpl   $0xeffffffd,-0xc(%rbp)
  ja     L45
  cmpl   $0xeffffffa,-0xc(%rbp)
  je     L128
  cmpl   $0xeffffffa,-0xc(%rbp)
  ja     L45
  cmpl   $0xe4c8c8c9,-0xc(%rbp)
  je     L53
  cmpl   $0xe4c8c8c9,-0xc(%rbp)
  ja     L45
  cmpl   $0xe0000123,-0xc(%rbp)
  je     L120
  cmpl   $0xe0000123,-0xc(%rbp)
  ja     L45
  cmpl   $0xe0000116,-0xc(%rbp)
  je     L137
  cmpl   $0xe0000116,-0xc(%rbp)
  ja     L45
  cmpl   $0xe00000fc,-0xc(%rbp)
  je     L176
  cmpl   $0xe00000fc,-0xc(%rbp)
  ja     L45
  cmpl   $0xe0000016,-0xc(%rbp)
  ja     L114
  cmpl   $0xe0000001,-0xc(%rbp)
  jb     L45
  mov    -0xc(%rbp),%eax
  add    $0x1fffffff,%eax
  cmp    $0x15,%eax
  ja     L45
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D37(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D37(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L114:
  cmpl   $0xe00000fb,-0xc(%rbp)
  je     L73
  jmp    L45
L128:
  lea    D112(%rip),%rax
  jmp    L3
  lea    D59(%rip),%rax
  jmp    L3
  lea    D93(%rip),%rax
  jmp    L3
  lea    D88(%rip),%rax
  jmp    L3
  lea    D132(%rip),%rax
  jmp    L3
  lea    D40(%rip),%rax
  jmp    L3
  lea    D92(%rip),%rax
  jmp    L3
L73:
  lea    D162(%rip),%rax
  jmp    L3
L176:
  lea    D95(%rip),%rax
  jmp    L3
L137:
  lea    D35(%rip),%rax
  jmp    L3
L120:
  lea    D121(%rip),%rax
  jmp    L3
L53:
  lea    D138(%rip),%rax
  jmp    L3
L154:
  lea    D76(%rip),%rax
  jmp    L3
L45:
  mov    -0xc(%rbp),%eax
  movzbl %al,%r8d
  mov    -0xc(%rbp),%eax
  shr    $0x8,%eax
  movzbl %al,%edi
  mov    -0xc(%rbp),%eax
  shr    $0x10,%eax
  movzbl %al,%edx
  mov    -0xc(%rbp),%eax
  shr    $0x18,%eax
  mov    %eax,%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  mov    -0xc(%rbp),%ecx
  push   %rcx
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %edx,%ecx
  mov    %esi,%edx
  lea    D69(%rip),%rsi
  mov    %rax,%rdi
  call   <FRAMERR@plt>
  add    $0x10,%rsp
  lea    D138(%rip),%rax
L3:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D112
datatype: string
name: extract_symbolic_data
arguments: data_label: D59
datatype: string
name: extract_symbolic_data
arguments: data_label: D93
datatype: string
name: extract_symbolic_data
arguments: data_label: D88
datatype: string
name: extract_symbolic_data
arguments: data_label: D132
datatype: string
name: extract_symbolic_data
arguments: data_label: D40
datatype: string
name: extract_symbolic_data
arguments: data_label: D92
datatype: string
name: extract_symbolic_data
arguments: data_label: D162
datatype: string
name: extract_symbolic_data
arguments: data_label: D95
datatype: string
name: extract_symbolic_data
arguments: data_label: D35
datatype: string
name: extract_symbolic_data
arguments: data_label: D121
datatype: string
name: extract_symbolic_data
arguments: data_label: D138
datatype: string
name: extract_symbolic_data
arguments: data_label: D76
datatype: string
name: extract_symbolic_data
arguments: data_label: D69
datatype: string

tool: D112: SSDP

tool: D59: all local hosts

tool: D93: all local routers

tool: D88: ospf

tool: D132: RIPv2

tool: D40: pim

tool: D92: igmp

tool: D162: mDNS

tool: D95: mDNS Local Name Resolution

tool: D35: SLP (General)

tool: D121: SLP (Discovery)

tool: D138: (unknown)

tool: D76: SLP (Admin Scoped)

tool: D69: igmp: unknown group: %d.%d.%d.%d (0x%08x)


assistant: ```c
const char *group_name(struct NetFrame *frame, unsigned group_address) {
  switch (group_address) {
  case 0xeffffffa:
    return "SSDP";
    break;
  case 0xe0000001:
    return "all local hosts";
    break;
  case 0xe0000002:
    return "all local routers";
    break;
  case 0xe0000005:
    return "ospf";
    break;
  case 0xe0000009:
    return "RIPv2";
    break;
  case 0xe000000d:
    return "pim";
    break;
  case 0xe0000016:
    return "igmp";
    break;
  case 0xe00000fb:
    return "mDNS";
    break;
  case 0xe00000fc:
    return "mDNS Local Name Resolution";
    break;
  case 0xe0000116:
    return "SLP (General)";
    break;
  case 0xe0000123:
    return "SLP (Discovery)";
    break;
  case 0xe4c8c8c9:
    return "(unknown)";
    break;
  case 0xeffffffd:
    return "SLP (Admin Scoped)";
    break;
  default:
    FRAMERR(frame, "igmp: unknown group: %d.%d.%d.%d (0x%08x)\n", (group_address >> 24) & 0xFF, (group_address >> 16) & 0xFF, (group_address >> 8) & 0xFF, (group_address >> 0) & 0xFF, group_address);
    return "(unknown)";
  }
}
```