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

```asm
<dev_to_string>:
  endbr64
  mov    %edi,%eax
  shr    $0x18,%eax
  cmp    $0x1,%eax
  je     L15
  cmp    $0x4,%eax
  je     L11
  lea    D80(%rip),%rax
  ret
L15:
  shr    $0xc,%edi
  and    $0xfff,%edi
  sub    $0x3,%edi
  cmp    $0x51,%edi
  ja     L32
  mov    %edi,%edi
  lea    D8(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D121(%rip),%rax
  ret
  lea    D36(%rip),%rax
  ret
  lea    D192(%rip),%rax
  ret
  lea    D38(%rip),%rax
  ret
  lea    D198(%rip),%rax
  ret
  lea    D97(%rip),%rax
  ret
  lea    D186(%rip),%rax
  ret
  lea    D179(%rip),%rax
  ret
  lea    D177(%rip),%rax
  ret
  lea    D127(%rip),%rax
  ret
  lea    D19(%rip),%rax
  ret
  lea    D27(%rip),%rax
  ret
  lea    D87(%rip),%rax
  ret
  lea    D78(%rip),%rax
  ret
L32:
  lea    D163(%rip),%rax
  ret
L11:
  shr    $0xc,%edi
  and    $0xfff,%edi
  lea    D103(%rip),%rax
  cmp    $0x5,%edi
  je     L44
  lea    D200(%rip),%rax
  cmp    $0xf,%edi
  je     L44
  cmp    $0x2,%edi
  lea    D163(%rip),%rax
  lea    D183(%rip),%rdx
  cmove  %rdx,%rax
  ret
  lea    D182(%rip),%rax
L44:
  ret
```

tool_calls: name: parse_data
arguments: tag: D80
data_type: string
name: parse_data
arguments: tag: D121
data_type: string
name: parse_data
arguments: tag: D36
data_type: string
name: parse_data
arguments: tag: D192
data_type: string
name: parse_data
arguments: tag: D38
data_type: string
name: parse_data
arguments: tag: D198
data_type: string
name: parse_data
arguments: tag: D97
data_type: string
name: parse_data
arguments: tag: D186
data_type: string
name: parse_data
arguments: tag: D179
data_type: string
name: parse_data
arguments: tag: D177
data_type: string
name: parse_data
arguments: tag: D127
data_type: string
name: parse_data
arguments: tag: D19
data_type: string
name: parse_data
arguments: tag: D27
data_type: string
name: parse_data
arguments: tag: D87
data_type: string
name: parse_data
arguments: tag: D78
data_type: string
name: parse_data
arguments: tag: D163
data_type: string
name: parse_data
arguments: tag: D103
data_type: string
name: parse_data
arguments: tag: D200
data_type: string
name: parse_data
arguments: tag: D183
data_type: string
name: parse_data
arguments: tag: D182
data_type: string

tool: D80: Unknown vendor

tool: D121: GR Ethernet MAC

tool: D36: Fast 32-bit PCI Bridge

tool: D192: LEON3FT V8 Processor

tool: D38: Modular Timer unit

tool: D198: Interrupt Controller

tool: D97: UART

tool: D186: OC CAN AHB interface

tool: D179: General Purpose I/O port

tool: D177: PROM/SRAM/SDRAM Memory controller with EDAC

tool: D127: Generic FT AHB SRAM module

tool: D19: Simple FT SRAM Controller

tool: D27: SpaceWire Serial Link

tool: D87: SPI controller

tool: D78: I2C master

tool: D163: Unknown device

tool: D103: Leon2 Interrupt Controller

tool: D200: Leon2 Memory Controller

tool: D183: Leon2 SPARC V8 Processor

tool: D182: LEON3 V8 Processor

assistant: ```c
char *dev_to_string(unsigned int dev) {
  switch (dev >> 24) {
  case 1:
    switch ((dev >> 12) & 0x0fff) {
    case 0x003:
      return "LEON3 V8 Processor";
      break;
    case 0x01D:
      return "GR Ethernet MAC";
      break;
    case 0x014:
      return "Fast 32-bit PCI Bridge";
      break;
    case 0x053:
      return "LEON3FT V8 Processor";
      break;
    case 0x011:
      return "Modular Timer unit";
      break;
    case 0x00D:
      return "Interrupt Controller";
      break;
    case 0x00C:
      return "UART";
      break;
    case 0x019:
      return "OC CAN AHB interface";
      break;
    case 0x01A:
      return "General Purpose I/O port";
      break;
    case 0x054:
      return "PROM/SRAM/SDRAM Memory controller with EDAC";
      break;
    case 0x050:
      return "Generic FT AHB SRAM module";
      break;
    case 0x051:
      return "Simple FT SRAM Controller";
      break;
    case 0x01F:
      return "SpaceWire Serial Link";
      break;
    case 0x02D:
      return "SPI controller";
      break;
    case 0x028:
      return "I2C master";
      break;
    default:
      return "Unknown device";
    }
    break;
  case 4:
    switch ((dev >> 12) & 0x0fff) {
    case 0x002:
      return ("Leon2 SPARC V8 Processor");
      break;
    case 0x00F:
      return ("Leon2 Memory Controller");
      break;
    case 0x005:
      return ("Leon2 Interrupt Controller");
      break;
    default:
      return ("Unknown device");
    }
    break;
  default:
    return ("Unknown vendor");
  }
}
```