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

```asm
<getDeviceTypeFromCode>:
  endbr64
  cmp    $0x19,%dil
  ja     L5
  lea    D121(%rip),%rdx
  movzbl %dil,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
  lea    D50(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D207(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
L5:
  lea    D130(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D166(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D55(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D90(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D119(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D12(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D87(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D26(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D123(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D186(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D195(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D206(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D47(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D134(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D10(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D148(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D100(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D44(%rip),%rax
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D50
type_guessed: string
name: disassemble_data
arguments: data_tag: D207
type_guessed: string
name: disassemble_data
arguments: data_tag: D130
type_guessed: string
name: disassemble_data
arguments: data_tag: D166
type_guessed: string
name: disassemble_data
arguments: data_tag: D55
type_guessed: string
name: disassemble_data
arguments: data_tag: D90
type_guessed: string
name: disassemble_data
arguments: data_tag: D119
type_guessed: string
name: disassemble_data
arguments: data_tag: D12
type_guessed: string
name: disassemble_data
arguments: data_tag: D87
type_guessed: string
name: disassemble_data
arguments: data_tag: D26
type_guessed: string
name: disassemble_data
arguments: data_tag: D123
type_guessed: string
name: disassemble_data
arguments: data_tag: D186
type_guessed: string
name: disassemble_data
arguments: data_tag: D195
type_guessed: string
name: disassemble_data
arguments: data_tag: D206
type_guessed: string
name: disassemble_data
arguments: data_tag: D47
type_guessed: string
name: disassemble_data
arguments: data_tag: D134
type_guessed: string
name: disassemble_data
arguments: data_tag: D10
type_guessed: string
name: disassemble_data
arguments: data_tag: D148
type_guessed: string
name: disassemble_data
arguments: data_tag: D100
type_guessed: string
name: disassemble_data
arguments: data_tag: D44
type_guessed: string

tool: D50: Heat

tool: D207: Cooling load meter

tool: D130: Reserved

tool: D166: Electricity

tool: D55: A/D Converter

tool: D90: Heat / Cooling load meter

tool: D119: Compressed Air

tool: D12: Heat Cost Allocator

tool: D87: Cold Water

tool: D26: Hot Water

tool: D123: Unknown medium

tool: D186: Dual register Water meter

tool: D195: Water

tool: D206: Warm Water

tool: D47: Gas

tool: D134: Steam

tool: D10: Pressure

tool: D148: Bus / System component

tool: D100: Other

tool: D44: Oil

assistant: ```c
char *getDeviceTypeFromCode(unsigned char c) {
  switch (c) {
  case 0x00:
    return "Other";
  case 0x01:
    return "Oil";
  case 0x02:
    return "Electricity";
  case 0x03:
    return "Gas";
  case 0x04:
    return "Heat";
  case 0x05:
    return "Steam";
  case 0x06:
    return "Warm Water";
  case 0x07:
    return "Water";
  case 0x08:
    return "Heat Cost Allocator";
  case 0x09:
    return "Compressed Air";
  case 0x0A:
    return "Cooling load meter";
  case 0x0B:
    return "Cooling load meter";
  case 0x0C:
    return "Heat";
  case 0x0D:
    return "Heat / Cooling load meter";
  case 0x0E:
    return "Bus / System component";
  case 0x0F:
    return "Unknown medium";
  case 0x15:
    return "Hot Water";
  case 0x16:
    return "Cold Water";
  case 0x17:
    return "Dual register Water meter";
  case 0x18:
    return "Pressure";
  case 0x19:
    return "A/D Converter";
  default:
    return "Reserved";
  }
  if (c >= 0x1A || (c >= 0x10 && c <= 0x14)) {
    return "Reserved";
  }
}
```