user: What would the C source look like for the assembly code provided here?

```asm
<get_minor_device_name>:
  endbr64
  cmp    $0x3f,%edi
  ja     L663
  push   %rbx
  mov    %esi,%ebx
  mov    %edi,%edi
  lea    D547(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D4(%rip),%rax
L727:
  pop    %rbx
  ret
  cmp    $0x6,%esi
  ja     L650
  mov    %esi,%ebx
  lea    D569(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D762(%rip),%rax
  jmp    L727
  lea    D256(%rip),%rax
  jmp    L727
  lea    D918(%rip),%rax
  jmp    L727
  lea    D978(%rip),%rax
  jmp    L727
  lea    D642(%rip),%rax
  jmp    L727
  lea    D904(%rip),%rax
  jmp    L727
  cmp    $0x6,%esi
  ja     L607
  mov    %esi,%ebx
  lea    D217(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D761(%rip),%rax
  jmp    L727
  lea    D692(%rip),%rax
  jmp    L727
  lea    D336(%rip),%rax
  jmp    L727
  lea    D432(%rip),%rax
  jmp    L727
  lea    D585(%rip),%rax
  jmp    L727
  lea    D259(%rip),%rax
  jmp    L727
  lea    D102(%rip),%rax
  test   %esi,%esi
  je     L727
  lea    0x7(%rsi),%eax
  cmovns %esi,%eax
  mov    %eax,%edx
  sar    $0x3,%edx
  cmp    $0x3f,%eax
  ja     L710
  mov    %edx,%eax
  lea    D382(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D600(%rip),%rax
  jmp    L727
  lea    D774(%rip),%rax
  jmp    L727
  lea    D512(%rip),%rax
  jmp    L727
  lea    D22(%rip),%rax
  jmp    L727
  lea    D957(%rip),%rax
  jmp    L727
  lea    D433(%rip),%rax
  jmp    L727
  lea    D852(%rip),%rax
  jmp    L727
  cmp    $0x12,%esi
  ja     L314
  mov    %esi,%ebx
  lea    D23(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D33(%rip),%rax
  jmp    L727
  lea    D495(%rip),%rax
  jmp    L727
  lea    D527(%rip),%rax
  jmp    L727
  lea    D197(%rip),%rax
  jmp    L727
  lea    D127(%rip),%rax
  jmp    L727
  lea    D828(%rip),%rax
  jmp    L727
  lea    D160(%rip),%rax
  jmp    L727
  lea    D634(%rip),%rax
  jmp    L727
  lea    D503(%rip),%rax
  jmp    L727
  lea    D439(%rip),%rax
  jmp    L727
  lea    D465(%rip),%rax
  jmp    L727
  lea    D669(%rip),%rax
  jmp    L727
  lea    D722(%rip),%rax
  jmp    L727
  lea    D798(%rip),%rax
  jmp    L727
  lea    D688(%rip),%rax
  jmp    L727
  lea    D606(%rip),%rax
  jmp    L727
  movb   $0x0,D696(%rip)
  mov    %esi,%eax
  and    $0x30,%eax
  cmp    $0x20,%eax
  je     L379
  cmp    $0x30,%eax
  je     L265
  cmp    $0x10,%eax
  je     L399
L387:
  and    $0xf,%ebx
  jne    L440
L320:
  lea    D696(%rip),%rdi
  call   <strlen@plt>
  test   %eax,%eax
  lea    D4(%rip),%rax
  lea    D696(%rip),%rdx
  cmovg  %rdx,%rax
  jmp    L727
L399:
  mov    $0x30,%edx
  lea    D848(%rip),%rsi
  lea    D696(%rip),%rdi
  call   <strncpy@plt>
  jmp    L387
L379:
  mov    $0x30,%edx
  lea    D623(%rip),%rsi
  lea    D696(%rip),%rdi
  call   <strncpy@plt>
  jmp    L387
L265:
  mov    $0x30,%edx
  lea    D860(%rip),%rsi
  lea    D696(%rip),%rdi
  call   <strncpy@plt>
  jmp    L387
L440:
  lea    D696(%rip),%rdi
  call   <strlen@plt>
  test   %eax,%eax
  jg     L771
L720:
  cmp    $0x6,%ebx
  ja     L455
  mov    %ebx,%ebx
  lea    D738(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L771:
  lea    D960(%rip),%rsi
  lea    D696(%rip),%rdi
  call   <strcat@plt>
  jmp    L720
  lea    D696(%rip),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    $0x2f,%edx
  sub    %eax,%edx
  lea    D491(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncat@plt>
  jmp    L320
  lea    D696(%rip),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    $0x2f,%edx
  sub    %eax,%edx
  lea    D180(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncat@plt>
  jmp    L320
  lea    D696(%rip),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    $0x2f,%edx
  sub    %eax,%edx
  lea    D713(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncat@plt>
  jmp    L320
  lea    D696(%rip),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    $0x2f,%edx
  sub    %eax,%edx
  lea    D588(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncat@plt>
  jmp    L320
  lea    D696(%rip),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    $0x2f,%edx
  sub    %eax,%edx
  lea    D105(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncat@plt>
  jmp    L320
  lea    D696(%rip),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    $0x2f,%edx
  sub    %eax,%edx
  lea    D943(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncat@plt>
  jmp    L320
L455:
  lea    D696(%rip),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    $0x2f,%edx
  sub    %eax,%edx
  lea    D646(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncat@plt>
  jmp    L320
  lea    D112(%rip),%rax
  test   $0x4,%sil
  jne    L727
  lea    D746(%rip),%rax
  test   $0x8,%sil
  jne    L727
  lea    D786(%rip),%rax
  test   $0x10,%sil
  jne    L727
  test   $0x20,%sil
  lea    D4(%rip),%rax
  lea    D534(%rip),%rdx
  cmovne %rdx,%rax
  jmp    L727
  cmp    $0x5,%esi
  ja     L704
  mov    %esi,%ebx
  lea    D263(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D52(%rip),%rax
  jmp    L727
  lea    D619(%rip),%rax
  jmp    L727
  lea    D496(%rip),%rax
  jmp    L727
  lea    D404(%rip),%rax
  jmp    L727
  cmp    $0x5,%esi
  ja     L78
  mov    %esi,%ebx
  lea    D847(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D381(%rip),%rax
  jmp    L727
  lea    D572(%rip),%rax
  jmp    L727
  lea    D940(%rip),%rax
  jmp    L727
  lea    D358(%rip),%rax
  jmp    L727
L78:
  lea    D4(%rip),%rax
  jmp    L727
L704:
  lea    D4(%rip),%rax
  jmp    L727
L314:
  lea    D4(%rip),%rax
  jmp    L727
L710:
  lea    D4(%rip),%rax
  jmp    L727
L607:
  lea    D4(%rip),%rax
  jmp    L727
L650:
  lea    D4(%rip),%rax
  jmp    L727
  lea    D792(%rip),%rax
  jmp    L727
  lea    D102(%rip),%rax
  jmp    L727
  lea    D102(%rip),%rax
  jmp    L727
  lea    D282(%rip),%rax
  jmp    L727
  lea    D102(%rip),%rax
  jmp    L727
  lea    D715(%rip),%rax
  jmp    L727
  lea    D617(%rip),%rax
  jmp    L727
L663:
  lea    D4(%rip),%rax
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D4
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D762
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D256
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D918
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D978
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D642
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D904
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D761
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D692
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D336
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D432
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D585
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D259
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D102
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D600
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D774
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D512
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D22
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D957
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D433
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D852
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D33
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D495
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D527
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D197
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D127
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D828
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D160
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D634
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D503
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D439
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D465
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D669
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D722
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D798
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D688
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D606
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D848
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D623
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D860
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D960
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D491
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D180
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D713
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D588
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D105
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D943
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D646
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D112
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D746
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D786
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D534
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D52
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D619
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D496
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D404
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D381
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D572
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D940
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D358
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D792
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D282
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D715
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D617
type_guessed: string

tool: D4: Unknown (reserved) minor device class

tool: D762: Desktop workstation

tool: D256: Server

tool: D918: Laptop

tool: D978: Handheld

tool: D642: Palm

tool: D904: Wearable

tool: D761: Cellular

tool: D692: Cordless

tool: D336: Smart phone

tool: D432: Wired modem or voice gateway

tool: D585: Common ISDN Access

tool: D259: Sim Card Reader

tool: D102: Uncategorized

tool: D600: 1-17% utilized

tool: D774: 17-33% utilized

tool: D512: 33-50% utilized

tool: D22: 50-67% utilized

tool: D957: 67-83% utilized

tool: D433: 83-99% utilized

tool: D852: No service available

tool: D33: Device conforms to the Headset profile

tool: D495: Hands-free

tool: D527: Microphone

tool: D197: Loudspeaker

tool: D127: Headphones

tool: D828: Portable Audio

tool: D160: Car Audio

tool: D634: Set-top box

tool: D503: HiFi Audio Device

tool: D439: VCR

tool: D465: Video Camera

tool: D669: Camcorder

tool: D722: Video Monitor

tool: D798: Video Display and Loudspeaker

tool: D688: Video Conferencing

tool: D606: Gaming/Toy

tool: D848: Keyboard

tool: D623: Pointing device

tool: D860: Combo keyboard/pointing device

tool: D960: /

tool: D491: Joystick

tool: D180: Gamepad

tool: D713: Remote control

tool: D588: Sensing device

tool: D105: Digitizer tablet

tool: D943: Card reader

tool: D646: (reserved)

tool: D112: Display

tool: D746: Camera

tool: D786: Scanner

tool: D534: Printer

tool: D52: Pager

tool: D619: Jacket

tool: D496: Helmet

tool: D404: Glasses

tool: D381: Vehicle

tool: D572: Doll / Action Figure

tool: D940: Controller

tool: D358: Game

tool: 

tool: D282: Fully available

tool: D715: Wrist Watch

tool: D617: Robot

assistant: ```c
char *get_minor_device_name(int major, int minor) {
  switch (major) {
  case 0:
    return "";
  case 1:
    switch (minor) {
    case 0:
      return "Uncategorized";
    case 1:
      return "Desktop workstation";
    case 2:
      return "Server";
    case 3:
      return "Laptop";
    case 4:
      return "Handheld";
    case 5:
      return "Palm";
    case 6:
      return "Wearable";
    }
    break;
  case 2:
    switch (minor) {
    case 0:
      return "Uncategorized";
    case 1:
      return "Cellular";
    case 2:
      return "Cordless";
    case 3:
      return "Smart phone";
    case 4:
      return "Wired modem or voice gateway";
    case 5:
      return "Common ISDN Access";
    case 6:
      return "Sim Card Reader";
    }
    break;
  case 3:
    if (minor == 0)
      return "Uncategorized";
    switch (minor / 8) {
    case 0:
      return "Fully available";
    case 1:
      return "1-17% utilized";
    case 2:
      return "17-33% utilized";
    case 3:
      return "33-50% utilized";
    case 4:
      return "50-67% utilized";
    case 5:
      return "67-83% utilized";
    case 6:
      return "83-99% utilized";
    case 7:
      return "No service available";
    }
    break;
  case 4:
    switch (minor) {
    case 0:
      return "Uncategorized";
    case 1:
      return "Device conforms to the Headset profile";
    case 2:
      return "Hands-free";
    case 4:
      return "Microphone";
    case 5:
      return "Loudspeaker";
    case 6:
      return "Headphones";
    case 7:
      return "Portable Audio";
    case 8:
      return "Car Audio";
    case 9:
      return "Set-top box";
    case 10:
      return "HiFi Audio Device";
    case 11:
      return "VCR";
    case 12:
      return "Video Camera";
    case 13:
      return "Camcorder";
    case 14:
      return "Video Monitor";
    case 15:
      return "Video Display and Loudspeaker";
    case 16:
      return "Video Conferencing";
    case 18:
      return "Gaming/Toy";
    }
    break;
  case 5: {
    static char cls_str[48];
    cls_str[0] = 0;
    switch (minor & 48) {
    case 16:
      strncpy(cls_str, "Keyboard", sizeof(cls_str));
      break;
    case 32:
      strncpy(cls_str, "Pointing device", sizeof(cls_str));
      break;
    case 48:
      strncpy(cls_str, "Combo keyboard/pointing device", sizeof(cls_str));
      break;
    }
    if ((minor & 15) && (strlen(cls_str) > 0))
      strcat(cls_str, "/");
    switch (minor & 15) {
    case 0:
      break;
    case 1:
      strncat(cls_str, "Joystick", sizeof(cls_str) - strlen(cls_str) - 1);
      break;
    case 2:
      strncat(cls_str, "Gamepad", sizeof(cls_str) - strlen(cls_str) - 1);
      break;
    case 3:
      strncat(cls_str, "Remote control", sizeof(cls_str) - strlen(cls_str) - 1);
      break;
    case 4:
      strncat(cls_str, "Sensing device", sizeof(cls_str) - strlen(cls_str) - 1);
      break;
    case 5:
      strncat(cls_str, "Digitizer tablet", sizeof(cls_str) - strlen(cls_str) - 1);
      break;
    case 6:
      strncat(cls_str, "Card reader", sizeof(cls_str) - strlen(cls_str) - 1);
      break;
    default:
      strncat(cls_str, "(reserved)", sizeof(cls_str) - strlen(cls_str) - 1);
      break;
    }
    if (strlen(cls_str) > 0)
      return cls_str;
    break;
  }
  case 6:
    if (minor & 4)
      return "Display";
    if (minor & 8)
      return "Camera";
    if (minor & 16)
      return "Scanner";
    if (minor & 32)
      return "Printer";
    break;
  case 7:
    switch (minor) {
    case 1:
      return "Wrist Watch";
    case 2:
      return "Pager";
    case 3:
      return "Jacket";
    case 4:
      return "Helmet";
    case 5:
      return "Glasses";
    }
    break;
  case 8:
    switch (minor) {
    case 1:
      return "Robot";
    case 2:
      return "Vehicle";
    case 3:
      return "Doll / Action Figure";
    case 4:
      return "Controller";
    case 5:
      return "Game";
    }
    break;
  case 63:
    return "";
  }
  return "Unknown (reserved) minor device class";
}
```