user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<get_965_prim_type>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  sar    $0xa,%eax
  and    $0x1f,%eax
  mov    %eax,-0x4(%rbp)
  cmpl   $0x15,-0x4(%rbp)
  ja     L69
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D132(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D132(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D155(%rip),%rax
  jmp    L60
  lea    D68(%rip),%rax
  jmp    L60
  lea    D135(%rip),%rax
  jmp    L60
  lea    D196(%rip),%rax
  jmp    L60
  lea    D173(%rip),%rax
  jmp    L60
  lea    D101(%rip),%rax
  jmp    L60
  lea    D166(%rip),%rax
  jmp    L60
  lea    D217(%rip),%rax
  jmp    L60
  lea    D26(%rip),%rax
  jmp    L60
  lea    D69(%rip),%rax
  jmp    L60
  lea    D163(%rip),%rax
  jmp    L60
  lea    D104(%rip),%rax
  jmp    L60
  lea    D42(%rip),%rax
  jmp    L60
  lea    D122(%rip),%rax
  jmp    L60
  lea    D208(%rip),%rax
  jmp    L60
  lea    D38(%rip),%rax
  jmp    L60
  lea    D161(%rip),%rax
  jmp    L60
  lea    D51(%rip),%rax
  jmp    L60
  lea    D230(%rip),%rax
  jmp    L60
  lea    D85(%rip),%rax
  jmp    L60
  lea    D82(%rip),%rax
  jmp    L60
L69:
  lea    D198(%rip),%rax
L60:
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: label: D132
type_infered: string
name: unpack_data
arguments: label: D155
type_infered: string
name: unpack_data
arguments: label: D68
type_infered: string
name: unpack_data
arguments: label: D135
type_infered: string
name: unpack_data
arguments: label: D196
type_infered: string
name: unpack_data
arguments: label: D173
type_infered: string
name: unpack_data
arguments: label: D101
type_infered: string
name: unpack_data
arguments: label: D166
type_infered: string
name: unpack_data
arguments: label: D217
type_infered: string
name: unpack_data
arguments: label: D26
type_infered: string
name: unpack_data
arguments: label: D69
type_infered: string
name: unpack_data
arguments: label: D163
type_infered: string
name: unpack_data
arguments: label: D104
type_infered: string
name: unpack_data
arguments: label: D42
type_infered: string
name: unpack_data
arguments: label: D122
type_infered: string
name: unpack_data
arguments: label: D208
type_infered: string
name: unpack_data
arguments: label: D38
type_infered: string
name: unpack_data
arguments: label: D161
type_infered: string
name: unpack_data
arguments: label: D51
type_infered: string
name: unpack_data
arguments: label: D230
type_infered: string
name: unpack_data
arguments: label: D85
type_infered: string
name: unpack_data
arguments: label: D82
type_infered: string
name: unpack_data
arguments: label: D198
type_infered: string

tool: 

tool: D155: point list

tool: D68: line list

tool: D135: line strip

tool: D196: tri list

tool: D173: tri strip

tool: D101: tri fan

tool: D166: quad list

tool: D217: quad strip

tool: D26: line list adj

tool: D69: line strip adj

tool: D163: tri list adj

tool: D104: tri strip adj

tool: D42: tri strip reverse

tool: D122: polygon

tool: D208: rect list

tool: D38: line loop

tool: D161: point list bf

tool: D51: line strip cont

tool: D230: line strip bf

tool: D85: line strip cont bf

tool: D82: tri fan no stipple

tool: D198: fail

assistant: ```c
const char *get_965_prim_type(uint32_t data) {
  uint32_t primtype = (data >> 10) & 0x1f;
  switch (primtype) {
  case 0x01:
    return "point list";
  case 0x02:
    return "line list";
  case 0x03:
    return "line strip";
  case 0x04:
    return "tri list";
  case 0x05:
    return "tri strip";
  case 0x06:
    return "tri fan";
  case 0x07:
    return "quad list";
  case 0x08:
    return "quad strip";
  case 0x09:
    return "line list adj";
  case 0x0a:
    return "line strip adj";
  case 0x0b:
    return "tri list adj";
  case 0x0c:
    return "tri strip adj";
  case 0x0d:
    return "tri strip reverse";
  case 0x0e:
    return "polygon";
  case 0x0f:
    return "rect list";
  case 0x10:
    return "line loop";
  case 0x11:
    return "point list bf";
  case 0x12:
    return "line strip cont";
  case 0x13:
    return "line strip bf";
  case 0x14:
    return "line strip cont bf";
  case 0x15:
    return "tri fan no stipple";
  default:
    return "fail";
  }
}
```