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

```asm
<get_minor_device_name>:
  endbr64
  cmp    $0x3f,%edi
  ja     L672
  lea    D353(%rip),%rdx
  mov    %edi,%edi
  push   %r12
  movslq (%rdx,%rdi,4),%rax
  push   %rbp
  push   %rbx
  mov    %esi,%ebx
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L696:
  lea    D557(%rip),%rax
L180:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax)
L672:
  lea    D557(%rip),%rax
  ret
  mov    %ebx,%eax
  movb   $0x0,D405(%rip)
  lea    D405(%rip),%rbp
  and    $0x30,%eax
  cmp    $0x20,%eax
  je     L582
  cmp    $0x30,%eax
  je     L386
  cmp    $0x10,%eax
  je     L142
L301:
  mov    %ebx,%r12d
  and    $0xf,%r12d
  jne    L567
L47:
  mov    %rbp,%rdi
  call   <strlen@plt>
  mov    %eax,%r8d
  lea    D405(%rip),%rax
  test   %r8d,%r8d
  jg     L180
  lea    D577(%rip),%rax
  test   $0x4,%bl
  jne    L180
  lea    D631(%rip),%rax
  test   $0x8,%bl
  jne    L180
  lea    D48(%rip),%rax
  test   $0x10,%bl
  jne    L180
  and    $0x20,%ebx
  lea    D557(%rip),%rax
  lea    D406(%rip),%rdx
  cmovne %rdx,%rax
  jmp    L180
  nopl   0x0(%rax)
  cmp    $0x6,%ebx
  ja     10c0 <get_minor_device_name.cold>
  lea    D630(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
  cmp    $0x5,%ebx
  ja     L696
  lea    D224(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
  cmp    $0x6,%ebx
  ja     L696
  lea    D483(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
  lea    D376(%rip),%rax
  test   %ebx,%ebx
  je     L180
  lea    0x7(%rbx),%eax
  cmovns %ebx,%eax
  mov    %eax,%edx
  sar    $0x3,%edx
  cmp    $0x3f,%eax
  ja     10c0 <get_minor_device_name.cold>
  mov    %edx,%eax
  lea    D62(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  xchg   %ax,%ax
  cmp    $0x5,%ebx
  ja     L696
  lea    D417(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
  cmp    $0x12,%ebx
  ja     L696
  lea    D267(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
  lea    D251(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D157(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D605(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D435(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D710(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D304(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D74(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D728(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D554(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D586(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D433(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D376(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D521(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D207(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D426(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D289(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D99(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D470(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D242(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D36(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D136(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D231(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D225(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
  lea    D46(%rip),%rax
  jmp    L180
  lea    D482(%rip),%rax
  jmp    L180
  lea    D397(%rip),%rax
  jmp    L180
  lea    D183(%rip),%rax
  jmp    L180
  lea    D197(%rip),%rax
  jmp    L180
  lea    D522(%rip),%rax
  jmp    L180
  lea    D199(%rip),%rax
  jmp    L180
  lea    D628(%rip),%rax
  jmp    L180
  lea    D579(%rip),%rax
  jmp    L180
  lea    D528(%rip),%rax
  jmp    L180
  lea    D55(%rip),%rax
  jmp    L180
  lea    D677(%rip),%rax
  jmp    L180
  lea    D530(%rip),%rax
  jmp    L180
  lea    D503(%rip),%rax
  jmp    L180
  lea    D727(%rip),%rax
  jmp    L180
  lea    D641(%rip),%rax
  jmp    L180
  lea    D110(%rip),%rax
  jmp    L180
  lea    D627(%rip),%rax
  jmp    L180
  lea    D72(%rip),%rax
  jmp    L180
  lea    D332(%rip),%rax
  jmp    L180
  lea    D76(%rip),%rax
  jmp    L180
  lea    D49(%rip),%rax
  jmp    L180
  lea    D375(%rip),%rax
  jmp    L180
  lea    D770(%rip),%rax
  jmp    L180
  lea    D625(%rip),%rax
  jmp    L180
  nopl   0x0(%rax)
L567:
  mov    %rbp,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  jle    L202
  lea    D308(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
L202:
  mov    %rbp,%rdi
  cmp    $0x6,%r12d
  ja     L67
  lea    D214(%rip),%rdx
  mov    %r12d,%r12d
  movslq (%rdx,%r12,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  call   <strlen@plt>
  mov    $0x30,%edx
  lea    D295(%rip),%rsi
  mov    %rbp,%rdi
  sub    %eax,%edx
  call   <strncat@plt>
  jmp    L47
  call   <strlen@plt>
  mov    $0x30,%edx
  lea    D491(%rip),%rsi
  mov    %rbp,%rdi
  sub    %eax,%edx
  call   <strncat@plt>
  jmp    L47
  call   <strlen@plt>
  mov    $0x30,%edx
  lea    D213(%rip),%rsi
  mov    %rbp,%rdi
  sub    %eax,%edx
  call   <strncat@plt>
  jmp    L47
  call   <strlen@plt>
  mov    $0x30,%edx
  lea    D394(%rip),%rsi
  mov    %rbp,%rdi
  sub    %eax,%edx
  call   <strncat@plt>
  jmp    L47
  call   <strlen@plt>
  mov    $0x30,%edx
  lea    D543(%rip),%rsi
  mov    %rbp,%rdi
  sub    %eax,%edx
  call   <strncat@plt>
  jmp    L47
  call   <strlen@plt>
  mov    $0x30,%edx
  lea    D226(%rip),%rsi
  mov    %rbp,%rdi
  sub    %eax,%edx
  call   <strncat@plt>
  jmp    L47
L142:
  mov    $0x30,%edx
  lea    D324(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncpy@plt>
  jmp    L301
  nopl   0x0(%rax)
L386:
  mov    $0x30,%edx
  lea    D454(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncpy@plt>
  jmp    L301
  nopl   0x0(%rax)
L582:
  mov    $0x30,%edx
  lea    D525(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncpy@plt>
  jmp    L301
L67:
  call   <strlen@plt>
  mov    $0x30,%edx
  lea    D12(%rip),%rsi
  mov    %rbp,%rdi
  sub    %eax,%edx
  call   <strncat@plt>
  jmp    L47
```

tool_calls: name: unpack_data
arguments: data_tag: D557
type_guessed: string
name: unpack_data
arguments: data_tag: D577
type_guessed: string
name: unpack_data
arguments: data_tag: D631
type_guessed: string
name: unpack_data
arguments: data_tag: D48
type_guessed: string
name: unpack_data
arguments: data_tag: D406
type_guessed: string
name: unpack_data
arguments: data_tag: D376
type_guessed: string
name: unpack_data
arguments: data_tag: D251
type_guessed: string
name: unpack_data
arguments: data_tag: D157
type_guessed: string
name: unpack_data
arguments: data_tag: D605
type_guessed: string
name: unpack_data
arguments: data_tag: D435
type_guessed: string
name: unpack_data
arguments: data_tag: D710
type_guessed: string
name: unpack_data
arguments: data_tag: D304
type_guessed: string
name: unpack_data
arguments: data_tag: D74
type_guessed: string
name: unpack_data
arguments: data_tag: D728
type_guessed: string
name: unpack_data
arguments: data_tag: D554
type_guessed: string
name: unpack_data
arguments: data_tag: D586
type_guessed: string
name: unpack_data
arguments: data_tag: D433
type_guessed: string
name: unpack_data
arguments: data_tag: D521
type_guessed: string
name: unpack_data
arguments: data_tag: D207
type_guessed: string
name: unpack_data
arguments: data_tag: D426
type_guessed: string
name: unpack_data
arguments: data_tag: D289
type_guessed: string
name: unpack_data
arguments: data_tag: D99
type_guessed: string
name: unpack_data
arguments: data_tag: D470
type_guessed: string
name: unpack_data
arguments: data_tag: D242
type_guessed: string
name: unpack_data
arguments: data_tag: D36
type_guessed: string
name: unpack_data
arguments: data_tag: D136
type_guessed: string
name: unpack_data
arguments: data_tag: D231
type_guessed: string
name: unpack_data
arguments: data_tag: D225
type_guessed: string
name: unpack_data
arguments: data_tag: D46
type_guessed: string
name: unpack_data
arguments: data_tag: D482
type_guessed: string
name: unpack_data
arguments: data_tag: D397
type_guessed: string
name: unpack_data
arguments: data_tag: D183
type_guessed: string
name: unpack_data
arguments: data_tag: D197
type_guessed: string
name: unpack_data
arguments: data_tag: D522
type_guessed: string
name: unpack_data
arguments: data_tag: D199
type_guessed: string
name: unpack_data
arguments: data_tag: D628
type_guessed: string
name: unpack_data
arguments: data_tag: D579
type_guessed: string
name: unpack_data
arguments: data_tag: D528
type_guessed: string
name: unpack_data
arguments: data_tag: D55
type_guessed: string
name: unpack_data
arguments: data_tag: D677
type_guessed: string
name: unpack_data
arguments: data_tag: D530
type_guessed: string
name: unpack_data
arguments: data_tag: D503
type_guessed: string
name: unpack_data
arguments: data_tag: D727
type_guessed: string
name: unpack_data
arguments: data_tag: D641
type_guessed: string
name: unpack_data
arguments: data_tag: D110
type_guessed: string
name: unpack_data
arguments: data_tag: D627
type_guessed: string
name: unpack_data
arguments: data_tag: D72
type_guessed: string
name: unpack_data
arguments: data_tag: D332
type_guessed: string
name: unpack_data
arguments: data_tag: D76
type_guessed: string
name: unpack_data
arguments: data_tag: D49
type_guessed: string
name: unpack_data
arguments: data_tag: D375
type_guessed: string
name: unpack_data
arguments: data_tag: D770
type_guessed: string
name: unpack_data
arguments: data_tag: D625
type_guessed: string
name: unpack_data
arguments: data_tag: D308
type_guessed: string
name: unpack_data
arguments: data_tag: D295
type_guessed: string
name: unpack_data
arguments: data_tag: D491
type_guessed: string
name: unpack_data
arguments: data_tag: D213
type_guessed: string
name: unpack_data
arguments: data_tag: D394
type_guessed: string
name: unpack_data
arguments: data_tag: D543
type_guessed: string
name: unpack_data
arguments: data_tag: D226
type_guessed: string
name: unpack_data
arguments: data_tag: D324
type_guessed: string
name: unpack_data
arguments: data_tag: D454
type_guessed: string
name: unpack_data
arguments: data_tag: D525
type_guessed: string
name: unpack_data
arguments: data_tag: D12
type_guessed: string

tool: D557: Unknown

tool: D577: Display

tool: D631: Camera

tool: D48: Scanner

tool: D406: Printer

tool: D376: Uncategorized

tool: 

tool: D157: Vehicle

tool: D605: Pager

tool: D435: Game

tool: D710: Controller

tool: D304: Doll / Action Figure

tool: D74: Wrist Watch

tool: D728: Helmet

tool: D554: Jacket

tool: D586: Robot

tool: D433: Glasses

tool: D521: Desktop workstation

tool: D207: Cellular

tool: D426: Cordless

tool: D289: Sim Card Reader

tool: D99: Common ISDN Access

tool: D470: Wired modem / voice gateway

tool: D242: Smart phone

tool: D36: Wearable

tool: D136: Palm

tool: D231: Handheld

tool: D225: Laptop

tool: D46: Server

tool: D482: 1-17% utilized

tool: D397: 83-99% utilized

tool: D183: No service available

tool: D197: 67-83% utilized

tool: D522: 50-67% utilized

tool: D199: Fully available

tool: D628: 33-50% utilized

tool: D579: 17-33% utilized

tool: D528: Gaming/Toy

tool: D55: Video Conferencing

tool: D677: Video Display and Loudspeaker

tool: D530: Video Monitor

tool: D503: Loudspeaker

tool: D727: Microphone

tool: D641: Hands-free

tool: D110: Camcorder

tool: D627: Video Camera

tool: D72: VCR

tool: D332: HiFi Audio Device

tool: D76: Set-top box

tool: D49: Car Audio

tool: D375: Portable Audio

tool: D770: Headphones

tool: D625: Headset profile

tool: D308: /

tool: D295: Digitizer tablet

tool: D491: Sensing device

tool: D213: Remote control

tool: D394: Gamepad

tool: D543: Joystick

tool: D226: Card reader

tool: D324: Keyboard

tool: D454: Combo keyboard/pointing device

tool: D525: Pointing device

tool: D12: (reserved)

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 / 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 "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));
      break;
    case 2:
      strncat(cls_str, "Gamepad", sizeof(cls_str) - strlen(cls_str));
      break;
    case 3:
      strncat(cls_str, "Remote control", sizeof(cls_str) - strlen(cls_str));
      break;
    case 4:
      strncat(cls_str, "Sensing device", sizeof(cls_str) - strlen(cls_str));
      break;
    case 5:
      strncat(cls_str, "Digitizer tablet", sizeof(cls_str) - strlen(cls_str));
      break;
    case 6:
      strncat(cls_str, "Card reader", sizeof(cls_str) - strlen(cls_str));
      break;
    default:
      strncat(cls_str, "(reserved)", sizeof(cls_str) - strlen(cls_str));
      break;
    }
    if (strlen(cls_str) > 0)
      return cls_str;
  }
  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";
}
```