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

```asm
<get_965_prim_type>:
  endbr64
  sar    $0xa,%edi
  and    $0x1f,%edi
  cmp    $0x15,%edi
  ja     L1
  mov    %edi,%edi
  lea    D12(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D105(%rip),%rax
  ret
  lea    D165(%rip),%rax
  ret
  lea    D214(%rip),%rax
  ret
  lea    D198(%rip),%rax
  ret
  lea    D49(%rip),%rax
  ret
  lea    D174(%rip),%rax
  ret
  lea    D155(%rip),%rax
  ret
  lea    D43(%rip),%rax
  ret
  lea    D68(%rip),%rax
  ret
  lea    D65(%rip),%rax
  ret
  lea    D35(%rip),%rax
  ret
  lea    D81(%rip),%rax
  ret
  lea    D206(%rip),%rax
  ret
  lea    D219(%rip),%rax
  ret
  lea    D172(%rip),%rax
  ret
  lea    D6(%rip),%rax
  ret
  lea    D200(%rip),%rax
  ret
  lea    D97(%rip),%rax
  ret
  lea    D137(%rip),%rax
  ret
  lea    D55(%rip),%rax
  ret
L1:
  lea    D118(%rip),%rax
  ret
  lea    D108(%rip),%rax
  ret
```

tool_calls: name: read_data
arguments: data_label: D105
datatype: string
name: read_data
arguments: data_label: D165
datatype: string
name: read_data
arguments: data_label: D214
datatype: string
name: read_data
arguments: data_label: D198
datatype: string
name: read_data
arguments: data_label: D49
datatype: string
name: read_data
arguments: data_label: D174
datatype: string
name: read_data
arguments: data_label: D155
datatype: string
name: read_data
arguments: data_label: D43
datatype: string
name: read_data
arguments: data_label: D68
datatype: string
name: read_data
arguments: data_label: D65
datatype: string
name: read_data
arguments: data_label: D35
datatype: string
name: read_data
arguments: data_label: D81
datatype: string
name: read_data
arguments: data_label: D206
datatype: string
name: read_data
arguments: data_label: D219
datatype: string
name: read_data
arguments: data_label: D172
datatype: string
name: read_data
arguments: data_label: D6
datatype: string
name: read_data
arguments: data_label: D200
datatype: string
name: read_data
arguments: data_label: D97
datatype: string
name: read_data
arguments: data_label: D137
datatype: string
name: read_data
arguments: data_label: D55
datatype: string
name: read_data
arguments: data_label: D118
datatype: string
name: read_data
arguments: data_label: D108
datatype: string

tool: D105: line list

tool: D165: line strip

tool: D214: tri list

tool: D198: tri strip

tool: D49: tri fan

tool: D174: quad list

tool: D155: quad strip

tool: D43: line list adj

tool: D68: line strip adj

tool: D65: tri list adj

tool: D35: tri strip adj

tool: D81: tri strip reverse

tool: D206: polygon

tool: D219: rect list

tool: D172: line loop

tool: D6: point list bf

tool: D200: line strip cont

tool: D97: line strip bf

tool: D137: line strip cont bf

tool: D55: tri fan no stipple

tool: D118: fail

tool: D108: point list

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";
  }
}
```