
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 dump_videocontrol_interface(libusb_device_handle *dev,uchar *buf,int protocol)

{
  byte *pbVar1;
  char **ppcVar2;
  int iVar3;
  byte bVar4;
  uchar uVar5;
  uchar uVar6;
  u_int16_t uVar7;
  uint3 uVar8;
  ushort uVar9;
  int iVar10;
  char *pcVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uchar *puVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  int in_GS_OFFSET;
  char *local_c8;
  char termts [128];
  
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  if (buf[1] == '$') {
    bVar4 = *buf;
    uVar6 = '$';
    if (bVar4 < 3) {
      pcVar11 = "      Warning: Descriptor too short";
      goto LAB_00018159;
    }
  }
  else {
    pcVar11 = "      Warning: Invalid descriptor";
LAB_00018159:
    puts(pcVar11);
    uVar6 = buf[1];
    bVar4 = *buf;
  }
  __printf_chk(1,
               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "
               ,bVar4,uVar6,buf[2]);
  switch(buf[2]) {
  default:
    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");
    bVar4 = *buf;
    if (bVar4 != 3) {
      puVar15 = buf + 3;
      do {
        uVar6 = *puVar15;
        puVar15 = puVar15 + 1;
        __printf_chk(1," %02x",uVar6);
      } while (puVar15 != buf + bVar4);
    }
    goto LAB_0001827d;
  case '\x01':
    puts("(HEADER)");
    uVar18 = (uint)buf[0xb];
    uVar17 = uVar18 + 0xc;
    if (*buf < uVar17) {
      puts("      Warning: Descriptor too short");
    }
    uVar13 = uVar18;
    __printf_chk(1,
                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"
                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,
                 *(uint *)(buf + 7) % 1000000,uVar18);
    if (uVar18 != 0) {
      uVar12 = 0;
      do {
        uVar13 = (uint)buf[uVar12 + 0xc];
        uVar16 = uVar12 + 1;
        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);
        uVar12 = uVar16;
      } while (uVar18 != uVar16);
    }
    local_c8 = (char *)0x0;
    if (*buf <= uVar17) goto LAB_00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);
    if (uVar17 < *buf) {
      do {
        puVar15 = buf + uVar17;
        uVar17 = uVar17 + 1;
        __printf_chk(1," %02x",*puVar15,uVar13);
      } while (uVar17 < *buf);
    }
LAB_0001827d:
    putchar(10);
    local_c8 = (char *)0x0;
    goto LAB_00018298;
  case '\x02':
    puts("(INPUT_TERMINAL)");
    local_c8 = get_dev_string(dev,buf[7]);
    uVar7 = *(u_int16_t *)(buf + 4);
    termts[0] = '\0';
    uVar17 = 8;
    if (uVar7 == 0x201) {
      uVar17 = 0xf;
    }
    iVar10 = 0;
    if (uVar7 == 0x201) {
      iVar10 = 7;
    }
    pcVar11 = names_videoterminal(uVar7);
    if (pcVar11 != (char *)0x0) {
      snprintf(termts,0x80,"%s",pcVar11);
    }
    if (*buf < uVar17) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"
                 ,buf[3],uVar7,termts,buf[6]);
    pcVar11 = local_c8;
    __printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);
    if (uVar7 == 0x201) {
      iVar10 = iVar10 + (uint)buf[0xe];
      __printf_chk(1,
                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"
                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),
                   (uint)buf[0xe]);
      uVar6 = buf[0xe];
      if (uVar6 == '\0') {
        uVar17 = 0;
      }
      else {
        uVar17 = (uint)buf[iVar10 + 7];
        if (uVar6 != '\x01') {
          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);
          uVar17 = (uint)uVar9;
          if (uVar6 != '\x02') {
            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);
          }
        }
      }
      uVar18 = 0;
      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);
      if (protocol == 1) {
        do {
          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {
            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);
          }
          uVar18 = uVar18 + 1;
        } while (uVar18 != 0x16);
      }
      else {
        do {
          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {
            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);
          }
          uVar18 = uVar18 + 1;
        } while (uVar18 != 0x13);
      }
      uVar17 = iVar10 + 8;
    }
    if (*buf <= uVar17) goto LAB_00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);
    if (uVar17 < *buf) {
      do {
        puVar15 = buf + uVar17;
        uVar17 = uVar17 + 1;
        __printf_chk(1," %02x",*puVar15,pcVar11);
      } while (uVar17 < *buf);
    }
    break;
  case '\x03':
    puts("(OUTPUT_TERMINAL)");
    local_c8 = get_dev_string(dev,buf[8]);
    uVar7 = *(u_int16_t *)(buf + 4);
    termts[0] = '\0';
    pcVar11 = names_videoterminal(uVar7);
    if (pcVar11 != (char *)0x0) {
      snprintf(termts,0x80,"%s",pcVar11);
    }
    if (*buf < 9) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"
                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);
    if (*buf < 10) goto LAB_00018298;
    uVar17 = 9;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);
    if (9 < *buf) {
      do {
        puVar15 = buf + uVar17;
        uVar17 = uVar17 + 1;
        __printf_chk(1," %02x",*puVar15);
      } while (uVar17 < *buf);
    }
    break;
  case '\x04':
    puts("(SELECTOR_UNIT)");
    uVar18 = (uint)buf[4];
    uVar17 = uVar18 + 6;
    if (*buf < uVar17) {
      puts("      Warning: Descriptor too short");
    }
    local_c8 = get_dev_string(dev,buf[uVar18 + 5]);
    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],
                 uVar18);
    if (uVar18 != 0) {
      uVar13 = 0;
      do {
        uVar12 = uVar13 + 1;
        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);
        uVar13 = uVar12;
      } while (uVar18 != uVar12);
    }
    pcVar11 = local_c8;
    __printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);
    if (*buf <= uVar17) goto LAB_00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);
    if (uVar17 < *buf) {
      do {
        puVar15 = buf + uVar17;
        uVar17 = uVar17 + 1;
        __printf_chk(1," %02x",*puVar15,pcVar11);
      } while (uVar17 < *buf);
    }
    break;
  case '\x05':
    puts("(PROCESSING_UNIT)");
    uVar17 = (uint)buf[7];
    local_c8 = get_dev_string(dev,buf[uVar17 + 8]);
    if ((uint)*buf < uVar17 + 10) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"
                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);
    if (uVar17 == 0) {
      uVar18 = 0;
    }
    else {
      puVar15 = buf + uVar17;
      uVar18 = 0;
      uVar13 = 0;
      do {
        pbVar1 = puVar15 + 7;
        uVar13 = uVar13 + 1;
        puVar15 = puVar15 + -1;
        uVar18 = uVar18 << 8 | (uint)*pbVar1;
        if (2 < uVar13) break;
      } while (uVar13 < uVar17);
    }
    uVar13 = 0;
    __printf_chk(1,"        bmControls     0x%08x\n",uVar18);
    if (protocol == 1) {
      do {
        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {
          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);
        }
        uVar13 = uVar13 + 1;
      } while (uVar13 != 0x13);
    }
    else {
      do {
        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {
          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);
        }
        uVar13 = uVar13 + 1;
      } while (uVar13 != 0x12);
    }
    bVar4 = buf[uVar17 + 9];
    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",
                 buf[uVar17 + 8],local_c8,bVar4);
    if ((bVar4 & 1) != 0) {
      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);
    }
    if ((bVar4 & 2) != 0) {
      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");
    }
    if ((bVar4 & 4) != 0) {
      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");
    }
    if ((bVar4 & 8) != 0) {
      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");
    }
    if ((bVar4 & 0x10) != 0) {
      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");
    }
    if ((bVar4 & 0x20) != 0) {
      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");
    }
    goto LAB_00018298;
  case '\x06':
    puts("(EXTENSION_UNIT)");
    uVar17 = (uint)buf[0x15];
    uVar18 = (uint)buf[uVar17 + 0x16];
    uVar13 = uVar17 + uVar18 + 0x18;
    local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);
    if (*buf < uVar13) {
      puts("      Warning: Descriptor too short");
    }
    uVar6 = buf[0x14];
    uVar12 = (uint)buf[0x13];
    uVar5 = buf[0x15];
    __sprintf_chk(&guid_5834,1,0x27,
                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],
                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],
                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);
    __printf_chk(1,
                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"
                 ,buf[3],&guid_5834,uVar6,uVar5);
    if (uVar17 != 0) {
      uVar16 = 0;
      do {
        uVar12 = (uint)buf[uVar16 + 0x16];
        uVar14 = uVar16 + 1;
        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);
        uVar16 = uVar14;
      } while (uVar17 != uVar14);
    }
    __printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);
    if (uVar18 != 0) {
      uVar12 = 0;
      do {
        uVar16 = uVar12 + 1;
        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);
        uVar12 = uVar16;
      } while (uVar18 != uVar16);
    }
    pcVar11 = local_c8;
    __printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);
    if (*buf <= uVar13) goto LAB_00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);
    if (uVar13 < *buf) {
      do {
        puVar15 = buf + uVar13;
        uVar13 = uVar13 + 1;
        __printf_chk(1," %02x",*puVar15,pcVar11);
      } while (uVar13 < *buf);
    }
    break;
  case '\a':
    puts("(ENCODING UNIT)");
    local_c8 = get_dev_string(dev,buf[5]);
    if (*buf < 0xd) {
      puts("      Warning: Descriptor too short");
    }
    uVar17 = 0;
    __printf_chk(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"
                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);
    uVar8 = *(uint3 *)(buf + 7);
    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);
    do {
      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {
        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;
        uVar17 = uVar17 + 1;
        __printf_chk(1,&DAT_000243b1,*ppcVar2);
        if (uVar17 == 0x14) goto LAB_000189ea;
      }
      uVar17 = uVar17 + 1;
    } while (uVar17 != 0x14);
LAB_000189ea:
    uVar18 = 0;
    uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];
    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);
    do {
      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {
        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);
      }
      uVar18 = uVar18 + 1;
    } while (uVar18 != 0x14);
    goto LAB_00018298;
  }
  putchar(10);
LAB_00018298:
  free(local_c8);
  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)

{
  byte *pbVar1;
  undefined **ppuVar2;
  byte bVar3;
  byte bVar4;
  short sVar5;
  undefined2 uVar6;
  uint3 uVar7;
  ushort uVar8;
  char *__s;
  int iVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  byte *pbVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  int in_GS_OFFSET;
  void *pvVar18;
  void *local_c8;
  char acStack_a0 [128];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x180ed;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_2[1] == 0x24) {
    bVar3 = *param_2;
    bVar4 = 0x24;
    if (bVar3 < 3) {
      __s = "      Warning: Descriptor too short";
      goto LAB_00018159;
    }
  }
  else {
    __s = "      Warning: Invalid descriptor";
LAB_00018159:
    puts(__s);
    bVar4 = param_2[1];
    bVar3 = *param_2;
  }
  __printf_chk(1,
               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "
               ,bVar3,bVar4,param_2[2]);
  switch(param_2[2]) {
  default:
    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");
    bVar3 = *param_2;
    if (bVar3 != 3) {
      pbVar14 = param_2 + 3;
      do {
        bVar4 = *pbVar14;
        pbVar14 = pbVar14 + 1;
        __printf_chk(1," %02x",bVar4);
      } while (pbVar14 != param_2 + bVar3);
    }
    goto LAB_0001827d;
  case 1:
    puts("(HEADER)");
    uVar17 = (uint)param_2[0xb];
    uVar16 = uVar17 + 0xc;
    if (*param_2 < uVar16) {
      puts("      Warning: Descriptor too short");
    }
    uVar12 = uVar17;
    __printf_chk(1,
                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"
                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),
                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);
    if (uVar17 != 0) {
      uVar11 = 0;
      do {
        uVar12 = (uint)param_2[uVar11 + 0xc];
        uVar15 = uVar11 + 1;
        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);
        uVar11 = uVar15;
      } while (uVar17 != uVar15);
    }
    local_c8 = (void *)0x0;
    if (*param_2 <= uVar16) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);
    if (uVar16 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14,uVar12);
      } while (uVar16 < *param_2);
    }
LAB_0001827d:
    putchar(10);
    local_c8 = (void *)0x0;
    goto code_r0x00018298;
  case 2:
    puts("(INPUT_TERMINAL)");
    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);
    sVar5 = *(short *)(param_2 + 4);
    acStack_a0[0] = '\0';
    uVar16 = 8;
    if (sVar5 == 0x201) {
      uVar16 = 0xf;
    }
    iVar10 = 0;
    if (sVar5 == 0x201) {
      iVar10 = 7;
    }
    iVar9 = FUN_00022850(sVar5);
    if (iVar9 != 0) {
      snprintf(acStack_a0,0x80,"%s",iVar9);
    }
    if (*param_2 < uVar16) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"
                 ,param_2[3],sVar5,acStack_a0,param_2[6]);
    pvVar18 = local_c8;
    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);
    if (sVar5 == 0x201) {
      iVar10 = iVar10 + (uint)param_2[0xe];
      __printf_chk(1,
                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"
                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),
                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);
      bVar3 = param_2[0xe];
      if (bVar3 == 0) {
        uVar16 = 0;
      }
      else {
        uVar16 = (uint)param_2[iVar10 + 7];
        if (bVar3 != 1) {
          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);
          uVar16 = (uint)uVar8;
          if (bVar3 != 2) {
            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);
          }
        }
      }
      uVar17 = 0;
      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);
      if (param_3 == 1) {
        do {
          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {
            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);
          }
          uVar17 = uVar17 + 1;
        } while (uVar17 != 0x16);
      }
      else {
        do {
          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {
            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);
          }
          uVar17 = uVar17 + 1;
        } while (uVar17 != 0x13);
      }
      uVar16 = iVar10 + 8;
    }
    if (*param_2 <= uVar16) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);
    if (uVar16 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14,pvVar18);
      } while (uVar16 < *param_2);
    }
    break;
  case 3:
    puts("(OUTPUT_TERMINAL)");
    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);
    uVar6 = *(undefined2 *)(param_2 + 4);
    acStack_a0[0] = '\0';
    iVar10 = FUN_00022850(uVar6);
    if (iVar10 != 0) {
      snprintf(acStack_a0,0x80,"%s",iVar10);
    }
    if (*param_2 < 9) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"
                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);
    if (*param_2 < 10) goto code_r0x00018298;
    uVar16 = 9;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);
    if (9 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14);
      } while (uVar16 < *param_2);
    }
    break;
  case 4:
    puts("(SELECTOR_UNIT)");
    uVar17 = (uint)param_2[4];
    uVar16 = uVar17 + 6;
    if (*param_2 < uVar16) {
      puts("      Warning: Descriptor too short");
    }
    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);
    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],
                 uVar17);
    if (uVar17 != 0) {
      uVar12 = 0;
      do {
        uVar11 = uVar12 + 1;
        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);
        uVar12 = uVar11;
      } while (uVar17 != uVar11);
    }
    pvVar18 = local_c8;
    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);
    if (*param_2 <= uVar16) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);
    if (uVar16 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14,pvVar18);
      } while (uVar16 < *param_2);
    }
    break;
  case 5:
    puts("(PROCESSING_UNIT)");
    uVar16 = (uint)param_2[7];
    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);
    if ((uint)*param_2 < uVar16 + 10) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"
                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);
    if (uVar16 == 0) {
      uVar17 = 0;
    }
    else {
      pbVar14 = param_2 + uVar16;
      uVar17 = 0;
      uVar12 = 0;
      do {
        pbVar1 = pbVar14 + 7;
        uVar12 = uVar12 + 1;
        pbVar14 = pbVar14 + -1;
        uVar17 = uVar17 << 8 | (uint)*pbVar1;
        if (2 < uVar12) break;
      } while (uVar12 < uVar16);
    }
    uVar12 = 0;
    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);
    if (param_3 == 1) {
      do {
        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {
          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);
        }
        uVar12 = uVar12 + 1;
      } while (uVar12 != 0x13);
    }
    else {
      do {
        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {
          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);
        }
        uVar12 = uVar12 + 1;
      } while (uVar12 != 0x12);
    }
    bVar3 = param_2[uVar16 + 9];
    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",
                 param_2[uVar16 + 8],local_c8,bVar3);
    if ((bVar3 & 1) != 0) {
      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_00024401);
    }
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);
    }
    if ((bVar3 & 0x10) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);
    }
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);
    }
    goto code_r0x00018298;
  case 6:
    puts("(EXTENSION_UNIT)");
    uVar16 = (uint)param_2[0x15];
    uVar17 = (uint)param_2[uVar16 + 0x16];
    uVar12 = uVar16 + uVar17 + 0x18;
    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);
    if (*param_2 < uVar12) {
      puts("      Warning: Descriptor too short");
    }
    bVar3 = param_2[0x14];
    uVar11 = (uint)param_2[0x13];
    bVar4 = param_2[0x15];
    __sprintf_chk(0x3fa00,1,0x27,
                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],
                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],
                  param_2[0x11],param_2[0x12],uVar11);
    __printf_chk(1,
                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"
                 ,param_2[3],0x3fa00,bVar3,bVar4);
    if (uVar16 != 0) {
      uVar15 = 0;
      do {
        uVar11 = (uint)param_2[uVar15 + 0x16];
        uVar13 = uVar15 + 1;
        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);
        uVar15 = uVar13;
      } while (uVar16 != uVar13);
    }
    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);
    if (uVar17 != 0) {
      uVar11 = 0;
      do {
        uVar15 = uVar11 + 1;
        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,
                     param_2[uVar11 + uVar16 + 0x17]);
        uVar11 = uVar15;
      } while (uVar17 != uVar15);
    }
    pvVar18 = local_c8;
    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);
    if (*param_2 <= uVar12) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);
    if (uVar12 < *param_2) {
      do {
        pbVar14 = param_2 + uVar12;
        uVar12 = uVar12 + 1;
        __printf_chk(1," %02x",*pbVar14,pvVar18);
      } while (uVar12 < *param_2);
    }
    break;
  case 7:
    puts("(ENCODING UNIT)");
    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);
    if (*param_2 < 0xd) {
      puts("      Warning: Descriptor too short");
    }
    uVar16 = 0;
    __printf_chk(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"
                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);
    uVar7 = *(uint3 *)(param_2 + 7);
    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);
    do {
      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {
        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1,&UNK_000243b1,*ppuVar2);
        if (uVar16 == 0x14) goto code_r0x000189ea;
      }
      uVar16 = uVar16 + 1;
    } while (uVar16 != 0x14);
code_r0x000189ea:
    uVar17 = 0;
    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];
    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);
    do {
      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {
        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);
      }
      uVar17 = uVar17 + 1;
    } while (uVar17 != 0x14);
    goto code_r0x00018298;
  }
  putchar(10);
code_r0x00018298:
  free(local_c8);
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00023ad0();
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00016850
ADD EBX,0x22f13
SUB ESP,0xbc
MOV dword ptr [ESP + 0x8],ECX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xac],EAX
XOR EAX,EAX
MOVZX EAX,byte ptr [EDX + 0x1]
CMP AL,0x24
JNZ 0x00018150
MOVZX EDX,byte ptr [EDX]
CMP DL,0x2
JBE 0x00018170
MOVZX ECX,byte ptr [ESI + 0x2]
SUB ESP,0xc
PUSH ECX
PUSH EAX
LEA EAX,[EBX + 0xfffeb188]
PUSH EDX
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x20
CMP byte ptr [ESI + 0x2],0x7
JA 0x00018a60
MOVZX EAX,byte ptr [ESI + 0x2]
MOV ECX,dword ptr [EBX + EAX*0x4 + 0xfffef65c]
ADD ECX,EBX
JMP ECX
SUB ESP,0xc
LEA EAX,[EBX + 0xfffeaa8c]
PUSH EAX
CALL 0x00016180
MOVZX EAX,byte ptr [ESI + 0x1]
MOVZX EDX,byte ptr [ESI]
ADD ESP,0x10
JMP 0x0001811c
SUB ESP,0xc
LEA EAX,[EBX + 0xfffeaab0]
JMP 0x00018159
SUB ESP,0xc
PUSH 0xa
CALL 0x000162a0
ADD ESP,0x10
MOV dword ptr [ESP + 0x4],0x0
LEA ESI,[ESI]
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL 0x00016090
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xac]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00018dea
ADD ESP,0xbc
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
LEA EAX,[EBX + 0xfffeb850]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOVZX EAX,byte ptr [ESI]
ADD ESP,0x10
CMP AL,0x3
JZ 0x0001827d
LEA EBP,[ESI + 0x3]
LEA EDI,[EBX + 0xfffe90c8]
ADD ESI,EAX
LEA ESI,[ESI]
MOVZX EAX,byte ptr [EBP]
SUB ESP,0x4
ADD EBP,0x1
PUSH EAX
PUSH EDI
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
CMP EBP,ESI
JNZ 0x00018a90
JMP 0x0001827d
CALL 0x00023ad0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00023ad0();\n}\n\n" comment (function_definition "void __regparm3 FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00023ad0();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00023ad0();\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "short sVar5;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined2 uVar6;" type_identifier identifier ;) (declaration "uint3 uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "void *pvVar18;" primitive_type (pointer_declarator "*pvVar18" * identifier) ;) (declaration "void *local_c8;" primitive_type (pointer_declarator "*local_c8" * identifier) ;) (declaration "char acStack_a0 [128];" primitive_type (array_declarator "acStack_a0 [128]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x180ed;" (assignment_expression "uStack_14 = 0x180ed" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" if (parenthesized_expression "(param_2[1] == 0x24)" ( (binary_expression "param_2[1] == 0x24" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }" { (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "bVar4 = 0x24;" (assignment_expression "bVar4 = 0x24" identifier = number_literal) ;) (if_statement "if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" if (parenthesized_expression "(bVar3 < 3)" ( (binary_expression "bVar3 < 3" identifier < number_literal) )) (compound_statement "{\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" { (expression_statement "__s = "      Warning: Descriptor too short";" (assignment_expression "__s = "      Warning: Descriptor too short"" identifier = (string_literal ""      Warning: Descriptor too short"" " string_content ")) ;) (goto_statement "goto LAB_00018159;" goto statement_identifier ;) })) }) (else_clause "else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" else (compound_statement "{\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" { (expression_statement "__s = "      Warning: Invalid descriptor";" (assignment_expression "__s = "      Warning: Invalid descriptor"" identifier = (string_literal ""      Warning: Invalid descriptor"" " string_content ")) ;) (labeled_statement "LAB_00018159:\n    puts(__s);" statement_identifier : (expression_statement "puts(__s);" (call_expression "puts(__s)" identifier (argument_list "(__s)" ( identifier ))) ;)) (expression_statement "bVar4 = param_2[1];" (assignment_expression "bVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);" (call_expression "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2])" identifier (argument_list "(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2])" ( number_literal , (string_literal ""      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , identifier , identifier , (subscript_expression "param_2[2]" identifier [ number_literal ]) ))) ;) (switch_statement "switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }" switch (parenthesized_expression "(param_2[2])" ( (subscript_expression "param_2[2]" identifier [ number_literal ]) )) (compound_statement "{\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }" { (case_statement "default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;" default : (expression_statement "__printf_chk(1,"(unknown)\n        Invalid desc subtype:");" (call_expression "__printf_chk(1,"(unknown)\n        Invalid desc subtype:")" identifier (argument_list "(1,"(unknown)\n        Invalid desc subtype:")" ( number_literal , (string_literal ""(unknown)\n        Invalid desc subtype:"" " string_content escape_sequence string_content ") ))) ;) (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }" if (parenthesized_expression "(bVar3 != 3)" ( (binary_expression "bVar3 != 3" identifier != number_literal) )) (compound_statement "{\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }" { (expression_statement "pbVar14 = param_2 + 3;" (assignment_expression "pbVar14 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (do_statement "do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);" do (compound_statement "{\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      }" { (expression_statement "bVar4 = *pbVar14;" (assignment_expression "bVar4 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) (expression_statement "pbVar14 = pbVar14 + 1;" (assignment_expression "pbVar14 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",bVar4);" (call_expression "__printf_chk(1," %02x",bVar4)" identifier (argument_list "(1," %02x",bVar4)" ( number_literal , (string_literal "" %02x"" " string_content ") , identifier ))) ;) }) while (parenthesized_expression "(pbVar14 != param_2 + bVar3)" ( (binary_expression "pbVar14 != param_2 + bVar3" identifier != (binary_expression "param_2 + bVar3" identifier + identifier)) )) ;) })) (goto_statement "goto LAB_0001827d;" goto statement_identifier ;)) (case_statement "case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;" case number_literal : (expression_statement "puts("(HEADER)");" (call_expression "puts("(HEADER)")" identifier (argument_list "("(HEADER)")" ( (string_literal ""(HEADER)"" " string_content ") ))) ;) (expression_statement "uVar17 = (uint)param_2[0xb];" (assignment_expression "uVar17 = (uint)param_2[0xb]" identifier = (cast_expression "(uint)param_2[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xb]" identifier [ number_literal ]))) ;) (expression_statement "uVar16 = uVar17 + 0xc;" (assignment_expression "uVar16 = uVar17 + 0xc" identifier = (binary_expression "uVar17 + 0xc" identifier + number_literal)) ;) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar16)" ( (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "uVar12 = uVar17;" (assignment_expression "uVar12 = uVar17" identifier = identifier) ;) (expression_statement "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);" (call_expression "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17)" identifier (argument_list "(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17)" ( number_literal , (string_literal ""        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (pointer_expression "*(undefined2 *)(param_2 + 5)" * (cast_expression "(undefined2 *)(param_2 + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))) , (binary_expression "*(uint *)(param_2 + 7) / 1000000" (pointer_expression "*(uint *)(param_2 + 7)" * (cast_expression "(uint *)(param_2 + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) / number_literal) , (binary_expression "*(uint *)(param_2 + 7) % 1000000" (pointer_expression "*(uint *)(param_2 + 7)" * (cast_expression "(uint *)(param_2 + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) % number_literal) , identifier ))) ;) (if_statement "if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);" do (compound_statement "{\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      }" { (expression_statement "uVar12 = (uint)param_2[uVar11 + 0xc];" (assignment_expression "uVar12 = (uint)param_2[uVar11 + 0xc]" identifier = (cast_expression "(uint)param_2[uVar11 + 0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[uVar11 + 0xc]" identifier [ (binary_expression "uVar11 + 0xc" identifier + number_literal) ]))) ;) (expression_statement "uVar15 = uVar11 + 1;" (assignment_expression "uVar15 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);" (call_expression "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12)" identifier (argument_list "(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12)" ( number_literal , (string_literal ""        baInterfaceNr(%2u)   %5u\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != uVar15)" ( (binary_expression "uVar17 != uVar15" identifier != identifier) )) ;) })) (expression_statement "local_c8 = (void *)0x0;" (assignment_expression "local_c8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar16)" ( (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,uVar12);" (call_expression "__printf_chk(1," %02x",*pbVar14,uVar12)" identifier (argument_list "(1," %02x",*pbVar14,uVar12)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (labeled_statement "LAB_0001827d:\n    putchar(10);" statement_identifier : (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;)) (expression_statement "local_c8 = (void *)0x0;" (assignment_expression "local_c8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (case_statement "case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(INPUT_TERMINAL)");" (call_expression "puts("(INPUT_TERMINAL)")" identifier (argument_list "("(INPUT_TERMINAL)")" ( (string_literal ""(INPUT_TERMINAL)"" " string_content ") ))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[7]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[7])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[7])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[7])" identifier (argument_list "(param_1,param_2[7])" ( identifier , (subscript_expression "param_2[7]" identifier [ number_literal ]) ))))) ;) (expression_statement "sVar5 = *(short *)(param_2 + 4);" (assignment_expression "sVar5 = *(short *)(param_2 + 4)" identifier = (pointer_expression "*(short *)(param_2 + 4)" * (cast_expression "(short *)(param_2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "acStack_a0[0] = '\0';" (assignment_expression "acStack_a0[0] = '\0'" (subscript_expression "acStack_a0[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar16 = 8;" (assignment_expression "uVar16 = 8" identifier = number_literal) ;) (if_statement "if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }" if (parenthesized_expression "(sVar5 == 0x201)" ( (binary_expression "sVar5 == 0x201" identifier == number_literal) )) (compound_statement "{\n      uVar16 = 0xf;\n    }" { (expression_statement "uVar16 = 0xf;" (assignment_expression "uVar16 = 0xf" identifier = number_literal) ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }" if (parenthesized_expression "(sVar5 == 0x201)" ( (binary_expression "sVar5 == 0x201" identifier == number_literal) )) (compound_statement "{\n      iVar10 = 7;\n    }" { (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) })) (expression_statement "iVar9 = FUN_00022850(sVar5);" (assignment_expression "iVar9 = FUN_00022850(sVar5)" identifier = (call_expression "FUN_00022850(sVar5)" identifier (argument_list "(sVar5)" ( identifier )))) ;) (if_statement "if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }" { (expression_statement "snprintf(acStack_a0,0x80,"%s",iVar9);" (call_expression "snprintf(acStack_a0,0x80,"%s",iVar9)" identifier (argument_list "(acStack_a0,0x80,"%s",iVar9)" ( identifier , number_literal , (string_literal ""%s"" " string_content ") , identifier ))) ;) })) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar16)" ( (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6])" identifier (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6])" ( number_literal , (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) ))) ;) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);" (call_expression "__printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8)" identifier (argument_list "(1,"        iTerminal           %5u %s\n",param_2[7],local_c8)" ( number_literal , (string_literal ""        iTerminal           %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "param_2[7]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }" if (parenthesized_expression "(sVar5 == 0x201)" ( (binary_expression "sVar5 == 0x201" identifier == number_literal) )) (compound_statement "{\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }" { (expression_statement "iVar10 = iVar10 + (uint)param_2[0xe];" (assignment_expression "iVar10 = iVar10 + (uint)param_2[0xe]" identifier = (binary_expression "iVar10 + (uint)param_2[0xe]" identifier + (cast_expression "(uint)param_2[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xe]" identifier [ number_literal ])))) ;) (expression_statement "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);" (call_expression "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe])" identifier (argument_list "(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe])" ( number_literal , (string_literal ""        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*(undefined2 *)(param_2 + 8)" * (cast_expression "(undefined2 *)(param_2 + 8)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined2 *)(param_2 + 10)" * (cast_expression "(undefined2 *)(param_2 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 10)" ( (binary_expression "param_2 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined2 *)(param_2 + 0xc)" * (cast_expression "(undefined2 *)(param_2 + 0xc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , (cast_expression "(uint)param_2[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xe]" identifier [ number_literal ])) ))) ;) (expression_statement "bVar3 = param_2[0xe];" (assignment_expression "bVar3 = param_2[0xe]" identifier = (subscript_expression "param_2[0xe]" identifier [ number_literal ])) ;) (if_statement "if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar16 = 0;\n      }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" else (compound_statement "{\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" { (expression_statement "uVar16 = (uint)param_2[iVar10 + 7];" (assignment_expression "uVar16 = (uint)param_2[iVar10 + 7]" identifier = (cast_expression "(uint)param_2[iVar10 + 7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[iVar10 + 7]" identifier [ (binary_expression "iVar10 + 7" identifier + number_literal) ]))) ;) (if_statement "if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }" if (parenthesized_expression "(bVar3 != 1)" ( (binary_expression "bVar3 != 1" identifier != number_literal) )) (compound_statement "{\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }" { (expression_statement "uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);" (assignment_expression "uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6])" identifier = (call_expression "CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6])" identifier (argument_list "(param_2[iVar10 + 7],param_2[iVar10 + 6])" ( (subscript_expression "param_2[iVar10 + 7]" identifier [ (binary_expression "iVar10 + 7" identifier + number_literal) ]) , (subscript_expression "param_2[iVar10 + 6]" identifier [ (binary_expression "iVar10 + 6" identifier + number_literal) ]) )))) ;) (expression_statement "uVar16 = (uint)uVar8;" (assignment_expression "uVar16 = (uint)uVar8" identifier = (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }" if (parenthesized_expression "(bVar3 != 2)" ( (binary_expression "bVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }" { (expression_statement "uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);" (assignment_expression "uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5])" identifier = (cast_expression "(uint)CONCAT21(uVar8,param_2[iVar10 + 5])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT21(uVar8,param_2[iVar10 + 5])" identifier (argument_list "(uVar8,param_2[iVar10 + 5])" ( identifier , (subscript_expression "param_2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) ))))) ;) })) })) }))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);" (call_expression "__printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18)" identifier (argument_list "(1,"        bmControls           0x%08x\n",uVar16,pvVar18)" ( number_literal , (string_literal ""        bmControls           0x%08x\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (if_statement "if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }" { (do_statement "do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);" do (compound_statement "{\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        }" { (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" if (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" ( (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Scanning_Mode_00037de0)[uVar17]" (parenthesized_expression "(&PTR_s_Scanning_Mode_00037de0)" ( (pointer_expression "&PTR_s_Scanning_Mode_00037de0" & identifier) )) [ identifier ]) , identifier ))) ;) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != 0x16)" ( (binary_expression "uVar17 != 0x16" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" else (compound_statement "{\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" { (do_statement "do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);" do (compound_statement "{\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        }" { (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" if (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" ( (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Scanning_Mode_00037de0)[uVar17]" (parenthesized_expression "(&PTR_s_Scanning_Mode_00037de0)" ( (pointer_expression "&PTR_s_Scanning_Mode_00037de0" & identifier) )) [ identifier ]) , identifier ))) ;) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != 0x13)" ( (binary_expression "uVar17 != 0x13" identifier != number_literal) )) ;) }))) (expression_statement "uVar16 = iVar10 + 8;" (assignment_expression "uVar16 = iVar10 + 8" identifier = (binary_expression "iVar10 + 8" identifier + number_literal)) ;) })) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar16)" ( (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" identifier (argument_list "(1," %02x",*pbVar14,pvVar18)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(OUTPUT_TERMINAL)");" (call_expression "puts("(OUTPUT_TERMINAL)")" identifier (argument_list "("(OUTPUT_TERMINAL)")" ( (string_literal ""(OUTPUT_TERMINAL)"" " string_content ") ))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[8]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[8])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[8])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[8])" identifier (argument_list "(param_1,param_2[8])" ( identifier , (subscript_expression "param_2[8]" identifier [ number_literal ]) ))))) ;) (expression_statement "uVar6 = *(undefined2 *)(param_2 + 4);" (assignment_expression "uVar6 = *(undefined2 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined2 *)(param_2 + 4)" * (cast_expression "(undefined2 *)(param_2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "acStack_a0[0] = '\0';" (assignment_expression "acStack_a0[0] = '\0'" (subscript_expression "acStack_a0[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar10 = FUN_00022850(uVar6);" (assignment_expression "iVar10 = FUN_00022850(uVar6)" identifier = (call_expression "FUN_00022850(uVar6)" identifier (argument_list "(uVar6)" ( identifier )))) ;) (if_statement "if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }" { (expression_statement "snprintf(acStack_a0,0x80,"%s",iVar10);" (call_expression "snprintf(acStack_a0,0x80,"%s",iVar10)" identifier (argument_list "(acStack_a0,0x80,"%s",iVar10)" ( identifier , number_literal , (string_literal ""%s"" " string_content ") , identifier ))) ;) })) (if_statement "if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < 9)" ( (binary_expression "*param_2 < 9" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8)" identifier (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8)" ( number_literal , (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , (subscript_expression "param_2[7]" identifier [ number_literal ]) , (subscript_expression "param_2[8]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (*param_2 < 10) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 < 10)" ( (binary_expression "*param_2 < 10" (pointer_expression "*param_2" * identifier) < number_literal) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "uVar16 = 9;" (assignment_expression "uVar16 = 9" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) ))) ;) (if_statement "if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(9 < *param_2)" ( (binary_expression "9 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14);" (call_expression "__printf_chk(1," %02x",*pbVar14)" identifier (argument_list "(1," %02x",*pbVar14)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(SELECTOR_UNIT)");" (call_expression "puts("(SELECTOR_UNIT)")" identifier (argument_list "("(SELECTOR_UNIT)")" ( (string_literal ""(SELECTOR_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar17 = (uint)param_2[4];" (assignment_expression "uVar17 = (uint)param_2[4]" identifier = (cast_expression "(uint)param_2[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar16 = uVar17 + 6;" (assignment_expression "uVar16 = uVar17 + 6" identifier = (binary_expression "uVar17 + 6" identifier + number_literal)) ;) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar16)" ( (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar17 + 5])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[uVar17 + 5])" identifier (argument_list "(param_1,param_2[uVar17 + 5])" ( identifier , (subscript_expression "param_2[uVar17 + 5]" identifier [ (binary_expression "uVar17 + 5" identifier + number_literal) ]) ))))) ;) (expression_statement "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);" (call_expression "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17)" identifier (argument_list "(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17)" ( number_literal , (string_literal ""        bUnitID             %5u\n        bNrInPins           %5u\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);" do (compound_statement "{\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      }" { (expression_statement "uVar11 = uVar12 + 1;" (assignment_expression "uVar11 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);" (call_expression "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5])" identifier (argument_list "(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5])" ( number_literal , (string_literal ""        baSource(%2u)        %5u\n"" " string_content escape_sequence ") , identifier , (subscript_expression "param_2[uVar12 + 5]" identifier [ (binary_expression "uVar12 + 5" identifier + number_literal) ]) ))) ;) (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != uVar11)" ( (binary_expression "uVar17 != uVar11" identifier != identifier) )) ;) })) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);" (call_expression "__printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8)" identifier (argument_list "(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8)" ( number_literal , (string_literal ""        iSelector           %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "param_2[uVar17 + 5]" identifier [ (binary_expression "uVar17 + 5" identifier + number_literal) ]) , identifier ))) ;) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar16)" ( (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" identifier (argument_list "(1," %02x",*pbVar14,pvVar18)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;" case number_literal : (expression_statement "puts("(PROCESSING_UNIT)");" (call_expression "puts("(PROCESSING_UNIT)")" identifier (argument_list "("(PROCESSING_UNIT)")" ( (string_literal ""(PROCESSING_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar16 = (uint)param_2[7];" (assignment_expression "uVar16 = (uint)param_2[7]" identifier = (cast_expression "(uint)param_2[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[7]" identifier [ number_literal ]))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar16 + 8])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[uVar16 + 8])" identifier (argument_list "(param_1,param_2[uVar16 + 8])" ( identifier , (subscript_expression "param_2[uVar16 + 8]" identifier [ (binary_expression "uVar16 + 8" identifier + number_literal) ]) ))))) ;) (if_statement "if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "((uint)*param_2 < uVar16 + 10)" ( (binary_expression "(uint)*param_2 < uVar16 + 10" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier) < (binary_expression "uVar16 + 10" identifier + number_literal)) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16)" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16)" ( number_literal , (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (pointer_expression "*(undefined2 *)(param_2 + 5)" * (cast_expression "(undefined2 *)(param_2 + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))) , identifier ))) ;) (if_statement "if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar17 = 0;\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" else (compound_statement "{\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);" do (compound_statement "{\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      }" { (expression_statement "pbVar1 = pbVar14 + 7;" (assignment_expression "pbVar1 = pbVar14 + 7" identifier = (binary_expression "pbVar14 + 7" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + -1;" (assignment_expression "pbVar14 = pbVar14 + -1" identifier = (binary_expression "pbVar14 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 << 8 | (uint)*pbVar1;" (assignment_expression "uVar17 = uVar17 << 8 | (uint)*pbVar1" identifier = (binary_expression "uVar17 << 8 | (uint)*pbVar1" (binary_expression "uVar17 << 8" identifier << number_literal) | (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (if_statement "if (2 < uVar12) break;" if (parenthesized_expression "(2 < uVar12)" ( (binary_expression "2 < uVar12" number_literal < identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(uVar12 < uVar16)" ( (binary_expression "uVar12 < uVar16" identifier < identifier) )) ;) }))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"        bmControls     0x%08x\n",uVar17);" (call_expression "__printf_chk(1,"        bmControls     0x%08x\n",uVar17)" identifier (argument_list "(1,"        bmControls     0x%08x\n",uVar17)" ( number_literal , (string_literal ""        bmControls     0x%08x\n"" " string_content escape_sequence ") , identifier ))) ;) (if_statement "if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }" { (do_statement "do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);" do (compound_statement "{\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      }" { (if_statement "if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" if (parenthesized_expression "((uVar17 >> (uVar12 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar17 >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar12 & 0x1f) & 1)" ( (binary_expression "uVar17 >> (uVar12 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar12 & 0x1f)" identifier >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Brightness_00037d80)[uVar12]" (parenthesized_expression "(&PTR_s_Brightness_00037d80)" ( (pointer_expression "&PTR_s_Brightness_00037d80" & identifier) )) [ identifier ]) ))) ;) })) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 != 0x13)" ( (binary_expression "uVar12 != 0x13" identifier != number_literal) )) ;) }) (else_clause "else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" else (compound_statement "{\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" { (do_statement "do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);" do (compound_statement "{\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      }" { (if_statement "if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" if (parenthesized_expression "((uVar17 >> (uVar12 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar17 >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar12 & 0x1f) & 1)" ( (binary_expression "uVar17 >> (uVar12 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar12 & 0x1f)" identifier >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Brightness_00037d80)[uVar12]" (parenthesized_expression "(&PTR_s_Brightness_00037d80)" ( (pointer_expression "&PTR_s_Brightness_00037d80" & identifier) )) [ identifier ]) ))) ;) })) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 != 0x12)" ( (binary_expression "uVar12 != 0x12" identifier != number_literal) )) ;) }))) (expression_statement "bVar3 = param_2[uVar16 + 9];" (assignment_expression "bVar3 = param_2[uVar16 + 9]" identifier = (subscript_expression "param_2[uVar16 + 9]" identifier [ (binary_expression "uVar16 + 9" identifier + number_literal) ])) ;) (expression_statement "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);" (call_expression "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3)" identifier (argument_list "(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3)" ( number_literal , (string_literal ""        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[uVar16 + 8]" identifier [ (binary_expression "uVar16 + 8" identifier + number_literal) ]) , identifier , identifier ))) ;) (if_statement "if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }" if (parenthesized_expression "((bVar3 & 1) != 0)" ( (binary_expression "(bVar3 & 1) != 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&DAT_0002412f);" (call_expression "__printf_chk(1,&UNK_000243b1,&DAT_0002412f)" identifier (argument_list "(1,&UNK_000243b1,&DAT_0002412f)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&DAT_0002412f" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }" if (parenthesized_expression "((bVar3 & 2) != 0)" ( (binary_expression "(bVar3 & 2) != 0" (parenthesized_expression "(bVar3 & 2)" ( (binary_expression "bVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_000243f3);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_000243f3)" identifier (argument_list "(1,&UNK_000243b1,&UNK_000243f3)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_000243f3" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }" if (parenthesized_expression "((bVar3 & 4) != 0)" ( (binary_expression "(bVar3 & 4) != 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_00024401);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_00024401)" identifier (argument_list "(1,&UNK_000243b1,&UNK_00024401)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_00024401" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }" if (parenthesized_expression "((bVar3 & 8) != 0)" ( (binary_expression "(bVar3 & 8) != 0" (parenthesized_expression "(bVar3 & 8)" ( (binary_expression "bVar3 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002440e);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002440e)" identifier (argument_list "(1,&UNK_000243b1,&UNK_0002440e)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_0002440e" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }" if (parenthesized_expression "((bVar3 & 0x10) != 0)" ( (binary_expression "(bVar3 & 0x10) != 0" (parenthesized_expression "(bVar3 & 0x10)" ( (binary_expression "bVar3 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002441d);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002441d)" identifier (argument_list "(1,&UNK_000243b1,&UNK_0002441d)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_0002441d" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }" if (parenthesized_expression "((bVar3 & 0x20) != 0)" ( (binary_expression "(bVar3 & 0x20) != 0" (parenthesized_expression "(bVar3 & 0x20)" ( (binary_expression "bVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002442b);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002442b)" identifier (argument_list "(1,&UNK_000243b1,&UNK_0002442b)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_0002442b" & identifier) ))) ;) })) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (case_statement "case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(EXTENSION_UNIT)");" (call_expression "puts("(EXTENSION_UNIT)")" identifier (argument_list "("(EXTENSION_UNIT)")" ( (string_literal ""(EXTENSION_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar16 = (uint)param_2[0x15];" (assignment_expression "uVar16 = (uint)param_2[0x15]" identifier = (cast_expression "(uint)param_2[0x15]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0x15]" identifier [ number_literal ]))) ;) (expression_statement "uVar17 = (uint)param_2[uVar16 + 0x16];" (assignment_expression "uVar17 = (uint)param_2[uVar16 + 0x16]" identifier = (cast_expression "(uint)param_2[uVar16 + 0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[uVar16 + 0x16]" identifier [ (binary_expression "uVar16 + 0x16" identifier + number_literal) ]))) ;) (expression_statement "uVar12 = uVar16 + uVar17 + 0x18;" (assignment_expression "uVar12 = uVar16 + uVar17 + 0x18" identifier = (binary_expression "uVar16 + uVar17 + 0x18" (binary_expression "uVar16 + uVar17" identifier + identifier) + number_literal)) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" identifier (argument_list "(param_1,param_2[uVar16 + uVar17 + 0x17])" ( identifier , (subscript_expression "param_2[uVar16 + uVar17 + 0x17]" identifier [ (binary_expression "uVar16 + uVar17 + 0x17" (binary_expression "uVar16 + uVar17" identifier + identifier) + number_literal) ]) ))))) ;) (if_statement "if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar12)" ( (binary_expression "*param_2 < uVar12" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "bVar3 = param_2[0x14];" (assignment_expression "bVar3 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = (uint)param_2[0x13];" (assignment_expression "uVar11 = (uint)param_2[0x13]" identifier = (cast_expression "(uint)param_2[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0x13]" identifier [ number_literal ]))) ;) (expression_statement "bVar4 = param_2[0x15];" (assignment_expression "bVar4 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;) (expression_statement "__sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);" (call_expression "__sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11)" identifier (argument_list "(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11)" ( number_literal , number_literal , number_literal , (string_literal ""{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}"" " string_content ") , (subscript_expression "param_2[7]" identifier [ number_literal ]) , (subscript_expression "param_2[6]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[9]" identifier [ number_literal ]) , (subscript_expression "param_2[8]" identifier [ number_literal ]) , (subscript_expression "param_2[0xb]" identifier [ number_literal ]) , (subscript_expression "param_2[10]" identifier [ number_literal ]) , (subscript_expression "param_2[0xc]" identifier [ number_literal ]) , (subscript_expression "param_2[0xd]" identifier [ number_literal ]) , (subscript_expression "param_2[0xe]" identifier [ number_literal ]) , (subscript_expression "param_2[0xf]" identifier [ number_literal ]) , (subscript_expression "param_2[0x10]" identifier [ number_literal ]) , (subscript_expression "param_2[0x11]" identifier [ number_literal ]) , (subscript_expression "param_2[0x12]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4)" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4)" ( number_literal , (string_literal ""        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , number_literal , identifier , identifier ))) ;) (if_statement "if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);" do (compound_statement "{\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      }" { (expression_statement "uVar11 = (uint)param_2[uVar15 + 0x16];" (assignment_expression "uVar11 = (uint)param_2[uVar15 + 0x16]" identifier = (cast_expression "(uint)param_2[uVar15 + 0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[uVar15 + 0x16]" identifier [ (binary_expression "uVar15 + 0x16" identifier + number_literal) ]))) ;) (expression_statement "uVar13 = uVar15 + 1;" (assignment_expression "uVar13 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);" (call_expression "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11)" identifier (argument_list "(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11)" ( number_literal , (string_literal ""        baSourceID(%2u)      %5u\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar15 = uVar13;" (assignment_expression "uVar15 = uVar13" identifier = identifier) ;) }) while (parenthesized_expression "(uVar16 != uVar13)" ( (binary_expression "uVar16 != uVar13" identifier != identifier) )) ;) })) (expression_statement "__printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);" (call_expression "__printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11)" identifier (argument_list "(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11)" ( number_literal , (string_literal ""        bControlSize        %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_2[uVar16 + 0x16]" identifier [ (binary_expression "uVar16 + 0x16" identifier + number_literal) ]) , identifier ))) ;) (if_statement "if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);" do (compound_statement "{\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      }" { (expression_statement "uVar15 = uVar11 + 1;" (assignment_expression "uVar15 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);" (call_expression "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17])" identifier (argument_list "(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17])" ( number_literal , (string_literal ""        bmControls(%2u)       0x%02x\n"" " string_content escape_sequence ") , identifier , (subscript_expression "param_2[uVar11 + uVar16 + 0x17]" identifier [ (binary_expression "uVar11 + uVar16 + 0x17" (binary_expression "uVar11 + uVar16" identifier + identifier) + number_literal) ]) ))) ;) (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != uVar15)" ( (binary_expression "uVar17 != uVar15" identifier != identifier) )) ;) })) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);" (call_expression "__printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8)" identifier (argument_list "(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8)" ( number_literal , (string_literal ""        iExtension          %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "param_2[uVar16 + uVar17 + 0x17]" identifier [ (binary_expression "uVar16 + uVar17 + 0x17" (binary_expression "uVar16 + uVar17" identifier + identifier) + number_literal) ]) , identifier ))) ;) (if_statement "if (*param_2 <= uVar12) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar12)" ( (binary_expression "*param_2 <= uVar12" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }" if (parenthesized_expression "(uVar12 < *param_2)" ( (binary_expression "uVar12 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" { (expression_statement "pbVar14 = param_2 + uVar12;" (assignment_expression "pbVar14 = param_2 + uVar12" identifier = (binary_expression "param_2 + uVar12" identifier + identifier)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" identifier (argument_list "(1," %02x",*pbVar14,pvVar18)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar12 < *param_2)" ( (binary_expression "uVar12 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;" case number_literal : (expression_statement "puts("(ENCODING UNIT)");" (call_expression "puts("(ENCODING UNIT)")" identifier (argument_list "("(ENCODING UNIT)")" ( (string_literal ""(ENCODING UNIT)"" " string_content ") ))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[5]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[5])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[5])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[5])" identifier (argument_list "(param_1,param_2[5])" ( identifier , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))))) ;) (if_statement "if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < 0xd)" ( (binary_expression "*param_2 < 0xd" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6])" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6])" ( number_literal , (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar7 = *(uint3 *)(param_2 + 7);" (assignment_expression "uVar7 = *(uint3 *)(param_2 + 7)" identifier = (pointer_expression "*(uint3 *)(param_2 + 7)" * (cast_expression "(uint3 *)(param_2 + 7)" ( (type_descriptor "uint3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);" (call_expression "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7)" identifier (argument_list "(1,"        bmControls              0x%08x\n",(uint)uVar7)" ( number_literal , (string_literal ""        bmControls              0x%08x\n"" " string_content escape_sequence ") , (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (do_statement "do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);" do (compound_statement "{\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    }" { (while_statement "while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }" while (parenthesized_expression "((uVar7 >> (uVar16 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar7 >> (uVar16 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar7 >> (uVar16 & 0x1f) & 1)" ( (binary_expression "uVar7 >> (uVar16 & 0x1f) & 1" (binary_expression "uVar7 >> (uVar16 & 0x1f)" identifier >> (parenthesized_expression "(uVar16 & 0x1f)" ( (binary_expression "uVar16 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }" { (expression_statement "ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;" (assignment_expression "ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16" identifier = (binary_expression "&PTR_s_Select_Layer_00037d20 + uVar16" (pointer_expression "&PTR_s_Select_Layer_00037d20" & identifier) + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&UNK_000243b1,*ppuVar2);" (call_expression "__printf_chk(1,&UNK_000243b1,*ppuVar2)" identifier (argument_list "(1,&UNK_000243b1,*ppuVar2)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "*ppuVar2" * identifier) ))) ;) (if_statement "if (uVar16 == 0x14) goto code_r0x000189ea;" if (parenthesized_expression "(uVar16 == 0x14)" ( (binary_expression "uVar16 == 0x14" identifier == number_literal) )) (goto_statement "goto code_r0x000189ea;" goto statement_identifier ;)) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 != 0x14)" ( (binary_expression "uVar16 != 0x14" identifier != number_literal) )) ;) (labeled_statement "code_r0x000189ea:\n    uVar17 = 0;" statement_identifier : (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;)) (expression_statement "uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];" (assignment_expression "uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10]" identifier = (binary_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10]" (binary_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8" (parenthesized_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8)" ( (binary_expression "(uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8" (cast_expression "(uint)param_2[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xb]" identifier [ number_literal ])) | (binary_expression "CONCAT31(uVar7,param_2[0xc]) << 8" (call_expression "CONCAT31(uVar7,param_2[0xc])" identifier (argument_list "(uVar7,param_2[0xc])" ( identifier , (subscript_expression "param_2[0xc]" identifier [ number_literal ]) ))) << number_literal)) )) << number_literal) | (cast_expression "(uint)param_2[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[10]" identifier [ number_literal ])))) ;) (expression_statement "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);" (call_expression "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16)" identifier (argument_list "(1,"        bmControlsRuntime       0x%08x\n",uVar16)" ( number_literal , (string_literal ""        bmControlsRuntime       0x%08x\n"" " string_content escape_sequence ") , identifier ))) ;) (do_statement "do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);" do (compound_statement "{\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    }" { (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }" if (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" ( (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17])" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17])" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Select_Layer_00037d20)[uVar17]" (parenthesized_expression "(&PTR_s_Select_Layer_00037d20)" ( (pointer_expression "&PTR_s_Select_Layer_00037d20" & identifier) )) [ identifier ]) ))) ;) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != 0x14)" ( (binary_expression "uVar17 != 0x14" identifier != number_literal) )) ;) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) })) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (labeled_statement "code_r0x00018298:\n  free(local_c8);" statement_identifier : (expression_statement "free(local_c8);" (call_expression "free(local_c8)" identifier (argument_list "(local_c8)" ( identifier ))) ;)) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "FUN_00023ad0();" (call_expression "FUN_00023ad0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 dump_videocontrol_interface(libusb_device_handle *dev,uchar *buf,int protocol)\n\n{\n  byte *pbVar1;\n  char **ppcVar2;\n  int iVar3;\n  byte bVar4;\n  uchar uVar5;\n  uchar uVar6;\n  u_int16_t uVar7;\n  uint3 uVar8;\n  ushort uVar9;\n  int iVar10;\n  char *pcVar11;\n  uint uVar12;\n  uint uVar13;\n  uint uVar14;\n  uchar *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int in_GS_OFFSET;\n  char *local_c8;\n  char termts [128];\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if (buf[1] == '$') {\n    bVar4 = *buf;\n    uVar6 = '$';\n    if (bVar4 < 3) {\n      pcVar11 = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    pcVar11 = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(pcVar11);\n    uVar6 = buf[1];\n    bVar4 = *buf;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar4,uVar6,buf[2]);\n  switch(buf[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar4 = *buf;\n    if (bVar4 != 3) {\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }\n    goto LAB_0001827d;\n  case '\x01':\n    puts("(HEADER)");\n    uVar18 = (uint)buf[0xb];\n    uVar17 = uVar18 + 0xc;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar13 = uVar18;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    local_c8 = (char *)0x0;\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (char *)0x0;\n    goto LAB_00018298;\n  case '\x02':\n    puts("(INPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[7]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    uVar17 = 8;\n    if (uVar7 == 0x201) {\n      uVar17 = 0xf;\n    }\n    iVar10 = 0;\n    if (uVar7 == 0x201) {\n      iVar10 = 7;\n    }\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6]);\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);\n    if (uVar7 == 0x201) {\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x03':\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[8]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);\n    if (*buf < 10) goto LAB_00018298;\n    uVar17 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x04':\n    puts("(SELECTOR_UNIT)");\n    uVar18 = (uint)buf[4];\n    uVar17 = uVar18 + 6;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = get_dev_string(dev,buf[uVar18 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18);\n    if (uVar18 != 0) {\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x05':\n    puts("(PROCESSING_UNIT)");\n    uVar17 = (uint)buf[7];\n    local_c8 = get_dev_string(dev,buf[uVar17 + 8]);\n    if ((uint)*buf < uVar17 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);\n    if (uVar17 == 0) {\n      uVar18 = 0;\n    }\n    else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }\n    uVar13 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar18);\n    if (protocol == 1) {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }\n    bVar4 = buf[uVar17 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4);\n    if ((bVar4 & 1) != 0) {\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }\n    if ((bVar4 & 2) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }\n    if ((bVar4 & 4) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }\n    if ((bVar4 & 8) != 0) {\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }\n    if ((bVar4 & 0x10) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }\n    if ((bVar4 & 0x20) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }\n    goto LAB_00018298;\n  case '\x06':\n    puts("(EXTENSION_UNIT)");\n    uVar17 = (uint)buf[0x15];\n    uVar18 = (uint)buf[uVar17 + 0x16];\n    uVar13 = uVar17 + uVar18 + 0x18;\n    local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);\n    if (*buf < uVar13) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar6 = buf[0x14];\n    uVar12 = (uint)buf[0x13];\n    uVar5 = buf[0x15];\n    __sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5);\n    if (uVar17 != 0) {\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);\n    if (*buf <= uVar13) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar13 < *buf) {\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }\n    break;\n  case '\a':\n    puts("(ENCODING UNIT)");\n    local_c8 = get_dev_string(dev,buf[5]);\n    if (*buf < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar17 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);\n    uVar8 = *(uint3 *)(buf + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);\n    do {\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\nLAB_000189ea:\n    uVar18 = 0;\n    uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);\n    do {\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    } while (uVar18 != 0x14);\n    goto LAB_00018298;\n  }\n  putchar(10);\nLAB_00018298:\n  free(local_c8);\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "void __regparm3 dump_videocontrol_interface(libusb_device_handle *dev,uchar *buf,int protocol)\n\n{\n  byte *pbVar1;\n  char **ppcVar2;\n  int iVar3;\n  byte bVar4;\n  uchar uVar5;\n  uchar uVar6;\n  u_int16_t uVar7;\n  uint3 uVar8;\n  ushort uVar9;\n  int iVar10;\n  char *pcVar11;\n  uint uVar12;\n  uint uVar13;\n  uint uVar14;\n  uchar *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int in_GS_OFFSET;\n  char *local_c8;\n  char termts [128];\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if (buf[1] == '$') {\n    bVar4 = *buf;\n    uVar6 = '$';\n    if (bVar4 < 3) {\n      pcVar11 = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    pcVar11 = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(pcVar11);\n    uVar6 = buf[1];\n    bVar4 = *buf;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar4,uVar6,buf[2]);\n  switch(buf[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar4 = *buf;\n    if (bVar4 != 3) {\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }\n    goto LAB_0001827d;\n  case '\x01':\n    puts("(HEADER)");\n    uVar18 = (uint)buf[0xb];\n    uVar17 = uVar18 + 0xc;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar13 = uVar18;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    local_c8 = (char *)0x0;\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (char *)0x0;\n    goto LAB_00018298;\n  case '\x02':\n    puts("(INPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[7]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    uVar17 = 8;\n    if (uVar7 == 0x201) {\n      uVar17 = 0xf;\n    }\n    iVar10 = 0;\n    if (uVar7 == 0x201) {\n      iVar10 = 7;\n    }\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6]);\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);\n    if (uVar7 == 0x201) {\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x03':\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[8]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);\n    if (*buf < 10) goto LAB_00018298;\n    uVar17 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x04':\n    puts("(SELECTOR_UNIT)");\n    uVar18 = (uint)buf[4];\n    uVar17 = uVar18 + 6;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = get_dev_string(dev,buf[uVar18 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18);\n    if (uVar18 != 0) {\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x05':\n    puts("(PROCESSING_UNIT)");\n    uVar17 = (uint)buf[7];\n    local_c8 = get_dev_string(dev,buf[uVar17 + 8]);\n    if ((uint)*buf < uVar17 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);\n    if (uVar17 == 0) {\n      uVar18 = 0;\n    }\n    else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }\n    uVar13 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar18);\n    if (protocol == 1) {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }\n    bVar4 = buf[uVar17 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4);\n    if ((bVar4 & 1) != 0) {\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }\n    if ((bVar4 & 2) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }\n    if ((bVar4 & 4) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }\n    if ((bVar4 & 8) != 0) {\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }\n    if ((bVar4 & 0x10) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }\n    if ((bVar4 & 0x20) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }\n    goto LAB_00018298;\n  case '\x06':\n    puts("(EXTENSION_UNIT)");\n    uVar17 = (uint)buf[0x15];\n    uVar18 = (uint)buf[uVar17 + 0x16];\n    uVar13 = uVar17 + uVar18 + 0x18;\n    local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);\n    if (*buf < uVar13) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar6 = buf[0x14];\n    uVar12 = (uint)buf[0x13];\n    uVar5 = buf[0x15];\n    __sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5);\n    if (uVar17 != 0) {\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);\n    if (*buf <= uVar13) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar13 < *buf) {\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }\n    break;\n  case '\a':\n    puts("(ENCODING UNIT)");\n    local_c8 = get_dev_string(dev,buf[5]);\n    if (*buf < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar17 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);\n    uVar8 = *(uint3 *)(buf + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);\n    do {\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\nLAB_000189ea:\n    uVar18 = 0;\n    uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);\n    do {\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    } while (uVar18 != 0x14);\n    goto LAB_00018298;\n  }\n  putchar(10);\nLAB_00018298:\n  free(local_c8);\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "dump_videocontrol_interface(libusb_device_handle *dev,uchar *buf,int protocol)" identifier (parameter_list "(libusb_device_handle *dev,uchar *buf,int protocol)" ( (parameter_declaration "libusb_device_handle *dev" type_identifier (pointer_declarator "*dev" * identifier)) , (parameter_declaration "uchar *buf" type_identifier (pointer_declarator "*buf" * identifier)) , (parameter_declaration "int protocol" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  char **ppcVar2;\n  int iVar3;\n  byte bVar4;\n  uchar uVar5;\n  uchar uVar6;\n  u_int16_t uVar7;\n  uint3 uVar8;\n  ushort uVar9;\n  int iVar10;\n  char *pcVar11;\n  uint uVar12;\n  uint uVar13;\n  uint uVar14;\n  uchar *puVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  int in_GS_OFFSET;\n  char *local_c8;\n  char termts [128];\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if (buf[1] == '$') {\n    bVar4 = *buf;\n    uVar6 = '$';\n    if (bVar4 < 3) {\n      pcVar11 = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    pcVar11 = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(pcVar11);\n    uVar6 = buf[1];\n    bVar4 = *buf;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar4,uVar6,buf[2]);\n  switch(buf[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar4 = *buf;\n    if (bVar4 != 3) {\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }\n    goto LAB_0001827d;\n  case '\x01':\n    puts("(HEADER)");\n    uVar18 = (uint)buf[0xb];\n    uVar17 = uVar18 + 0xc;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar13 = uVar18;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    local_c8 = (char *)0x0;\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (char *)0x0;\n    goto LAB_00018298;\n  case '\x02':\n    puts("(INPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[7]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    uVar17 = 8;\n    if (uVar7 == 0x201) {\n      uVar17 = 0xf;\n    }\n    iVar10 = 0;\n    if (uVar7 == 0x201) {\n      iVar10 = 7;\n    }\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6]);\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);\n    if (uVar7 == 0x201) {\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x03':\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[8]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);\n    if (*buf < 10) goto LAB_00018298;\n    uVar17 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x04':\n    puts("(SELECTOR_UNIT)");\n    uVar18 = (uint)buf[4];\n    uVar17 = uVar18 + 6;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = get_dev_string(dev,buf[uVar18 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18);\n    if (uVar18 != 0) {\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x05':\n    puts("(PROCESSING_UNIT)");\n    uVar17 = (uint)buf[7];\n    local_c8 = get_dev_string(dev,buf[uVar17 + 8]);\n    if ((uint)*buf < uVar17 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);\n    if (uVar17 == 0) {\n      uVar18 = 0;\n    }\n    else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }\n    uVar13 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar18);\n    if (protocol == 1) {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }\n    bVar4 = buf[uVar17 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4);\n    if ((bVar4 & 1) != 0) {\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }\n    if ((bVar4 & 2) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }\n    if ((bVar4 & 4) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }\n    if ((bVar4 & 8) != 0) {\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }\n    if ((bVar4 & 0x10) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }\n    if ((bVar4 & 0x20) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }\n    goto LAB_00018298;\n  case '\x06':\n    puts("(EXTENSION_UNIT)");\n    uVar17 = (uint)buf[0x15];\n    uVar18 = (uint)buf[uVar17 + 0x16];\n    uVar13 = uVar17 + uVar18 + 0x18;\n    local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);\n    if (*buf < uVar13) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar6 = buf[0x14];\n    uVar12 = (uint)buf[0x13];\n    uVar5 = buf[0x15];\n    __sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5);\n    if (uVar17 != 0) {\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);\n    if (*buf <= uVar13) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar13 < *buf) {\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }\n    break;\n  case '\a':\n    puts("(ENCODING UNIT)");\n    local_c8 = get_dev_string(dev,buf[5]);\n    if (*buf < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar17 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);\n    uVar8 = *(uint3 *)(buf + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);\n    do {\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\nLAB_000189ea:\n    uVar18 = 0;\n    uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);\n    do {\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    } while (uVar18 != 0x14);\n    goto LAB_00018298;\n  }\n  putchar(10);\nLAB_00018298:\n  free(local_c8);\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "char **ppcVar2;" primitive_type (pointer_declarator "**ppcVar2" * (pointer_declarator "*ppcVar2" * identifier)) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "uchar uVar5;" type_identifier identifier ;) (declaration "uchar uVar6;" type_identifier identifier ;) (declaration "u_int16_t uVar7;" type_identifier identifier ;) (declaration "uint3 uVar8;" type_identifier identifier ;) (declaration "ushort uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uchar *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_c8;" primitive_type (pointer_declarator "*local_c8" * identifier) ;) (declaration "char termts [128];" primitive_type (array_declarator "termts [128]" identifier [ number_literal ]) ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (buf[1] == '$') {\n    bVar4 = *buf;\n    uVar6 = '$';\n    if (bVar4 < 3) {\n      pcVar11 = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    pcVar11 = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(pcVar11);\n    uVar6 = buf[1];\n    bVar4 = *buf;\n  }" if (parenthesized_expression "(buf[1] == '$')" ( (binary_expression "buf[1] == '$'" (subscript_expression "buf[1]" identifier [ number_literal ]) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n    bVar4 = *buf;\n    uVar6 = '$';\n    if (bVar4 < 3) {\n      pcVar11 = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }" { (expression_statement "bVar4 = *buf;" (assignment_expression "bVar4 = *buf" identifier = (pointer_expression "*buf" * identifier)) ;) (expression_statement "uVar6 = '$';" (assignment_expression "uVar6 = '$'" identifier = (char_literal "'$'" ' character ')) ;) (if_statement "if (bVar4 < 3) {\n      pcVar11 = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" if (parenthesized_expression "(bVar4 < 3)" ( (binary_expression "bVar4 < 3" identifier < number_literal) )) (compound_statement "{\n      pcVar11 = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" { (expression_statement "pcVar11 = "      Warning: Descriptor too short";" (assignment_expression "pcVar11 = "      Warning: Descriptor too short"" identifier = (string_literal ""      Warning: Descriptor too short"" " string_content ")) ;) (goto_statement "goto LAB_00018159;" goto statement_identifier ;) })) }) (else_clause "else {\n    pcVar11 = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(pcVar11);\n    uVar6 = buf[1];\n    bVar4 = *buf;\n  }" else (compound_statement "{\n    pcVar11 = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(pcVar11);\n    uVar6 = buf[1];\n    bVar4 = *buf;\n  }" { (expression_statement "pcVar11 = "      Warning: Invalid descriptor";" (assignment_expression "pcVar11 = "      Warning: Invalid descriptor"" identifier = (string_literal ""      Warning: Invalid descriptor"" " string_content ")) ;) (labeled_statement "LAB_00018159:\n    puts(pcVar11);" statement_identifier : (expression_statement "puts(pcVar11);" (call_expression "puts(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;)) (expression_statement "uVar6 = buf[1];" (assignment_expression "uVar6 = buf[1]" identifier = (subscript_expression "buf[1]" identifier [ number_literal ])) ;) (expression_statement "bVar4 = *buf;" (assignment_expression "bVar4 = *buf" identifier = (pointer_expression "*buf" * identifier)) ;) }))) (expression_statement "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar4,uVar6,buf[2]);" (call_expression "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar4,uVar6,buf[2])" identifier (argument_list "(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar4,uVar6,buf[2])" ( number_literal , (string_literal ""      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , identifier , identifier , (subscript_expression "buf[2]" identifier [ number_literal ]) ))) ;) (switch_statement "switch(buf[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar4 = *buf;\n    if (bVar4 != 3) {\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }\n    goto LAB_0001827d;\n  case '\x01':\n    puts("(HEADER)");\n    uVar18 = (uint)buf[0xb];\n    uVar17 = uVar18 + 0xc;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar13 = uVar18;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    local_c8 = (char *)0x0;\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (char *)0x0;\n    goto LAB_00018298;\n  case '\x02':\n    puts("(INPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[7]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    uVar17 = 8;\n    if (uVar7 == 0x201) {\n      uVar17 = 0xf;\n    }\n    iVar10 = 0;\n    if (uVar7 == 0x201) {\n      iVar10 = 7;\n    }\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6]);\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);\n    if (uVar7 == 0x201) {\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x03':\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[8]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);\n    if (*buf < 10) goto LAB_00018298;\n    uVar17 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x04':\n    puts("(SELECTOR_UNIT)");\n    uVar18 = (uint)buf[4];\n    uVar17 = uVar18 + 6;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = get_dev_string(dev,buf[uVar18 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18);\n    if (uVar18 != 0) {\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x05':\n    puts("(PROCESSING_UNIT)");\n    uVar17 = (uint)buf[7];\n    local_c8 = get_dev_string(dev,buf[uVar17 + 8]);\n    if ((uint)*buf < uVar17 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);\n    if (uVar17 == 0) {\n      uVar18 = 0;\n    }\n    else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }\n    uVar13 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar18);\n    if (protocol == 1) {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }\n    bVar4 = buf[uVar17 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4);\n    if ((bVar4 & 1) != 0) {\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }\n    if ((bVar4 & 2) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }\n    if ((bVar4 & 4) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }\n    if ((bVar4 & 8) != 0) {\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }\n    if ((bVar4 & 0x10) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }\n    if ((bVar4 & 0x20) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }\n    goto LAB_00018298;\n  case '\x06':\n    puts("(EXTENSION_UNIT)");\n    uVar17 = (uint)buf[0x15];\n    uVar18 = (uint)buf[uVar17 + 0x16];\n    uVar13 = uVar17 + uVar18 + 0x18;\n    local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);\n    if (*buf < uVar13) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar6 = buf[0x14];\n    uVar12 = (uint)buf[0x13];\n    uVar5 = buf[0x15];\n    __sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5);\n    if (uVar17 != 0) {\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);\n    if (*buf <= uVar13) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar13 < *buf) {\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }\n    break;\n  case '\a':\n    puts("(ENCODING UNIT)");\n    local_c8 = get_dev_string(dev,buf[5]);\n    if (*buf < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar17 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);\n    uVar8 = *(uint3 *)(buf + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);\n    do {\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\nLAB_000189ea:\n    uVar18 = 0;\n    uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);\n    do {\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    } while (uVar18 != 0x14);\n    goto LAB_00018298;\n  }" switch (parenthesized_expression "(buf[2])" ( (subscript_expression "buf[2]" identifier [ number_literal ]) )) (compound_statement "{\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar4 = *buf;\n    if (bVar4 != 3) {\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }\n    goto LAB_0001827d;\n  case '\x01':\n    puts("(HEADER)");\n    uVar18 = (uint)buf[0xb];\n    uVar17 = uVar18 + 0xc;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar13 = uVar18;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    local_c8 = (char *)0x0;\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (char *)0x0;\n    goto LAB_00018298;\n  case '\x02':\n    puts("(INPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[7]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    uVar17 = 8;\n    if (uVar7 == 0x201) {\n      uVar17 = 0xf;\n    }\n    iVar10 = 0;\n    if (uVar7 == 0x201) {\n      iVar10 = 7;\n    }\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6]);\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);\n    if (uVar7 == 0x201) {\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x03':\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[8]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);\n    if (*buf < 10) goto LAB_00018298;\n    uVar17 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x04':\n    puts("(SELECTOR_UNIT)");\n    uVar18 = (uint)buf[4];\n    uVar17 = uVar18 + 6;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = get_dev_string(dev,buf[uVar18 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18);\n    if (uVar18 != 0) {\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;\n  case '\x05':\n    puts("(PROCESSING_UNIT)");\n    uVar17 = (uint)buf[7];\n    local_c8 = get_dev_string(dev,buf[uVar17 + 8]);\n    if ((uint)*buf < uVar17 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);\n    if (uVar17 == 0) {\n      uVar18 = 0;\n    }\n    else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }\n    uVar13 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar18);\n    if (protocol == 1) {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }\n    bVar4 = buf[uVar17 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4);\n    if ((bVar4 & 1) != 0) {\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }\n    if ((bVar4 & 2) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }\n    if ((bVar4 & 4) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }\n    if ((bVar4 & 8) != 0) {\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }\n    if ((bVar4 & 0x10) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }\n    if ((bVar4 & 0x20) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }\n    goto LAB_00018298;\n  case '\x06':\n    puts("(EXTENSION_UNIT)");\n    uVar17 = (uint)buf[0x15];\n    uVar18 = (uint)buf[uVar17 + 0x16];\n    uVar13 = uVar17 + uVar18 + 0x18;\n    local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);\n    if (*buf < uVar13) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar6 = buf[0x14];\n    uVar12 = (uint)buf[0x13];\n    uVar5 = buf[0x15];\n    __sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5);\n    if (uVar17 != 0) {\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);\n    if (*buf <= uVar13) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar13 < *buf) {\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }\n    break;\n  case '\a':\n    puts("(ENCODING UNIT)");\n    local_c8 = get_dev_string(dev,buf[5]);\n    if (*buf < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar17 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);\n    uVar8 = *(uint3 *)(buf + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);\n    do {\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\nLAB_000189ea:\n    uVar18 = 0;\n    uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);\n    do {\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    } while (uVar18 != 0x14);\n    goto LAB_00018298;\n  }" { (case_statement "default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar4 = *buf;\n    if (bVar4 != 3) {\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }\n    goto LAB_0001827d;" default : (expression_statement "__printf_chk(1,"(unknown)\n        Invalid desc subtype:");" (call_expression "__printf_chk(1,"(unknown)\n        Invalid desc subtype:")" identifier (argument_list "(1,"(unknown)\n        Invalid desc subtype:")" ( number_literal , (string_literal ""(unknown)\n        Invalid desc subtype:"" " string_content escape_sequence string_content ") ))) ;) (expression_statement "bVar4 = *buf;" (assignment_expression "bVar4 = *buf" identifier = (pointer_expression "*buf" * identifier)) ;) (if_statement "if (bVar4 != 3) {\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }" if (parenthesized_expression "(bVar4 != 3)" ( (binary_expression "bVar4 != 3" identifier != number_literal) )) (compound_statement "{\n      puVar15 = buf + 3;\n      do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);\n    }" { (expression_statement "puVar15 = buf + 3;" (assignment_expression "puVar15 = buf + 3" identifier = (binary_expression "buf + 3" identifier + number_literal)) ;) (do_statement "do {\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      } while (puVar15 != buf + bVar4);" do (compound_statement "{\n        uVar6 = *puVar15;\n        puVar15 = puVar15 + 1;\n        __printf_chk(1," %02x",uVar6);\n      }" { (expression_statement "uVar6 = *puVar15;" (assignment_expression "uVar6 = *puVar15" identifier = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",uVar6);" (call_expression "__printf_chk(1," %02x",uVar6)" identifier (argument_list "(1," %02x",uVar6)" ( number_literal , (string_literal "" %02x"" " string_content ") , identifier ))) ;) }) while (parenthesized_expression "(puVar15 != buf + bVar4)" ( (binary_expression "puVar15 != buf + bVar4" identifier != (binary_expression "buf + bVar4" identifier + identifier)) )) ;) })) (goto_statement "goto LAB_0001827d;" goto statement_identifier ;)) (case_statement "case '\x01':\n    puts("(HEADER)");\n    uVar18 = (uint)buf[0xb];\n    uVar17 = uVar18 + 0xc;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar13 = uVar18;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    local_c8 = (char *)0x0;\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (char *)0x0;\n    goto LAB_00018298;" case (char_literal "'\x01'" ' escape_sequence ') : (expression_statement "puts("(HEADER)");" (call_expression "puts("(HEADER)")" identifier (argument_list "("(HEADER)")" ( (string_literal ""(HEADER)"" " string_content ") ))) ;) (expression_statement "uVar18 = (uint)buf[0xb];" (assignment_expression "uVar18 = (uint)buf[0xb]" identifier = (cast_expression "(uint)buf[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0xb]" identifier [ number_literal ]))) ;) (expression_statement "uVar17 = uVar18 + 0xc;" (assignment_expression "uVar17 = uVar18 + 0xc" identifier = (binary_expression "uVar18 + 0xc" identifier + number_literal)) ;) (if_statement "if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*buf < uVar17)" ( (binary_expression "*buf < uVar17" (pointer_expression "*buf" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "uVar13 = uVar18;" (assignment_expression "uVar13 = uVar18" identifier = identifier) ;) (expression_statement "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18);" (call_expression "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18)" identifier (argument_list "(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,buf[4],buf[3],*(undefined2 *)(buf + 5),*(uint *)(buf + 7) / 1000000,\n                 *(uint *)(buf + 7) % 1000000,uVar18)" ( number_literal , (string_literal ""        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[4]" identifier [ number_literal ]) , (subscript_expression "buf[3]" identifier [ number_literal ]) , (pointer_expression "*(undefined2 *)(buf + 5)" * (cast_expression "(undefined2 *)(buf + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 5)" ( (binary_expression "buf + 5" identifier + number_literal) )))) , (binary_expression "*(uint *)(buf + 7) / 1000000" (pointer_expression "*(uint *)(buf + 7)" * (cast_expression "(uint *)(buf + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 7)" ( (binary_expression "buf + 7" identifier + number_literal) )))) / number_literal) , (binary_expression "*(uint *)(buf + 7) % 1000000" (pointer_expression "*(uint *)(buf + 7)" * (cast_expression "(uint *)(buf + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 7)" ( (binary_expression "buf + 7" identifier + number_literal) )))) % number_literal) , identifier ))) ;) (if_statement "if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }" if (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);" do (compound_statement "{\n        uVar13 = (uint)buf[uVar12 + 0xc];\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);\n        uVar12 = uVar16;\n      }" { (expression_statement "uVar13 = (uint)buf[uVar12 + 0xc];" (assignment_expression "uVar13 = (uint)buf[uVar12 + 0xc]" identifier = (cast_expression "(uint)buf[uVar12 + 0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[uVar12 + 0xc]" identifier [ (binary_expression "uVar12 + 0xc" identifier + number_literal) ]))) ;) (expression_statement "uVar16 = uVar12 + 1;" (assignment_expression "uVar16 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13);" (call_expression "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13)" identifier (argument_list "(1,"        baInterfaceNr(%2u)   %5u\n",uVar12,uVar13)" ( number_literal , (string_literal ""        baInterfaceNr(%2u)   %5u\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar12 = uVar16;" (assignment_expression "uVar12 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "(uVar18 != uVar16)" ( (binary_expression "uVar18 != uVar16" identifier != identifier) )) ;) })) (expression_statement "local_c8 = (char *)0x0;" (assignment_expression "local_c8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*buf <= uVar17) goto LAB_00018298;" if (parenthesized_expression "(*buf <= uVar17)" ( (binary_expression "*buf <= uVar17" (pointer_expression "*buf" * identifier) <= identifier) )) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar13)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }" if (parenthesized_expression "(uVar17 < *buf)" ( (binary_expression "uVar17 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);\n    }" { (do_statement "do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      } while (uVar17 < *buf);" do (compound_statement "{\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,uVar13);\n      }" { (expression_statement "puVar15 = buf + uVar17;" (assignment_expression "puVar15 = buf + uVar17" identifier = (binary_expression "buf + uVar17" identifier + identifier)) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*puVar15,uVar13);" (call_expression "__printf_chk(1," %02x",*puVar15,uVar13)" identifier (argument_list "(1," %02x",*puVar15,uVar13)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*puVar15" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar17 < *buf)" ( (binary_expression "uVar17 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) ;) })) (labeled_statement "LAB_0001827d:\n    putchar(10);" statement_identifier : (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;)) (expression_statement "local_c8 = (char *)0x0;" (assignment_expression "local_c8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) (case_statement "case '\x02':\n    puts("(INPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[7]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    uVar17 = 8;\n    if (uVar7 == 0x201) {\n      uVar17 = 0xf;\n    }\n    iVar10 = 0;\n    if (uVar7 == 0x201) {\n      iVar10 = 7;\n    }\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6]);\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);\n    if (uVar7 == 0x201) {\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;" case (char_literal "'\x02'" ' escape_sequence ') : (expression_statement "puts("(INPUT_TERMINAL)");" (call_expression "puts("(INPUT_TERMINAL)")" identifier (argument_list "("(INPUT_TERMINAL)")" ( (string_literal ""(INPUT_TERMINAL)"" " string_content ") ))) ;) (expression_statement "local_c8 = get_dev_string(dev,buf[7]);" (assignment_expression "local_c8 = get_dev_string(dev,buf[7])" identifier = (call_expression "get_dev_string(dev,buf[7])" identifier (argument_list "(dev,buf[7])" ( identifier , (subscript_expression "buf[7]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar7 = *(u_int16_t *)(buf + 4);" (assignment_expression "uVar7 = *(u_int16_t *)(buf + 4)" identifier = (pointer_expression "*(u_int16_t *)(buf + 4)" * (cast_expression "(u_int16_t *)(buf + 4)" ( (type_descriptor "u_int16_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 4)" ( (binary_expression "buf + 4" identifier + number_literal) ))))) ;) (expression_statement "termts[0] = '\0';" (assignment_expression "termts[0] = '\0'" (subscript_expression "termts[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar17 = 8;" (assignment_expression "uVar17 = 8" identifier = number_literal) ;) (if_statement "if (uVar7 == 0x201) {\n      uVar17 = 0xf;\n    }" if (parenthesized_expression "(uVar7 == 0x201)" ( (binary_expression "uVar7 == 0x201" identifier == number_literal) )) (compound_statement "{\n      uVar17 = 0xf;\n    }" { (expression_statement "uVar17 = 0xf;" (assignment_expression "uVar17 = 0xf" identifier = number_literal) ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (uVar7 == 0x201) {\n      iVar10 = 7;\n    }" if (parenthesized_expression "(uVar7 == 0x201)" ( (binary_expression "uVar7 == 0x201" identifier == number_literal) )) (compound_statement "{\n      iVar10 = 7;\n    }" { (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) })) (expression_statement "pcVar11 = names_videoterminal(uVar7);" (assignment_expression "pcVar11 = names_videoterminal(uVar7)" identifier = (call_expression "names_videoterminal(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;) (if_statement "if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }" if (parenthesized_expression "(pcVar11 != (char *)0x0)" ( (binary_expression "pcVar11 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(termts,0x80,"%s",pcVar11);\n    }" { (expression_statement "snprintf(termts,0x80,"%s",pcVar11);" (call_expression "snprintf(termts,0x80,"%s",pcVar11)" identifier (argument_list "(termts,0x80,"%s",pcVar11)" ( identifier , number_literal , (string_literal ""%s"" " string_content ") , identifier ))) ;) })) (if_statement "if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*buf < uVar17)" ( (binary_expression "*buf < uVar17" (pointer_expression "*buf" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6]);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6])" identifier (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,buf[3],uVar7,termts,buf[6])" ( number_literal , (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , identifier , identifier , (subscript_expression "buf[6]" identifier [ number_literal ]) ))) ;) (expression_statement "pcVar11 = local_c8;" (assignment_expression "pcVar11 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8);" (call_expression "__printf_chk(1,"        iTerminal           %5u %s\n",buf[7],local_c8)" identifier (argument_list "(1,"        iTerminal           %5u %s\n",buf[7],local_c8)" ( number_literal , (string_literal ""        iTerminal           %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "buf[7]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (uVar7 == 0x201) {\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }" if (parenthesized_expression "(uVar7 == 0x201)" ( (binary_expression "uVar7 == 0x201" identifier == number_literal) )) (compound_statement "{\n      iVar10 = iVar10 + (uint)buf[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);\n      uVar6 = buf[0xe];\n      if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }\n      uVar18 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);\n      if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }\n      uVar17 = iVar10 + 8;\n    }" { (expression_statement "iVar10 = iVar10 + (uint)buf[0xe];" (assignment_expression "iVar10 = iVar10 + (uint)buf[0xe]" identifier = (binary_expression "iVar10 + (uint)buf[0xe]" identifier + (cast_expression "(uint)buf[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0xe]" identifier [ number_literal ])))) ;) (expression_statement "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe]);" (call_expression "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe])" identifier (argument_list "(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(buf + 8),*(undefined2 *)(buf + 10),*(undefined2 *)(buf + 0xc),\n                   (uint)buf[0xe])" ( number_literal , (string_literal ""        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*(undefined2 *)(buf + 8)" * (cast_expression "(undefined2 *)(buf + 8)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 8)" ( (binary_expression "buf + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined2 *)(buf + 10)" * (cast_expression "(undefined2 *)(buf + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 10)" ( (binary_expression "buf + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined2 *)(buf + 0xc)" * (cast_expression "(undefined2 *)(buf + 0xc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0xc)" ( (binary_expression "buf + 0xc" identifier + number_literal) )))) , (cast_expression "(uint)buf[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0xe]" identifier [ number_literal ])) ))) ;) (expression_statement "uVar6 = buf[0xe];" (assignment_expression "uVar6 = buf[0xe]" identifier = (subscript_expression "buf[0xe]" identifier [ number_literal ])) ;) (if_statement "if (uVar6 == '\0') {\n        uVar17 = 0;\n      }\n      else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }" if (parenthesized_expression "(uVar6 == '\0')" ( (binary_expression "uVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar17 = 0;\n      }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }" else (compound_statement "{\n        uVar17 = (uint)buf[iVar10 + 7];\n        if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }\n      }" { (expression_statement "uVar17 = (uint)buf[iVar10 + 7];" (assignment_expression "uVar17 = (uint)buf[iVar10 + 7]" identifier = (cast_expression "(uint)buf[iVar10 + 7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[iVar10 + 7]" identifier [ (binary_expression "iVar10 + 7" identifier + number_literal) ]))) ;) (if_statement "if (uVar6 != '\x01') {\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }" if (parenthesized_expression "(uVar6 != '\x01')" ( (binary_expression "uVar6 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);\n          uVar17 = (uint)uVar9;\n          if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }\n        }" { (expression_statement "uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6]);" (assignment_expression "uVar9 = CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6])" identifier = (call_expression "CONCAT11(buf[iVar10 + 7],buf[iVar10 + 6])" identifier (argument_list "(buf[iVar10 + 7],buf[iVar10 + 6])" ( (subscript_expression "buf[iVar10 + 7]" identifier [ (binary_expression "iVar10 + 7" identifier + number_literal) ]) , (subscript_expression "buf[iVar10 + 6]" identifier [ (binary_expression "iVar10 + 6" identifier + number_literal) ]) )))) ;) (expression_statement "uVar17 = (uint)uVar9;" (assignment_expression "uVar17 = (uint)uVar9" identifier = (cast_expression "(uint)uVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar6 != '\x02') {\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }" if (parenthesized_expression "(uVar6 != '\x02')" ( (binary_expression "uVar6 != '\x02'" identifier != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n            uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);\n          }" { (expression_statement "uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5]);" (assignment_expression "uVar17 = (uint)CONCAT21(uVar9,buf[iVar10 + 5])" identifier = (cast_expression "(uint)CONCAT21(uVar9,buf[iVar10 + 5])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT21(uVar9,buf[iVar10 + 5])" identifier (argument_list "(uVar9,buf[iVar10 + 5])" ( identifier , (subscript_expression "buf[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) ))))) ;) })) })) }))) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11);" (call_expression "__printf_chk(1,"        bmControls           0x%08x\n",uVar17,pcVar11)" identifier (argument_list "(1,"        bmControls           0x%08x\n",uVar17,pcVar11)" ( number_literal , (string_literal ""        bmControls           0x%08x\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (if_statement "if (protocol == 1) {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }" if (parenthesized_expression "(protocol == 1)" ( (binary_expression "protocol == 1" identifier == number_literal) )) (compound_statement "{\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);\n      }" { (do_statement "do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x16);" do (compound_statement "{\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        }" { (if_statement "if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }" if (parenthesized_expression "((uVar17 >> (uVar18 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar17 >> (uVar18 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar18 & 0x1f) & 1)" ( (binary_expression "uVar17 >> (uVar18 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar18 & 0x1f)" identifier >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }" { (expression_statement "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);" (call_expression "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11)" identifier (argument_list "(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11)" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (subscript_expression "dump_videocontrol_interface::camctrlnames[uVar18]" identifier (ERROR "::camctrlnames" : : identifier) [ identifier ]) , identifier ))) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 != 0x16)" ( (binary_expression "uVar18 != 0x16" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }" else (compound_statement "{\n        do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);\n      }" { (do_statement "do {\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        } while (uVar18 != 0x13);" do (compound_statement "{\n          if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }\n          uVar18 = uVar18 + 1;\n        }" { (if_statement "if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }" if (parenthesized_expression "((uVar17 >> (uVar18 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar17 >> (uVar18 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar18 & 0x1f) & 1)" ( (binary_expression "uVar17 >> (uVar18 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar18 & 0x1f)" identifier >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n            __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);\n          }" { (expression_statement "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11);" (call_expression "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11)" identifier (argument_list "(1,&DAT_000243b1,dump_videocontrol_interface::camctrlnames[uVar18],pcVar11)" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (subscript_expression "dump_videocontrol_interface::camctrlnames[uVar18]" identifier (ERROR "::camctrlnames" : : identifier) [ identifier ]) , identifier ))) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 != 0x13)" ( (binary_expression "uVar18 != 0x13" identifier != number_literal) )) ;) }))) (expression_statement "uVar17 = iVar10 + 8;" (assignment_expression "uVar17 = iVar10 + 8" identifier = (binary_expression "iVar10 + 8" identifier + number_literal)) ;) })) (if_statement "if (*buf <= uVar17) goto LAB_00018298;" if (parenthesized_expression "(*buf <= uVar17)" ( (binary_expression "*buf <= uVar17" (pointer_expression "*buf" * identifier) <= identifier) )) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }" if (parenthesized_expression "(uVar17 < *buf)" ( (binary_expression "uVar17 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }" { (do_statement "do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);" do (compound_statement "{\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      }" { (expression_statement "puVar15 = buf + uVar17;" (assignment_expression "puVar15 = buf + uVar17" identifier = (binary_expression "buf + uVar17" identifier + identifier)) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*puVar15,pcVar11);" (call_expression "__printf_chk(1," %02x",*puVar15,pcVar11)" identifier (argument_list "(1," %02x",*puVar15,pcVar11)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*puVar15" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar17 < *buf)" ( (binary_expression "uVar17 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case '\x03':\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = get_dev_string(dev,buf[8]);\n    uVar7 = *(u_int16_t *)(buf + 4);\n    termts[0] = '\0';\n    pcVar11 = names_videoterminal(uVar7);\n    if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }\n    if (*buf < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);\n    if (*buf < 10) goto LAB_00018298;\n    uVar17 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }\n    break;" case (char_literal "'\x03'" ' escape_sequence ') : (expression_statement "puts("(OUTPUT_TERMINAL)");" (call_expression "puts("(OUTPUT_TERMINAL)")" identifier (argument_list "("(OUTPUT_TERMINAL)")" ( (string_literal ""(OUTPUT_TERMINAL)"" " string_content ") ))) ;) (expression_statement "local_c8 = get_dev_string(dev,buf[8]);" (assignment_expression "local_c8 = get_dev_string(dev,buf[8])" identifier = (call_expression "get_dev_string(dev,buf[8])" identifier (argument_list "(dev,buf[8])" ( identifier , (subscript_expression "buf[8]" identifier [ number_literal ]) )))) ;) (expression_statement "uVar7 = *(u_int16_t *)(buf + 4);" (assignment_expression "uVar7 = *(u_int16_t *)(buf + 4)" identifier = (pointer_expression "*(u_int16_t *)(buf + 4)" * (cast_expression "(u_int16_t *)(buf + 4)" ( (type_descriptor "u_int16_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 4)" ( (binary_expression "buf + 4" identifier + number_literal) ))))) ;) (expression_statement "termts[0] = '\0';" (assignment_expression "termts[0] = '\0'" (subscript_expression "termts[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar11 = names_videoterminal(uVar7);" (assignment_expression "pcVar11 = names_videoterminal(uVar7)" identifier = (call_expression "names_videoterminal(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;) (if_statement "if (pcVar11 != (char *)0x0) {\n      snprintf(termts,0x80,"%s",pcVar11);\n    }" if (parenthesized_expression "(pcVar11 != (char *)0x0)" ( (binary_expression "pcVar11 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(termts,0x80,"%s",pcVar11);\n    }" { (expression_statement "snprintf(termts,0x80,"%s",pcVar11);" (call_expression "snprintf(termts,0x80,"%s",pcVar11)" identifier (argument_list "(termts,0x80,"%s",pcVar11)" ( identifier , number_literal , (string_literal ""%s"" " string_content ") , identifier ))) ;) })) (if_statement "if (*buf < 9) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*buf < 9)" ( (binary_expression "*buf < 9" (pointer_expression "*buf" * identifier) < number_literal) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8)" identifier (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,buf[3],uVar7,termts,buf[6],buf[7],buf[8],local_c8)" ( number_literal , (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , identifier , identifier , (subscript_expression "buf[6]" identifier [ number_literal ]) , (subscript_expression "buf[7]" identifier [ number_literal ]) , (subscript_expression "buf[8]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (*buf < 10) goto LAB_00018298;" if (parenthesized_expression "(*buf < 10)" ( (binary_expression "*buf < 10" (pointer_expression "*buf" * identifier) < number_literal) )) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) (expression_statement "uVar17 = 9;" (assignment_expression "uVar17 = 9" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) ))) ;) (if_statement "if (9 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }" if (parenthesized_expression "(9 < *buf)" ( (binary_expression "9 < *buf" number_literal < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);\n    }" { (do_statement "do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      } while (uVar17 < *buf);" do (compound_statement "{\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15);\n      }" { (expression_statement "puVar15 = buf + uVar17;" (assignment_expression "puVar15 = buf + uVar17" identifier = (binary_expression "buf + uVar17" identifier + identifier)) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*puVar15);" (call_expression "__printf_chk(1," %02x",*puVar15)" identifier (argument_list "(1," %02x",*puVar15)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*puVar15" * identifier) ))) ;) }) while (parenthesized_expression "(uVar17 < *buf)" ( (binary_expression "uVar17 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case '\x04':\n    puts("(SELECTOR_UNIT)");\n    uVar18 = (uint)buf[4];\n    uVar17 = uVar18 + 6;\n    if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = get_dev_string(dev,buf[uVar18 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18);\n    if (uVar18 != 0) {\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);\n    if (*buf <= uVar17) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }\n    break;" case (char_literal "'\x04'" ' escape_sequence ') : (expression_statement "puts("(SELECTOR_UNIT)");" (call_expression "puts("(SELECTOR_UNIT)")" identifier (argument_list "("(SELECTOR_UNIT)")" ( (string_literal ""(SELECTOR_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar18 = (uint)buf[4];" (assignment_expression "uVar18 = (uint)buf[4]" identifier = (cast_expression "(uint)buf[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar17 = uVar18 + 6;" (assignment_expression "uVar17 = uVar18 + 6" identifier = (binary_expression "uVar18 + 6" identifier + number_literal)) ;) (if_statement "if (*buf < uVar17) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*buf < uVar17)" ( (binary_expression "*buf < uVar17" (pointer_expression "*buf" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "local_c8 = get_dev_string(dev,buf[uVar18 + 5]);" (assignment_expression "local_c8 = get_dev_string(dev,buf[uVar18 + 5])" identifier = (call_expression "get_dev_string(dev,buf[uVar18 + 5])" identifier (argument_list "(dev,buf[uVar18 + 5])" ( identifier , (subscript_expression "buf[uVar18 + 5]" identifier [ (binary_expression "uVar18 + 5" identifier + number_literal) ]) )))) ;) (expression_statement "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18);" (call_expression "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18)" identifier (argument_list "(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",buf[3],\n                 uVar18)" ( number_literal , (string_literal ""        bUnitID             %5u\n        bNrInPins           %5u\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (uVar18 != 0) {\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }" if (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar13 = 0;\n      do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      } while (uVar18 != uVar12);" do (compound_statement "{\n        uVar12 = uVar13 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);\n        uVar13 = uVar12;\n      }" { (expression_statement "uVar12 = uVar13 + 1;" (assignment_expression "uVar12 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5]);" (call_expression "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5])" identifier (argument_list "(1,"        baSource(%2u)        %5u\n",uVar13,buf[uVar13 + 5])" ( number_literal , (string_literal ""        baSource(%2u)        %5u\n"" " string_content escape_sequence ") , identifier , (subscript_expression "buf[uVar13 + 5]" identifier [ (binary_expression "uVar13 + 5" identifier + number_literal) ]) ))) ;) (expression_statement "uVar13 = uVar12;" (assignment_expression "uVar13 = uVar12" identifier = identifier) ;) }) while (parenthesized_expression "(uVar18 != uVar12)" ( (binary_expression "uVar18 != uVar12" identifier != identifier) )) ;) })) (expression_statement "pcVar11 = local_c8;" (assignment_expression "pcVar11 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8);" (call_expression "__printf_chk(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8)" identifier (argument_list "(1,"        iSelector           %5u %s\n",buf[uVar18 + 5],local_c8)" ( number_literal , (string_literal ""        iSelector           %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "buf[uVar18 + 5]" identifier [ (binary_expression "uVar18 + 5" identifier + number_literal) ]) , identifier ))) ;) (if_statement "if (*buf <= uVar17) goto LAB_00018298;" if (parenthesized_expression "(*buf <= uVar17)" ( (binary_expression "*buf <= uVar17" (pointer_expression "*buf" * identifier) <= identifier) )) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar17 < *buf) {\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }" if (parenthesized_expression "(uVar17 < *buf)" ( (binary_expression "uVar17 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n      do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);\n    }" { (do_statement "do {\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar17 < *buf);" do (compound_statement "{\n        puVar15 = buf + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      }" { (expression_statement "puVar15 = buf + uVar17;" (assignment_expression "puVar15 = buf + uVar17" identifier = (binary_expression "buf + uVar17" identifier + identifier)) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*puVar15,pcVar11);" (call_expression "__printf_chk(1," %02x",*puVar15,pcVar11)" identifier (argument_list "(1," %02x",*puVar15,pcVar11)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*puVar15" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar17 < *buf)" ( (binary_expression "uVar17 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case '\x05':\n    puts("(PROCESSING_UNIT)");\n    uVar17 = (uint)buf[7];\n    local_c8 = get_dev_string(dev,buf[uVar17 + 8]);\n    if ((uint)*buf < uVar17 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);\n    if (uVar17 == 0) {\n      uVar18 = 0;\n    }\n    else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }\n    uVar13 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar18);\n    if (protocol == 1) {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }\n    bVar4 = buf[uVar17 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4);\n    if ((bVar4 & 1) != 0) {\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }\n    if ((bVar4 & 2) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }\n    if ((bVar4 & 4) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }\n    if ((bVar4 & 8) != 0) {\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }\n    if ((bVar4 & 0x10) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }\n    if ((bVar4 & 0x20) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }\n    goto LAB_00018298;" case (char_literal "'\x05'" ' escape_sequence ') : (expression_statement "puts("(PROCESSING_UNIT)");" (call_expression "puts("(PROCESSING_UNIT)")" identifier (argument_list "("(PROCESSING_UNIT)")" ( (string_literal ""(PROCESSING_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar17 = (uint)buf[7];" (assignment_expression "uVar17 = (uint)buf[7]" identifier = (cast_expression "(uint)buf[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[7]" identifier [ number_literal ]))) ;) (expression_statement "local_c8 = get_dev_string(dev,buf[uVar17 + 8]);" (assignment_expression "local_c8 = get_dev_string(dev,buf[uVar17 + 8])" identifier = (call_expression "get_dev_string(dev,buf[uVar17 + 8])" identifier (argument_list "(dev,buf[uVar17 + 8])" ( identifier , (subscript_expression "buf[uVar17 + 8]" identifier [ (binary_expression "uVar17 + 8" identifier + number_literal) ]) )))) ;) (if_statement "if ((uint)*buf < uVar17 + 10) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "((uint)*buf < uVar17 + 10)" ( (binary_expression "(uint)*buf < uVar17 + 10" (binary_expression "(uint)*buf" (parenthesized_expression "(uint)" ( identifier )) * identifier) < (binary_expression "uVar17 + 10" identifier + number_literal)) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17)" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],*(undefined2 *)(buf + 5),uVar17)" ( number_literal , (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , (subscript_expression "buf[4]" identifier [ number_literal ]) , (pointer_expression "*(undefined2 *)(buf + 5)" * (cast_expression "(undefined2 *)(buf + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 5)" ( (binary_expression "buf + 5" identifier + number_literal) )))) , identifier ))) ;) (if_statement "if (uVar17 == 0) {\n      uVar18 = 0;\n    }\n    else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar18 = 0;\n    }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }" else (compound_statement "{\n      puVar15 = buf + uVar17;\n      uVar18 = 0;\n      uVar13 = 0;\n      do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);\n    }" { (expression_statement "puVar15 = buf + uVar17;" (assignment_expression "puVar15 = buf + uVar17" identifier = (binary_expression "buf + uVar17" identifier + identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      } while (uVar13 < uVar17);" do (compound_statement "{\n        pbVar1 = puVar15 + 7;\n        uVar13 = uVar13 + 1;\n        puVar15 = puVar15 + -1;\n        uVar18 = uVar18 << 8 | (uint)*pbVar1;\n        if (2 < uVar13) break;\n      }" { (expression_statement "pbVar1 = puVar15 + 7;" (assignment_expression "pbVar1 = puVar15 + 7" identifier = (binary_expression "puVar15 + 7" identifier + number_literal)) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar15 = puVar15 + -1;" (assignment_expression "puVar15 = puVar15 + -1" identifier = (binary_expression "puVar15 + -1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar18 << 8 | (uint)*pbVar1;" (assignment_expression "uVar18 = uVar18 << 8 | (uint)*pbVar1" identifier = (binary_expression "uVar18 << 8 | (uint)*pbVar1" (binary_expression "uVar18 << 8" identifier << number_literal) | (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (if_statement "if (2 < uVar13) break;" if (parenthesized_expression "(2 < uVar13)" ( (binary_expression "2 < uVar13" number_literal < identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(uVar13 < uVar17)" ( (binary_expression "uVar13 < uVar17" identifier < identifier) )) ;) }))) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"        bmControls     0x%08x\n",uVar18);" (call_expression "__printf_chk(1,"        bmControls     0x%08x\n",uVar18)" identifier (argument_list "(1,"        bmControls     0x%08x\n",uVar18)" ( number_literal , (string_literal ""        bmControls     0x%08x\n"" " string_content escape_sequence ") , identifier ))) ;) (if_statement "if (protocol == 1) {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }" if (parenthesized_expression "(protocol == 1)" ( (binary_expression "protocol == 1" identifier == number_literal) )) (compound_statement "{\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);\n    }" { (do_statement "do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x13);" do (compound_statement "{\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      }" { (if_statement "if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }" if (parenthesized_expression "((uVar18 >> (uVar13 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar18 >> (uVar13 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar18 >> (uVar13 & 0x1f) & 1)" ( (binary_expression "uVar18 >> (uVar13 & 0x1f) & 1" (binary_expression "uVar18 >> (uVar13 & 0x1f)" identifier >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }" { (expression_statement "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);" (call_expression "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13])" identifier (argument_list "(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13])" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (subscript_expression "dump_videocontrol_interface::ctrlnames[uVar13]" identifier (ERROR "::ctrlnames" : : identifier) [ identifier ]) ))) ;) })) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 != 0x13)" ( (binary_expression "uVar13 != 0x13" identifier != number_literal) )) ;) }) (else_clause "else {\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }" else (compound_statement "{\n      do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);\n    }" { (do_statement "do {\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      } while (uVar13 != 0x12);" do (compound_statement "{\n        if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }\n        uVar13 = uVar13 + 1;\n      }" { (if_statement "if ((uVar18 >> (uVar13 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }" if (parenthesized_expression "((uVar18 >> (uVar13 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar18 >> (uVar13 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar18 >> (uVar13 & 0x1f) & 1)" ( (binary_expression "uVar18 >> (uVar13 & 0x1f) & 1" (binary_expression "uVar18 >> (uVar13 & 0x1f)" identifier >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);\n        }" { (expression_statement "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13]);" (call_expression "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13])" identifier (argument_list "(1,&DAT_000243b1,dump_videocontrol_interface::ctrlnames[uVar13])" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (subscript_expression "dump_videocontrol_interface::ctrlnames[uVar13]" identifier (ERROR "::ctrlnames" : : identifier) [ identifier ]) ))) ;) })) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 != 0x12)" ( (binary_expression "uVar13 != 0x12" identifier != number_literal) )) ;) }))) (expression_statement "bVar4 = buf[uVar17 + 9];" (assignment_expression "bVar4 = buf[uVar17 + 9]" identifier = (subscript_expression "buf[uVar17 + 9]" identifier [ (binary_expression "uVar17 + 9" identifier + number_literal) ])) ;) (expression_statement "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4);" (call_expression "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4)" identifier (argument_list "(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 buf[uVar17 + 8],local_c8,bVar4)" ( number_literal , (string_literal ""        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[uVar17 + 8]" identifier [ (binary_expression "uVar17 + 8" identifier + number_literal) ]) , identifier , identifier ))) ;) (if_statement "if ((bVar4 & 1) != 0) {\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }" if (parenthesized_expression "((bVar4 & 1) != 0)" ( (binary_expression "(bVar4 & 1) != 0" (parenthesized_expression "(bVar4 & 1)" ( (binary_expression "bVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&DAT_000243b1,&DAT_0002412f);\n    }" { (expression_statement "__printf_chk(1,&DAT_000243b1,&DAT_0002412f);" (call_expression "__printf_chk(1,&DAT_000243b1,&DAT_0002412f)" identifier (argument_list "(1,&DAT_000243b1,&DAT_0002412f)" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (pointer_expression "&DAT_0002412f" & identifier) ))) ;) })) (if_statement "if ((bVar4 & 2) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }" if (parenthesized_expression "((bVar4 & 2) != 0)" ( (binary_expression "(bVar4 & 2) != 0" (parenthesized_expression "(bVar4 & 2)" ( (binary_expression "bVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&DAT_000243b1,"NTSC - 525/60");\n    }" { (expression_statement "__printf_chk(1,&DAT_000243b1,"NTSC - 525/60");" (call_expression "__printf_chk(1,&DAT_000243b1,"NTSC - 525/60")" identifier (argument_list "(1,&DAT_000243b1,"NTSC - 525/60")" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (string_literal ""NTSC - 525/60"" " string_content ") ))) ;) })) (if_statement "if ((bVar4 & 4) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }" if (parenthesized_expression "((bVar4 & 4) != 0)" ( (binary_expression "(bVar4 & 4) != 0" (parenthesized_expression "(bVar4 & 4)" ( (binary_expression "bVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&DAT_000243b1,"PAL - 625/50");\n    }" { (expression_statement "__printf_chk(1,&DAT_000243b1,"PAL - 625/50");" (call_expression "__printf_chk(1,&DAT_000243b1,"PAL - 625/50")" identifier (argument_list "(1,&DAT_000243b1,"PAL - 625/50")" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (string_literal ""PAL - 625/50"" " string_content ") ))) ;) })) (if_statement "if ((bVar4 & 8) != 0) {\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }" if (parenthesized_expression "((bVar4 & 8) != 0)" ( (binary_expression "(bVar4 & 8) != 0" (parenthesized_expression "(bVar4 & 8)" ( (binary_expression "bVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&DAT_000243b1,"SECAM - 625/50");\n    }" { (expression_statement "__printf_chk(1,&DAT_000243b1,"SECAM - 625/50");" (call_expression "__printf_chk(1,&DAT_000243b1,"SECAM - 625/50")" identifier (argument_list "(1,&DAT_000243b1,"SECAM - 625/50")" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (string_literal ""SECAM - 625/50"" " string_content ") ))) ;) })) (if_statement "if ((bVar4 & 0x10) != 0) {\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }" if (parenthesized_expression "((bVar4 & 0x10) != 0)" ( (binary_expression "(bVar4 & 0x10) != 0" (parenthesized_expression "(bVar4 & 0x10)" ( (binary_expression "bVar4 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&DAT_000243b1,"NTSC - 625/50");\n    }" { (expression_statement "__printf_chk(1,&DAT_000243b1,"NTSC - 625/50");" (call_expression "__printf_chk(1,&DAT_000243b1,"NTSC - 625/50")" identifier (argument_list "(1,&DAT_000243b1,"NTSC - 625/50")" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (string_literal ""NTSC - 625/50"" " string_content ") ))) ;) })) (if_statement "if ((bVar4 & 0x20) != 0) {\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }" if (parenthesized_expression "((bVar4 & 0x20) != 0)" ( (binary_expression "(bVar4 & 0x20) != 0" (parenthesized_expression "(bVar4 & 0x20)" ( (binary_expression "bVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&DAT_000243b1,"PAL - 525/60");\n    }" { (expression_statement "__printf_chk(1,&DAT_000243b1,"PAL - 525/60");" (call_expression "__printf_chk(1,&DAT_000243b1,"PAL - 525/60")" identifier (argument_list "(1,&DAT_000243b1,"PAL - 525/60")" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (string_literal ""PAL - 525/60"" " string_content ") ))) ;) })) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) (case_statement "case '\x06':\n    puts("(EXTENSION_UNIT)");\n    uVar17 = (uint)buf[0x15];\n    uVar18 = (uint)buf[uVar17 + 0x16];\n    uVar13 = uVar17 + uVar18 + 0x18;\n    local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);\n    if (*buf < uVar13) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar6 = buf[0x14];\n    uVar12 = (uint)buf[0x13];\n    uVar5 = buf[0x15];\n    __sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5);\n    if (uVar17 != 0) {\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);\n    if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }\n    pcVar11 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);\n    if (*buf <= uVar13) goto LAB_00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);\n    if (uVar13 < *buf) {\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }\n    break;" case (char_literal "'\x06'" ' escape_sequence ') : (expression_statement "puts("(EXTENSION_UNIT)");" (call_expression "puts("(EXTENSION_UNIT)")" identifier (argument_list "("(EXTENSION_UNIT)")" ( (string_literal ""(EXTENSION_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar17 = (uint)buf[0x15];" (assignment_expression "uVar17 = (uint)buf[0x15]" identifier = (cast_expression "(uint)buf[0x15]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0x15]" identifier [ number_literal ]))) ;) (expression_statement "uVar18 = (uint)buf[uVar17 + 0x16];" (assignment_expression "uVar18 = (uint)buf[uVar17 + 0x16]" identifier = (cast_expression "(uint)buf[uVar17 + 0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[uVar17 + 0x16]" identifier [ (binary_expression "uVar17 + 0x16" identifier + number_literal) ]))) ;) (expression_statement "uVar13 = uVar17 + uVar18 + 0x18;" (assignment_expression "uVar13 = uVar17 + uVar18 + 0x18" identifier = (binary_expression "uVar17 + uVar18 + 0x18" (binary_expression "uVar17 + uVar18" identifier + identifier) + number_literal)) ;) (expression_statement "local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17]);" (assignment_expression "local_c8 = get_dev_string(dev,buf[uVar17 + uVar18 + 0x17])" identifier = (call_expression "get_dev_string(dev,buf[uVar17 + uVar18 + 0x17])" identifier (argument_list "(dev,buf[uVar17 + uVar18 + 0x17])" ( identifier , (subscript_expression "buf[uVar17 + uVar18 + 0x17]" identifier [ (binary_expression "uVar17 + uVar18 + 0x17" (binary_expression "uVar17 + uVar18" identifier + identifier) + number_literal) ]) )))) ;) (if_statement "if (*buf < uVar13) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*buf < uVar13)" ( (binary_expression "*buf < uVar13" (pointer_expression "*buf" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "uVar6 = buf[0x14];" (assignment_expression "uVar6 = buf[0x14]" identifier = (subscript_expression "buf[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = (uint)buf[0x13];" (assignment_expression "uVar12 = (uint)buf[0x13]" identifier = (cast_expression "(uint)buf[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0x13]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = buf[0x15];" (assignment_expression "uVar5 = buf[0x15]" identifier = (subscript_expression "buf[0x15]" identifier [ number_literal ])) ;) (expression_statement "__sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12);" (call_expression "__sprintf_chk(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12)" identifier (argument_list "(&guid_5834,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",buf[7],\n                  buf[6],buf[5],buf[4],buf[9],buf[8],buf[0xb],buf[10],buf[0xc],buf[0xd],buf[0xe],\n                  buf[0xf],buf[0x10],buf[0x11],buf[0x12],uVar12)" ( (pointer_expression "&guid_5834" & identifier) , number_literal , number_literal , (string_literal ""{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}"" " string_content ") , (subscript_expression "buf[7]" identifier [ number_literal ]) , (subscript_expression "buf[6]" identifier [ number_literal ]) , (subscript_expression "buf[5]" identifier [ number_literal ]) , (subscript_expression "buf[4]" identifier [ number_literal ]) , (subscript_expression "buf[9]" identifier [ number_literal ]) , (subscript_expression "buf[8]" identifier [ number_literal ]) , (subscript_expression "buf[0xb]" identifier [ number_literal ]) , (subscript_expression "buf[10]" identifier [ number_literal ]) , (subscript_expression "buf[0xc]" identifier [ number_literal ]) , (subscript_expression "buf[0xd]" identifier [ number_literal ]) , (subscript_expression "buf[0xe]" identifier [ number_literal ]) , (subscript_expression "buf[0xf]" identifier [ number_literal ]) , (subscript_expression "buf[0x10]" identifier [ number_literal ]) , (subscript_expression "buf[0x11]" identifier [ number_literal ]) , (subscript_expression "buf[0x12]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5)" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,buf[3],&guid_5834,uVar6,uVar5)" ( number_literal , (string_literal ""        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , (pointer_expression "&guid_5834" & identifier) , identifier , identifier ))) ;) (if_statement "if (uVar17 != 0) {\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar16 = 0;\n      do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);\n    }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      } while (uVar17 != uVar14);" do (compound_statement "{\n        uVar12 = (uint)buf[uVar16 + 0x16];\n        uVar14 = uVar16 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);\n        uVar16 = uVar14;\n      }" { (expression_statement "uVar12 = (uint)buf[uVar16 + 0x16];" (assignment_expression "uVar12 = (uint)buf[uVar16 + 0x16]" identifier = (cast_expression "(uint)buf[uVar16 + 0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[uVar16 + 0x16]" identifier [ (binary_expression "uVar16 + 0x16" identifier + number_literal) ]))) ;) (expression_statement "uVar14 = uVar16 + 1;" (assignment_expression "uVar14 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12);" (call_expression "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12)" identifier (argument_list "(1,"        baSourceID(%2u)      %5u\n",uVar16,uVar12)" ( number_literal , (string_literal ""        baSourceID(%2u)      %5u\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar16 = uVar14;" (assignment_expression "uVar16 = uVar14" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != uVar14)" ( (binary_expression "uVar17 != uVar14" identifier != identifier) )) ;) })) (expression_statement "__printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12);" (call_expression "__printf_chk(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12)" identifier (argument_list "(1,"        bControlSize        %5u\n",buf[uVar17 + 0x16],uVar12)" ( number_literal , (string_literal ""        bControlSize        %5u\n"" " string_content escape_sequence ") , (subscript_expression "buf[uVar17 + 0x16]" identifier [ (binary_expression "uVar17 + 0x16" identifier + number_literal) ]) , identifier ))) ;) (if_statement "if (uVar18 != 0) {\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }" if (parenthesized_expression "(uVar18 != 0)" ( (binary_expression "uVar18 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      } while (uVar18 != uVar16);" do (compound_statement "{\n        uVar16 = uVar12 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);\n        uVar12 = uVar16;\n      }" { (expression_statement "uVar16 = uVar12 + 1;" (assignment_expression "uVar16 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17]);" (call_expression "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17])" identifier (argument_list "(1,"        bmControls(%2u)       0x%02x\n",uVar12,buf[uVar12 + uVar17 + 0x17])" ( number_literal , (string_literal ""        bmControls(%2u)       0x%02x\n"" " string_content escape_sequence ") , identifier , (subscript_expression "buf[uVar12 + uVar17 + 0x17]" identifier [ (binary_expression "uVar12 + uVar17 + 0x17" (binary_expression "uVar12 + uVar17" identifier + identifier) + number_literal) ]) ))) ;) (expression_statement "uVar12 = uVar16;" (assignment_expression "uVar12 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "(uVar18 != uVar16)" ( (binary_expression "uVar18 != uVar16" identifier != identifier) )) ;) })) (expression_statement "pcVar11 = local_c8;" (assignment_expression "pcVar11 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8);" (call_expression "__printf_chk(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8)" identifier (argument_list "(1,"        iExtension          %5u %s\n",buf[uVar17 + uVar18 + 0x17],local_c8)" ( number_literal , (string_literal ""        iExtension          %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "buf[uVar17 + uVar18 + 0x17]" identifier [ (binary_expression "uVar17 + uVar18 + 0x17" (binary_expression "uVar17 + uVar18" identifier + identifier) + number_literal) ]) , identifier ))) ;) (if_statement "if (*buf <= uVar13) goto LAB_00018298;" if (parenthesized_expression "(*buf <= uVar13)" ( (binary_expression "*buf <= uVar13" (pointer_expression "*buf" * identifier) <= identifier) )) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pcVar11)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar13 < *buf) {\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }" if (parenthesized_expression "(uVar13 < *buf)" ( (binary_expression "uVar13 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n      do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);\n    }" { (do_statement "do {\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      } while (uVar13 < *buf);" do (compound_statement "{\n        puVar15 = buf + uVar13;\n        uVar13 = uVar13 + 1;\n        __printf_chk(1," %02x",*puVar15,pcVar11);\n      }" { (expression_statement "puVar15 = buf + uVar13;" (assignment_expression "puVar15 = buf + uVar13" identifier = (binary_expression "buf + uVar13" identifier + identifier)) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*puVar15,pcVar11);" (call_expression "__printf_chk(1," %02x",*puVar15,pcVar11)" identifier (argument_list "(1," %02x",*puVar15,pcVar11)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*puVar15" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar13 < *buf)" ( (binary_expression "uVar13 < *buf" identifier < (pointer_expression "*buf" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case '\a':\n    puts("(ENCODING UNIT)");\n    local_c8 = get_dev_string(dev,buf[5]);\n    if (*buf < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar17 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);\n    uVar8 = *(uint3 *)(buf + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);\n    do {\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\nLAB_000189ea:\n    uVar18 = 0;\n    uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);\n    do {\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    } while (uVar18 != 0x14);\n    goto LAB_00018298;" case (char_literal "'\a'" ' escape_sequence ') : (expression_statement "puts("(ENCODING UNIT)");" (call_expression "puts("(ENCODING UNIT)")" identifier (argument_list "("(ENCODING UNIT)")" ( (string_literal ""(ENCODING UNIT)"" " string_content ") ))) ;) (expression_statement "local_c8 = get_dev_string(dev,buf[5]);" (assignment_expression "local_c8 = get_dev_string(dev,buf[5])" identifier = (call_expression "get_dev_string(dev,buf[5])" identifier (argument_list "(dev,buf[5])" ( identifier , (subscript_expression "buf[5]" identifier [ number_literal ]) )))) ;) (if_statement "if (*buf < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*buf < 0xd)" ( (binary_expression "*buf < 0xd" (pointer_expression "*buf" * identifier) < number_literal) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6]);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6])" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,buf[3],buf[4],buf[5],local_c8,buf[6])" ( number_literal , (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , (subscript_expression "buf[4]" identifier [ number_literal ]) , (subscript_expression "buf[5]" identifier [ number_literal ]) , identifier , (subscript_expression "buf[6]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar8 = *(uint3 *)(buf + 7);" (assignment_expression "uVar8 = *(uint3 *)(buf + 7)" identifier = (pointer_expression "*(uint3 *)(buf + 7)" * (cast_expression "(uint3 *)(buf + 7)" ( (type_descriptor "uint3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 7)" ( (binary_expression "buf + 7" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8);" (call_expression "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar8)" identifier (argument_list "(1,"        bmControls              0x%08x\n",(uint)uVar8)" ( number_literal , (string_literal ""        bmControls              0x%08x\n"" " string_content escape_sequence ") , (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (do_statement "do {\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);" do (compound_statement "{\n      while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }\n      uVar17 = uVar17 + 1;\n    }" { (while_statement "while ((uVar8 >> (uVar17 & 0x1f) & 1) != 0) {\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }" while (parenthesized_expression "((uVar8 >> (uVar17 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar8 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar8 >> (uVar17 & 0x1f) & 1)" ( (binary_expression "uVar8 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar8 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n        ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;\n        uVar17 = uVar17 + 1;\n        __printf_chk(1,&DAT_000243b1,*ppcVar2);\n        if (uVar17 == 0x14) goto LAB_000189ea;\n      }" { (expression_statement "ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17;" (binary_expression "ppcVar2 = dump_videocontrol_interface::enctrlnames + uVar17" (assignment_expression "ppcVar2 = dump_videocontrol_interface" identifier = identifier) (ERROR "::enctrlnames" : : identifier) + identifier) ;) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&DAT_000243b1,*ppcVar2);" (call_expression "__printf_chk(1,&DAT_000243b1,*ppcVar2)" identifier (argument_list "(1,&DAT_000243b1,*ppcVar2)" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (pointer_expression "*ppcVar2" * identifier) ))) ;) (if_statement "if (uVar17 == 0x14) goto LAB_000189ea;" if (parenthesized_expression "(uVar17 == 0x14)" ( (binary_expression "uVar17 == 0x14" identifier == number_literal) )) (goto_statement "goto LAB_000189ea;" goto statement_identifier ;)) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != 0x14)" ( (binary_expression "uVar17 != 0x14" identifier != number_literal) )) ;) (labeled_statement "LAB_000189ea:\n    uVar18 = 0;" statement_identifier : (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;)) (expression_statement "uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10];" (assignment_expression "uVar17 = ((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10]" identifier = (binary_expression "((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8 | (uint)buf[10]" (binary_expression "((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8) << 8" (parenthesized_expression "((uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8)" ( (binary_expression "(uint)buf[0xb] | CONCAT31(uVar8,buf[0xc]) << 8" (cast_expression "(uint)buf[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0xb]" identifier [ number_literal ])) | (binary_expression "CONCAT31(uVar8,buf[0xc]) << 8" (call_expression "CONCAT31(uVar8,buf[0xc])" identifier (argument_list "(uVar8,buf[0xc])" ( identifier , (subscript_expression "buf[0xc]" identifier [ number_literal ]) ))) << number_literal)) )) << number_literal) | (cast_expression "(uint)buf[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[10]" identifier [ number_literal ])))) ;) (expression_statement "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17);" (call_expression "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar17)" identifier (argument_list "(1,"        bmControlsRuntime       0x%08x\n",uVar17)" ( number_literal , (string_literal ""        bmControlsRuntime       0x%08x\n"" " string_content escape_sequence ") , identifier ))) ;) (do_statement "do {\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    } while (uVar18 != 0x14);" do (compound_statement "{\n      if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }\n      uVar18 = uVar18 + 1;\n    }" { (if_statement "if ((uVar17 >> (uVar18 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }" if (parenthesized_expression "((uVar17 >> (uVar18 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar17 >> (uVar18 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar18 & 0x1f) & 1)" ( (binary_expression "uVar17 >> (uVar18 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar18 & 0x1f)" identifier >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n        __printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);\n      }" { (expression_statement "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18]);" (call_expression "__printf_chk(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18])" identifier (argument_list "(1,&DAT_000243b1,dump_videocontrol_interface::enctrlnames[uVar18])" ( number_literal , (pointer_expression "&DAT_000243b1" & identifier) , (subscript_expression "dump_videocontrol_interface::enctrlnames[uVar18]" identifier (ERROR "::enctrlnames" : : identifier) [ identifier ]) ))) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 != 0x14)" ( (binary_expression "uVar18 != 0x14" identifier != number_literal) )) ;) (goto_statement "goto LAB_00018298;" goto statement_identifier ;)) })) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (labeled_statement "LAB_00018298:\n  free(local_c8);" statement_identifier : (expression_statement "free(local_c8);" (call_expression "free(local_c8)" identifier (argument_list "(local_c8)" ( identifier ))) ;)) (if_statement "if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(iVar3 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "void __regparm3 FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00023ad0();\n}\n\n" (function_definition "void __regparm3 FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00023ad0();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00023ad0();\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined **ppuVar2;" type_identifier (pointer_declarator "**ppuVar2" * (pointer_declarator "*ppuVar2" * identifier)) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "short sVar5;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined2 uVar6;" type_identifier identifier ;) (declaration "uint3 uVar7;" type_identifier identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "void *pvVar18;" primitive_type (pointer_declarator "*pvVar18" * identifier) ;) (declaration "void *local_c8;" primitive_type (pointer_declarator "*local_c8" * identifier) ;) (declaration "char acStack_a0 [128];" primitive_type (array_declarator "acStack_a0 [128]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x180ed;" (assignment_expression "uStack_14 = 0x180ed" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" if (parenthesized_expression "(param_2[1] == 0x24)" ( (binary_expression "param_2[1] == 0x24" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }" { (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "bVar4 = 0x24;" (assignment_expression "bVar4 = 0x24" identifier = number_literal) ;) (if_statement "if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" if (parenthesized_expression "(bVar3 < 3)" ( (binary_expression "bVar3 < 3" identifier < number_literal) )) (compound_statement "{\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" { (expression_statement "__s = "      Warning: Descriptor too short";" (assignment_expression "__s = "      Warning: Descriptor too short"" identifier = (string_literal ""      Warning: Descriptor too short"" " string_content ")) ;) (goto_statement "goto LAB_00018159;" goto statement_identifier ;) })) }) (else_clause "else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" else (compound_statement "{\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" { (expression_statement "__s = "      Warning: Invalid descriptor";" (assignment_expression "__s = "      Warning: Invalid descriptor"" identifier = (string_literal ""      Warning: Invalid descriptor"" " string_content ")) ;) (labeled_statement "LAB_00018159:\n    puts(__s);" statement_identifier : (expression_statement "puts(__s);" (call_expression "puts(__s)" identifier (argument_list "(__s)" ( identifier ))) ;)) (expression_statement "bVar4 = param_2[1];" (assignment_expression "bVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);" (call_expression "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2])" identifier (argument_list "(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2])" ( number_literal , (string_literal ""      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , identifier , identifier , (subscript_expression "param_2[2]" identifier [ number_literal ]) ))) ;) (switch_statement "switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }" switch (parenthesized_expression "(param_2[2])" ( (subscript_expression "param_2[2]" identifier [ number_literal ]) )) (compound_statement "{\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }" { (case_statement "default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;" default : (expression_statement "__printf_chk(1,"(unknown)\n        Invalid desc subtype:");" (call_expression "__printf_chk(1,"(unknown)\n        Invalid desc subtype:")" identifier (argument_list "(1,"(unknown)\n        Invalid desc subtype:")" ( number_literal , (string_literal ""(unknown)\n        Invalid desc subtype:"" " string_content escape_sequence string_content ") ))) ;) (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }" if (parenthesized_expression "(bVar3 != 3)" ( (binary_expression "bVar3 != 3" identifier != number_literal) )) (compound_statement "{\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }" { (expression_statement "pbVar14 = param_2 + 3;" (assignment_expression "pbVar14 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (do_statement "do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);" do (compound_statement "{\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      }" { (expression_statement "bVar4 = *pbVar14;" (assignment_expression "bVar4 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) (expression_statement "pbVar14 = pbVar14 + 1;" (assignment_expression "pbVar14 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",bVar4);" (call_expression "__printf_chk(1," %02x",bVar4)" identifier (argument_list "(1," %02x",bVar4)" ( number_literal , (string_literal "" %02x"" " string_content ") , identifier ))) ;) }) while (parenthesized_expression "(pbVar14 != param_2 + bVar3)" ( (binary_expression "pbVar14 != param_2 + bVar3" identifier != (binary_expression "param_2 + bVar3" identifier + identifier)) )) ;) })) (goto_statement "goto LAB_0001827d;" goto statement_identifier ;)) (case_statement "case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;" case number_literal : (expression_statement "puts("(HEADER)");" (call_expression "puts("(HEADER)")" identifier (argument_list "("(HEADER)")" ( (string_literal ""(HEADER)"" " string_content ") ))) ;) (expression_statement "uVar17 = (uint)param_2[0xb];" (assignment_expression "uVar17 = (uint)param_2[0xb]" identifier = (cast_expression "(uint)param_2[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xb]" identifier [ number_literal ]))) ;) (expression_statement "uVar16 = uVar17 + 0xc;" (assignment_expression "uVar16 = uVar17 + 0xc" identifier = (binary_expression "uVar17 + 0xc" identifier + number_literal)) ;) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar16)" ( (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "uVar12 = uVar17;" (assignment_expression "uVar12 = uVar17" identifier = identifier) ;) (expression_statement "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);" (call_expression "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17)" identifier (argument_list "(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17)" ( number_literal , (string_literal ""        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (pointer_expression "*(undefined2 *)(param_2 + 5)" * (cast_expression "(undefined2 *)(param_2 + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))) , (binary_expression "*(uint *)(param_2 + 7) / 1000000" (pointer_expression "*(uint *)(param_2 + 7)" * (cast_expression "(uint *)(param_2 + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) / number_literal) , (binary_expression "*(uint *)(param_2 + 7) % 1000000" (pointer_expression "*(uint *)(param_2 + 7)" * (cast_expression "(uint *)(param_2 + 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) % number_literal) , identifier ))) ;) (if_statement "if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);" do (compound_statement "{\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      }" { (expression_statement "uVar12 = (uint)param_2[uVar11 + 0xc];" (assignment_expression "uVar12 = (uint)param_2[uVar11 + 0xc]" identifier = (cast_expression "(uint)param_2[uVar11 + 0xc]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[uVar11 + 0xc]" identifier [ (binary_expression "uVar11 + 0xc" identifier + number_literal) ]))) ;) (expression_statement "uVar15 = uVar11 + 1;" (assignment_expression "uVar15 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);" (call_expression "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12)" identifier (argument_list "(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12)" ( number_literal , (string_literal ""        baInterfaceNr(%2u)   %5u\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != uVar15)" ( (binary_expression "uVar17 != uVar15" identifier != identifier) )) ;) })) (expression_statement "local_c8 = (void *)0x0;" (assignment_expression "local_c8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar16)" ( (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,uVar12);" (call_expression "__printf_chk(1," %02x",*pbVar14,uVar12)" identifier (argument_list "(1," %02x",*pbVar14,uVar12)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (labeled_statement "LAB_0001827d:\n    putchar(10);" statement_identifier : (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;)) (expression_statement "local_c8 = (void *)0x0;" (assignment_expression "local_c8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (case_statement "case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(INPUT_TERMINAL)");" (call_expression "puts("(INPUT_TERMINAL)")" identifier (argument_list "("(INPUT_TERMINAL)")" ( (string_literal ""(INPUT_TERMINAL)"" " string_content ") ))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[7]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[7])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[7])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[7])" identifier (argument_list "(param_1,param_2[7])" ( identifier , (subscript_expression "param_2[7]" identifier [ number_literal ]) ))))) ;) (expression_statement "sVar5 = *(short *)(param_2 + 4);" (assignment_expression "sVar5 = *(short *)(param_2 + 4)" identifier = (pointer_expression "*(short *)(param_2 + 4)" * (cast_expression "(short *)(param_2 + 4)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "acStack_a0[0] = '\0';" (assignment_expression "acStack_a0[0] = '\0'" (subscript_expression "acStack_a0[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar16 = 8;" (assignment_expression "uVar16 = 8" identifier = number_literal) ;) (if_statement "if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }" if (parenthesized_expression "(sVar5 == 0x201)" ( (binary_expression "sVar5 == 0x201" identifier == number_literal) )) (compound_statement "{\n      uVar16 = 0xf;\n    }" { (expression_statement "uVar16 = 0xf;" (assignment_expression "uVar16 = 0xf" identifier = number_literal) ;) })) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }" if (parenthesized_expression "(sVar5 == 0x201)" ( (binary_expression "sVar5 == 0x201" identifier == number_literal) )) (compound_statement "{\n      iVar10 = 7;\n    }" { (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" identifier = number_literal) ;) })) (expression_statement "iVar9 = FUN_00022850(sVar5);" (assignment_expression "iVar9 = FUN_00022850(sVar5)" identifier = (call_expression "FUN_00022850(sVar5)" identifier (argument_list "(sVar5)" ( identifier )))) ;) (if_statement "if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }" { (expression_statement "snprintf(acStack_a0,0x80,"%s",iVar9);" (call_expression "snprintf(acStack_a0,0x80,"%s",iVar9)" identifier (argument_list "(acStack_a0,0x80,"%s",iVar9)" ( identifier , number_literal , (string_literal ""%s"" " string_content ") , identifier ))) ;) })) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar16)" ( (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6])" identifier (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6])" ( number_literal , (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) ))) ;) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);" (call_expression "__printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8)" identifier (argument_list "(1,"        iTerminal           %5u %s\n",param_2[7],local_c8)" ( number_literal , (string_literal ""        iTerminal           %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "param_2[7]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }" if (parenthesized_expression "(sVar5 == 0x201)" ( (binary_expression "sVar5 == 0x201" identifier == number_literal) )) (compound_statement "{\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }" { (expression_statement "iVar10 = iVar10 + (uint)param_2[0xe];" (assignment_expression "iVar10 = iVar10 + (uint)param_2[0xe]" identifier = (binary_expression "iVar10 + (uint)param_2[0xe]" identifier + (cast_expression "(uint)param_2[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xe]" identifier [ number_literal ])))) ;) (expression_statement "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);" (call_expression "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe])" identifier (argument_list "(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe])" ( number_literal , (string_literal ""        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (pointer_expression "*(undefined2 *)(param_2 + 8)" * (cast_expression "(undefined2 *)(param_2 + 8)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined2 *)(param_2 + 10)" * (cast_expression "(undefined2 *)(param_2 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 10)" ( (binary_expression "param_2 + 10" identifier + number_literal) )))) , (pointer_expression "*(undefined2 *)(param_2 + 0xc)" * (cast_expression "(undefined2 *)(param_2 + 0xc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , (cast_expression "(uint)param_2[0xe]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xe]" identifier [ number_literal ])) ))) ;) (expression_statement "bVar3 = param_2[0xe];" (assignment_expression "bVar3 = param_2[0xe]" identifier = (subscript_expression "param_2[0xe]" identifier [ number_literal ])) ;) (if_statement "if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar16 = 0;\n      }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" else (compound_statement "{\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" { (expression_statement "uVar16 = (uint)param_2[iVar10 + 7];" (assignment_expression "uVar16 = (uint)param_2[iVar10 + 7]" identifier = (cast_expression "(uint)param_2[iVar10 + 7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[iVar10 + 7]" identifier [ (binary_expression "iVar10 + 7" identifier + number_literal) ]))) ;) (if_statement "if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }" if (parenthesized_expression "(bVar3 != 1)" ( (binary_expression "bVar3 != 1" identifier != number_literal) )) (compound_statement "{\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }" { (expression_statement "uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);" (assignment_expression "uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6])" identifier = (call_expression "CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6])" identifier (argument_list "(param_2[iVar10 + 7],param_2[iVar10 + 6])" ( (subscript_expression "param_2[iVar10 + 7]" identifier [ (binary_expression "iVar10 + 7" identifier + number_literal) ]) , (subscript_expression "param_2[iVar10 + 6]" identifier [ (binary_expression "iVar10 + 6" identifier + number_literal) ]) )))) ;) (expression_statement "uVar16 = (uint)uVar8;" (assignment_expression "uVar16 = (uint)uVar8" identifier = (cast_expression "(uint)uVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }" if (parenthesized_expression "(bVar3 != 2)" ( (binary_expression "bVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }" { (expression_statement "uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);" (assignment_expression "uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5])" identifier = (cast_expression "(uint)CONCAT21(uVar8,param_2[iVar10 + 5])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CONCAT21(uVar8,param_2[iVar10 + 5])" identifier (argument_list "(uVar8,param_2[iVar10 + 5])" ( identifier , (subscript_expression "param_2[iVar10 + 5]" identifier [ (binary_expression "iVar10 + 5" identifier + number_literal) ]) ))))) ;) })) })) }))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);" (call_expression "__printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18)" identifier (argument_list "(1,"        bmControls           0x%08x\n",uVar16,pvVar18)" ( number_literal , (string_literal ""        bmControls           0x%08x\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (if_statement "if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }" { (do_statement "do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);" do (compound_statement "{\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        }" { (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" if (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" ( (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Scanning_Mode_00037de0)[uVar17]" (parenthesized_expression "(&PTR_s_Scanning_Mode_00037de0)" ( (pointer_expression "&PTR_s_Scanning_Mode_00037de0" & identifier) )) [ identifier ]) , identifier ))) ;) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != 0x16)" ( (binary_expression "uVar17 != 0x16" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" else (compound_statement "{\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" { (do_statement "do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);" do (compound_statement "{\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        }" { (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" if (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" ( (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Scanning_Mode_00037de0)[uVar17]" (parenthesized_expression "(&PTR_s_Scanning_Mode_00037de0)" ( (pointer_expression "&PTR_s_Scanning_Mode_00037de0" & identifier) )) [ identifier ]) , identifier ))) ;) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != 0x13)" ( (binary_expression "uVar17 != 0x13" identifier != number_literal) )) ;) }))) (expression_statement "uVar16 = iVar10 + 8;" (assignment_expression "uVar16 = iVar10 + 8" identifier = (binary_expression "iVar10 + 8" identifier + number_literal)) ;) })) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar16)" ( (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" identifier (argument_list "(1," %02x",*pbVar14,pvVar18)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(OUTPUT_TERMINAL)");" (call_expression "puts("(OUTPUT_TERMINAL)")" identifier (argument_list "("(OUTPUT_TERMINAL)")" ( (string_literal ""(OUTPUT_TERMINAL)"" " string_content ") ))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[8]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[8])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[8])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[8])" identifier (argument_list "(param_1,param_2[8])" ( identifier , (subscript_expression "param_2[8]" identifier [ number_literal ]) ))))) ;) (expression_statement "uVar6 = *(undefined2 *)(param_2 + 4);" (assignment_expression "uVar6 = *(undefined2 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined2 *)(param_2 + 4)" * (cast_expression "(undefined2 *)(param_2 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "acStack_a0[0] = '\0';" (assignment_expression "acStack_a0[0] = '\0'" (subscript_expression "acStack_a0[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar10 = FUN_00022850(uVar6);" (assignment_expression "iVar10 = FUN_00022850(uVar6)" identifier = (call_expression "FUN_00022850(uVar6)" identifier (argument_list "(uVar6)" ( identifier )))) ;) (if_statement "if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }" { (expression_statement "snprintf(acStack_a0,0x80,"%s",iVar10);" (call_expression "snprintf(acStack_a0,0x80,"%s",iVar10)" identifier (argument_list "(acStack_a0,0x80,"%s",iVar10)" ( identifier , number_literal , (string_literal ""%s"" " string_content ") , identifier ))) ;) })) (if_statement "if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < 9)" ( (binary_expression "*param_2 < 9" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8)" identifier (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8)" ( number_literal , (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) , (subscript_expression "param_2[7]" identifier [ number_literal ]) , (subscript_expression "param_2[8]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (*param_2 < 10) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 < 10)" ( (binary_expression "*param_2 < 10" (pointer_expression "*param_2" * identifier) < number_literal) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "uVar16 = 9;" (assignment_expression "uVar16 = 9" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) ))) ;) (if_statement "if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(9 < *param_2)" ( (binary_expression "9 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14);" (call_expression "__printf_chk(1," %02x",*pbVar14)" identifier (argument_list "(1," %02x",*pbVar14)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(SELECTOR_UNIT)");" (call_expression "puts("(SELECTOR_UNIT)")" identifier (argument_list "("(SELECTOR_UNIT)")" ( (string_literal ""(SELECTOR_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar17 = (uint)param_2[4];" (assignment_expression "uVar17 = (uint)param_2[4]" identifier = (cast_expression "(uint)param_2[4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[4]" identifier [ number_literal ]))) ;) (expression_statement "uVar16 = uVar17 + 6;" (assignment_expression "uVar16 = uVar17 + 6" identifier = (binary_expression "uVar17 + 6" identifier + number_literal)) ;) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar16)" ( (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar17 + 5])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[uVar17 + 5])" identifier (argument_list "(param_1,param_2[uVar17 + 5])" ( identifier , (subscript_expression "param_2[uVar17 + 5]" identifier [ (binary_expression "uVar17 + 5" identifier + number_literal) ]) ))))) ;) (expression_statement "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);" (call_expression "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17)" identifier (argument_list "(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17)" ( number_literal , (string_literal ""        bUnitID             %5u\n        bNrInPins           %5u\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);" do (compound_statement "{\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      }" { (expression_statement "uVar11 = uVar12 + 1;" (assignment_expression "uVar11 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);" (call_expression "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5])" identifier (argument_list "(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5])" ( number_literal , (string_literal ""        baSource(%2u)        %5u\n"" " string_content escape_sequence ") , identifier , (subscript_expression "param_2[uVar12 + 5]" identifier [ (binary_expression "uVar12 + 5" identifier + number_literal) ]) ))) ;) (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != uVar11)" ( (binary_expression "uVar17 != uVar11" identifier != identifier) )) ;) })) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);" (call_expression "__printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8)" identifier (argument_list "(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8)" ( number_literal , (string_literal ""        iSelector           %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "param_2[uVar17 + 5]" identifier [ (binary_expression "uVar17 + 5" identifier + number_literal) ]) , identifier ))) ;) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar16)" ( (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" if (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" identifier (argument_list "(1," %02x",*pbVar14,pvVar18)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar16 < *param_2)" ( (binary_expression "uVar16 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;" case number_literal : (expression_statement "puts("(PROCESSING_UNIT)");" (call_expression "puts("(PROCESSING_UNIT)")" identifier (argument_list "("(PROCESSING_UNIT)")" ( (string_literal ""(PROCESSING_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar16 = (uint)param_2[7];" (assignment_expression "uVar16 = (uint)param_2[7]" identifier = (cast_expression "(uint)param_2[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[7]" identifier [ number_literal ]))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar16 + 8])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[uVar16 + 8])" identifier (argument_list "(param_1,param_2[uVar16 + 8])" ( identifier , (subscript_expression "param_2[uVar16 + 8]" identifier [ (binary_expression "uVar16 + 8" identifier + number_literal) ]) ))))) ;) (if_statement "if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "((uint)*param_2 < uVar16 + 10)" ( (binary_expression "(uint)*param_2 < uVar16 + 10" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier) < (binary_expression "uVar16 + 10" identifier + number_literal)) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16)" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16)" ( number_literal , (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (pointer_expression "*(undefined2 *)(param_2 + 5)" * (cast_expression "(undefined2 *)(param_2 + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 5)" ( (binary_expression "param_2 + 5" identifier + number_literal) )))) , identifier ))) ;) (if_statement "if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar17 = 0;\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" else (compound_statement "{\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" { (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);" do (compound_statement "{\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      }" { (expression_statement "pbVar1 = pbVar14 + 7;" (assignment_expression "pbVar1 = pbVar14 + 7" identifier = (binary_expression "pbVar14 + 7" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + -1;" (assignment_expression "pbVar14 = pbVar14 + -1" identifier = (binary_expression "pbVar14 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 << 8 | (uint)*pbVar1;" (assignment_expression "uVar17 = uVar17 << 8 | (uint)*pbVar1" identifier = (binary_expression "uVar17 << 8 | (uint)*pbVar1" (binary_expression "uVar17 << 8" identifier << number_literal) | (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (if_statement "if (2 < uVar12) break;" if (parenthesized_expression "(2 < uVar12)" ( (binary_expression "2 < uVar12" number_literal < identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(uVar12 < uVar16)" ( (binary_expression "uVar12 < uVar16" identifier < identifier) )) ;) }))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"        bmControls     0x%08x\n",uVar17);" (call_expression "__printf_chk(1,"        bmControls     0x%08x\n",uVar17)" identifier (argument_list "(1,"        bmControls     0x%08x\n",uVar17)" ( number_literal , (string_literal ""        bmControls     0x%08x\n"" " string_content escape_sequence ") , identifier ))) ;) (if_statement "if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }" { (do_statement "do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);" do (compound_statement "{\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      }" { (if_statement "if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" if (parenthesized_expression "((uVar17 >> (uVar12 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar17 >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar12 & 0x1f) & 1)" ( (binary_expression "uVar17 >> (uVar12 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar12 & 0x1f)" identifier >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Brightness_00037d80)[uVar12]" (parenthesized_expression "(&PTR_s_Brightness_00037d80)" ( (pointer_expression "&PTR_s_Brightness_00037d80" & identifier) )) [ identifier ]) ))) ;) })) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 != 0x13)" ( (binary_expression "uVar12 != 0x13" identifier != number_literal) )) ;) }) (else_clause "else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" else (compound_statement "{\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" { (do_statement "do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);" do (compound_statement "{\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      }" { (if_statement "if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" if (parenthesized_expression "((uVar17 >> (uVar12 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar17 >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar12 & 0x1f) & 1)" ( (binary_expression "uVar17 >> (uVar12 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar12 & 0x1f)" identifier >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Brightness_00037d80)[uVar12]" (parenthesized_expression "(&PTR_s_Brightness_00037d80)" ( (pointer_expression "&PTR_s_Brightness_00037d80" & identifier) )) [ identifier ]) ))) ;) })) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar12 != 0x12)" ( (binary_expression "uVar12 != 0x12" identifier != number_literal) )) ;) }))) (expression_statement "bVar3 = param_2[uVar16 + 9];" (assignment_expression "bVar3 = param_2[uVar16 + 9]" identifier = (subscript_expression "param_2[uVar16 + 9]" identifier [ (binary_expression "uVar16 + 9" identifier + number_literal) ])) ;) (expression_statement "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);" (call_expression "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3)" identifier (argument_list "(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3)" ( number_literal , (string_literal ""        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[uVar16 + 8]" identifier [ (binary_expression "uVar16 + 8" identifier + number_literal) ]) , identifier , identifier ))) ;) (if_statement "if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }" if (parenthesized_expression "((bVar3 & 1) != 0)" ( (binary_expression "(bVar3 & 1) != 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&DAT_0002412f);" (call_expression "__printf_chk(1,&UNK_000243b1,&DAT_0002412f)" identifier (argument_list "(1,&UNK_000243b1,&DAT_0002412f)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&DAT_0002412f" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }" if (parenthesized_expression "((bVar3 & 2) != 0)" ( (binary_expression "(bVar3 & 2) != 0" (parenthesized_expression "(bVar3 & 2)" ( (binary_expression "bVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_000243f3);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_000243f3)" identifier (argument_list "(1,&UNK_000243b1,&UNK_000243f3)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_000243f3" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }" if (parenthesized_expression "((bVar3 & 4) != 0)" ( (binary_expression "(bVar3 & 4) != 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_00024401);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_00024401)" identifier (argument_list "(1,&UNK_000243b1,&UNK_00024401)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_00024401" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }" if (parenthesized_expression "((bVar3 & 8) != 0)" ( (binary_expression "(bVar3 & 8) != 0" (parenthesized_expression "(bVar3 & 8)" ( (binary_expression "bVar3 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002440e);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002440e)" identifier (argument_list "(1,&UNK_000243b1,&UNK_0002440e)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_0002440e" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }" if (parenthesized_expression "((bVar3 & 0x10) != 0)" ( (binary_expression "(bVar3 & 0x10) != 0" (parenthesized_expression "(bVar3 & 0x10)" ( (binary_expression "bVar3 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002441d);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002441d)" identifier (argument_list "(1,&UNK_000243b1,&UNK_0002441d)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_0002441d" & identifier) ))) ;) })) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }" if (parenthesized_expression "((bVar3 & 0x20) != 0)" ( (binary_expression "(bVar3 & 0x20) != 0" (parenthesized_expression "(bVar3 & 0x20)" ( (binary_expression "bVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }" { (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002442b);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002442b)" identifier (argument_list "(1,&UNK_000243b1,&UNK_0002442b)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "&UNK_0002442b" & identifier) ))) ;) })) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (case_statement "case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;" case number_literal : (expression_statement "puts("(EXTENSION_UNIT)");" (call_expression "puts("(EXTENSION_UNIT)")" identifier (argument_list "("(EXTENSION_UNIT)")" ( (string_literal ""(EXTENSION_UNIT)"" " string_content ") ))) ;) (expression_statement "uVar16 = (uint)param_2[0x15];" (assignment_expression "uVar16 = (uint)param_2[0x15]" identifier = (cast_expression "(uint)param_2[0x15]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0x15]" identifier [ number_literal ]))) ;) (expression_statement "uVar17 = (uint)param_2[uVar16 + 0x16];" (assignment_expression "uVar17 = (uint)param_2[uVar16 + 0x16]" identifier = (cast_expression "(uint)param_2[uVar16 + 0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[uVar16 + 0x16]" identifier [ (binary_expression "uVar16 + 0x16" identifier + number_literal) ]))) ;) (expression_statement "uVar12 = uVar16 + uVar17 + 0x18;" (assignment_expression "uVar12 = uVar16 + uVar17 + 0x18" identifier = (binary_expression "uVar16 + uVar17 + 0x18" (binary_expression "uVar16 + uVar17" identifier + identifier) + number_literal)) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" identifier (argument_list "(param_1,param_2[uVar16 + uVar17 + 0x17])" ( identifier , (subscript_expression "param_2[uVar16 + uVar17 + 0x17]" identifier [ (binary_expression "uVar16 + uVar17 + 0x17" (binary_expression "uVar16 + uVar17" identifier + identifier) + number_literal) ]) ))))) ;) (if_statement "if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < uVar12)" ( (binary_expression "*param_2 < uVar12" (pointer_expression "*param_2" * identifier) < identifier) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "bVar3 = param_2[0x14];" (assignment_expression "bVar3 = param_2[0x14]" identifier = (subscript_expression "param_2[0x14]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = (uint)param_2[0x13];" (assignment_expression "uVar11 = (uint)param_2[0x13]" identifier = (cast_expression "(uint)param_2[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0x13]" identifier [ number_literal ]))) ;) (expression_statement "bVar4 = param_2[0x15];" (assignment_expression "bVar4 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;) (expression_statement "__sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);" (call_expression "__sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11)" identifier (argument_list "(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11)" ( number_literal , number_literal , number_literal , (string_literal ""{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}"" " string_content ") , (subscript_expression "param_2[7]" identifier [ number_literal ]) , (subscript_expression "param_2[6]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[9]" identifier [ number_literal ]) , (subscript_expression "param_2[8]" identifier [ number_literal ]) , (subscript_expression "param_2[0xb]" identifier [ number_literal ]) , (subscript_expression "param_2[10]" identifier [ number_literal ]) , (subscript_expression "param_2[0xc]" identifier [ number_literal ]) , (subscript_expression "param_2[0xd]" identifier [ number_literal ]) , (subscript_expression "param_2[0xe]" identifier [ number_literal ]) , (subscript_expression "param_2[0xf]" identifier [ number_literal ]) , (subscript_expression "param_2[0x10]" identifier [ number_literal ]) , (subscript_expression "param_2[0x11]" identifier [ number_literal ]) , (subscript_expression "param_2[0x12]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4)" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4)" ( number_literal , (string_literal ""        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , number_literal , identifier , identifier ))) ;) (if_statement "if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);" do (compound_statement "{\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      }" { (expression_statement "uVar11 = (uint)param_2[uVar15 + 0x16];" (assignment_expression "uVar11 = (uint)param_2[uVar15 + 0x16]" identifier = (cast_expression "(uint)param_2[uVar15 + 0x16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[uVar15 + 0x16]" identifier [ (binary_expression "uVar15 + 0x16" identifier + number_literal) ]))) ;) (expression_statement "uVar13 = uVar15 + 1;" (assignment_expression "uVar13 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);" (call_expression "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11)" identifier (argument_list "(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11)" ( number_literal , (string_literal ""        baSourceID(%2u)      %5u\n"" " string_content escape_sequence ") , identifier , identifier ))) ;) (expression_statement "uVar15 = uVar13;" (assignment_expression "uVar15 = uVar13" identifier = identifier) ;) }) while (parenthesized_expression "(uVar16 != uVar13)" ( (binary_expression "uVar16 != uVar13" identifier != identifier) )) ;) })) (expression_statement "__printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);" (call_expression "__printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11)" identifier (argument_list "(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11)" ( number_literal , (string_literal ""        bControlSize        %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_2[uVar16 + 0x16]" identifier [ (binary_expression "uVar16 + 0x16" identifier + number_literal) ]) , identifier ))) ;) (if_statement "if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);" do (compound_statement "{\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      }" { (expression_statement "uVar15 = uVar11 + 1;" (assignment_expression "uVar15 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);" (call_expression "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17])" identifier (argument_list "(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17])" ( number_literal , (string_literal ""        bmControls(%2u)       0x%02x\n"" " string_content escape_sequence ") , identifier , (subscript_expression "param_2[uVar11 + uVar16 + 0x17]" identifier [ (binary_expression "uVar11 + uVar16 + 0x17" (binary_expression "uVar11 + uVar16" identifier + identifier) + number_literal) ]) ))) ;) (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != uVar15)" ( (binary_expression "uVar17 != uVar15" identifier != identifier) )) ;) })) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" identifier = identifier) ;) (expression_statement "__printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);" (call_expression "__printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8)" identifier (argument_list "(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8)" ( number_literal , (string_literal ""        iExtension          %5u %s\n"" " string_content escape_sequence ") , (subscript_expression "param_2[uVar16 + uVar17 + 0x17]" identifier [ (binary_expression "uVar16 + uVar17 + 0x17" (binary_expression "uVar16 + uVar17" identifier + identifier) + number_literal) ]) , identifier ))) ;) (if_statement "if (*param_2 <= uVar12) goto code_r0x00018298;" if (parenthesized_expression "(*param_2 <= uVar12)" ( (binary_expression "*param_2 <= uVar12" (pointer_expression "*param_2" * identifier) <= identifier) )) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" identifier (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" ( number_literal , (string_literal ""%sjunk at descriptor end:"" " string_content ") , (pointer_expression "&DAT_0002438e" & identifier) , identifier ))) ;) (if_statement "if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }" if (parenthesized_expression "(uVar12 < *param_2)" ( (binary_expression "uVar12 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }" { (do_statement "do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);" do (compound_statement "{\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" { (expression_statement "pbVar14 = param_2 + uVar12;" (assignment_expression "pbVar14 = param_2 + uVar12" identifier = (binary_expression "param_2 + uVar12" identifier + identifier)) ;) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" identifier (argument_list "(1," %02x",*pbVar14,pvVar18)" ( number_literal , (string_literal "" %02x"" " string_content ") , (pointer_expression "*pbVar14" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(uVar12 < *param_2)" ( (binary_expression "uVar12 < *param_2" identifier < (pointer_expression "*param_2" * identifier)) )) ;) })) (break_statement "break;" break ;)) (case_statement "case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;" case number_literal : (expression_statement "puts("(ENCODING UNIT)");" (call_expression "puts("(ENCODING UNIT)")" identifier (argument_list "("(ENCODING UNIT)")" ( (string_literal ""(ENCODING UNIT)"" " string_content ") ))) ;) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[5]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[5])" identifier = (cast_expression "(void *)FUN_00023840(param_1,param_2[5])" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00023840(param_1,param_2[5])" identifier (argument_list "(param_1,param_2[5])" ( identifier , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))))) ;) (if_statement "if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }" if (parenthesized_expression "(*param_2 < 0xd)" ( (binary_expression "*param_2 < 0xd" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) })) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6])" identifier (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6])" ( number_literal , (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[5]" identifier [ number_literal ]) , identifier , (subscript_expression "param_2[6]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar7 = *(uint3 *)(param_2 + 7);" (assignment_expression "uVar7 = *(uint3 *)(param_2 + 7)" identifier = (pointer_expression "*(uint3 *)(param_2 + 7)" * (cast_expression "(uint3 *)(param_2 + 7)" ( (type_descriptor "uint3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);" (call_expression "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7)" identifier (argument_list "(1,"        bmControls              0x%08x\n",(uint)uVar7)" ( number_literal , (string_literal ""        bmControls              0x%08x\n"" " string_content escape_sequence ") , (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) ))) ;) (do_statement "do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);" do (compound_statement "{\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    }" { (while_statement "while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }" while (parenthesized_expression "((uVar7 >> (uVar16 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar7 >> (uVar16 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar7 >> (uVar16 & 0x1f) & 1)" ( (binary_expression "uVar7 >> (uVar16 & 0x1f) & 1" (binary_expression "uVar7 >> (uVar16 & 0x1f)" identifier >> (parenthesized_expression "(uVar16 & 0x1f)" ( (binary_expression "uVar16 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }" { (expression_statement "ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;" (assignment_expression "ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16" identifier = (binary_expression "&PTR_s_Select_Layer_00037d20 + uVar16" (pointer_expression "&PTR_s_Select_Layer_00037d20" & identifier) + identifier)) ;) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&UNK_000243b1,*ppuVar2);" (call_expression "__printf_chk(1,&UNK_000243b1,*ppuVar2)" identifier (argument_list "(1,&UNK_000243b1,*ppuVar2)" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (pointer_expression "*ppuVar2" * identifier) ))) ;) (if_statement "if (uVar16 == 0x14) goto code_r0x000189ea;" if (parenthesized_expression "(uVar16 == 0x14)" ( (binary_expression "uVar16 == 0x14" identifier == number_literal) )) (goto_statement "goto code_r0x000189ea;" goto statement_identifier ;)) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 != 0x14)" ( (binary_expression "uVar16 != 0x14" identifier != number_literal) )) ;) (labeled_statement "code_r0x000189ea:\n    uVar17 = 0;" statement_identifier : (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;)) (expression_statement "uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];" (assignment_expression "uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10]" identifier = (binary_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10]" (binary_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8" (parenthesized_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8)" ( (binary_expression "(uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8" (cast_expression "(uint)param_2[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[0xb]" identifier [ number_literal ])) | (binary_expression "CONCAT31(uVar7,param_2[0xc]) << 8" (call_expression "CONCAT31(uVar7,param_2[0xc])" identifier (argument_list "(uVar7,param_2[0xc])" ( identifier , (subscript_expression "param_2[0xc]" identifier [ number_literal ]) ))) << number_literal)) )) << number_literal) | (cast_expression "(uint)param_2[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[10]" identifier [ number_literal ])))) ;) (expression_statement "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);" (call_expression "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16)" identifier (argument_list "(1,"        bmControlsRuntime       0x%08x\n",uVar16)" ( number_literal , (string_literal ""        bmControlsRuntime       0x%08x\n"" " string_content escape_sequence ") , identifier ))) ;) (do_statement "do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);" do (compound_statement "{\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    }" { (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }" if (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" ( (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" identifier >> (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }" { (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17])" identifier (argument_list "(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17])" ( number_literal , (pointer_expression "&UNK_000243b1" & identifier) , (subscript_expression "(&PTR_s_Select_Layer_00037d20)[uVar17]" (parenthesized_expression "(&PTR_s_Select_Layer_00037d20)" ( (pointer_expression "&PTR_s_Select_Layer_00037d20" & identifier) )) [ identifier ]) ))) ;) })) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 != 0x14)" ( (binary_expression "uVar17 != 0x14" identifier != number_literal) )) ;) (goto_statement "goto code_r0x00018298;" goto statement_identifier ;)) })) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (labeled_statement "code_r0x00018298:\n  free(local_c8);" statement_identifier : (expression_statement "free(local_c8);" (call_expression "free(local_c8)" identifier (argument_list "(local_c8)" ( identifier ))) ;)) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00023ad0();" (call_expression "FUN_00023ad0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (switch_statement switch (parenthesized_expression ( (subscript_expression IDENT [ LIT ]) )) (compound_statement { (case_statement default : (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) / LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) % LIT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression * IDENT) , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) ))))) ;) })) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression * IDENT) , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression * IDENT) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression * IDENT) , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) < (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression (parenthesized_expression ( IDENT )) * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ (binary_expression (binary_expression IDENT + IDENT) + LIT) ]) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , LIT , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , LIT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT , (subscript_expression IDENT [ (binary_expression (binary_expression IDENT + IDENT) + LIT) ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ (binary_expression (binary_expression IDENT + IDENT) + LIT) ]) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (pointer_expression * IDENT) , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) | (binary_expression (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) << LIT)) )) << LIT) | (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void __regparm3 FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)\n\n{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00023ad0();\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000180e0(undefined4 param_1,byte *param_2,int param_3)" (identifier "FUN_000180e0") (parameter_list "(undefined4 param_1,byte *param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  undefined **ppuVar2;\n  byte bVar3;\n  byte bVar4;\n  short sVar5;\n  undefined2 uVar6;\n  uint3 uVar7;\n  ushort uVar8;\n  char *__s;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  byte *pbVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  int in_GS_OFFSET;\n  void *pvVar18;\n  void *local_c8;\n  char acStack_a0 [128];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x180ed;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }\n  __printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);\n  switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }\n  putchar(10);\ncode_r0x00018298:\n  free(local_c8);\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }\n                    \n  FUN_00023ad0();\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "undefined **ppuVar2;" (type_identifier "undefined") (pointer_declarator "**ppuVar2" (* "*") (pointer_declarator "*ppuVar2" (* "*") (identifier "ppuVar2"))) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "short sVar5;" (sized_type_specifier "short" (short "short")) (identifier "sVar5") (; ";")) (declaration "undefined2 uVar6;" (type_identifier "undefined2") (identifier "uVar6") (; ";")) (declaration "uint3 uVar7;" (type_identifier "uint3") (identifier "uVar7") (; ";")) (declaration "ushort uVar8;" (type_identifier "ushort") (identifier "uVar8") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "void *pvVar18;" (primitive_type "void") (pointer_declarator "*pvVar18" (* "*") (identifier "pvVar18")) (; ";")) (declaration "void *local_c8;" (primitive_type "void") (pointer_declarator "*local_c8" (* "*") (identifier "local_c8")) (; ";")) (declaration "char acStack_a0 [128];" (primitive_type "char") (array_declarator "acStack_a0 [128]" (identifier "acStack_a0") ([ "[") (number_literal "128") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x180ed;" (assignment_expression "uStack_14 = 0x180ed" (identifier "uStack_14") (= "=") (number_literal "0x180ed")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (param_2[1] == 0x24) {\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }\n  else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" (if "if") (parenthesized_expression "(param_2[1] == 0x24)" (( "(") (binary_expression "param_2[1] == 0x24" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0x24")) () ")")) (compound_statement "{\n    bVar3 = *param_2;\n    bVar4 = 0x24;\n    if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }\n  }" ({ "{") (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" (identifier "bVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "bVar4 = 0x24;" (assignment_expression "bVar4 = 0x24" (identifier "bVar4") (= "=") (number_literal "0x24")) (; ";")) (if_statement "if (bVar3 < 3) {\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" (if "if") (parenthesized_expression "(bVar3 < 3)" (( "(") (binary_expression "bVar3 < 3" (identifier "bVar3") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n      __s = "      Warning: Descriptor too short";\n      goto LAB_00018159;\n    }" ({ "{") (expression_statement "__s = "      Warning: Descriptor too short";" (assignment_expression "__s = "      Warning: Descriptor too short"" (identifier "__s") (= "=") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """))) (; ";")) (goto_statement "goto LAB_00018159;" (goto "goto") (statement_identifier "LAB_00018159") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" (else "else") (compound_statement "{\n    __s = "      Warning: Invalid descriptor";\nLAB_00018159:\n    puts(__s);\n    bVar4 = param_2[1];\n    bVar3 = *param_2;\n  }" ({ "{") (expression_statement "__s = "      Warning: Invalid descriptor";" (assignment_expression "__s = "      Warning: Invalid descriptor"" (identifier "__s") (= "=") (string_literal ""      Warning: Invalid descriptor"" (" """) (string_content "      Warning: Invalid descriptor") (" """))) (; ";")) (labeled_statement "LAB_00018159:\n    puts(__s);" (statement_identifier "LAB_00018159") (: ":") (expression_statement "puts(__s);" (call_expression "puts(__s)" (identifier "puts") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";"))) (expression_statement "bVar4 = param_2[1];" (assignment_expression "bVar4 = param_2[1]" (identifier "bVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" (identifier "bVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")))) (expression_statement "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2]);" (call_expression "__printf_chk(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2])" (identifier "__printf_chk") (argument_list "(1,\n               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "\n               ,bVar3,bVar4,param_2[2])" (( "(") (number_literal "1") (, ",") (string_literal ""      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "" (" """) (string_content "      VideoControl Interface Descriptor:") (escape_sequence "\n") (string_content "        bLength             %5u") (escape_sequence "\n") (string_content "        bDescriptorType     %5u") (escape_sequence "\n") (string_content "        bDescriptorSubtype  %5u ") (" """)) (, ",") (identifier "bVar3") (, ",") (identifier "bVar4") (, ",") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (switch_statement "switch(param_2[2]) {\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }" (switch "switch") (parenthesized_expression "(param_2[2])" (( "(") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) () ")")) (compound_statement "{\n  default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;\n  case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;\n  case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;\n  case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;\n  case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;\n  case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;\n  }" ({ "{") (case_statement "default:\n    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");\n    bVar3 = *param_2;\n    if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }\n    goto LAB_0001827d;" (default "default") (: ":") (expression_statement "__printf_chk(1,"(unknown)\n        Invalid desc subtype:");" (call_expression "__printf_chk(1,"(unknown)\n        Invalid desc subtype:")" (identifier "__printf_chk") (argument_list "(1,"(unknown)\n        Invalid desc subtype:")" (( "(") (number_literal "1") (, ",") (string_literal ""(unknown)\n        Invalid desc subtype:"" (" """) (string_content "(unknown)") (escape_sequence "\n") (string_content "        Invalid desc subtype:") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = *param_2;" (assignment_expression "bVar3 = *param_2" (identifier "bVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (bVar3 != 3) {\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }" (if "if") (parenthesized_expression "(bVar3 != 3)" (( "(") (binary_expression "bVar3 != 3" (identifier "bVar3") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n      pbVar14 = param_2 + 3;\n      do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);\n    }" ({ "{") (expression_statement "pbVar14 = param_2 + 3;" (assignment_expression "pbVar14 = param_2 + 3" (identifier "pbVar14") (= "=") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      } while (pbVar14 != param_2 + bVar3);" (do "do") (compound_statement "{\n        bVar4 = *pbVar14;\n        pbVar14 = pbVar14 + 1;\n        __printf_chk(1," %02x",bVar4);\n      }" ({ "{") (expression_statement "bVar4 = *pbVar14;" (assignment_expression "bVar4 = *pbVar14" (identifier "bVar4") (= "=") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + 1;" (assignment_expression "pbVar14 = pbVar14 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + 1" (identifier "pbVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1," %02x",bVar4);" (call_expression "__printf_chk(1," %02x",bVar4)" (identifier "__printf_chk") (argument_list "(1," %02x",bVar4)" (( "(") (number_literal "1") (, ",") (string_literal "" %02x"" (" """) (string_content " %02x") (" """)) (, ",") (identifier "bVar4") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar14 != param_2 + bVar3)" (( "(") (binary_expression "pbVar14 != param_2 + bVar3" (identifier "pbVar14") (!= "!=") (binary_expression "param_2 + bVar3" (identifier "param_2") (+ "+") (identifier "bVar3"))) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_0001827d;" (goto "goto") (statement_identifier "LAB_0001827d") (; ";"))) (case_statement "case 1:\n    puts("(HEADER)");\n    uVar17 = (uint)param_2[0xb];\n    uVar16 = uVar17 + 0xc;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar12 = uVar17;\n    __printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    local_c8 = (void *)0x0;\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }\nLAB_0001827d:\n    putchar(10);\n    local_c8 = (void *)0x0;\n    goto code_r0x00018298;" (case "case") (number_literal "1") (: ":") (expression_statement "puts("(HEADER)");" (call_expression "puts("(HEADER)")" (identifier "puts") (argument_list "("(HEADER)")" (( "(") (string_literal ""(HEADER)"" (" """) (string_content "(HEADER)") (" """)) () ")"))) (; ";")) (expression_statement "uVar17 = (uint)param_2[0xb];" (assignment_expression "uVar17 = (uint)param_2[0xb]" (identifier "uVar17") (= "=") (cast_expression "(uint)param_2[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (expression_statement "uVar16 = uVar17 + 0xc;" (assignment_expression "uVar16 = uVar17 + 0xc" (identifier "uVar16") (= "=") (binary_expression "uVar17 + 0xc" (identifier "uVar17") (+ "+") (number_literal "0xc"))) (; ";")) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" (if "if") (parenthesized_expression "(*param_2 < uVar16)" (( "(") (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (identifier "uVar16")) () ")")) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar17;" (assignment_expression "uVar12 = uVar17" (identifier "uVar12") (= "=") (identifier "uVar17")) (; ";")) (expression_statement "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);" (call_expression "__printf_chk(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17)" (identifier "__printf_chk") (argument_list "(1,\n                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"\n                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),\n                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17)" (( "(") (number_literal "1") (, ",") (string_literal ""        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"" (" """) (string_content "        bcdUVC              %2x.%02x") (escape_sequence "\n") (string_content "        wTotalLength       0x%04x") (escape_sequence "\n") (string_content "        dwClockFrequency    %5u.%06uMHz") (escape_sequence "\n") (string_content "        bInCollection       %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (pointer_expression "*(undefined2 *)(param_2 + 5)" (* "*") (cast_expression "(undefined2 *)(param_2 + 5)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 5)" (( "(") (binary_expression "param_2 + 5" (identifier "param_2") (+ "+") (number_literal "5")) () ")")))) (, ",") (binary_expression "*(uint *)(param_2 + 7) / 1000000" (pointer_expression "*(uint *)(param_2 + 7)" (* "*") (cast_expression "(uint *)(param_2 + 7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) (/ "/") (number_literal "1000000")) (, ",") (binary_expression "*(uint *)(param_2 + 7) % 1000000" (pointer_expression "*(uint *)(param_2 + 7)" (* "*") (cast_expression "(uint *)(param_2 + 7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) (% "%") (number_literal "1000000")) (, ",") (identifier "uVar17") () ")"))) (; ";")) (if_statement "if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = 0;\n      do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);" (do "do") (compound_statement "{\n        uVar12 = (uint)param_2[uVar11 + 0xc];\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);\n        uVar11 = uVar15;\n      }" ({ "{") (expression_statement "uVar12 = (uint)param_2[uVar11 + 0xc];" (assignment_expression "uVar12 = (uint)param_2[uVar11 + 0xc]" (identifier "uVar12") (= "=") (cast_expression "(uint)param_2[uVar11 + 0xc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[uVar11 + 0xc]" (identifier "param_2") ([ "[") (binary_expression "uVar11 + 0xc" (identifier "uVar11") (+ "+") (number_literal "0xc")) (] "]")))) (; ";")) (expression_statement "uVar15 = uVar11 + 1;" (assignment_expression "uVar15 = uVar11 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);" (call_expression "__printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12)" (identifier "__printf_chk") (argument_list "(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12)" (( "(") (number_literal "1") (, ",") (string_literal ""        baInterfaceNr(%2u)   %5u\n"" (" """) (string_content "        baInterfaceNr(%2u)   %5u") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar11") (, ",") (identifier "uVar12") () ")"))) (; ";")) (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" (identifier "uVar11") (= "=") (identifier "uVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != uVar15)" (( "(") (binary_expression "uVar17 != uVar15" (identifier "uVar17") (!= "!=") (identifier "uVar15")) () ")")) (; ";")) (} "}"))) (expression_statement "local_c8 = (void *)0x0;" (assignment_expression "local_c8 = (void *)0x0" (identifier "local_c8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" (if "if") (parenthesized_expression "(*param_2 <= uVar16)" (( "(") (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (<= "<=") (identifier "uVar16")) () ")")) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12)" (identifier "__printf_chk") (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12)" (( "(") (number_literal "1") (, ",") (string_literal ""%sjunk at descriptor end:"" (" """) (string_content "%sjunk at descriptor end:") (" """)) (, ",") (pointer_expression "&DAT_0002438e" (& "&") (identifier "DAT_0002438e")) (, ",") (identifier "uVar12") () ")"))) (; ";")) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }" (if "if") (parenthesized_expression "(uVar16 < *param_2)" (( "(") (binary_expression "uVar16 < *param_2" (identifier "uVar16") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);\n    }" ({ "{") (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      } while (uVar16 < *param_2);" (do "do") (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,uVar12);\n      }" ({ "{") (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" (identifier "pbVar14") (= "=") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1," %02x",*pbVar14,uVar12);" (call_expression "__printf_chk(1," %02x",*pbVar14,uVar12)" (identifier "__printf_chk") (argument_list "(1," %02x",*pbVar14,uVar12)" (( "(") (number_literal "1") (, ",") (string_literal "" %02x"" (" """) (string_content " %02x") (" """)) (, ",") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (, ",") (identifier "uVar12") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < *param_2)" (( "(") (binary_expression "uVar16 < *param_2" (identifier "uVar16") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0001827d:\n    putchar(10);" (statement_identifier "LAB_0001827d") (: ":") (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";"))) (expression_statement "local_c8 = (void *)0x0;" (assignment_expression "local_c8 = (void *)0x0" (identifier "local_c8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (case_statement "case 2:\n    puts("(INPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);\n    sVar5 = *(short *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    uVar16 = 8;\n    if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }\n    iVar10 = 0;\n    if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }\n    iVar9 = FUN_00022850(sVar5);\n    if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);\n    if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;" (case "case") (number_literal "2") (: ":") (expression_statement "puts("(INPUT_TERMINAL)");" (call_expression "puts("(INPUT_TERMINAL)")" (identifier "puts") (argument_list "("(INPUT_TERMINAL)")" (( "(") (string_literal ""(INPUT_TERMINAL)"" (" """) (string_content "(INPUT_TERMINAL)") (" """)) () ")"))) (; ";")) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[7]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[7])" (identifier "local_c8") (= "=") (cast_expression "(void *)FUN_00023840(param_1,param_2[7])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023840(param_1,param_2[7])" (identifier "FUN_00023840") (argument_list "(param_1,param_2[7])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) () ")"))))) (; ";")) (expression_statement "sVar5 = *(short *)(param_2 + 4);" (assignment_expression "sVar5 = *(short *)(param_2 + 4)" (identifier "sVar5") (= "=") (pointer_expression "*(short *)(param_2 + 4)" (* "*") (cast_expression "(short *)(param_2 + 4)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "acStack_a0[0] = '\0';" (assignment_expression "acStack_a0[0] = '\0'" (subscript_expression "acStack_a0[0]" (identifier "acStack_a0") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "uVar16 = 8;" (assignment_expression "uVar16 = 8" (identifier "uVar16") (= "=") (number_literal "8")) (; ";")) (if_statement "if (sVar5 == 0x201) {\n      uVar16 = 0xf;\n    }" (if "if") (parenthesized_expression "(sVar5 == 0x201)" (( "(") (binary_expression "sVar5 == 0x201" (identifier "sVar5") (== "==") (number_literal "0x201")) () ")")) (compound_statement "{\n      uVar16 = 0xf;\n    }" ({ "{") (expression_statement "uVar16 = 0xf;" (assignment_expression "uVar16 = 0xf" (identifier "uVar16") (= "=") (number_literal "0xf")) (; ";")) (} "}"))) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (sVar5 == 0x201) {\n      iVar10 = 7;\n    }" (if "if") (parenthesized_expression "(sVar5 == 0x201)" (( "(") (binary_expression "sVar5 == 0x201" (identifier "sVar5") (== "==") (number_literal "0x201")) () ")")) (compound_statement "{\n      iVar10 = 7;\n    }" ({ "{") (expression_statement "iVar10 = 7;" (assignment_expression "iVar10 = 7" (identifier "iVar10") (= "=") (number_literal "7")) (; ";")) (} "}"))) (expression_statement "iVar9 = FUN_00022850(sVar5);" (assignment_expression "iVar9 = FUN_00022850(sVar5)" (identifier "iVar9") (= "=") (call_expression "FUN_00022850(sVar5)" (identifier "FUN_00022850") (argument_list "(sVar5)" (( "(") (identifier "sVar5") () ")")))) (; ";")) (if_statement "if (iVar9 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      snprintf(acStack_a0,0x80,"%s",iVar9);\n    }" ({ "{") (expression_statement "snprintf(acStack_a0,0x80,"%s",iVar9);" (call_expression "snprintf(acStack_a0,0x80,"%s",iVar9)" (identifier "snprintf") (argument_list "(acStack_a0,0x80,"%s",iVar9)" (( "(") (identifier "acStack_a0") (, ",") (number_literal "0x80") (, ",") (string_literal ""%s"" (" """) (string_content "%s") (" """)) (, ",") (identifier "iVar9") () ")"))) (; ";")) (} "}"))) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" (if "if") (parenthesized_expression "(*param_2 < uVar16)" (( "(") (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (identifier "uVar16")) () ")")) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6]);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6])" (identifier "__printf_chk") (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"\n                 ,param_2[3],sVar5,acStack_a0,param_2[6])" (( "(") (number_literal "1") (, ",") (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"" (" """) (string_content "        bTerminalID         %5u") (escape_sequence "\n") (string_content "        wTerminalType      0x%04x %s") (escape_sequence "\n") (string_content "        bAssocTerminal      %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "sVar5") (, ",") (identifier "acStack_a0") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) () ")"))) (; ";")) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" (identifier "pvVar18") (= "=") (identifier "local_c8")) (; ";")) (expression_statement "__printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);" (call_expression "__printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8)" (identifier "__printf_chk") (argument_list "(1,"        iTerminal           %5u %s\n",param_2[7],local_c8)" (( "(") (number_literal "1") (, ",") (string_literal ""        iTerminal           %5u %s\n"" (" """) (string_content "        iTerminal           %5u %s") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (, ",") (identifier "local_c8") () ")"))) (; ";")) (if_statement "if (sVar5 == 0x201) {\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }" (if "if") (parenthesized_expression "(sVar5 == 0x201)" (( "(") (binary_expression "sVar5 == 0x201" (identifier "sVar5") (== "==") (number_literal "0x201")) () ")")) (compound_statement "{\n      iVar10 = iVar10 + (uint)param_2[0xe];\n      __printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);\n      bVar3 = param_2[0xe];\n      if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }\n      uVar17 = 0;\n      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);\n      if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }\n      uVar16 = iVar10 + 8;\n    }" ({ "{") (expression_statement "iVar10 = iVar10 + (uint)param_2[0xe];" (assignment_expression "iVar10 = iVar10 + (uint)param_2[0xe]" (identifier "iVar10") (= "=") (binary_expression "iVar10 + (uint)param_2[0xe]" (identifier "iVar10") (+ "+") (cast_expression "(uint)param_2[0xe]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]"))))) (; ";")) (expression_statement "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);" (call_expression "__printf_chk(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe])" (identifier "__printf_chk") (argument_list "(1,\n                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"\n                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),\n                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe])" (( "(") (number_literal "1") (, ",") (string_literal ""        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"" (" """) (string_content "        wObjectiveFocalLengthMin  %5u") (escape_sequence "\n") (string_content "        wObjectiveFocalLengthMax  %5u") (escape_sequence "\n") (string_content "        wOcularFocalLength        %5u") (escape_sequence "\n") (string_content "        bControlSize              %5u") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined2 *)(param_2 + 8)" (* "*") (cast_expression "(undefined2 *)(param_2 + 8)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined2 *)(param_2 + 10)" (* "*") (cast_expression "(undefined2 *)(param_2 + 10)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 10)" (( "(") (binary_expression "param_2 + 10" (identifier "param_2") (+ "+") (number_literal "10")) () ")")))) (, ",") (pointer_expression "*(undefined2 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined2 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (cast_expression "(uint)param_2[0xe]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]"))) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[0xe];" (assignment_expression "bVar3 = param_2[0xe]" (identifier "bVar3") (= "=") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (if_statement "if (bVar3 == 0) {\n        uVar16 = 0;\n      }\n      else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" (if "if") (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar16 = 0;\n      }" ({ "{") (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" (else "else") (compound_statement "{\n        uVar16 = (uint)param_2[iVar10 + 7];\n        if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }\n      }" ({ "{") (expression_statement "uVar16 = (uint)param_2[iVar10 + 7];" (assignment_expression "uVar16 = (uint)param_2[iVar10 + 7]" (identifier "uVar16") (= "=") (cast_expression "(uint)param_2[iVar10 + 7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[iVar10 + 7]" (identifier "param_2") ([ "[") (binary_expression "iVar10 + 7" (identifier "iVar10") (+ "+") (number_literal "7")) (] "]")))) (; ";")) (if_statement "if (bVar3 != 1) {\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }" (if "if") (parenthesized_expression "(bVar3 != 1)" (( "(") (binary_expression "bVar3 != 1" (identifier "bVar3") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);\n          uVar16 = (uint)uVar8;\n          if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }\n        }" ({ "{") (expression_statement "uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);" (assignment_expression "uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6])" (identifier "uVar8") (= "=") (call_expression "CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6])" (identifier "CONCAT11") (argument_list "(param_2[iVar10 + 7],param_2[iVar10 + 6])" (( "(") (subscript_expression "param_2[iVar10 + 7]" (identifier "param_2") ([ "[") (binary_expression "iVar10 + 7" (identifier "iVar10") (+ "+") (number_literal "7")) (] "]")) (, ",") (subscript_expression "param_2[iVar10 + 6]" (identifier "param_2") ([ "[") (binary_expression "iVar10 + 6" (identifier "iVar10") (+ "+") (number_literal "6")) (] "]")) () ")")))) (; ";")) (expression_statement "uVar16 = (uint)uVar8;" (assignment_expression "uVar16 = (uint)uVar8" (identifier "uVar16") (= "=") (cast_expression "(uint)uVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar8"))) (; ";")) (if_statement "if (bVar3 != 2) {\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }" (if "if") (parenthesized_expression "(bVar3 != 2)" (( "(") (binary_expression "bVar3 != 2" (identifier "bVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);\n          }" ({ "{") (expression_statement "uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);" (assignment_expression "uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5])" (identifier "uVar16") (= "=") (cast_expression "(uint)CONCAT21(uVar8,param_2[iVar10 + 5])" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CONCAT21(uVar8,param_2[iVar10 + 5])" (identifier "CONCAT21") (argument_list "(uVar8,param_2[iVar10 + 5])" (( "(") (identifier "uVar8") (, ",") (subscript_expression "param_2[iVar10 + 5]" (identifier "param_2") ([ "[") (binary_expression "iVar10 + 5" (identifier "iVar10") (+ "+") (number_literal "5")) (] "]")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "__printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);" (call_expression "__printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18)" (identifier "__printf_chk") (argument_list "(1,"        bmControls           0x%08x\n",uVar16,pvVar18)" (( "(") (number_literal "1") (, ",") (string_literal ""        bmControls           0x%08x\n"" (" """) (string_content "        bmControls           0x%08x") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar16") (, ",") (identifier "pvVar18") () ")"))) (; ";")) (if_statement "if (param_3 == 1) {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }\n      else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);\n      }" ({ "{") (do_statement "do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x16);" (do "do") (compound_statement "{\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        }" ({ "{") (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" (if "if") (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" (( "(") (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" (identifier "uVar16") (>> ">>") (parenthesized_expression "(uVar17 & 0x1f)" (( "(") (binary_expression "uVar17 & 0x1f" (identifier "uVar17") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (subscript_expression "(&PTR_s_Scanning_Mode_00037de0)[uVar17]" (parenthesized_expression "(&PTR_s_Scanning_Mode_00037de0)" (( "(") (pointer_expression "&PTR_s_Scanning_Mode_00037de0" (& "&") (identifier "PTR_s_Scanning_Mode_00037de0")) () ")")) ([ "[") (identifier "uVar17") (] "]")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != 0x16)" (( "(") (binary_expression "uVar17 != 0x16" (identifier "uVar17") (!= "!=") (number_literal "0x16")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" (else "else") (compound_statement "{\n        do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);\n      }" ({ "{") (do_statement "do {\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        } while (uVar17 != 0x13);" (do "do") (compound_statement "{\n          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }\n          uVar17 = uVar17 + 1;\n        }" ({ "{") (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" (if "if") (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" (( "(") (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" (identifier "uVar16") (>> ">>") (parenthesized_expression "(uVar17 & 0x1f)" (( "(") (binary_expression "uVar17 & 0x1f" (identifier "uVar17") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);\n          }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (subscript_expression "(&PTR_s_Scanning_Mode_00037de0)[uVar17]" (parenthesized_expression "(&PTR_s_Scanning_Mode_00037de0)" (( "(") (pointer_expression "&PTR_s_Scanning_Mode_00037de0" (& "&") (identifier "PTR_s_Scanning_Mode_00037de0")) () ")")) ([ "[") (identifier "uVar17") (] "]")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != 0x13)" (( "(") (binary_expression "uVar17 != 0x13" (identifier "uVar17") (!= "!=") (number_literal "0x13")) () ")")) (; ";")) (} "}")))) (expression_statement "uVar16 = iVar10 + 8;" (assignment_expression "uVar16 = iVar10 + 8" (identifier "uVar16") (= "=") (binary_expression "iVar10 + 8" (identifier "iVar10") (+ "+") (number_literal "8"))) (; ";")) (} "}"))) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" (if "if") (parenthesized_expression "(*param_2 <= uVar16)" (( "(") (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (<= "<=") (identifier "uVar16")) () ")")) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" (identifier "__printf_chk") (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" (( "(") (number_literal "1") (, ",") (string_literal ""%sjunk at descriptor end:"" (" """) (string_content "%sjunk at descriptor end:") (" """)) (, ",") (pointer_expression "&DAT_0002438e" (& "&") (identifier "DAT_0002438e")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" (if "if") (parenthesized_expression "(uVar16 < *param_2)" (( "(") (binary_expression "uVar16 < *param_2" (identifier "uVar16") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" ({ "{") (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);" (do "do") (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" ({ "{") (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" (identifier "pbVar14") (= "=") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" (identifier "__printf_chk") (argument_list "(1," %02x",*pbVar14,pvVar18)" (( "(") (number_literal "1") (, ",") (string_literal "" %02x"" (" """) (string_content " %02x") (" """)) (, ",") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < *param_2)" (( "(") (binary_expression "uVar16 < *param_2" (identifier "uVar16") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n    puts("(OUTPUT_TERMINAL)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);\n    uVar6 = *(undefined2 *)(param_2 + 4);\n    acStack_a0[0] = '\0';\n    iVar10 = FUN_00022850(uVar6);\n    if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }\n    if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);\n    if (*param_2 < 10) goto code_r0x00018298;\n    uVar16 = 9;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);\n    if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }\n    break;" (case "case") (number_literal "3") (: ":") (expression_statement "puts("(OUTPUT_TERMINAL)");" (call_expression "puts("(OUTPUT_TERMINAL)")" (identifier "puts") (argument_list "("(OUTPUT_TERMINAL)")" (( "(") (string_literal ""(OUTPUT_TERMINAL)"" (" """) (string_content "(OUTPUT_TERMINAL)") (" """)) () ")"))) (; ";")) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[8]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[8])" (identifier "local_c8") (= "=") (cast_expression "(void *)FUN_00023840(param_1,param_2[8])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023840(param_1,param_2[8])" (identifier "FUN_00023840") (argument_list "(param_1,param_2[8])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(undefined2 *)(param_2 + 4);" (assignment_expression "uVar6 = *(undefined2 *)(param_2 + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined2 *)(param_2 + 4)" (* "*") (cast_expression "(undefined2 *)(param_2 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "acStack_a0[0] = '\0';" (assignment_expression "acStack_a0[0] = '\0'" (subscript_expression "acStack_a0[0]" (identifier "acStack_a0") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar10 = FUN_00022850(uVar6);" (assignment_expression "iVar10 = FUN_00022850(uVar6)" (identifier "iVar10") (= "=") (call_expression "FUN_00022850(uVar6)" (identifier "FUN_00022850") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      snprintf(acStack_a0,0x80,"%s",iVar10);\n    }" ({ "{") (expression_statement "snprintf(acStack_a0,0x80,"%s",iVar10);" (call_expression "snprintf(acStack_a0,0x80,"%s",iVar10)" (identifier "snprintf") (argument_list "(acStack_a0,0x80,"%s",iVar10)" (( "(") (identifier "acStack_a0") (, ",") (number_literal "0x80") (, ",") (string_literal ""%s"" (" """) (string_content "%s") (" """)) (, ",") (identifier "iVar10") () ")"))) (; ";")) (} "}"))) (if_statement "if (*param_2 < 9) {\n      puts("      Warning: Descriptor too short");\n    }" (if "if") (parenthesized_expression "(*param_2 < 9)" (( "(") (binary_expression "*param_2 < 9" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (number_literal "9")) () ")")) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);" (call_expression "__printf_chk(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8)" (identifier "__printf_chk") (argument_list "(1,\n                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"\n                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8)" (( "(") (number_literal "1") (, ",") (string_literal ""        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"" (" """) (string_content "        bTerminalID         %5u") (escape_sequence "\n") (string_content "        wTerminalType      0x%04x %s") (escape_sequence "\n") (string_content "        bAssocTerminal      %5u") (escape_sequence "\n") (string_content "        bSourceID           %5u") (escape_sequence "\n") (string_content "        iTerminal           %5u %s") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "uVar6") (, ",") (identifier "acStack_a0") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (, ",") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (, ",") (identifier "local_c8") () ")"))) (; ";")) (if_statement "if (*param_2 < 10) goto code_r0x00018298;" (if "if") (parenthesized_expression "(*param_2 < 10)" (( "(") (binary_expression "*param_2 < 10" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (number_literal "10")) () ")")) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (expression_statement "uVar16 = 9;" (assignment_expression "uVar16 = 9" (identifier "uVar16") (= "=") (number_literal "9")) (; ";")) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e)" (identifier "__printf_chk") (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e)" (( "(") (number_literal "1") (, ",") (string_literal ""%sjunk at descriptor end:"" (" """) (string_content "%sjunk at descriptor end:") (" """)) (, ",") (pointer_expression "&DAT_0002438e" (& "&") (identifier "DAT_0002438e")) () ")"))) (; ";")) (if_statement "if (9 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }" (if "if") (parenthesized_expression "(9 < *param_2)" (( "(") (binary_expression "9 < *param_2" (number_literal "9") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);\n    }" ({ "{") (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      } while (uVar16 < *param_2);" (do "do") (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14);\n      }" ({ "{") (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" (identifier "pbVar14") (= "=") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1," %02x",*pbVar14);" (call_expression "__printf_chk(1," %02x",*pbVar14)" (identifier "__printf_chk") (argument_list "(1," %02x",*pbVar14)" (( "(") (number_literal "1") (, ",") (string_literal "" %02x"" (" """) (string_content " %02x") (" """)) (, ",") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < *param_2)" (( "(") (binary_expression "uVar16 < *param_2" (identifier "uVar16") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n    puts("(SELECTOR_UNIT)");\n    uVar17 = (uint)param_2[4];\n    uVar16 = uVar17 + 6;\n    if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);\n    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);\n    if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);\n    if (*param_2 <= uVar16) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }\n    break;" (case "case") (number_literal "4") (: ":") (expression_statement "puts("(SELECTOR_UNIT)");" (call_expression "puts("(SELECTOR_UNIT)")" (identifier "puts") (argument_list "("(SELECTOR_UNIT)")" (( "(") (string_literal ""(SELECTOR_UNIT)"" (" """) (string_content "(SELECTOR_UNIT)") (" """)) () ")"))) (; ";")) (expression_statement "uVar17 = (uint)param_2[4];" (assignment_expression "uVar17 = (uint)param_2[4]" (identifier "uVar17") (= "=") (cast_expression "(uint)param_2[4]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "uVar16 = uVar17 + 6;" (assignment_expression "uVar16 = uVar17 + 6" (identifier "uVar16") (= "=") (binary_expression "uVar17 + 6" (identifier "uVar17") (+ "+") (number_literal "6"))) (; ";")) (if_statement "if (*param_2 < uVar16) {\n      puts("      Warning: Descriptor too short");\n    }" (if "if") (parenthesized_expression "(*param_2 < uVar16)" (( "(") (binary_expression "*param_2 < uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (identifier "uVar16")) () ")")) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5])" (identifier "local_c8") (= "=") (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar17 + 5])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023840(param_1,param_2[uVar17 + 5])" (identifier "FUN_00023840") (argument_list "(param_1,param_2[uVar17 + 5])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[uVar17 + 5]" (identifier "param_2") ([ "[") (binary_expression "uVar17 + 5" (identifier "uVar17") (+ "+") (number_literal "5")) (] "]")) () ")"))))) (; ";")) (expression_statement "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17);" (call_expression "__printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17)" (identifier "__printf_chk") (argument_list "(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],\n                 uVar17)" (( "(") (number_literal "1") (, ",") (string_literal ""        bUnitID             %5u\n        bNrInPins           %5u\n"" (" """) (string_content "        bUnitID             %5u") (escape_sequence "\n") (string_content "        bNrInPins           %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "uVar17") () ")"))) (; ";")) (if_statement "if (uVar17 != 0) {\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);\n    }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      } while (uVar17 != uVar11);" (do "do") (compound_statement "{\n        uVar11 = uVar12 + 1;\n        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);\n        uVar12 = uVar11;\n      }" ({ "{") (expression_statement "uVar11 = uVar12 + 1;" (assignment_expression "uVar11 = uVar12 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);" (call_expression "__printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5])" (identifier "__printf_chk") (argument_list "(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5])" (( "(") (number_literal "1") (, ",") (string_literal ""        baSource(%2u)        %5u\n"" (" """) (string_content "        baSource(%2u)        %5u") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar12") (, ",") (subscript_expression "param_2[uVar12 + 5]" (identifier "param_2") ([ "[") (binary_expression "uVar12 + 5" (identifier "uVar12") (+ "+") (number_literal "5")) (] "]")) () ")"))) (; ";")) (expression_statement "uVar12 = uVar11;" (assignment_expression "uVar12 = uVar11" (identifier "uVar12") (= "=") (identifier "uVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != uVar11)" (( "(") (binary_expression "uVar17 != uVar11" (identifier "uVar17") (!= "!=") (identifier "uVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" (identifier "pvVar18") (= "=") (identifier "local_c8")) (; ";")) (expression_statement "__printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);" (call_expression "__printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8)" (identifier "__printf_chk") (argument_list "(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8)" (( "(") (number_literal "1") (, ",") (string_literal ""        iSelector           %5u %s\n"" (" """) (string_content "        iSelector           %5u %s") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[uVar17 + 5]" (identifier "param_2") ([ "[") (binary_expression "uVar17 + 5" (identifier "uVar17") (+ "+") (number_literal "5")) (] "]")) (, ",") (identifier "local_c8") () ")"))) (; ";")) (if_statement "if (*param_2 <= uVar16) goto code_r0x00018298;" (if "if") (parenthesized_expression "(*param_2 <= uVar16)" (( "(") (binary_expression "*param_2 <= uVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (<= "<=") (identifier "uVar16")) () ")")) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" (identifier "__printf_chk") (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" (( "(") (number_literal "1") (, ",") (string_literal ""%sjunk at descriptor end:"" (" """) (string_content "%sjunk at descriptor end:") (" """)) (, ",") (pointer_expression "&DAT_0002438e" (& "&") (identifier "DAT_0002438e")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (if_statement "if (uVar16 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" (if "if") (parenthesized_expression "(uVar16 < *param_2)" (( "(") (binary_expression "uVar16 < *param_2" (identifier "uVar16") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);\n    }" ({ "{") (do_statement "do {\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar16 < *param_2);" (do "do") (compound_statement "{\n        pbVar14 = param_2 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" ({ "{") (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" (identifier "pbVar14") (= "=") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" (identifier "__printf_chk") (argument_list "(1," %02x",*pbVar14,pvVar18)" (( "(") (number_literal "1") (, ",") (string_literal "" %02x"" (" """) (string_content " %02x") (" """)) (, ",") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < *param_2)" (( "(") (binary_expression "uVar16 < *param_2" (identifier "uVar16") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 5:\n    puts("(PROCESSING_UNIT)");\n    uVar16 = (uint)param_2[7];\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);\n    if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);\n    if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }\n    uVar12 = 0;\n    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);\n    if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }\n    bVar3 = param_2[uVar16 + 9];\n    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }\n    goto code_r0x00018298;" (case "case") (number_literal "5") (: ":") (expression_statement "puts("(PROCESSING_UNIT)");" (call_expression "puts("(PROCESSING_UNIT)")" (identifier "puts") (argument_list "("(PROCESSING_UNIT)")" (( "(") (string_literal ""(PROCESSING_UNIT)"" (" """) (string_content "(PROCESSING_UNIT)") (" """)) () ")"))) (; ";")) (expression_statement "uVar16 = (uint)param_2[7];" (assignment_expression "uVar16 = (uint)param_2[7]" (identifier "uVar16") (= "=") (cast_expression "(uint)param_2[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8])" (identifier "local_c8") (= "=") (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar16 + 8])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023840(param_1,param_2[uVar16 + 8])" (identifier "FUN_00023840") (argument_list "(param_1,param_2[uVar16 + 8])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[uVar16 + 8]" (identifier "param_2") ([ "[") (binary_expression "uVar16 + 8" (identifier "uVar16") (+ "+") (number_literal "8")) (] "]")) () ")"))))) (; ";")) (if_statement "if ((uint)*param_2 < uVar16 + 10) {\n      puts("      Warning: Descriptor too short");\n    }" (if "if") (parenthesized_expression "((uint)*param_2 < uVar16 + 10)" (( "(") (binary_expression "(uint)*param_2 < uVar16 + 10" (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2")) (< "<") (binary_expression "uVar16 + 10" (identifier "uVar16") (+ "+") (number_literal "10"))) () ")")) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16)" (identifier "__printf_chk") (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16)" (( "(") (number_literal "1") (, ",") (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"" (" """) (string_content "        bUnitID             %5u") (escape_sequence "\n") (string_content "        bSourceID           %5u") (escape_sequence "\n") (string_content "        wMaxMultiplier      %5u") (escape_sequence "\n") (string_content "        bControlSize        %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (pointer_expression "*(undefined2 *)(param_2 + 5)" (* "*") (cast_expression "(undefined2 *)(param_2 + 5)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 5)" (( "(") (binary_expression "param_2 + 5" (identifier "param_2") (+ "+") (number_literal "5")) () ")")))) (, ",") (identifier "uVar16") () ")"))) (; ";")) (if_statement "if (uVar16 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar17 = 0;\n    }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" (else "else") (compound_statement "{\n      pbVar14 = param_2 + uVar16;\n      uVar17 = 0;\n      uVar12 = 0;\n      do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);\n    }" ({ "{") (expression_statement "pbVar14 = param_2 + uVar16;" (assignment_expression "pbVar14 = param_2 + uVar16" (identifier "pbVar14") (= "=") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      } while (uVar12 < uVar16);" (do "do") (compound_statement "{\n        pbVar1 = pbVar14 + 7;\n        uVar12 = uVar12 + 1;\n        pbVar14 = pbVar14 + -1;\n        uVar17 = uVar17 << 8 | (uint)*pbVar1;\n        if (2 < uVar12) break;\n      }" ({ "{") (expression_statement "pbVar1 = pbVar14 + 7;" (assignment_expression "pbVar1 = pbVar14 + 7" (identifier "pbVar1") (= "=") (binary_expression "pbVar14 + 7" (identifier "pbVar14") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + -1;" (assignment_expression "pbVar14 = pbVar14 + -1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + -1" (identifier "pbVar14") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar17 = uVar17 << 8 | (uint)*pbVar1;" (assignment_expression "uVar17 = uVar17 << 8 | (uint)*pbVar1" (identifier "uVar17") (= "=") (binary_expression "uVar17 << 8 | (uint)*pbVar1" (binary_expression "uVar17 << 8" (identifier "uVar17") (<< "<<") (number_literal "8")) (| "|") (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar1")))) (; ";")) (if_statement "if (2 < uVar12) break;" (if "if") (parenthesized_expression "(2 < uVar12)" (( "(") (binary_expression "2 < uVar12" (number_literal "2") (< "<") (identifier "uVar12")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(uVar12 < uVar16)" (( "(") (binary_expression "uVar12 < uVar16" (identifier "uVar12") (< "<") (identifier "uVar16")) () ")")) (; ";")) (} "}")))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "__printf_chk(1,"        bmControls     0x%08x\n",uVar17);" (call_expression "__printf_chk(1,"        bmControls     0x%08x\n",uVar17)" (identifier "__printf_chk") (argument_list "(1,"        bmControls     0x%08x\n",uVar17)" (( "(") (number_literal "1") (, ",") (string_literal ""        bmControls     0x%08x\n"" (" """) (string_content "        bmControls     0x%08x") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar17") () ")"))) (; ";")) (if_statement "if (param_3 == 1) {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }\n    else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);\n    }" ({ "{") (do_statement "do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x13);" (do "do") (compound_statement "{\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      }" ({ "{") (if_statement "if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" (if "if") (parenthesized_expression "((uVar17 >> (uVar12 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar17 >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar12 & 0x1f) & 1)" (( "(") (binary_expression "uVar17 >> (uVar12 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar12 & 0x1f)" (identifier "uVar17") (>> ">>") (parenthesized_expression "(uVar12 & 0x1f)" (( "(") (binary_expression "uVar12 & 0x1f" (identifier "uVar12") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (subscript_expression "(&PTR_s_Brightness_00037d80)[uVar12]" (parenthesized_expression "(&PTR_s_Brightness_00037d80)" (( "(") (pointer_expression "&PTR_s_Brightness_00037d80" (& "&") (identifier "PTR_s_Brightness_00037d80")) () ")")) ([ "[") (identifier "uVar12") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 != 0x13)" (( "(") (binary_expression "uVar12 != 0x13" (identifier "uVar12") (!= "!=") (number_literal "0x13")) () ")")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" (else "else") (compound_statement "{\n      do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);\n    }" ({ "{") (do_statement "do {\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      } while (uVar12 != 0x12);" (do "do") (compound_statement "{\n        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }\n        uVar12 = uVar12 + 1;\n      }" ({ "{") (if_statement "if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" (if "if") (parenthesized_expression "((uVar17 >> (uVar12 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar17 >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar17 >> (uVar12 & 0x1f) & 1)" (( "(") (binary_expression "uVar17 >> (uVar12 & 0x1f) & 1" (binary_expression "uVar17 >> (uVar12 & 0x1f)" (identifier "uVar17") (>> ">>") (parenthesized_expression "(uVar12 & 0x1f)" (( "(") (binary_expression "uVar12 & 0x1f" (identifier "uVar12") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);\n        }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12])" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (subscript_expression "(&PTR_s_Brightness_00037d80)[uVar12]" (parenthesized_expression "(&PTR_s_Brightness_00037d80)" (( "(") (pointer_expression "&PTR_s_Brightness_00037d80" (& "&") (identifier "PTR_s_Brightness_00037d80")) () ")")) ([ "[") (identifier "uVar12") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 != 0x12)" (( "(") (binary_expression "uVar12 != 0x12" (identifier "uVar12") (!= "!=") (number_literal "0x12")) () ")")) (; ";")) (} "}")))) (expression_statement "bVar3 = param_2[uVar16 + 9];" (assignment_expression "bVar3 = param_2[uVar16 + 9]" (identifier "bVar3") (= "=") (subscript_expression "param_2[uVar16 + 9]" (identifier "param_2") ([ "[") (binary_expression "uVar16 + 9" (identifier "uVar16") (+ "+") (number_literal "9")) (] "]"))) (; ";")) (expression_statement "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3);" (call_expression "__printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3)" (identifier "__printf_chk") (argument_list "(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",\n                 param_2[uVar16 + 8],local_c8,bVar3)" (( "(") (number_literal "1") (, ",") (string_literal ""        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n"" (" """) (string_content "        iProcessing         %5u %s") (escape_sequence "\n") (string_content "        bmVideoStandards     0x%02x") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[uVar16 + 8]" (identifier "param_2") ([ "[") (binary_expression "uVar16 + 8" (identifier "uVar16") (+ "+") (number_literal "8")) (] "]")) (, ",") (identifier "local_c8") (, ",") (identifier "bVar3") () ")"))) (; ";")) (if_statement "if ((bVar3 & 1) != 0) {\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }" (if "if") (parenthesized_expression "((bVar3 & 1) != 0)" (( "(") (binary_expression "(bVar3 & 1) != 0" (parenthesized_expression "(bVar3 & 1)" (( "(") (binary_expression "bVar3 & 1" (identifier "bVar3") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);\n    }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,&DAT_0002412f);" (call_expression "__printf_chk(1,&UNK_000243b1,&DAT_0002412f)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,&DAT_0002412f)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (pointer_expression "&DAT_0002412f" (& "&") (identifier "DAT_0002412f")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }" (if "if") (parenthesized_expression "((bVar3 & 2) != 0)" (( "(") (binary_expression "(bVar3 & 2) != 0" (parenthesized_expression "(bVar3 & 2)" (( "(") (binary_expression "bVar3 & 2" (identifier "bVar3") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);\n    }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_000243f3);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_000243f3)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,&UNK_000243f3)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (pointer_expression "&UNK_000243f3" (& "&") (identifier "UNK_000243f3")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }" (if "if") (parenthesized_expression "((bVar3 & 4) != 0)" (( "(") (binary_expression "(bVar3 & 4) != 0" (parenthesized_expression "(bVar3 & 4)" (( "(") (binary_expression "bVar3 & 4" (identifier "bVar3") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_00024401);\n    }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_00024401);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_00024401)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,&UNK_00024401)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (pointer_expression "&UNK_00024401" (& "&") (identifier "UNK_00024401")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }" (if "if") (parenthesized_expression "((bVar3 & 8) != 0)" (( "(") (binary_expression "(bVar3 & 8) != 0" (parenthesized_expression "(bVar3 & 8)" (( "(") (binary_expression "bVar3 & 8" (identifier "bVar3") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);\n    }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002440e);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002440e)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,&UNK_0002440e)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (pointer_expression "&UNK_0002440e" (& "&") (identifier "UNK_0002440e")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }" (if "if") (parenthesized_expression "((bVar3 & 0x10) != 0)" (( "(") (binary_expression "(bVar3 & 0x10) != 0" (parenthesized_expression "(bVar3 & 0x10)" (( "(") (binary_expression "bVar3 & 0x10" (identifier "bVar3") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);\n    }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002441d);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002441d)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,&UNK_0002441d)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (pointer_expression "&UNK_0002441d" (& "&") (identifier "UNK_0002441d")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }" (if "if") (parenthesized_expression "((bVar3 & 0x20) != 0)" (( "(") (binary_expression "(bVar3 & 0x20) != 0" (parenthesized_expression "(bVar3 & 0x20)" (( "(") (binary_expression "bVar3 & 0x20" (identifier "bVar3") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);\n    }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,&UNK_0002442b);" (call_expression "__printf_chk(1,&UNK_000243b1,&UNK_0002442b)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,&UNK_0002442b)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (pointer_expression "&UNK_0002442b" (& "&") (identifier "UNK_0002442b")) () ")"))) (; ";")) (} "}"))) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (case_statement "case 6:\n    puts("(EXTENSION_UNIT)");\n    uVar16 = (uint)param_2[0x15];\n    uVar17 = (uint)param_2[uVar16 + 0x16];\n    uVar12 = uVar16 + uVar17 + 0x18;\n    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);\n    if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }\n    bVar3 = param_2[0x14];\n    uVar11 = (uint)param_2[0x13];\n    bVar4 = param_2[0x15];\n    __sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }\n    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);\n    if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }\n    pvVar18 = local_c8;\n    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);\n    if (*param_2 <= uVar12) goto code_r0x00018298;\n    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);\n    if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }\n    break;" (case "case") (number_literal "6") (: ":") (expression_statement "puts("(EXTENSION_UNIT)");" (call_expression "puts("(EXTENSION_UNIT)")" (identifier "puts") (argument_list "("(EXTENSION_UNIT)")" (( "(") (string_literal ""(EXTENSION_UNIT)"" (" """) (string_content "(EXTENSION_UNIT)") (" """)) () ")"))) (; ";")) (expression_statement "uVar16 = (uint)param_2[0x15];" (assignment_expression "uVar16 = (uint)param_2[0x15]" (identifier "uVar16") (= "=") (cast_expression "(uint)param_2[0x15]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")))) (; ";")) (expression_statement "uVar17 = (uint)param_2[uVar16 + 0x16];" (assignment_expression "uVar17 = (uint)param_2[uVar16 + 0x16]" (identifier "uVar17") (= "=") (cast_expression "(uint)param_2[uVar16 + 0x16]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[uVar16 + 0x16]" (identifier "param_2") ([ "[") (binary_expression "uVar16 + 0x16" (identifier "uVar16") (+ "+") (number_literal "0x16")) (] "]")))) (; ";")) (expression_statement "uVar12 = uVar16 + uVar17 + 0x18;" (assignment_expression "uVar12 = uVar16 + uVar17 + 0x18" (identifier "uVar12") (= "=") (binary_expression "uVar16 + uVar17 + 0x18" (binary_expression "uVar16 + uVar17" (identifier "uVar16") (+ "+") (identifier "uVar17")) (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" (identifier "local_c8") (= "=") (cast_expression "(void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17])" (identifier "FUN_00023840") (argument_list "(param_1,param_2[uVar16 + uVar17 + 0x17])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[uVar16 + uVar17 + 0x17]" (identifier "param_2") ([ "[") (binary_expression "uVar16 + uVar17 + 0x17" (binary_expression "uVar16 + uVar17" (identifier "uVar16") (+ "+") (identifier "uVar17")) (+ "+") (number_literal "0x17")) (] "]")) () ")"))))) (; ";")) (if_statement "if (*param_2 < uVar12) {\n      puts("      Warning: Descriptor too short");\n    }" (if "if") (parenthesized_expression "(*param_2 < uVar12)" (( "(") (binary_expression "*param_2 < uVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "bVar3 = param_2[0x14];" (assignment_expression "bVar3 = param_2[0x14]" (identifier "bVar3") (= "=") (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]"))) (; ";")) (expression_statement "uVar11 = (uint)param_2[0x13];" (assignment_expression "uVar11 = (uint)param_2[0x13]" (identifier "uVar11") (= "=") (cast_expression "(uint)param_2[0x13]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0x13]" (identifier "param_2") ([ "[") (number_literal "0x13") (] "]")))) (; ";")) (expression_statement "bVar4 = param_2[0x15];" (assignment_expression "bVar4 = param_2[0x15]" (identifier "bVar4") (= "=") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "__sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11);" (call_expression "__sprintf_chk(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11)" (identifier "__sprintf_chk") (argument_list "(0x3fa00,1,0x27,\n                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",\n                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],\n                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],\n                  param_2[0x11],param_2[0x12],uVar11)" (( "(") (number_literal "0x3fa00") (, ",") (number_literal "1") (, ",") (number_literal "0x27") (, ",") (string_literal ""{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}"" (" """) (string_content "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}") (" """)) (, ",") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (, ",") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (, ",") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (, ",") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (, ",") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]")) (, ",") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")) (, ",") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) (, ",") (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]")) (, ",") (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]")) (, ",") (subscript_expression "param_2[0x11]" (identifier "param_2") ([ "[") (number_literal "0x11") (] "]")) (, ",") (subscript_expression "param_2[0x12]" (identifier "param_2") ([ "[") (number_literal "0x12") (] "]")) (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4)" (identifier "__printf_chk") (argument_list "(1,\n                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"\n                 ,param_2[3],0x3fa00,bVar3,bVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"" (" """) (string_content "        bUnitID             %5u") (escape_sequence "\n") (string_content "        guidExtensionCode         %s") (escape_sequence "\n") (string_content "        bNumControl         %5u") (escape_sequence "\n") (string_content "        bNrPins             %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (number_literal "0x3fa00") (, ",") (identifier "bVar3") (, ",") (identifier "bVar4") () ")"))) (; ";")) (if_statement "if (uVar16 != 0) {\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }" (if "if") (parenthesized_expression "(uVar16 != 0)" (( "(") (binary_expression "uVar16 != 0" (identifier "uVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar15 = 0;\n      do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);\n    }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      } while (uVar16 != uVar13);" (do "do") (compound_statement "{\n        uVar11 = (uint)param_2[uVar15 + 0x16];\n        uVar13 = uVar15 + 1;\n        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);\n        uVar15 = uVar13;\n      }" ({ "{") (expression_statement "uVar11 = (uint)param_2[uVar15 + 0x16];" (assignment_expression "uVar11 = (uint)param_2[uVar15 + 0x16]" (identifier "uVar11") (= "=") (cast_expression "(uint)param_2[uVar15 + 0x16]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[uVar15 + 0x16]" (identifier "param_2") ([ "[") (binary_expression "uVar15 + 0x16" (identifier "uVar15") (+ "+") (number_literal "0x16")) (] "]")))) (; ";")) (expression_statement "uVar13 = uVar15 + 1;" (assignment_expression "uVar13 = uVar15 + 1" (identifier "uVar13") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);" (call_expression "__printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11)" (identifier "__printf_chk") (argument_list "(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11)" (( "(") (number_literal "1") (, ",") (string_literal ""        baSourceID(%2u)      %5u\n"" (" """) (string_content "        baSourceID(%2u)      %5u") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar15") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "uVar15 = uVar13;" (assignment_expression "uVar15 = uVar13" (identifier "uVar15") (= "=") (identifier "uVar13")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 != uVar13)" (( "(") (binary_expression "uVar16 != uVar13" (identifier "uVar16") (!= "!=") (identifier "uVar13")) () ")")) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);" (call_expression "__printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11)" (identifier "__printf_chk") (argument_list "(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11)" (( "(") (number_literal "1") (, ",") (string_literal ""        bControlSize        %5u\n"" (" """) (string_content "        bControlSize        %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[uVar16 + 0x16]" (identifier "param_2") ([ "[") (binary_expression "uVar16 + 0x16" (identifier "uVar16") (+ "+") (number_literal "0x16")) (] "]")) (, ",") (identifier "uVar11") () ")"))) (; ";")) (if_statement "if (uVar17 != 0) {\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" (if "if") (parenthesized_expression "(uVar17 != 0)" (( "(") (binary_expression "uVar17 != 0" (identifier "uVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = 0;\n      do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      } while (uVar17 != uVar15);" (do "do") (compound_statement "{\n        uVar15 = uVar11 + 1;\n        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);\n        uVar11 = uVar15;\n      }" ({ "{") (expression_statement "uVar15 = uVar11 + 1;" (assignment_expression "uVar15 = uVar11 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17]);" (call_expression "__printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17])" (identifier "__printf_chk") (argument_list "(1,"        bmControls(%2u)       0x%02x\n",uVar11,\n                     param_2[uVar11 + uVar16 + 0x17])" (( "(") (number_literal "1") (, ",") (string_literal ""        bmControls(%2u)       0x%02x\n"" (" """) (string_content "        bmControls(%2u)       0x%02x") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar11") (, ",") (subscript_expression "param_2[uVar11 + uVar16 + 0x17]" (identifier "param_2") ([ "[") (binary_expression "uVar11 + uVar16 + 0x17" (binary_expression "uVar11 + uVar16" (identifier "uVar11") (+ "+") (identifier "uVar16")) (+ "+") (number_literal "0x17")) (] "]")) () ")"))) (; ";")) (expression_statement "uVar11 = uVar15;" (assignment_expression "uVar11 = uVar15" (identifier "uVar11") (= "=") (identifier "uVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != uVar15)" (( "(") (binary_expression "uVar17 != uVar15" (identifier "uVar17") (!= "!=") (identifier "uVar15")) () ")")) (; ";")) (} "}"))) (expression_statement "pvVar18 = local_c8;" (assignment_expression "pvVar18 = local_c8" (identifier "pvVar18") (= "=") (identifier "local_c8")) (; ";")) (expression_statement "__printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);" (call_expression "__printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8)" (identifier "__printf_chk") (argument_list "(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8)" (( "(") (number_literal "1") (, ",") (string_literal ""        iExtension          %5u %s\n"" (" """) (string_content "        iExtension          %5u %s") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[uVar16 + uVar17 + 0x17]" (identifier "param_2") ([ "[") (binary_expression "uVar16 + uVar17 + 0x17" (binary_expression "uVar16 + uVar17" (identifier "uVar16") (+ "+") (identifier "uVar17")) (+ "+") (number_literal "0x17")) (] "]")) (, ",") (identifier "local_c8") () ")"))) (; ";")) (if_statement "if (*param_2 <= uVar12) goto code_r0x00018298;" (if "if") (parenthesized_expression "(*param_2 <= uVar12)" (( "(") (binary_expression "*param_2 <= uVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (<= "<=") (identifier "uVar12")) () ")")) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (expression_statement "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);" (call_expression "__printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" (identifier "__printf_chk") (argument_list "(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18)" (( "(") (number_literal "1") (, ",") (string_literal ""%sjunk at descriptor end:"" (" """) (string_content "%sjunk at descriptor end:") (" """)) (, ",") (pointer_expression "&DAT_0002438e" (& "&") (identifier "DAT_0002438e")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (if_statement "if (uVar12 < *param_2) {\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }" (if "if") (parenthesized_expression "(uVar12 < *param_2)" (( "(") (binary_expression "uVar12 < *param_2" (identifier "uVar12") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n      do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);\n    }" ({ "{") (do_statement "do {\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      } while (uVar12 < *param_2);" (do "do") (compound_statement "{\n        pbVar14 = param_2 + uVar12;\n        uVar12 = uVar12 + 1;\n        __printf_chk(1," %02x",*pbVar14,pvVar18);\n      }" ({ "{") (expression_statement "pbVar14 = param_2 + uVar12;" (assignment_expression "pbVar14 = param_2 + uVar12" (identifier "pbVar14") (= "=") (binary_expression "param_2 + uVar12" (identifier "param_2") (+ "+") (identifier "uVar12"))) (; ";")) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 1" (identifier "uVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1," %02x",*pbVar14,pvVar18);" (call_expression "__printf_chk(1," %02x",*pbVar14,pvVar18)" (identifier "__printf_chk") (argument_list "(1," %02x",*pbVar14,pvVar18)" (( "(") (number_literal "1") (, ",") (string_literal "" %02x"" (" """) (string_content " %02x") (" """)) (, ",") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (, ",") (identifier "pvVar18") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 < *param_2)" (( "(") (binary_expression "uVar12 < *param_2" (identifier "uVar12") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 7:\n    puts("(ENCODING UNIT)");\n    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);\n    if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }\n    uVar16 = 0;\n    __printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);\n    uVar7 = *(uint3 *)(param_2 + 7);\n    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);\n    do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);\ncode_r0x000189ea:\n    uVar17 = 0;\n    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];\n    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);\n    do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);\n    goto code_r0x00018298;" (case "case") (number_literal "7") (: ":") (expression_statement "puts("(ENCODING UNIT)");" (call_expression "puts("(ENCODING UNIT)")" (identifier "puts") (argument_list "("(ENCODING UNIT)")" (( "(") (string_literal ""(ENCODING UNIT)"" (" """) (string_content "(ENCODING UNIT)") (" """)) () ")"))) (; ";")) (expression_statement "local_c8 = (void *)FUN_00023840(param_1,param_2[5]);" (assignment_expression "local_c8 = (void *)FUN_00023840(param_1,param_2[5])" (identifier "local_c8") (= "=") (cast_expression "(void *)FUN_00023840(param_1,param_2[5])" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00023840(param_1,param_2[5])" (identifier "FUN_00023840") (argument_list "(param_1,param_2[5])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) () ")"))))) (; ";")) (if_statement "if (*param_2 < 0xd) {\n      puts("      Warning: Descriptor too short");\n    }" (if "if") (parenthesized_expression "(*param_2 < 0xd)" (( "(") (binary_expression "*param_2 < 0xd" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (number_literal "0xd")) () ")")) (compound_statement "{\n      puts("      Warning: Descriptor too short");\n    }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);" (call_expression "__printf_chk(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6])" (identifier "__printf_chk") (argument_list "(1,\n                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"\n                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6])" (( "(") (number_literal "1") (, ",") (string_literal ""        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"" (" """) (string_content "        bUnitID             %5u") (escape_sequence "\n") (string_content "        bSourceID           %5u") (escape_sequence "\n") (string_content "        iEncoding           %5u %s") (escape_sequence "\n") (string_content "        bControlSize        %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "local_c8") (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) () ")"))) (; ";")) (expression_statement "uVar7 = *(uint3 *)(param_2 + 7);" (assignment_expression "uVar7 = *(uint3 *)(param_2 + 7)" (identifier "uVar7") (= "=") (pointer_expression "*(uint3 *)(param_2 + 7)" (* "*") (cast_expression "(uint3 *)(param_2 + 7)" (( "(") (type_descriptor "uint3 *" (type_identifier "uint3") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")"))))) (; ";")) (expression_statement "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);" (call_expression "__printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7)" (identifier "__printf_chk") (argument_list "(1,"        bmControls              0x%08x\n",(uint)uVar7)" (( "(") (number_literal "1") (, ",") (string_literal ""        bmControls              0x%08x\n"" (" """) (string_content "        bmControls              0x%08x") (escape_sequence "\n") (" """)) (, ",") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7")) () ")"))) (; ";")) (do_statement "do {\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    } while (uVar16 != 0x14);" (do "do") (compound_statement "{\n      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }\n      uVar16 = uVar16 + 1;\n    }" ({ "{") (while_statement "while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }" (while "while") (parenthesized_expression "((uVar7 >> (uVar16 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar7 >> (uVar16 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar7 >> (uVar16 & 0x1f) & 1)" (( "(") (binary_expression "uVar7 >> (uVar16 & 0x1f) & 1" (binary_expression "uVar7 >> (uVar16 & 0x1f)" (identifier "uVar7") (>> ">>") (parenthesized_expression "(uVar16 & 0x1f)" (( "(") (binary_expression "uVar16 & 0x1f" (identifier "uVar16") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;\n        uVar16 = uVar16 + 1;\n        __printf_chk(1,&UNK_000243b1,*ppuVar2);\n        if (uVar16 == 0x14) goto code_r0x000189ea;\n      }" ({ "{") (expression_statement "ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;" (assignment_expression "ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16" (identifier "ppuVar2") (= "=") (binary_expression "&PTR_s_Select_Layer_00037d20 + uVar16" (pointer_expression "&PTR_s_Select_Layer_00037d20" (& "&") (identifier "PTR_s_Select_Layer_00037d20")) (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1,&UNK_000243b1,*ppuVar2);" (call_expression "__printf_chk(1,&UNK_000243b1,*ppuVar2)" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,*ppuVar2)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (pointer_expression "*ppuVar2" (* "*") (identifier "ppuVar2")) () ")"))) (; ";")) (if_statement "if (uVar16 == 0x14) goto code_r0x000189ea;" (if "if") (parenthesized_expression "(uVar16 == 0x14)" (( "(") (binary_expression "uVar16 == 0x14" (identifier "uVar16") (== "==") (number_literal "0x14")) () ")")) (goto_statement "goto code_r0x000189ea;" (goto "goto") (statement_identifier "code_r0x000189ea") (; ";"))) (} "}"))) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 != 0x14)" (( "(") (binary_expression "uVar16 != 0x14" (identifier "uVar16") (!= "!=") (number_literal "0x14")) () ")")) (; ";")) (labeled_statement "code_r0x000189ea:\n    uVar17 = 0;" (statement_identifier "code_r0x000189ea") (: ":") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];" (assignment_expression "uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10]" (identifier "uVar16") (= "=") (binary_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10]" (binary_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8" (parenthesized_expression "((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8)" (( "(") (binary_expression "(uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8" (cast_expression "(uint)param_2[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]"))) (| "|") (binary_expression "CONCAT31(uVar7,param_2[0xc]) << 8" (call_expression "CONCAT31(uVar7,param_2[0xc])" (identifier "CONCAT31") (argument_list "(uVar7,param_2[0xc])" (( "(") (identifier "uVar7") (, ",") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]")) () ")"))) (<< "<<") (number_literal "8"))) () ")")) (<< "<<") (number_literal "8")) (| "|") (cast_expression "(uint)param_2[10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))))) (; ";")) (expression_statement "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);" (call_expression "__printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16)" (identifier "__printf_chk") (argument_list "(1,"        bmControlsRuntime       0x%08x\n",uVar16)" (( "(") (number_literal "1") (, ",") (string_literal ""        bmControlsRuntime       0x%08x\n"" (" """) (string_content "        bmControlsRuntime       0x%08x") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar16") () ")"))) (; ";")) (do_statement "do {\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    } while (uVar17 != 0x14);" (do "do") (compound_statement "{\n      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }\n      uVar17 = uVar17 + 1;\n    }" ({ "{") (if_statement "if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }" (if "if") (parenthesized_expression "((uVar16 >> (uVar17 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar16 >> (uVar17 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar16 >> (uVar17 & 0x1f) & 1)" (( "(") (binary_expression "uVar16 >> (uVar17 & 0x1f) & 1" (binary_expression "uVar16 >> (uVar17 & 0x1f)" (identifier "uVar16") (>> ">>") (parenthesized_expression "(uVar17 & 0x1f)" (( "(") (binary_expression "uVar17 & 0x1f" (identifier "uVar17") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);\n      }" ({ "{") (expression_statement "__printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);" (call_expression "__printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17])" (identifier "__printf_chk") (argument_list "(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17])" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_000243b1" (& "&") (identifier "UNK_000243b1")) (, ",") (subscript_expression "(&PTR_s_Select_Layer_00037d20)[uVar17]" (parenthesized_expression "(&PTR_s_Select_Layer_00037d20)" (( "(") (pointer_expression "&PTR_s_Select_Layer_00037d20" (& "&") (identifier "PTR_s_Select_Layer_00037d20")) () ")")) ([ "[") (identifier "uVar17") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar17 != 0x14)" (( "(") (binary_expression "uVar17 != 0x14" (identifier "uVar17") (!= "!=") (number_literal "0x14")) () ")")) (; ";")) (goto_statement "goto code_r0x00018298;" (goto "goto") (statement_identifier "code_r0x00018298") (; ";"))) (} "}"))) (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (labeled_statement "code_r0x00018298:\n  free(local_c8);" (statement_identifier "code_r0x00018298") (: ":") (expression_statement "free(local_c8);" (call_expression "free(local_c8)" (identifier "free") (argument_list "(local_c8)" (( "(") (identifier "local_c8") () ")"))) (; ";"))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00023ad0();" (call_expression "FUN_00023ad0()" (identifier "FUN_00023ad0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 function_1(type_1 *dev,type_2 *var_5,int var_21)

{
  type_3 *var_23;
  char **ppcVar2;
  int var_29;
  type_3 var_2;
  type_2 uVar5;
  type_2 var_18;
  type_4 var_13;
  type_5 var_26;
  type_6 uVar9;
  int var_17;
  char *var_15;
  type_7 var_9;
  type_7 var_22;
  type_7 var_25;
  type_2 *var_6;
  type_7 var_10;
  type_7 var_8;
  type_7 var_7;
  int var_1;
  char *local_c8;
  char termts [128];
  
  var_29 = *(int *)(var_1 + 0x14);
  if (var_5[1] == '$') {
    var_2 = *var_5;
    var_18 = '$';
    if (var_2 < 3) {
      var_15 = "      Warning: Descriptor too short";
      goto LAB_00018159;
    }
  }
  else {
    var_15 = "      Warning: Invalid descriptor";
LAB_00018159:
    var_3(var_15);
    var_18 = var_5[1];
    var_2 = *var_5;
  }
  var_4(1,
               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "
               ,var_2,var_18,var_5[2]);
  switch(var_5[2]) {
  default:
    var_4(1,"(unknown)\n        Invalid desc subtype:");
    var_2 = *var_5;
    if (var_2 != 3) {
      var_6 = var_5 + 3;
      do {
        var_18 = *var_6;
        var_6 = var_6 + 1;
        var_4(1," %02x",var_18);
      } while (var_6 != var_5 + var_2);
    }
    goto LAB_0001827d;
  case '\x01':
    var_3("(HEADER)");
    var_7 = (type_7)var_5[0xb];
    var_8 = var_7 + 0xc;
    if (*var_5 < var_8) {
      var_3("      Warning: Descriptor too short");
    }
    var_22 = var_7;
    var_4(1,
                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"
                 ,var_5[4],var_5[3],*(type_8 *)(var_5 + 5),*(type_7 *)(var_5 + 7) / 1000000,
                 *(type_7 *)(var_5 + 7) % 1000000,var_7);
    if (var_7 != 0) {
      var_9 = 0;
      do {
        var_22 = (type_7)var_5[var_9 + 0xc];
        var_10 = var_9 + 1;
        var_4(1,"        baInterfaceNr(%2u)   %5u\n",var_9,var_22);
        var_9 = var_10;
      } while (var_7 != var_10);
    }
    local_c8 = (char *)0x0;
    if (*var_5 <= var_8) goto LAB_00018298;
    var_4(1,"%sjunk at descriptor end:",&DAT_0002438e,var_22);
    if (var_8 < *var_5) {
      do {
        var_6 = var_5 + var_8;
        var_8 = var_8 + 1;
        var_4(1," %02x",*var_6,var_22);
      } while (var_8 < *var_5);
    }
LAB_0001827d:
    var_11(10);
    local_c8 = (char *)0x0;
    goto LAB_00018298;
  case '\x02':
    var_3("(INPUT_TERMINAL)");
    local_c8 = var_12(dev,var_5[7]);
    var_13 = *(type_4 *)(var_5 + 4);
    termts[0] = '\0';
    var_8 = 8;
    if (var_13 == 0x201) {
      var_8 = 0xf;
    }
    var_17 = 0;
    if (var_13 == 0x201) {
      var_17 = 7;
    }
    var_15 = var_14(var_13);
    if (var_15 != (char *)0x0) {
      var_16(termts,0x80,"%s",var_15);
    }
    if (*var_5 < var_8) {
      var_3("      Warning: Descriptor too short");
    }
    var_4(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"
                 ,var_5[3],var_13,termts,var_5[6]);
    var_15 = local_c8;
    var_4(1,"        iTerminal           %5u %s\n",var_5[7],local_c8);
    if (var_13 == 0x201) {
      var_17 = var_17 + (type_7)var_5[0xe];
      var_4(1,
                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"
                   ,*(type_8 *)(var_5 + 8),*(type_8 *)(var_5 + 10),*(type_8 *)(var_5 + 0xc),
                   (type_7)var_5[0xe]);
      var_18 = var_5[0xe];
      if (var_18 == '\0') {
        var_8 = 0;
      }
      else {
        var_8 = (type_7)var_5[var_17 + 7];
        if (var_18 != '\x01') {
          uVar9 = var_19(var_5[var_17 + 7],var_5[var_17 + 6]);
          var_8 = (type_7)uVar9;
          if (var_18 != '\x02') {
            var_8 = (type_7)var_20(uVar9,var_5[var_17 + 5]);
          }
        }
      }
      var_7 = 0;
      var_4(1,"        bmControls           0x%08x\n",var_8,var_15);
      if (var_21 == 1) {
        do {
          if ((var_8 >> (var_7 & 0x1f) & 1) != 0) {
            var_4(1,&DAT_000243b1,function_1::camctrlnames[var_7],var_15);
          }
          var_7 = var_7 + 1;
        } while (var_7 != 0x16);
      }
      else {
        do {
          if ((var_8 >> (var_7 & 0x1f) & 1) != 0) {
            var_4(1,&DAT_000243b1,function_1::camctrlnames[var_7],var_15);
          }
          var_7 = var_7 + 1;
        } while (var_7 != 0x13);
      }
      var_8 = var_17 + 8;
    }
    if (*var_5 <= var_8) goto LAB_00018298;
    var_4(1,"%sjunk at descriptor end:",&DAT_0002438e,var_15);
    if (var_8 < *var_5) {
      do {
        var_6 = var_5 + var_8;
        var_8 = var_8 + 1;
        var_4(1," %02x",*var_6,var_15);
      } while (var_8 < *var_5);
    }
    break;
  case '\x03':
    var_3("(OUTPUT_TERMINAL)");
    local_c8 = var_12(dev,var_5[8]);
    var_13 = *(type_4 *)(var_5 + 4);
    termts[0] = '\0';
    var_15 = var_14(var_13);
    if (var_15 != (char *)0x0) {
      var_16(termts,0x80,"%s",var_15);
    }
    if (*var_5 < 9) {
      var_3("      Warning: Descriptor too short");
    }
    var_4(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"
                 ,var_5[3],var_13,termts,var_5[6],var_5[7],var_5[8],local_c8);
    if (*var_5 < 10) goto LAB_00018298;
    var_8 = 9;
    var_4(1,"%sjunk at descriptor end:",&DAT_0002438e);
    if (9 < *var_5) {
      do {
        var_6 = var_5 + var_8;
        var_8 = var_8 + 1;
        var_4(1," %02x",*var_6);
      } while (var_8 < *var_5);
    }
    break;
  case '\x04':
    var_3("(SELECTOR_UNIT)");
    var_7 = (type_7)var_5[4];
    var_8 = var_7 + 6;
    if (*var_5 < var_8) {
      var_3("      Warning: Descriptor too short");
    }
    local_c8 = var_12(dev,var_5[var_7 + 5]);
    var_4(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",var_5[3],
                 var_7);
    if (var_7 != 0) {
      var_22 = 0;
      do {
        var_9 = var_22 + 1;
        var_4(1,"        baSource(%2u)        %5u\n",var_22,var_5[var_22 + 5]);
        var_22 = var_9;
      } while (var_7 != var_9);
    }
    var_15 = local_c8;
    var_4(1,"        iSelector           %5u %s\n",var_5[var_7 + 5],local_c8);
    if (*var_5 <= var_8) goto LAB_00018298;
    var_4(1,"%sjunk at descriptor end:",&DAT_0002438e,var_15);
    if (var_8 < *var_5) {
      do {
        var_6 = var_5 + var_8;
        var_8 = var_8 + 1;
        var_4(1," %02x",*var_6,var_15);
      } while (var_8 < *var_5);
    }
    break;
  case '\x05':
    var_3("(PROCESSING_UNIT)");
    var_8 = (type_7)var_5[7];
    local_c8 = var_12(dev,var_5[var_8 + 8]);
    if ((type_7)*var_5 < var_8 + 10) {
      var_3("      Warning: Descriptor too short");
    }
    var_4(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"
                 ,var_5[3],var_5[4],*(type_8 *)(var_5 + 5),var_8);
    if (var_8 == 0) {
      var_7 = 0;
    }
    else {
      var_6 = var_5 + var_8;
      var_7 = 0;
      var_22 = 0;
      do {
        var_23 = var_6 + 7;
        var_22 = var_22 + 1;
        var_6 = var_6 + -1;
        var_7 = var_7 << 8 | (type_7)*var_23;
        if (2 < var_22) break;
      } while (var_22 < var_8);
    }
    var_22 = 0;
    var_4(1,"        bmControls     0x%08x\n",var_7);
    if (var_21 == 1) {
      do {
        if ((var_7 >> (var_22 & 0x1f) & 1) != 0) {
          var_4(1,&DAT_000243b1,function_1::ctrlnames[var_22]);
        }
        var_22 = var_22 + 1;
      } while (var_22 != 0x13);
    }
    else {
      do {
        if ((var_7 >> (var_22 & 0x1f) & 1) != 0) {
          var_4(1,&DAT_000243b1,function_1::ctrlnames[var_22]);
        }
        var_22 = var_22 + 1;
      } while (var_22 != 0x12);
    }
    var_2 = var_5[var_8 + 9];
    var_4(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",
                 var_5[var_8 + 8],local_c8,var_2);
    if ((var_2 & 1) != 0) {
      var_4(1,&DAT_000243b1,&DAT_0002412f);
    }
    if ((var_2 & 2) != 0) {
      var_4(1,&DAT_000243b1,"NTSC - 525/60");
    }
    if ((var_2 & 4) != 0) {
      var_4(1,&DAT_000243b1,"PAL - 625/50");
    }
    if ((var_2 & 8) != 0) {
      var_4(1,&DAT_000243b1,"SECAM - 625/50");
    }
    if ((var_2 & 0x10) != 0) {
      var_4(1,&DAT_000243b1,"NTSC - 625/50");
    }
    if ((var_2 & 0x20) != 0) {
      var_4(1,&DAT_000243b1,"PAL - 525/60");
    }
    goto LAB_00018298;
  case '\x06':
    var_3("(EXTENSION_UNIT)");
    var_8 = (type_7)var_5[0x15];
    var_7 = (type_7)var_5[var_8 + 0x16];
    var_22 = var_8 + var_7 + 0x18;
    local_c8 = var_12(dev,var_5[var_8 + var_7 + 0x17]);
    if (*var_5 < var_22) {
      var_3("      Warning: Descriptor too short");
    }
    var_18 = var_5[0x14];
    var_9 = (type_7)var_5[0x13];
    uVar5 = var_5[0x15];
    var_24(&guid_5834,1,0x27,
                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",var_5[7],
                  var_5[6],var_5[5],var_5[4],var_5[9],var_5[8],var_5[0xb],var_5[10],var_5[0xc],var_5[0xd],var_5[0xe],
                  var_5[0xf],var_5[0x10],var_5[0x11],var_5[0x12],var_9);
    var_4(1,
                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"
                 ,var_5[3],&guid_5834,var_18,uVar5);
    if (var_8 != 0) {
      var_10 = 0;
      do {
        var_9 = (type_7)var_5[var_10 + 0x16];
        var_25 = var_10 + 1;
        var_4(1,"        baSourceID(%2u)      %5u\n",var_10,var_9);
        var_10 = var_25;
      } while (var_8 != var_25);
    }
    var_4(1,"        bControlSize        %5u\n",var_5[var_8 + 0x16],var_9);
    if (var_7 != 0) {
      var_9 = 0;
      do {
        var_10 = var_9 + 1;
        var_4(1,"        bmControls(%2u)       0x%02x\n",var_9,var_5[var_9 + var_8 + 0x17]);
        var_9 = var_10;
      } while (var_7 != var_10);
    }
    var_15 = local_c8;
    var_4(1,"        iExtension          %5u %s\n",var_5[var_8 + var_7 + 0x17],local_c8);
    if (*var_5 <= var_22) goto LAB_00018298;
    var_4(1,"%sjunk at descriptor end:",&DAT_0002438e,var_15);
    if (var_22 < *var_5) {
      do {
        var_6 = var_5 + var_22;
        var_22 = var_22 + 1;
        var_4(1," %02x",*var_6,var_15);
      } while (var_22 < *var_5);
    }
    break;
  case '\a':
    var_3("(ENCODING UNIT)");
    local_c8 = var_12(dev,var_5[5]);
    if (*var_5 < 0xd) {
      var_3("      Warning: Descriptor too short");
    }
    var_8 = 0;
    var_4(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"
                 ,var_5[3],var_5[4],var_5[5],local_c8,var_5[6]);
    var_26 = *(type_5 *)(var_5 + 7);
    var_4(1,"        bmControls              0x%08x\n",(type_7)var_26);
    do {
      while ((var_26 >> (var_8 & 0x1f) & 1) != 0) {
        ppcVar2 = function_1::enctrlnames + var_8;
        var_8 = var_8 + 1;
        var_4(1,&DAT_000243b1,*ppcVar2);
        if (var_8 == 0x14) goto LAB_000189ea;
      }
      var_8 = var_8 + 1;
    } while (var_8 != 0x14);
LAB_000189ea:
    var_7 = 0;
    var_8 = ((type_7)var_5[0xb] | var_27(var_26,var_5[0xc]) << 8) << 8 | (type_7)var_5[10];
    var_4(1,"        bmControlsRuntime       0x%08x\n",var_8);
    do {
      if ((var_8 >> (var_7 & 0x1f) & 1) != 0) {
        var_4(1,&DAT_000243b1,function_1::enctrlnames[var_7]);
      }
      var_7 = var_7 + 1;
    } while (var_7 != 0x14);
    goto LAB_00018298;
  }
  var_11(10);
LAB_00018298:
  var_28(local_c8);
  if (var_29 == *(int *)(var_1 + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_30();
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)) (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal))))) (switch_statement condition: (parenthesized_expression (subscript_expression argument: (identifier) index: (number_literal))) body: (compound_statement (case_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (string_literal (string_content)) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (string_literal (string_content)) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (break_statement))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal) (number_literal) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (number_literal) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (pointer_expression argument: (identifier)) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal)))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (identifier)) (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 MASKED(undefined4 param_1,byte *param_2,int param_3)

{
  byte *pbVar1;
  undefined **ppuVar2;
  byte bVar3;
  byte bVar4;
  short sVar5;
  undefined2 uVar6;
  uint3 uVar7;
  ushort uVar8;
  char *__s;
  int iVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  byte *pbVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  int in_GS_OFFSET;
  void *pvVar18;
  void *local_c8;
  char acStack_a0 [128];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x180ed;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_2[1] == 0x24) {
    bVar3 = *param_2;
    bVar4 = 0x24;
    if (bVar3 < 3) {
      __s = "      Warning: Descriptor too short";
      goto LAB_00018159;
    }
  }
  else {
    __s = "      Warning: Invalid descriptor";
LAB_00018159:
    puts(__s);
    bVar4 = param_2[1];
    bVar3 = *param_2;
  }
  __printf_chk(1,
               "      VideoControl Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bDescriptorSubtype  %5u "
               ,bVar3,bVar4,param_2[2]);
  switch(param_2[2]) {
  default:
    __printf_chk(1,"(unknown)\n        Invalid desc subtype:");
    bVar3 = *param_2;
    if (bVar3 != 3) {
      pbVar14 = param_2 + 3;
      do {
        bVar4 = *pbVar14;
        pbVar14 = pbVar14 + 1;
        __printf_chk(1," %02x",bVar4);
      } while (pbVar14 != param_2 + bVar3);
    }
    goto LAB_0001827d;
  case 1:
    puts("(HEADER)");
    uVar17 = (uint)param_2[0xb];
    uVar16 = uVar17 + 0xc;
    if (*param_2 < uVar16) {
      puts("      Warning: Descriptor too short");
    }
    uVar12 = uVar17;
    __printf_chk(1,
                 "        bcdUVC              %2x.%02x\n        wTotalLength       0x%04x\n        dwClockFrequency    %5u.%06uMHz\n        bInCollection       %5u\n"
                 ,param_2[4],param_2[3],*(undefined2 *)(param_2 + 5),
                 *(uint *)(param_2 + 7) / 1000000,*(uint *)(param_2 + 7) % 1000000,uVar17);
    if (uVar17 != 0) {
      uVar11 = 0;
      do {
        uVar12 = (uint)param_2[uVar11 + 0xc];
        uVar15 = uVar11 + 1;
        __printf_chk(1,"        baInterfaceNr(%2u)   %5u\n",uVar11,uVar12);
        uVar11 = uVar15;
      } while (uVar17 != uVar15);
    }
    local_c8 = (void *)0x0;
    if (*param_2 <= uVar16) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,uVar12);
    if (uVar16 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14,uVar12);
      } while (uVar16 < *param_2);
    }
LAB_0001827d:
    putchar(10);
    local_c8 = (void *)0x0;
    goto code_r0x00018298;
  case 2:
    puts("(INPUT_TERMINAL)");
    local_c8 = (void *)FUN_00023840(param_1,param_2[7]);
    sVar5 = *(short *)(param_2 + 4);
    acStack_a0[0] = '\0';
    uVar16 = 8;
    if (sVar5 == 0x201) {
      uVar16 = 0xf;
    }
    iVar10 = 0;
    if (sVar5 == 0x201) {
      iVar10 = 7;
    }
    iVar9 = FUN_00022850(sVar5);
    if (iVar9 != 0) {
      snprintf(acStack_a0,0x80,"%s",iVar9);
    }
    if (*param_2 < uVar16) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n"
                 ,param_2[3],sVar5,acStack_a0,param_2[6]);
    pvVar18 = local_c8;
    __printf_chk(1,"        iTerminal           %5u %s\n",param_2[7],local_c8);
    if (sVar5 == 0x201) {
      iVar10 = iVar10 + (uint)param_2[0xe];
      __printf_chk(1,
                   "        wObjectiveFocalLengthMin  %5u\n        wObjectiveFocalLengthMax  %5u\n        wOcularFocalLength        %5u\n        bControlSize              %5u\n"
                   ,*(undefined2 *)(param_2 + 8),*(undefined2 *)(param_2 + 10),
                   *(undefined2 *)(param_2 + 0xc),(uint)param_2[0xe]);
      bVar3 = param_2[0xe];
      if (bVar3 == 0) {
        uVar16 = 0;
      }
      else {
        uVar16 = (uint)param_2[iVar10 + 7];
        if (bVar3 != 1) {
          uVar8 = CONCAT11(param_2[iVar10 + 7],param_2[iVar10 + 6]);
          uVar16 = (uint)uVar8;
          if (bVar3 != 2) {
            uVar16 = (uint)CONCAT21(uVar8,param_2[iVar10 + 5]);
          }
        }
      }
      uVar17 = 0;
      __printf_chk(1,"        bmControls           0x%08x\n",uVar16,pvVar18);
      if (param_3 == 1) {
        do {
          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {
            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);
          }
          uVar17 = uVar17 + 1;
        } while (uVar17 != 0x16);
      }
      else {
        do {
          if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {
            __printf_chk(1,&UNK_000243b1,(&PTR_s_Scanning_Mode_00037de0)[uVar17],pvVar18);
          }
          uVar17 = uVar17 + 1;
        } while (uVar17 != 0x13);
      }
      uVar16 = iVar10 + 8;
    }
    if (*param_2 <= uVar16) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);
    if (uVar16 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14,pvVar18);
      } while (uVar16 < *param_2);
    }
    break;
  case 3:
    puts("(OUTPUT_TERMINAL)");
    local_c8 = (void *)FUN_00023840(param_1,param_2[8]);
    uVar6 = *(undefined2 *)(param_2 + 4);
    acStack_a0[0] = '\0';
    iVar10 = FUN_00022850(uVar6);
    if (iVar10 != 0) {
      snprintf(acStack_a0,0x80,"%s",iVar10);
    }
    if (*param_2 < 9) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bTerminalID         %5u\n        wTerminalType      0x%04x %s\n        bAssocTerminal      %5u\n        bSourceID           %5u\n        iTerminal           %5u %s\n"
                 ,param_2[3],uVar6,acStack_a0,param_2[6],param_2[7],param_2[8],local_c8);
    if (*param_2 < 10) goto code_r0x00018298;
    uVar16 = 9;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e);
    if (9 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14);
      } while (uVar16 < *param_2);
    }
    break;
  case 4:
    puts("(SELECTOR_UNIT)");
    uVar17 = (uint)param_2[4];
    uVar16 = uVar17 + 6;
    if (*param_2 < uVar16) {
      puts("      Warning: Descriptor too short");
    }
    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar17 + 5]);
    __printf_chk(1,"        bUnitID             %5u\n        bNrInPins           %5u\n",param_2[3],
                 uVar17);
    if (uVar17 != 0) {
      uVar12 = 0;
      do {
        uVar11 = uVar12 + 1;
        __printf_chk(1,"        baSource(%2u)        %5u\n",uVar12,param_2[uVar12 + 5]);
        uVar12 = uVar11;
      } while (uVar17 != uVar11);
    }
    pvVar18 = local_c8;
    __printf_chk(1,"        iSelector           %5u %s\n",param_2[uVar17 + 5],local_c8);
    if (*param_2 <= uVar16) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);
    if (uVar16 < *param_2) {
      do {
        pbVar14 = param_2 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1," %02x",*pbVar14,pvVar18);
      } while (uVar16 < *param_2);
    }
    break;
  case 5:
    puts("(PROCESSING_UNIT)");
    uVar16 = (uint)param_2[7];
    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + 8]);
    if ((uint)*param_2 < uVar16 + 10) {
      puts("      Warning: Descriptor too short");
    }
    __printf_chk(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        wMaxMultiplier      %5u\n        bControlSize        %5u\n"
                 ,param_2[3],param_2[4],*(undefined2 *)(param_2 + 5),uVar16);
    if (uVar16 == 0) {
      uVar17 = 0;
    }
    else {
      pbVar14 = param_2 + uVar16;
      uVar17 = 0;
      uVar12 = 0;
      do {
        pbVar1 = pbVar14 + 7;
        uVar12 = uVar12 + 1;
        pbVar14 = pbVar14 + -1;
        uVar17 = uVar17 << 8 | (uint)*pbVar1;
        if (2 < uVar12) break;
      } while (uVar12 < uVar16);
    }
    uVar12 = 0;
    __printf_chk(1,"        bmControls     0x%08x\n",uVar17);
    if (param_3 == 1) {
      do {
        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {
          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);
        }
        uVar12 = uVar12 + 1;
      } while (uVar12 != 0x13);
    }
    else {
      do {
        if ((uVar17 >> (uVar12 & 0x1f) & 1) != 0) {
          __printf_chk(1,&UNK_000243b1,(&PTR_s_Brightness_00037d80)[uVar12]);
        }
        uVar12 = uVar12 + 1;
      } while (uVar12 != 0x12);
    }
    bVar3 = param_2[uVar16 + 9];
    __printf_chk(1,"        iProcessing         %5u %s\n        bmVideoStandards     0x%02x\n",
                 param_2[uVar16 + 8],local_c8,bVar3);
    if ((bVar3 & 1) != 0) {
      __printf_chk(1,&UNK_000243b1,&DAT_0002412f);
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_000243f3);
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_00024401);
    }
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_0002440e);
    }
    if ((bVar3 & 0x10) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_0002441d);
    }
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,&UNK_000243b1,&UNK_0002442b);
    }
    goto code_r0x00018298;
  case 6:
    puts("(EXTENSION_UNIT)");
    uVar16 = (uint)param_2[0x15];
    uVar17 = (uint)param_2[uVar16 + 0x16];
    uVar12 = uVar16 + uVar17 + 0x18;
    local_c8 = (void *)FUN_00023840(param_1,param_2[uVar16 + uVar17 + 0x17]);
    if (*param_2 < uVar12) {
      puts("      Warning: Descriptor too short");
    }
    bVar3 = param_2[0x14];
    uVar11 = (uint)param_2[0x13];
    bVar4 = param_2[0x15];
    __sprintf_chk(0x3fa00,1,0x27,
                  "{%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
                  param_2[7],param_2[6],param_2[5],param_2[4],param_2[9],param_2[8],param_2[0xb],
                  param_2[10],param_2[0xc],param_2[0xd],param_2[0xe],param_2[0xf],param_2[0x10],
                  param_2[0x11],param_2[0x12],uVar11);
    __printf_chk(1,
                 "        bUnitID             %5u\n        guidExtensionCode         %s\n        bNumControl         %5u\n        bNrPins             %5u\n"
                 ,param_2[3],0x3fa00,bVar3,bVar4);
    if (uVar16 != 0) {
      uVar15 = 0;
      do {
        uVar11 = (uint)param_2[uVar15 + 0x16];
        uVar13 = uVar15 + 1;
        __printf_chk(1,"        baSourceID(%2u)      %5u\n",uVar15,uVar11);
        uVar15 = uVar13;
      } while (uVar16 != uVar13);
    }
    __printf_chk(1,"        bControlSize        %5u\n",param_2[uVar16 + 0x16],uVar11);
    if (uVar17 != 0) {
      uVar11 = 0;
      do {
        uVar15 = uVar11 + 1;
        __printf_chk(1,"        bmControls(%2u)       0x%02x\n",uVar11,
                     param_2[uVar11 + uVar16 + 0x17]);
        uVar11 = uVar15;
      } while (uVar17 != uVar15);
    }
    pvVar18 = local_c8;
    __printf_chk(1,"        iExtension          %5u %s\n",param_2[uVar16 + uVar17 + 0x17],local_c8);
    if (*param_2 <= uVar12) goto code_r0x00018298;
    __printf_chk(1,"%sjunk at descriptor end:",&DAT_0002438e,pvVar18);
    if (uVar12 < *param_2) {
      do {
        pbVar14 = param_2 + uVar12;
        uVar12 = uVar12 + 1;
        __printf_chk(1," %02x",*pbVar14,pvVar18);
      } while (uVar12 < *param_2);
    }
    break;
  case 7:
    puts("(ENCODING UNIT)");
    local_c8 = (void *)FUN_00023840(param_1,param_2[5]);
    if (*param_2 < 0xd) {
      puts("      Warning: Descriptor too short");
    }
    uVar16 = 0;
    __printf_chk(1,
                 "        bUnitID             %5u\n        bSourceID           %5u\n        iEncoding           %5u %s\n        bControlSize        %5u\n"
                 ,param_2[3],param_2[4],param_2[5],local_c8,param_2[6]);
    uVar7 = *(uint3 *)(param_2 + 7);
    __printf_chk(1,"        bmControls              0x%08x\n",(uint)uVar7);
    do {
      while ((uVar7 >> (uVar16 & 0x1f) & 1) != 0) {
        ppuVar2 = &PTR_s_Select_Layer_00037d20 + uVar16;
        uVar16 = uVar16 + 1;
        __printf_chk(1,&UNK_000243b1,*ppuVar2);
        if (uVar16 == 0x14) goto code_r0x000189ea;
      }
      uVar16 = uVar16 + 1;
    } while (uVar16 != 0x14);
code_r0x000189ea:
    uVar17 = 0;
    uVar16 = ((uint)param_2[0xb] | CONCAT31(uVar7,param_2[0xc]) << 8) << 8 | (uint)param_2[10];
    __printf_chk(1,"        bmControlsRuntime       0x%08x\n",uVar16);
    do {
      if ((uVar16 >> (uVar17 & 0x1f) & 1) != 0) {
        __printf_chk(1,&UNK_000243b1,(&PTR_s_Select_Layer_00037d20)[uVar17]);
      }
      uVar17 = uVar17 + 1;
    } while (uVar17 != 0x14);
    goto code_r0x00018298;
  }
  putchar(10);
code_r0x00018298:
  free(local_c8);
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00023ad0();
}

