user: Converte this assembly snippet into its equivalent C code:

```asm
<__Pyx_BufFmt_DescribeTypeChar>:
  endbr64
  cmp    $0x71,%dil
  ja     L8
  lea    D20(%rip),%rdx
  movzbl %dil,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L8:
  lea    D39(%rip),%rax
  ret
  lea    D48(%rip),%rax
  ret
  lea    D118(%rip),%rax
  ret
  lea    D162(%rip),%rax
  ret
  lea    D8(%rip),%rax
  ret
  lea    D6(%rip),%rax
  ret
  lea    D208(%rip),%rax
  ret
  lea    D161(%rip),%rax
  ret
  lea    D25(%rip),%rax
  ret
  test   %esi,%esi
  lea    D73(%rip),%rdx
  lea    D200(%rip),%rax
  cmove  %rdx,%rax
  ret
  test   %esi,%esi
  lea    D171(%rip),%rdx
  lea    D76(%rip),%rax
  cmove  %rdx,%rax
  ret
  test   %esi,%esi
  lea    D125(%rip),%rdx
  lea    D110(%rip),%rax
  cmove  %rdx,%rax
  ret
  lea    D199(%rip),%rax
  ret
  lea    D28(%rip),%rax
  ret
  lea    D57(%rip),%rax
  ret
  lea    D155(%rip),%rax
  ret
  lea    D72(%rip),%rax
  ret
  lea    D103(%rip),%rax
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D39
type: string
name: retrieve_data
arguments: tag: D48
type: string
name: retrieve_data
arguments: tag: D118
type: string
name: retrieve_data
arguments: tag: D162
type: string
name: retrieve_data
arguments: tag: D8
type: string
name: retrieve_data
arguments: tag: D6
type: string
name: retrieve_data
arguments: tag: D208
type: string
name: retrieve_data
arguments: tag: D161
type: string
name: retrieve_data
arguments: tag: D25
type: string
name: retrieve_data
arguments: tag: D73
type: string
name: retrieve_data
arguments: tag: D200
type: string
name: retrieve_data
arguments: tag: D171
type: string
name: retrieve_data
arguments: tag: D76
type: string
name: retrieve_data
arguments: tag: D125
type: string
name: retrieve_data
arguments: tag: D110
type: string
name: retrieve_data
arguments: tag: D199
type: string
name: retrieve_data
arguments: tag: D28
type: string
name: retrieve_data
arguments: tag: D57
type: string
name: retrieve_data
arguments: tag: D155
type: string
name: retrieve_data
arguments: tag: D72
type: string
name: retrieve_data
arguments: tag: D103
type: string

tool: D39: unparseable format string

tool: D48: end

tool: D118: 'unsigned short'

tool: D162: 'unsigned int'

tool: D8: 'unsigned long'

tool: D6: Python object

tool: D208: a pointer

tool: D161: 'unsigned long long'

tool: D25: a struct

tool: D73: 'double'

tool: D200: 'complex double'

tool: D171: 'float'

tool: D76: 'complex float'

tool: D125: 'long double'

tool: D110: 'complex long double'

tool: D199: 'short'

tool: D28: 'int'

tool: D57: 'long'

tool: D155: 'long long'

tool: D72: 'char'

tool: D103: 'unsigned char'

assistant: ```c
const char *__Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) {
  switch (ch) {
  case 'b':
    return "'char'";
  case 'B':
    return "'unsigned char'";
  case 'h':
    return "'short'";
  case 'H':
    return "'unsigned short'";
  case 'i':
    return "'int'";
  case 'I':
    return "'unsigned int'";
  case 'l':
    return "'long'";
  case 'L':
    return "'unsigned long'";
  case 'q':
    return "'long long'";
  case 'Q':
    return "'unsigned long long'";
  case 'f':
    return (is_complex ? "'complex float'" : "'float'");
  case 'd':
    return (is_complex ? "'complex double'" : "'double'");
  case 'g':
    return (is_complex ? "'complex long double'" : "'long double'");
  case 'T':
    return "a struct";
  case 'O':
    return "Python object";
  case 'P':
    return "a pointer";
  case 0:
    return "end";
  default:
    return "unparseable format string";
  }
}
```