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

char * __regparm3 dump_comm_descriptor(libusb_device_handle *dev,uchar *buf,char *indent)

{
  uchar *puVar1;
  int iVar2;
  byte bVar3;
  char *pcVar4;
  char *pcVar5;
  char *pcVar6;
  int iVar7;
  uchar uVar8;
  uchar uVar9;
  
  switch(buf[2]) {
  case '\0':
    pcVar6 = "Header";
    if (*buf != '\x05') break;
    uVar9 = buf[3];
    uVar8 = buf[4];
    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";
    goto LAB_00018b91;
  case '\x01':
    pcVar6 = "Call Management";
    if (*buf != '\x05') break;
    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",
                 buf[3]);
    bVar3 = buf[3];
    if ((bVar3 & 1) != 0) {
      __printf_chk(1,"%s    call management\n","      ");
      bVar3 = buf[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    use DataInterface\n","      ");
    }
    pcVar5 = "%s  bDataInterface          %d\n";
    goto LAB_00019140;
  case '\x02':
    pcVar6 = "ACM";
    if (*buf != '\x04') break;
    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);
    bVar3 = buf[3];
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,"%s    connection notifications\n","      ");
      bVar3 = buf[3];
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    sends break\n","      ");
      bVar3 = buf[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    line coding and serial state\n","      ");
      bVar3 = buf[3];
    }
    if ((bVar3 & 1) == 0) {
LAB_00018d54:
      pcVar6 = (char *)0x0;
      goto LAB_00018be1;
    }
    pcVar5 = "%s    get/set/clear comm features\n";
    goto LAB_00019140;
  default:
    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");
    dump_bytes(buf,(uint)*buf);
    return "unrecognized comm descriptor";
  case '\x06':
    pcVar6 = "Union";
    if (*buf < 5) break;
    iVar7 = 4;
    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",
                 "      ","      ",buf[3],"      ");
    if (4 < *buf) {
      do {
        puVar1 = buf + iVar7;
        iVar7 = iVar7 + 1;
        __printf_chk(1,&DAT_00022691,*puVar1);
      } while (iVar7 < (int)(uint)*buf);
    }
    pcVar6 = (char *)0x0;
    putchar(10);
    goto LAB_00018be1;
  case '\a':
    pcVar6 = "Country Selection";
    if ((5 < *buf) && ((*buf & 1) == 0)) {
      pcVar6 = get_dev_string(dev,buf[3]);
      pcVar5 = "(??)";
      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",
                   buf[3],pcVar5);
      if (4 < *buf) {
        iVar7 = 4;
        do {
          iVar2 = iVar7 + 1;
          puVar1 = buf + iVar7;
          iVar7 = iVar7 + 2;
          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5
                      );
        } while (iVar7 < (int)(uint)*buf);
      }
      goto LAB_00018be1;
    }
    break;
  case '\b':
    pcVar6 = "Telephone Operations";
    if (*buf != '\x04') break;
    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",
                 "      ",buf[3]);
    bVar3 = buf[3];
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    computer centric mode\n","      ");
      bVar3 = buf[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    standalone mode\n","      ");
      bVar3 = buf[3];
    }
    if ((bVar3 & 1) == 0) goto LAB_00018d54;
    pcVar5 = "%s    simple mode\n";
    goto LAB_00019140;
  case '\n':
    pcVar6 = "Network Channel Terminal";
    if (*buf == '\a') {
      pcVar6 = get_dev_string(dev,buf[4]);
      __printf_chk(1,
                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"
                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])
      ;
      goto LAB_00018be1;
    }
    break;
  case '\x0f':
    pcVar6 = "Ethernet";
    if (*buf == '\r') {
      pcVar6 = get_dev_string(dev,buf[3]);
      pcVar5 = "(??)";
      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,
                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"
                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));
      __printf_chk(1,
                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"
                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",
                   buf[0xc]);
      goto LAB_00018be1;
    }
    break;
  case '\x11':
    pcVar6 = "WHCM version";
    if (*buf != '\x05') break;
    uVar9 = buf[3];
    uVar8 = buf[4];
    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";
    goto LAB_00018b91;
  case '\x12':
    pcVar6 = "MDLM";
    if (*buf != '\x15') break;
    get_guid(buf + 5);
    uVar9 = buf[3];
    uVar8 = buf[4];
    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";
    goto LAB_00018b91;
  case '\x13':
    pcVar6 = "MDLM detail";
    if (4 < *buf) {
      pcVar6 = (char *)0x0;
      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",
                   "      ","      ",buf[3],"      ");
      dump_bytes(buf + 4,*buf - 4);
      goto LAB_00018be1;
    }
    break;
  case '\x14':
    pcVar6 = "Device Management";
    if (*buf != '\a') break;
    uVar9 = buf[3];
    uVar8 = buf[4];
    pcVar5 = 
    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";
    goto LAB_00018b91;
  case '\x15':
    pcVar6 = "OBEX";
    if (*buf != '\x05') break;
    uVar9 = buf[3];
    uVar8 = buf[4];
    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";
LAB_00018b91:
    pcVar6 = (char *)0x0;
    __printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);
LAB_00018be1:
    free(pcVar6);
    return (char *)0x0;
  case '\x16':
    pcVar6 = "Command Set";
    if (*buf == '\x16') {
      pcVar6 = get_dev_string(dev,buf[5]);
      pcVar4 = get_guid(buf + 6);
      pcVar5 = "(??)";
      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,
                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"
                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);
      goto LAB_00018be1;
    }
    break;
  case '\x1a':
    pcVar6 = "NCM";
    if (*buf != '\x06') break;
    __printf_chk(1,
                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",
                 "      ","      ",buf[4],buf[3],"      ",buf[5]);
    bVar3 = buf[5];
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,"%s    8-byte ntb input size\n","      ");
      bVar3 = buf[5];
    }
    if ((bVar3 & 0x10) != 0) {
      __printf_chk(1,"%s    crc mode\n","      ");
      bVar3 = buf[5];
    }
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,"%s    max datagram size\n","      ");
      bVar3 = buf[5];
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    encapsulated commands\n","      ");
      bVar3 = buf[5];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    net address\n","      ");
      bVar3 = buf[5];
    }
    if ((bVar3 & 1) == 0) goto LAB_00018d54;
    pcVar5 = "%s    packet filter\n";
    goto LAB_00019140;
  case '\x1b':
    pcVar6 = "MBIM";
    if (*buf != '\f') break;
    __printf_chk(1,
                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"
                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],
                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);
    bVar3 = buf[0xb];
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,"%s    8-byte ntb input size\n","      ");
      bVar3 = buf[0xb];
    }
    if ((bVar3 & 8) == 0) goto LAB_00018d54;
    pcVar5 = "%s    max datagram size\n";
LAB_00019140:
    pcVar6 = (char *)0x0;
    __printf_chk(1,pcVar5,"      ");
    goto LAB_00018be1;
  case '\x1c':
    pcVar6 = "MBIM Extended";
    if (*buf == '\b') {
      pcVar6 = (char *)0x0;
      __printf_chk(1,
                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"
                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",
                   *(undefined2 *)(buf + 6));
      goto LAB_00018be1;
    }
  }
  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);
  dump_bytes(buf,(uint)*buf);
  return "corrupt comm descriptor";
}



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

char * __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)

{
  byte *pbVar1;
  int iVar2;
  byte bVar3;
  undefined4 uVar4;
  char *pcVar5;
  char *pcVar6;
  int iVar7;
  byte bVar8;
  
  switch(param_2[2]) {
  case 0:
    pcVar6 = "Header";
    if (*param_2 != 5) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";
    goto code_r0x00018b91;
  case 1:
    pcVar6 = "Call Management";
    if (*param_2 != 5) break;
    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",
                 param_2[3]);
    bVar3 = param_2[3];
    if ((bVar3 & 1) != 0) {
      __printf_chk(1,"%s    call management\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    use DataInterface\n","      ");
    }
    pcVar5 = "%s  bDataInterface          %d\n";
    goto code_r0x00019140;
  case 2:
    pcVar6 = "ACM";
    if (*param_2 != 4) break;
    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);
    bVar3 = param_2[3];
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,"%s    connection notifications\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    sends break\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    line coding and serial state\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 1) == 0) {
code_r0x00018d54:
      pcVar6 = (char *)0x0;
      goto code_r0x00018be1;
    }
    pcVar5 = "%s    get/set/clear comm features\n";
    goto code_r0x00019140;
  default:
    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");
    FUN_00016990();
    return "unrecognized comm descriptor";
  case 6:
    pcVar6 = "Union";
    if (*param_2 < 5) break;
    iVar7 = 4;
    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",
                 "      ","      ",param_2[3],"      ");
    if (4 < *param_2) {
      do {
        pbVar1 = param_2 + iVar7;
        iVar7 = iVar7 + 1;
        __printf_chk(1,&UNK_00022691,*pbVar1);
      } while (iVar7 < (int)(uint)*param_2);
    }
    pcVar6 = (char *)0x0;
    putchar(10);
    goto code_r0x00018be1;
  case 7:
    pcVar6 = "Country Selection";
    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);
      pcVar5 = "(??)";
      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",
                   param_2[3],pcVar5);
      if (4 < *param_2) {
        iVar7 = 4;
        do {
          iVar2 = iVar7 + 1;
          pbVar1 = param_2 + iVar7;
          iVar7 = iVar7 + 2;
          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],
                       pcVar5);
        } while (iVar7 < (int)(uint)*param_2);
      }
      goto code_r0x00018be1;
    }
    break;
  case 8:
    pcVar6 = "Telephone Operations";
    if (*param_2 != 4) break;
    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",
                 "      ",param_2[3]);
    bVar3 = param_2[3];
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    computer centric mode\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    standalone mode\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 1) == 0) goto code_r0x00018d54;
    pcVar5 = "%s    simple mode\n";
    goto code_r0x00019140;
  case 10:
    pcVar6 = "Network Channel Terminal";
    if (*param_2 == 7) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);
      __printf_chk(1,
                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"
                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],
                   "      ",param_2[6]);
      goto code_r0x00018be1;
    }
    break;
  case 0xf:
    pcVar6 = "Ethernet";
    if (*param_2 == 0xd) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);
      pcVar5 = "(??)";
      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,
                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"
                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));
      __printf_chk(1,
                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"
                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),
                   "      ",param_2[0xc]);
      goto code_r0x00018be1;
    }
    break;
  case 0x11:
    pcVar6 = "WHCM version";
    if (*param_2 != 5) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";
    goto code_r0x00018b91;
  case 0x12:
    pcVar6 = "MDLM";
    if (*param_2 != 0x15) break;
    FUN_00016b50();
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";
    goto code_r0x00018b91;
  case 0x13:
    pcVar6 = "MDLM detail";
    if (4 < *param_2) {
      pcVar6 = (char *)0x0;
      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",
                   "      ","      ",param_2[3],"      ");
      FUN_00016990();
      goto code_r0x00018be1;
    }
    break;
  case 0x14:
    pcVar6 = "Device Management";
    if (*param_2 != 7) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = 
    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";
    goto code_r0x00018b91;
  case 0x15:
    pcVar6 = "OBEX";
    if (*param_2 != 5) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";
code_r0x00018b91:
    pcVar6 = (char *)0x0;
    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);
code_r0x00018be1:
    free(pcVar6);
    return (char *)0x0;
  case 0x16:
    pcVar6 = "Command Set";
    if (*param_2 == 0x16) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);
      uVar4 = FUN_00016b50();
      pcVar5 = "(??)";
      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,
                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"
                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",
                   uVar4);
      goto code_r0x00018be1;
    }
    break;
  case 0x1a:
    pcVar6 = "NCM";
    if (*param_2 != 6) break;
    __printf_chk(1,
                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",
                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);
    bVar3 = param_2[5];
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,"%s    8-byte ntb input size\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 0x10) != 0) {
      __printf_chk(1,"%s    crc mode\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,"%s    max datagram size\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    encapsulated commands\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    net address\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 1) == 0) goto code_r0x00018d54;
    pcVar5 = "%s    packet filter\n";
    goto code_r0x00019140;
  case 0x1b:
    pcVar6 = "MBIM";
    if (*param_2 != 0xc) break;
    __printf_chk(1,
                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"
                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),
                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),
                 "      ",param_2[0xb]);
    bVar3 = param_2[0xb];
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,"%s    8-byte ntb input size\n","      ");
      bVar3 = param_2[0xb];
    }
    if ((bVar3 & 8) == 0) goto code_r0x00018d54;
    pcVar5 = "%s    max datagram size\n";
code_r0x00019140:
    pcVar6 = (char *)0x0;
    __printf_chk(1,pcVar5,"      ");
    goto code_r0x00018be1;
  case 0x1c:
    pcVar6 = "MBIM Extended";
    if (*param_2 == 8) {
      pcVar6 = (char *)0x0;
      __printf_chk(1,
                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"
                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",
                   *(undefined2 *)(param_2 + 6));
      goto code_r0x00018be1;
    }
  }
  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);
  FUN_00016990();
  return "corrupt comm descriptor";
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00016850
ADD EBX,0x1f565
SUB ESP,0x1c
CMP byte ptr [EDX + 0x2],0x1c
JA 0x00019158
MOVZX EDX,byte ptr [EDX + 0x2]
MOV ECX,dword ptr [EBX + EDX*0x4 + 0xffff065c]
ADD ECX,EBX
JMP ECX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
LEA EAX,[EBX + 0xfffea54b]
PUSH EAX
LEA EAX,[EBX + 0xfffea767]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOVZX EDX,byte ptr [ESI]
MOV EAX,ESI
CALL 0x00016990
ADD ESP,0x10
LEA EAX,[EBX + 0xfffea619]
JMP 0x00018af9
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}\n\n" comment (function_definition "char * __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00018a90(undefined4 param_1,byte *param_2)" identifier (parameter_list "(undefined4 param_1,byte *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (switch_statement "switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }" switch (parenthesized_expression "(param_2[2])" ( (subscript_expression "param_2[2]" identifier [ number_literal ]) )) (compound_statement "{\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }" { (case_statement "case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "Header";" (assignment_expression "pcVar6 = "Header"" identifier = (string_literal ""Header"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" identifier = (string_literal ""%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "Call Management";" (assignment_expression "pcVar6 = "Call Management"" identifier = (string_literal ""Call Management"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);" (call_expression "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3])" identifier (argument_list "(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3])" ( number_literal , (string_literal ""%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\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,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    call management\n","      ");" (call_expression "__printf_chk(1,"%s    call management\n","      ")" identifier (argument_list "(1,"%s    call management\n","      ")" ( number_literal , (string_literal ""%s    call management\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\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,"%s    use DataInterface\n","      ");\n    }" { (expression_statement "__printf_chk(1,"%s    use DataInterface\n","      ");" (call_expression "__printf_chk(1,"%s    use DataInterface\n","      ")" identifier (argument_list "(1,"%s    use DataInterface\n","      ")" ( number_literal , (string_literal ""%s    use DataInterface\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) })) (expression_statement "pcVar5 = "%s  bDataInterface          %d\n";" (assignment_expression "pcVar5 = "%s  bDataInterface          %d\n"" identifier = (string_literal ""%s  bDataInterface          %d\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "ACM";" (assignment_expression "pcVar6 = "ACM"" identifier = (string_literal ""ACM"" " string_content ")) ;) (if_statement "if (*param_2 != 4) break;" if (parenthesized_expression "(*param_2 != 4)" ( (binary_expression "*param_2 != 4" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);" (call_expression "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3])" identifier (argument_list "(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3])" ( number_literal , (string_literal ""%sCDC ACM:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\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,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    connection notifications\n","      ");" (call_expression "__printf_chk(1,"%s    connection notifications\n","      ")" identifier (argument_list "(1,"%s    connection notifications\n","      ")" ( number_literal , (string_literal ""%s    connection notifications\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\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,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    sends break\n","      ");" (call_expression "__printf_chk(1,"%s    sends break\n","      ")" identifier (argument_list "(1,"%s    sends break\n","      ")" ( number_literal , (string_literal ""%s    sends break\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\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,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    line coding and serial state\n","      ");" (call_expression "__printf_chk(1,"%s    line coding and serial state\n","      ")" identifier (argument_list "(1,"%s    line coding and serial state\n","      ")" ( number_literal , (string_literal ""%s    line coding and serial state\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\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 "{\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }" { (labeled_statement "code_r0x00018d54:\n      pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (expression_statement "pcVar5 = "%s    get/set/clear comm features\n";" (assignment_expression "pcVar5 = "%s    get/set/clear comm features\n"" identifier = (string_literal ""%s    get/set/clear comm features\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";" default : (expression_statement "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");" (call_expression "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ")" identifier (argument_list "(1,"%sUNRECOGNIZED CDC: ","      ")" ( number_literal , (string_literal ""%sUNRECOGNIZED CDC: "" " string_content ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (return_statement "return "unrecognized comm descriptor";" return (string_literal ""unrecognized comm descriptor"" " string_content ") ;)) (case_statement "case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;" case number_literal : (expression_statement "pcVar6 = "Union";" (assignment_expression "pcVar6 = "Union"" identifier = (string_literal ""Union"" " string_content ")) ;) (if_statement "if (*param_2 < 5) break;" if (parenthesized_expression "(*param_2 < 5)" ( (binary_expression "*param_2 < 5" (pointer_expression "*param_2" * identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");" (call_expression "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ")" identifier (argument_list "(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ")" ( number_literal , (string_literal ""%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         "" " string_content escape_sequence string_content escape_sequence string_content ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") ))) ;) (if_statement "if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }" if (parenthesized_expression "(4 < *param_2)" ( (binary_expression "4 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }" { (do_statement "do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);" do (compound_statement "{\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      }" { (expression_statement "pbVar1 = param_2 + iVar7;" (assignment_expression "pbVar1 = param_2 + iVar7" identifier = (binary_expression "param_2 + iVar7" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&UNK_00022691,*pbVar1);" (call_expression "__printf_chk(1,&UNK_00022691,*pbVar1)" identifier (argument_list "(1,&UNK_00022691,*pbVar1)" ( number_literal , (pointer_expression "&UNK_00022691" & identifier) , (pointer_expression "*pbVar1" * identifier) ))) ;) }) while (parenthesized_expression "(iVar7 < (int)(uint)*param_2)" ( (binary_expression "iVar7 < (int)(uint)*param_2" identifier < (binary_expression "(int)(uint)*param_2" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) )) ;) })) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;)) (case_statement "case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Country Selection";" (assignment_expression "pcVar6 = "Country Selection"" identifier = (string_literal ""Country Selection"" " string_content ")) ;) (if_statement "if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "((5 < *param_2) && ((*param_2 & 1) == 0))" ( (binary_expression "(5 < *param_2) && ((*param_2 & 1) == 0)" (parenthesized_expression "(5 < *param_2)" ( (binary_expression "5 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) && (parenthesized_expression "((*param_2 & 1) == 0)" ( (binary_expression "(*param_2 & 1) == 0" (parenthesized_expression "(*param_2 & 1)" ( (binary_expression "*param_2 & 1" (pointer_expression "*param_2" * identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[3])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[3])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[3])" identifier (argument_list "(param_1,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((param_2[3] != 0) && (*pcVar6 != '\0'))" ( (binary_expression "(param_2[3] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[3] != 0)" ( (binary_expression "param_2[3] != 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);" (call_expression "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5)" identifier (argument_list "(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5)" ( number_literal , (string_literal ""%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }" if (parenthesized_expression "(4 < *param_2)" ( (binary_expression "4 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }" { (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (do_statement "do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);" do (compound_statement "{\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        }" { (expression_statement "iVar2 = iVar7 + 1;" (assignment_expression "iVar2 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pbVar1 = param_2 + iVar7;" (assignment_expression "pbVar1 = param_2 + iVar7" identifier = (binary_expression "param_2 + iVar7" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);" (call_expression "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5)" identifier (argument_list "(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5)" ( number_literal , (string_literal ""%s  wCountryCode          0x%02x%02x\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (pointer_expression "*pbVar1" * identifier) , (subscript_expression "param_2[iVar2]" identifier [ identifier ]) , identifier ))) ;) }) while (parenthesized_expression "(iVar7 < (int)(uint)*param_2)" ( (binary_expression "iVar7 < (int)(uint)*param_2" identifier < (binary_expression "(int)(uint)*param_2" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) )) ;) })) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "Telephone Operations";" (assignment_expression "pcVar6 = "Telephone Operations"" identifier = (string_literal ""Telephone Operations"" " string_content ")) ;) (if_statement "if (*param_2 != 4) break;" if (parenthesized_expression "(*param_2 != 4)" ( (binary_expression "*param_2 != 4" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);" (call_expression "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3])" identifier (argument_list "(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3])" ( number_literal , (string_literal ""%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\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,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    computer centric mode\n","      ");" (call_expression "__printf_chk(1,"%s    computer centric mode\n","      ")" identifier (argument_list "(1,"%s    computer centric mode\n","      ")" ( number_literal , (string_literal ""%s    computer centric mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\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,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    standalone mode\n","      ");" (call_expression "__printf_chk(1,"%s    standalone mode\n","      ")" identifier (argument_list "(1,"%s    standalone mode\n","      ")" ( number_literal , (string_literal ""%s    standalone mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) goto code_r0x00018d54;" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    simple mode\n";" (assignment_expression "pcVar5 = "%s    simple mode\n"" identifier = (string_literal ""%s    simple mode\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Network Channel Terminal";" (assignment_expression "pcVar6 = "Network Channel Terminal"" identifier = (string_literal ""Network Channel Terminal"" " string_content ")) ;) (if_statement "if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 7)" ( (binary_expression "*param_2 == 7" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[4])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[4])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[4])" identifier (argument_list "(param_1,param_2[4])" ( identifier , (subscript_expression "param_2[4]" identifier [ number_literal ]) ))))) ;) (expression_statement "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);" (call_expression "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6])" identifier (argument_list "(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6])" ( number_literal , (string_literal ""%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[6]" identifier [ number_literal ]) ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Ethernet";" (assignment_expression "pcVar6 = "Ethernet"" identifier = (string_literal ""Ethernet"" " string_content ")) ;) (if_statement "if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 0xd)" ( (binary_expression "*param_2 == 0xd" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[3])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[3])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[3])" identifier (argument_list "(param_1,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((param_2[3] != 0) && (*pcVar6 != '\0'))" ( (binary_expression "(param_2[3] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[3] != 0)" ( (binary_expression "param_2[3] != 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));" (call_expression "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4))" identifier (argument_list "(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4))" ( number_literal , (string_literal ""%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);" (call_expression "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc])" identifier (argument_list "(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc])" ( number_literal , (string_literal ""%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[0xc]" identifier [ number_literal ]) ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "WHCM version";" (assignment_expression "pcVar6 = "WHCM version"" identifier = (string_literal ""WHCM version"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" identifier = (string_literal ""%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "MDLM";" (assignment_expression "pcVar6 = "MDLM"" identifier = (string_literal ""MDLM"" " string_content ")) ;) (if_statement "if (*param_2 != 0x15) break;" if (parenthesized_expression "(*param_2 != 0x15)" ( (binary_expression "*param_2 != 0x15" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "FUN_00016b50();" (call_expression "FUN_00016b50()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";" (assignment_expression "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" identifier = (string_literal ""%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "MDLM detail";" (assignment_expression "pcVar6 = "MDLM detail"" identifier = (string_literal ""MDLM detail"" " string_content ")) ;) (if_statement "if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(4 < *param_2)" ( (binary_expression "4 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");" (call_expression "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ")" identifier (argument_list "(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ")" ( number_literal , (string_literal ""%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         "" " string_content escape_sequence string_content escape_sequence string_content ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "Device Management";" (assignment_expression "pcVar6 = "Device Management"" identifier = (string_literal ""Device Management"" " string_content ")) ;) (if_statement "if (*param_2 != 7) break;" if (parenthesized_expression "(*param_2 != 7)" ( (binary_expression "*param_2 != 7" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";" (assignment_expression "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" identifier = (string_literal ""%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;" case number_literal : (expression_statement "pcVar6 = "OBEX";" (assignment_expression "pcVar6 = "OBEX"" identifier = (string_literal ""OBEX"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" identifier = (string_literal ""%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "code_r0x00018b91:\n    pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "__printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);" (call_expression "__printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3)" identifier (argument_list "(1,pcVar5,"      ","      ",bVar8,bVar3)" ( number_literal , identifier , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , identifier , identifier ))) ;) (labeled_statement "code_r0x00018be1:\n    free(pcVar6);" statement_identifier : (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;)) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Command Set";" (assignment_expression "pcVar6 = "Command Set"" identifier = (string_literal ""Command Set"" " string_content ")) ;) (if_statement "if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 0x16)" ( (binary_expression "*param_2 == 0x16" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[5])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[5])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[5])" identifier (argument_list "(param_1,param_2[5])" ( identifier , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))))) ;) (expression_statement "uVar4 = FUN_00016b50();" (assignment_expression "uVar4 = FUN_00016b50()" identifier = (call_expression "FUN_00016b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((param_2[5] != 0) && (*pcVar6 != '\0'))" ( (binary_expression "(param_2[5] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[5] != 0)" ( (binary_expression "param_2[5] != 0" (subscript_expression "param_2[5]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);" (call_expression "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4)" identifier (argument_list "(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4)" ( number_literal , (string_literal ""%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , identifier ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "NCM";" (assignment_expression "pcVar6 = "NCM"" identifier = (string_literal ""NCM"" " string_content ")) ;) (if_statement "if (*param_2 != 6) break;" if (parenthesized_expression "(*param_2 != 6)" ( (binary_expression "*param_2 != 6" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);" (call_expression "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5])" identifier (argument_list "(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5])" ( number_literal , (string_literal ""%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" identifier (argument_list "(1,"%s    8-byte ntb input size\n","      ")" ( number_literal , (string_literal ""%s    8-byte ntb input size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\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,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    crc mode\n","      ");" (call_expression "__printf_chk(1,"%s    crc mode\n","      ")" identifier (argument_list "(1,"%s    crc mode\n","      ")" ( number_literal , (string_literal ""%s    crc mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\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,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    max datagram size\n","      ");" (call_expression "__printf_chk(1,"%s    max datagram size\n","      ")" identifier (argument_list "(1,"%s    max datagram size\n","      ")" ( number_literal , (string_literal ""%s    max datagram size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\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,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    encapsulated commands\n","      ");" (call_expression "__printf_chk(1,"%s    encapsulated commands\n","      ")" identifier (argument_list "(1,"%s    encapsulated commands\n","      ")" ( number_literal , (string_literal ""%s    encapsulated commands\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\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,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    net address\n","      ");" (call_expression "__printf_chk(1,"%s    net address\n","      ")" identifier (argument_list "(1,"%s    net address\n","      ")" ( number_literal , (string_literal ""%s    net address\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) goto code_r0x00018d54;" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    packet filter\n";" (assignment_expression "pcVar5 = "%s    packet filter\n"" identifier = (string_literal ""%s    packet filter\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;" case number_literal : (expression_statement "pcVar6 = "MBIM";" (assignment_expression "pcVar6 = "MBIM"" identifier = (string_literal ""MBIM"" " string_content ")) ;) (if_statement "if (*param_2 != 0xc) break;" if (parenthesized_expression "(*param_2 != 0xc)" ( (binary_expression "*param_2 != 0xc" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);" (call_expression "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb])" identifier (argument_list "(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb])" ( number_literal , (string_literal ""%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[7]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[8]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined2 *)(param_2 + 9)" * (cast_expression "(undefined2 *)(param_2 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 9)" ( (binary_expression "param_2 + 9" identifier + number_literal) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[0xb]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[0xb];" (assignment_expression "bVar3 = param_2[0xb]" identifier = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }" { (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" identifier (argument_list "(1,"%s    8-byte ntb input size\n","      ")" ( number_literal , (string_literal ""%s    8-byte ntb input size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[0xb];" (assignment_expression "bVar3 = param_2[0xb]" identifier = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 8) == 0) goto code_r0x00018d54;" if (parenthesized_expression "((bVar3 & 8) == 0)" ( (binary_expression "(bVar3 & 8) == 0" (parenthesized_expression "(bVar3 & 8)" ( (binary_expression "bVar3 & 8" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    max datagram size\n";" (assignment_expression "pcVar5 = "%s    max datagram size\n"" identifier = (string_literal ""%s    max datagram size\n"" " string_content escape_sequence ")) ;) (labeled_statement "code_r0x00019140:\n    pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "__printf_chk(1,pcVar5,"      ");" (call_expression "__printf_chk(1,pcVar5,"      ")" identifier (argument_list "(1,pcVar5,"      ")" ( number_literal , identifier , (string_literal ""      "" " string_content ") ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;)) (case_statement "case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" case number_literal : (expression_statement "pcVar6 = "MBIM Extended";" (assignment_expression "pcVar6 = "MBIM Extended"" identifier = (string_literal ""MBIM Extended"" " string_content ")) ;) (if_statement "if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 8)" ( (binary_expression "*param_2 == 8" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));" (call_expression "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6))" identifier (argument_list "(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6))" ( number_literal , (string_literal ""%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined2 *)(param_2 + 6)" * (cast_expression "(undefined2 *)(param_2 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) }))) })) (expression_statement "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);" (call_expression "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6)" identifier (argument_list "(1,"%sINVALID CDC (%s): ","      ",pcVar6)" ( number_literal , (string_literal ""%sINVALID CDC (%s): "" " string_content ") , (string_literal ""      "" " string_content ") , identifier ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (return_statement "return "corrupt comm descriptor";" return (string_literal ""corrupt comm descriptor"" " string_content ") ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 dump_comm_descriptor(libusb_device_handle *dev,uchar *buf,char *indent)\n\n{\n  uchar *puVar1;\n  int iVar2;\n  byte bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  uchar uVar8;\n  uchar uVar9;\n  \n  switch(buf[2]) {\n  case '\0':\n    pcVar6 = "Header";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x01':\n    pcVar6 = "Call Management";\n    if (*buf != '\x05') break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto LAB_00019140;\n  case '\x02':\n    pcVar6 = "ACM";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) {\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto LAB_00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    dump_bytes(buf,(uint)*buf);\n    return "unrecognized comm descriptor";\n  case '\x06':\n    pcVar6 = "Union";\n    if (*buf < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ");\n    if (4 < *buf) {\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto LAB_00018be1;\n  case '\a':\n    pcVar6 = "Country Selection";\n    if ((5 < *buf) && ((*buf & 1) == 0)) {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }\n    break;\n  case '\b':\n    pcVar6 = "Telephone Operations";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto LAB_00019140;\n  case '\n':\n    pcVar6 = "Network Channel Terminal";\n    if (*buf == '\a') {\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x0f':\n    pcVar6 = "Ethernet";\n    if (*buf == '\r') {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x11':\n    pcVar6 = "WHCM version";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x12':\n    pcVar6 = "MDLM";\n    if (*buf != '\x15') break;\n    get_guid(buf + 5);\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto LAB_00018b91;\n  case '\x13':\n    pcVar6 = "MDLM detail";\n    if (4 < *buf) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x14':\n    pcVar6 = "Device Management";\n    if (*buf != '\a') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto LAB_00018b91;\n  case '\x15':\n    pcVar6 = "OBEX";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\nLAB_00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);\nLAB_00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case '\x16':\n    pcVar6 = "Command Set";\n    if (*buf == '\x16') {\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x1a':\n    pcVar6 = "NCM";\n    if (*buf != '\x06') break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5]);\n    bVar3 = buf[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto LAB_00019140;\n  case '\x1b':\n    pcVar6 = "MBIM";\n    if (*buf != '\f') break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);\n    bVar3 = buf[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    max datagram size\n";\nLAB_00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto LAB_00018be1;\n  case '\x1c':\n    pcVar6 = "MBIM Extended";\n    if (*buf == '\b') {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  dump_bytes(buf,(uint)*buf);\n  return "corrupt comm descriptor";\n}\n\n" comment (function_definition "char * __regparm3 dump_comm_descriptor(libusb_device_handle *dev,uchar *buf,char *indent)\n\n{\n  uchar *puVar1;\n  int iVar2;\n  byte bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  uchar uVar8;\n  uchar uVar9;\n  \n  switch(buf[2]) {\n  case '\0':\n    pcVar6 = "Header";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x01':\n    pcVar6 = "Call Management";\n    if (*buf != '\x05') break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto LAB_00019140;\n  case '\x02':\n    pcVar6 = "ACM";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) {\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto LAB_00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    dump_bytes(buf,(uint)*buf);\n    return "unrecognized comm descriptor";\n  case '\x06':\n    pcVar6 = "Union";\n    if (*buf < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ");\n    if (4 < *buf) {\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto LAB_00018be1;\n  case '\a':\n    pcVar6 = "Country Selection";\n    if ((5 < *buf) && ((*buf & 1) == 0)) {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }\n    break;\n  case '\b':\n    pcVar6 = "Telephone Operations";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto LAB_00019140;\n  case '\n':\n    pcVar6 = "Network Channel Terminal";\n    if (*buf == '\a') {\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x0f':\n    pcVar6 = "Ethernet";\n    if (*buf == '\r') {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x11':\n    pcVar6 = "WHCM version";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x12':\n    pcVar6 = "MDLM";\n    if (*buf != '\x15') break;\n    get_guid(buf + 5);\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto LAB_00018b91;\n  case '\x13':\n    pcVar6 = "MDLM detail";\n    if (4 < *buf) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x14':\n    pcVar6 = "Device Management";\n    if (*buf != '\a') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto LAB_00018b91;\n  case '\x15':\n    pcVar6 = "OBEX";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\nLAB_00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);\nLAB_00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case '\x16':\n    pcVar6 = "Command Set";\n    if (*buf == '\x16') {\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x1a':\n    pcVar6 = "NCM";\n    if (*buf != '\x06') break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5]);\n    bVar3 = buf[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto LAB_00019140;\n  case '\x1b':\n    pcVar6 = "MBIM";\n    if (*buf != '\f') break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);\n    bVar3 = buf[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    max datagram size\n";\nLAB_00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto LAB_00018be1;\n  case '\x1c':\n    pcVar6 = "MBIM Extended";\n    if (*buf == '\b') {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  dump_bytes(buf,(uint)*buf);\n  return "corrupt comm descriptor";\n}" primitive_type (pointer_declarator "* __regparm3 dump_comm_descriptor(libusb_device_handle *dev,uchar *buf,char *indent)" * (ERROR "__regparm3" identifier) (function_declarator "dump_comm_descriptor(libusb_device_handle *dev,uchar *buf,char *indent)" identifier (parameter_list "(libusb_device_handle *dev,uchar *buf,char *indent)" ( (parameter_declaration "libusb_device_handle *dev" type_identifier (pointer_declarator "*dev" * identifier)) , (parameter_declaration "uchar *buf" type_identifier (pointer_declarator "*buf" * identifier)) , (parameter_declaration "char *indent" primitive_type (pointer_declarator "*indent" * identifier)) )))) (compound_statement "{\n  uchar *puVar1;\n  int iVar2;\n  byte bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  uchar uVar8;\n  uchar uVar9;\n  \n  switch(buf[2]) {\n  case '\0':\n    pcVar6 = "Header";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x01':\n    pcVar6 = "Call Management";\n    if (*buf != '\x05') break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto LAB_00019140;\n  case '\x02':\n    pcVar6 = "ACM";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) {\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto LAB_00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    dump_bytes(buf,(uint)*buf);\n    return "unrecognized comm descriptor";\n  case '\x06':\n    pcVar6 = "Union";\n    if (*buf < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ");\n    if (4 < *buf) {\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto LAB_00018be1;\n  case '\a':\n    pcVar6 = "Country Selection";\n    if ((5 < *buf) && ((*buf & 1) == 0)) {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }\n    break;\n  case '\b':\n    pcVar6 = "Telephone Operations";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto LAB_00019140;\n  case '\n':\n    pcVar6 = "Network Channel Terminal";\n    if (*buf == '\a') {\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x0f':\n    pcVar6 = "Ethernet";\n    if (*buf == '\r') {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x11':\n    pcVar6 = "WHCM version";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x12':\n    pcVar6 = "MDLM";\n    if (*buf != '\x15') break;\n    get_guid(buf + 5);\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto LAB_00018b91;\n  case '\x13':\n    pcVar6 = "MDLM detail";\n    if (4 < *buf) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x14':\n    pcVar6 = "Device Management";\n    if (*buf != '\a') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto LAB_00018b91;\n  case '\x15':\n    pcVar6 = "OBEX";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\nLAB_00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);\nLAB_00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case '\x16':\n    pcVar6 = "Command Set";\n    if (*buf == '\x16') {\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x1a':\n    pcVar6 = "NCM";\n    if (*buf != '\x06') break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5]);\n    bVar3 = buf[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto LAB_00019140;\n  case '\x1b':\n    pcVar6 = "MBIM";\n    if (*buf != '\f') break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);\n    bVar3 = buf[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    max datagram size\n";\nLAB_00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto LAB_00018be1;\n  case '\x1c':\n    pcVar6 = "MBIM Extended";\n    if (*buf == '\b') {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  dump_bytes(buf,(uint)*buf);\n  return "corrupt comm descriptor";\n}" { (declaration "uchar *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uchar uVar8;" type_identifier identifier ;) (declaration "uchar uVar9;" type_identifier identifier ;) (switch_statement "switch(buf[2]) {\n  case '\0':\n    pcVar6 = "Header";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x01':\n    pcVar6 = "Call Management";\n    if (*buf != '\x05') break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto LAB_00019140;\n  case '\x02':\n    pcVar6 = "ACM";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) {\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto LAB_00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    dump_bytes(buf,(uint)*buf);\n    return "unrecognized comm descriptor";\n  case '\x06':\n    pcVar6 = "Union";\n    if (*buf < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ");\n    if (4 < *buf) {\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto LAB_00018be1;\n  case '\a':\n    pcVar6 = "Country Selection";\n    if ((5 < *buf) && ((*buf & 1) == 0)) {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }\n    break;\n  case '\b':\n    pcVar6 = "Telephone Operations";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto LAB_00019140;\n  case '\n':\n    pcVar6 = "Network Channel Terminal";\n    if (*buf == '\a') {\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x0f':\n    pcVar6 = "Ethernet";\n    if (*buf == '\r') {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x11':\n    pcVar6 = "WHCM version";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x12':\n    pcVar6 = "MDLM";\n    if (*buf != '\x15') break;\n    get_guid(buf + 5);\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto LAB_00018b91;\n  case '\x13':\n    pcVar6 = "MDLM detail";\n    if (4 < *buf) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x14':\n    pcVar6 = "Device Management";\n    if (*buf != '\a') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto LAB_00018b91;\n  case '\x15':\n    pcVar6 = "OBEX";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\nLAB_00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);\nLAB_00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case '\x16':\n    pcVar6 = "Command Set";\n    if (*buf == '\x16') {\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x1a':\n    pcVar6 = "NCM";\n    if (*buf != '\x06') break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5]);\n    bVar3 = buf[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto LAB_00019140;\n  case '\x1b':\n    pcVar6 = "MBIM";\n    if (*buf != '\f') break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);\n    bVar3 = buf[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    max datagram size\n";\nLAB_00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto LAB_00018be1;\n  case '\x1c':\n    pcVar6 = "MBIM Extended";\n    if (*buf == '\b') {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }\n  }" switch (parenthesized_expression "(buf[2])" ( (subscript_expression "buf[2]" identifier [ number_literal ]) )) (compound_statement "{\n  case '\0':\n    pcVar6 = "Header";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x01':\n    pcVar6 = "Call Management";\n    if (*buf != '\x05') break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto LAB_00019140;\n  case '\x02':\n    pcVar6 = "ACM";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) {\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto LAB_00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    dump_bytes(buf,(uint)*buf);\n    return "unrecognized comm descriptor";\n  case '\x06':\n    pcVar6 = "Union";\n    if (*buf < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ");\n    if (4 < *buf) {\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto LAB_00018be1;\n  case '\a':\n    pcVar6 = "Country Selection";\n    if ((5 < *buf) && ((*buf & 1) == 0)) {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }\n    break;\n  case '\b':\n    pcVar6 = "Telephone Operations";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto LAB_00019140;\n  case '\n':\n    pcVar6 = "Network Channel Terminal";\n    if (*buf == '\a') {\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x0f':\n    pcVar6 = "Ethernet";\n    if (*buf == '\r') {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x11':\n    pcVar6 = "WHCM version";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto LAB_00018b91;\n  case '\x12':\n    pcVar6 = "MDLM";\n    if (*buf != '\x15') break;\n    get_guid(buf + 5);\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto LAB_00018b91;\n  case '\x13':\n    pcVar6 = "MDLM detail";\n    if (4 < *buf) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x14':\n    pcVar6 = "Device Management";\n    if (*buf != '\a') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto LAB_00018b91;\n  case '\x15':\n    pcVar6 = "OBEX";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\nLAB_00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);\nLAB_00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case '\x16':\n    pcVar6 = "Command Set";\n    if (*buf == '\x16') {\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }\n    break;\n  case '\x1a':\n    pcVar6 = "NCM";\n    if (*buf != '\x06') break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5]);\n    bVar3 = buf[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto LAB_00019140;\n  case '\x1b':\n    pcVar6 = "MBIM";\n    if (*buf != '\f') break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);\n    bVar3 = buf[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    max datagram size\n";\nLAB_00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto LAB_00018be1;\n  case '\x1c':\n    pcVar6 = "MBIM Extended";\n    if (*buf == '\b') {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }\n  }" { (case_statement "case '\0':\n    pcVar6 = "Header";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto LAB_00018b91;" case (char_literal "'\0'" ' escape_sequence ') : (expression_statement "pcVar6 = "Header";" (assignment_expression "pcVar6 = "Header"" identifier = (string_literal ""Header"" " string_content ")) ;) (if_statement "if (*buf != '\x05') break;" if (parenthesized_expression "(*buf != '\x05')" ( (binary_expression "*buf != '\x05'" (pointer_expression "*buf" * identifier) != (char_literal "'\x05'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = buf[3];" (assignment_expression "uVar9 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = buf[4];" (assignment_expression "uVar8 = buf[4]" identifier = (subscript_expression "buf[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" identifier = (string_literal ""%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_00018b91;" goto statement_identifier ;)) (case_statement "case '\x01':\n    pcVar6 = "Call Management";\n    if (*buf != '\x05') break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto LAB_00019140;" case (char_literal "'\x01'" ' escape_sequence ') : (expression_statement "pcVar6 = "Call Management";" (assignment_expression "pcVar6 = "Call Management"" identifier = (string_literal ""Call Management"" " string_content ")) ;) (if_statement "if (*buf != '\x05') break;" if (parenthesized_expression "(*buf != '\x05')" ( (binary_expression "*buf != '\x05'" (pointer_expression "*buf" * identifier) != (char_literal "'\x05'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3]);" (call_expression "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3])" identifier (argument_list "(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 buf[3])" ( number_literal , (string_literal ""%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = buf[3];\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,"%s    call management\n","      ");\n      bVar3 = buf[3];\n    }" { (expression_statement "__printf_chk(1,"%s    call management\n","      ");" (call_expression "__printf_chk(1,"%s    call management\n","      ")" identifier (argument_list "(1,"%s    call management\n","      ")" ( number_literal , (string_literal ""%s    call management\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\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,"%s    use DataInterface\n","      ");\n    }" { (expression_statement "__printf_chk(1,"%s    use DataInterface\n","      ");" (call_expression "__printf_chk(1,"%s    use DataInterface\n","      ")" identifier (argument_list "(1,"%s    use DataInterface\n","      ")" ( number_literal , (string_literal ""%s    use DataInterface\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) })) (expression_statement "pcVar5 = "%s  bDataInterface          %d\n";" (assignment_expression "pcVar5 = "%s  bDataInterface          %d\n"" identifier = (string_literal ""%s  bDataInterface          %d\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_00019140;" goto statement_identifier ;)) (case_statement "case '\x02':\n    pcVar6 = "ACM";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) {\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto LAB_00019140;" case (char_literal "'\x02'" ' escape_sequence ') : (expression_statement "pcVar6 = "ACM";" (assignment_expression "pcVar6 = "ACM"" identifier = (string_literal ""ACM"" " string_content ")) ;) (if_statement "if (*buf != '\x04') break;" if (parenthesized_expression "(*buf != '\x04')" ( (binary_expression "*buf != '\x04'" (pointer_expression "*buf" * identifier) != (char_literal "'\x04'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3]);" (call_expression "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3])" identifier (argument_list "(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",buf[3])" ( number_literal , (string_literal ""%sCDC ACM:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\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,"%s    connection notifications\n","      ");\n      bVar3 = buf[3];\n    }" { (expression_statement "__printf_chk(1,"%s    connection notifications\n","      ");" (call_expression "__printf_chk(1,"%s    connection notifications\n","      ")" identifier (argument_list "(1,"%s    connection notifications\n","      ")" ( number_literal , (string_literal ""%s    connection notifications\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = buf[3];\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,"%s    sends break\n","      ");\n      bVar3 = buf[3];\n    }" { (expression_statement "__printf_chk(1,"%s    sends break\n","      ");" (call_expression "__printf_chk(1,"%s    sends break\n","      ")" identifier (argument_list "(1,"%s    sends break\n","      ")" ( number_literal , (string_literal ""%s    sends break\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\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,"%s    line coding and serial state\n","      ");\n      bVar3 = buf[3];\n    }" { (expression_statement "__printf_chk(1,"%s    line coding and serial state\n","      ");" (call_expression "__printf_chk(1,"%s    line coding and serial state\n","      ")" identifier (argument_list "(1,"%s    line coding and serial state\n","      ")" ( number_literal , (string_literal ""%s    line coding and serial state\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) {\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\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 "{\nLAB_00018d54:\n      pcVar6 = (char *)0x0;\n      goto LAB_00018be1;\n    }" { (labeled_statement "LAB_00018d54:\n      pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;) })) (expression_statement "pcVar5 = "%s    get/set/clear comm features\n";" (assignment_expression "pcVar5 = "%s    get/set/clear comm features\n"" identifier = (string_literal ""%s    get/set/clear comm features\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_00019140;" goto statement_identifier ;)) (case_statement "default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    dump_bytes(buf,(uint)*buf);\n    return "unrecognized comm descriptor";" default : (expression_statement "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");" (call_expression "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ")" identifier (argument_list "(1,"%sUNRECOGNIZED CDC: ","      ")" ( number_literal , (string_literal ""%sUNRECOGNIZED CDC: "" " string_content ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "dump_bytes(buf,(uint)*buf);" (call_expression "dump_bytes(buf,(uint)*buf)" identifier (argument_list "(buf,(uint)*buf)" ( identifier , (binary_expression "(uint)*buf" (parenthesized_expression "(uint)" ( identifier )) * identifier) ))) ;) (return_statement "return "unrecognized comm descriptor";" return (string_literal ""unrecognized comm descriptor"" " string_content ") ;)) (case_statement "case '\x06':\n    pcVar6 = "Union";\n    if (*buf < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ");\n    if (4 < *buf) {\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto LAB_00018be1;" case (char_literal "'\x06'" ' escape_sequence ') : (expression_statement "pcVar6 = "Union";" (assignment_expression "pcVar6 = "Union"" identifier = (string_literal ""Union"" " string_content ")) ;) (if_statement "if (*buf < 5) break;" if (parenthesized_expression "(*buf < 5)" ( (binary_expression "*buf < 5" (pointer_expression "*buf" * identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ");" (call_expression "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ")" identifier (argument_list "(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",buf[3],"      ")" ( number_literal , (string_literal ""%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         "" " string_content escape_sequence string_content escape_sequence string_content ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") ))) ;) (if_statement "if (4 < *buf) {\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }" if (parenthesized_expression "(4 < *buf)" ( (binary_expression "4 < *buf" number_literal < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n      do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);\n    }" { (do_statement "do {\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      } while (iVar7 < (int)(uint)*buf);" do (compound_statement "{\n        puVar1 = buf + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&DAT_00022691,*puVar1);\n      }" { (expression_statement "puVar1 = buf + iVar7;" (assignment_expression "puVar1 = buf + iVar7" identifier = (binary_expression "buf + iVar7" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&DAT_00022691,*puVar1);" (call_expression "__printf_chk(1,&DAT_00022691,*puVar1)" identifier (argument_list "(1,&DAT_00022691,*puVar1)" ( number_literal , (pointer_expression "&DAT_00022691" & identifier) , (pointer_expression "*puVar1" * identifier) ))) ;) }) while (parenthesized_expression "(iVar7 < (int)(uint)*buf)" ( (binary_expression "iVar7 < (int)(uint)*buf" identifier < (binary_expression "(int)(uint)*buf" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) )) ;) })) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;)) (case_statement "case '\a':\n    pcVar6 = "Country Selection";\n    if ((5 < *buf) && ((*buf & 1) == 0)) {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }\n    break;" case (char_literal "'\a'" ' escape_sequence ') : (expression_statement "pcVar6 = "Country Selection";" (assignment_expression "pcVar6 = "Country Selection"" identifier = (string_literal ""Country Selection"" " string_content ")) ;) (if_statement "if ((5 < *buf) && ((*buf & 1) == 0)) {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }" if (parenthesized_expression "((5 < *buf) && ((*buf & 1) == 0))" ( (binary_expression "(5 < *buf) && ((*buf & 1) == 0)" (parenthesized_expression "(5 < *buf)" ( (binary_expression "5 < *buf" number_literal < (pointer_expression "*buf" * identifier)) )) && (parenthesized_expression "((*buf & 1) == 0)" ( (binary_expression "(*buf & 1) == 0" (parenthesized_expression "(*buf & 1)" ( (binary_expression "*buf & 1" (pointer_expression "*buf" * identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);\n      if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }\n      goto LAB_00018be1;\n    }" { (expression_statement "pcVar6 = get_dev_string(dev,buf[3]);" (assignment_expression "pcVar6 = get_dev_string(dev,buf[3])" identifier = (call_expression "get_dev_string(dev,buf[3])" identifier (argument_list "(dev,buf[3])" ( identifier , (subscript_expression "buf[3]" identifier [ number_literal ]) )))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((buf[3] != '\0') && (*pcVar6 != '\0'))" ( (binary_expression "(buf[3] != '\0') && (*pcVar6 != '\0')" (parenthesized_expression "(buf[3] != '\0')" ( (binary_expression "buf[3] != '\0'" (subscript_expression "buf[3]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5);" (call_expression "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5)" identifier (argument_list "(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   buf[3],pcVar5)" ( number_literal , (string_literal ""%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (4 < *buf) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }" if (parenthesized_expression "(4 < *buf)" ( (binary_expression "4 < *buf" number_literal < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);\n      }" { (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (do_statement "do {\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        } while (iVar7 < (int)(uint)*buf);" do (compound_statement "{\n          iVar2 = iVar7 + 1;\n          puVar1 = buf + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );\n        }" { (expression_statement "iVar2 = iVar7 + 1;" (assignment_expression "iVar2 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar1 = buf + iVar7;" (assignment_expression "puVar1 = buf + iVar7" identifier = (binary_expression "buf + iVar7" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      );" (call_expression "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      )" identifier (argument_list "(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,buf[iVar2],pcVar5\n                      )" ( number_literal , (string_literal ""%s  wCountryCode          0x%02x%02x\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (pointer_expression "*puVar1" * identifier) , (subscript_expression "buf[iVar2]" identifier [ identifier ]) , identifier ))) ;) }) while (parenthesized_expression "(iVar7 < (int)(uint)*buf)" ( (binary_expression "iVar7 < (int)(uint)*buf" identifier < (binary_expression "(int)(uint)*buf" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) )) ;) })) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case '\b':\n    pcVar6 = "Telephone Operations";\n    if (*buf != '\x04') break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3]);\n    bVar3 = buf[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto LAB_00019140;" case (char_literal "'\b'" ' escape_sequence ') : (expression_statement "pcVar6 = "Telephone Operations";" (assignment_expression "pcVar6 = "Telephone Operations"" identifier = (string_literal ""Telephone Operations"" " string_content ")) ;) (if_statement "if (*buf != '\x04') break;" if (parenthesized_expression "(*buf != '\x04')" ( (binary_expression "*buf != '\x04'" (pointer_expression "*buf" * identifier) != (char_literal "'\x04'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3]);" (call_expression "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3])" identifier (argument_list "(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",buf[3])" ( number_literal , (string_literal ""%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\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,"%s    computer centric mode\n","      ");\n      bVar3 = buf[3];\n    }" { (expression_statement "__printf_chk(1,"%s    computer centric mode\n","      ");" (call_expression "__printf_chk(1,"%s    computer centric mode\n","      ")" identifier (argument_list "(1,"%s    computer centric mode\n","      ")" ( number_literal , (string_literal ""%s    computer centric mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\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,"%s    standalone mode\n","      ");\n      bVar3 = buf[3];\n    }" { (expression_statement "__printf_chk(1,"%s    standalone mode\n","      ");" (call_expression "__printf_chk(1,"%s    standalone mode\n","      ")" identifier (argument_list "(1,"%s    standalone mode\n","      ")" ( number_literal , (string_literal ""%s    standalone mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[3];" (assignment_expression "bVar3 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) goto LAB_00018d54;" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    simple mode\n";" (assignment_expression "pcVar5 = "%s    simple mode\n"" identifier = (string_literal ""%s    simple mode\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_00019140;" goto statement_identifier ;)) (case_statement "case '\n':\n    pcVar6 = "Network Channel Terminal";\n    if (*buf == '\a') {\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }\n    break;" case (char_literal "'\n'" ' escape_sequence ') : (expression_statement "pcVar6 = "Network Channel Terminal";" (assignment_expression "pcVar6 = "Network Channel Terminal"" identifier = (string_literal ""Network Channel Terminal"" " string_content ")) ;) (if_statement "if (*buf == '\a') {\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }" if (parenthesized_expression "(*buf == '\a')" ( (binary_expression "*buf == '\a'" (pointer_expression "*buf" * identifier) == (char_literal "'\a'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar6 = get_dev_string(dev,buf[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;\n      goto LAB_00018be1;\n    }" { (expression_statement "pcVar6 = get_dev_string(dev,buf[4]);" (assignment_expression "pcVar6 = get_dev_string(dev,buf[4])" identifier = (call_expression "get_dev_string(dev,buf[4])" identifier (argument_list "(dev,buf[4])" ( identifier , (subscript_expression "buf[4]" identifier [ number_literal ]) )))) ;) (expression_statement "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])\n      ;" (call_expression "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])" identifier (argument_list "(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",buf[3],"      ",buf[4],pcVar6,"      ",buf[5],"      ",buf[6])" ( number_literal , (string_literal ""%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[4]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , (subscript_expression "buf[5]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[6]" identifier [ number_literal ]) ))) ;) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case '\x0f':\n    pcVar6 = "Ethernet";\n    if (*buf == '\r') {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }\n    break;" case (char_literal "'\x0f'" ' escape_sequence ') : (expression_statement "pcVar6 = "Ethernet";" (assignment_expression "pcVar6 = "Ethernet"" identifier = (string_literal ""Ethernet"" " string_content ")) ;) (if_statement "if (*buf == '\r') {\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }" if (parenthesized_expression "(*buf == '\r')" ( (binary_expression "*buf == '\r'" (pointer_expression "*buf" * identifier) == (char_literal "'\r'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar6 = get_dev_string(dev,buf[3]);\n      pcVar5 = "(??)";\n      if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);\n      goto LAB_00018be1;\n    }" { (expression_statement "pcVar6 = get_dev_string(dev,buf[3]);" (assignment_expression "pcVar6 = get_dev_string(dev,buf[3])" identifier = (call_expression "get_dev_string(dev,buf[3])" identifier (argument_list "(dev,buf[3])" ( identifier , (subscript_expression "buf[3]" identifier [ number_literal ]) )))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((buf[3] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((buf[3] != '\0') && (*pcVar6 != '\0'))" ( (binary_expression "(buf[3] != '\0') && (*pcVar6 != '\0')" (parenthesized_expression "(buf[3] != '\0')" ( (binary_expression "buf[3] != '\0'" (subscript_expression "buf[3]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4));" (call_expression "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4))" identifier (argument_list "(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",buf[3],pcVar5,"      ",*(undefined4 *)(buf + 4))" ( number_literal , (string_literal ""%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined4 *)(buf + 4)" * (cast_expression "(undefined4 *)(buf + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 4)" ( (binary_expression "buf + 4" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc]);" (call_expression "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc])" identifier (argument_list "(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(buf + 8),"      ",*(undefined2 *)(buf + 10),"      ",\n                   buf[0xc])" ( number_literal , (string_literal ""%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[0xc]" identifier [ number_literal ]) ))) ;) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case '\x11':\n    pcVar6 = "WHCM version";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto LAB_00018b91;" case (char_literal "'\x11'" ' escape_sequence ') : (expression_statement "pcVar6 = "WHCM version";" (assignment_expression "pcVar6 = "WHCM version"" identifier = (string_literal ""WHCM version"" " string_content ")) ;) (if_statement "if (*buf != '\x05') break;" if (parenthesized_expression "(*buf != '\x05')" ( (binary_expression "*buf != '\x05'" (pointer_expression "*buf" * identifier) != (char_literal "'\x05'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = buf[3];" (assignment_expression "uVar9 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = buf[4];" (assignment_expression "uVar8 = buf[4]" identifier = (subscript_expression "buf[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" identifier = (string_literal ""%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_00018b91;" goto statement_identifier ;)) (case_statement "case '\x12':\n    pcVar6 = "MDLM";\n    if (*buf != '\x15') break;\n    get_guid(buf + 5);\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto LAB_00018b91;" case (char_literal "'\x12'" ' escape_sequence ') : (expression_statement "pcVar6 = "MDLM";" (assignment_expression "pcVar6 = "MDLM"" identifier = (string_literal ""MDLM"" " string_content ")) ;) (if_statement "if (*buf != '\x15') break;" if (parenthesized_expression "(*buf != '\x15')" ( (binary_expression "*buf != '\x15'" (pointer_expression "*buf" * identifier) != (char_literal "'\x15'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "get_guid(buf + 5);" (call_expression "get_guid(buf + 5)" identifier (argument_list "(buf + 5)" ( (binary_expression "buf + 5" identifier + number_literal) ))) ;) (expression_statement "uVar9 = buf[3];" (assignment_expression "uVar9 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = buf[4];" (assignment_expression "uVar8 = buf[4]" identifier = (subscript_expression "buf[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";" (assignment_expression "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" identifier = (string_literal ""%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_00018b91;" goto statement_identifier ;)) (case_statement "case '\x13':\n    pcVar6 = "MDLM detail";\n    if (4 < *buf) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }\n    break;" case (char_literal "'\x13'" ' escape_sequence ') : (expression_statement "pcVar6 = "MDLM detail";" (assignment_expression "pcVar6 = "MDLM detail"" identifier = (string_literal ""MDLM detail"" " string_content ")) ;) (if_statement "if (4 < *buf) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }" if (parenthesized_expression "(4 < *buf)" ( (binary_expression "4 < *buf" number_literal < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");\n      dump_bytes(buf + 4,*buf - 4);\n      goto LAB_00018be1;\n    }" { (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ");" (call_expression "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ")" identifier (argument_list "(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",buf[3],"      ")" ( number_literal , (string_literal ""%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         "" " string_content escape_sequence string_content escape_sequence string_content ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "dump_bytes(buf + 4,*buf - 4);" (call_expression "dump_bytes(buf + 4,*buf - 4)" identifier (argument_list "(buf + 4,*buf - 4)" ( (binary_expression "buf + 4" identifier + number_literal) , (binary_expression "*buf - 4" (pointer_expression "*buf" * identifier) - number_literal) ))) ;) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case '\x14':\n    pcVar6 = "Device Management";\n    if (*buf != '\a') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto LAB_00018b91;" case (char_literal "'\x14'" ' escape_sequence ') : (expression_statement "pcVar6 = "Device Management";" (assignment_expression "pcVar6 = "Device Management"" identifier = (string_literal ""Device Management"" " string_content ")) ;) (if_statement "if (*buf != '\a') break;" if (parenthesized_expression "(*buf != '\a')" ( (binary_expression "*buf != '\a'" (pointer_expression "*buf" * identifier) != (char_literal "'\a'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = buf[3];" (assignment_expression "uVar9 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = buf[4];" (assignment_expression "uVar8 = buf[4]" identifier = (subscript_expression "buf[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";" (assignment_expression "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" identifier = (string_literal ""%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto LAB_00018b91;" goto statement_identifier ;)) (case_statement "case '\x15':\n    pcVar6 = "OBEX";\n    if (*buf != '\x05') break;\n    uVar9 = buf[3];\n    uVar8 = buf[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\nLAB_00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);\nLAB_00018be1:\n    free(pcVar6);\n    return (char *)0x0;" case (char_literal "'\x15'" ' escape_sequence ') : (expression_statement "pcVar6 = "OBEX";" (assignment_expression "pcVar6 = "OBEX"" identifier = (string_literal ""OBEX"" " string_content ")) ;) (if_statement "if (*buf != '\x05') break;" if (parenthesized_expression "(*buf != '\x05')" ( (binary_expression "*buf != '\x05'" (pointer_expression "*buf" * identifier) != (char_literal "'\x05'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = buf[3];" (assignment_expression "uVar9 = buf[3]" identifier = (subscript_expression "buf[3]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = buf[4];" (assignment_expression "uVar8 = buf[4]" identifier = (subscript_expression "buf[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" identifier = (string_literal ""%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "LAB_00018b91:\n    pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "__printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9);" (call_expression "__printf_chk(1,pcVar5,"      ","      ",uVar8,uVar9)" identifier (argument_list "(1,pcVar5,"      ","      ",uVar8,uVar9)" ( number_literal , identifier , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , identifier , identifier ))) ;) (labeled_statement "LAB_00018be1:\n    free(pcVar6);" statement_identifier : (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;)) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case '\x16':\n    pcVar6 = "Command Set";\n    if (*buf == '\x16') {\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }\n    break;" case (char_literal "'\x16'" ' escape_sequence ') : (expression_statement "pcVar6 = "Command Set";" (assignment_expression "pcVar6 = "Command Set"" identifier = (string_literal ""Command Set"" " string_content ")) ;) (if_statement "if (*buf == '\x16') {\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }" if (parenthesized_expression "(*buf == '\x16')" ( (binary_expression "*buf == '\x16'" (pointer_expression "*buf" * identifier) == (char_literal "'\x16'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar6 = get_dev_string(dev,buf[5]);\n      pcVar4 = get_guid(buf + 6);\n      pcVar5 = "(??)";\n      if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);\n      goto LAB_00018be1;\n    }" { (expression_statement "pcVar6 = get_dev_string(dev,buf[5]);" (assignment_expression "pcVar6 = 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 ]) )))) ;) (expression_statement "pcVar4 = get_guid(buf + 6);" (assignment_expression "pcVar4 = get_guid(buf + 6)" identifier = (call_expression "get_guid(buf + 6)" identifier (argument_list "(buf + 6)" ( (binary_expression "buf + 6" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((buf[5] != '\0') && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((buf[5] != '\0') && (*pcVar6 != '\0'))" ( (binary_expression "(buf[5] != '\0') && (*pcVar6 != '\0')" (parenthesized_expression "(buf[5] != '\0')" ( (binary_expression "buf[5] != '\0'" (subscript_expression "buf[5]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4);" (call_expression "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4)" identifier (argument_list "(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],pcVar5,"      ",pcVar4)" ( number_literal , (string_literal ""%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[4]" identifier [ number_literal ]) , (subscript_expression "buf[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[5]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , identifier ))) ;) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case '\x1a':\n    pcVar6 = "NCM";\n    if (*buf != '\x06') break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5]);\n    bVar3 = buf[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = buf[5];\n    }\n    if ((bVar3 & 1) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto LAB_00019140;" case (char_literal "'\x1a'" ' escape_sequence ') : (expression_statement "pcVar6 = "NCM";" (assignment_expression "pcVar6 = "NCM"" identifier = (string_literal ""NCM"" " string_content ")) ;) (if_statement "if (*buf != '\x06') break;" if (parenthesized_expression "(*buf != '\x06')" ( (binary_expression "*buf != '\x06'" (pointer_expression "*buf" * identifier) != (char_literal "'\x06'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5]);" (call_expression "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5])" identifier (argument_list "(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",buf[4],buf[3],"      ",buf[5])" ( number_literal , (string_literal ""%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[4]" identifier [ number_literal ]) , (subscript_expression "buf[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[5]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = buf[5];" (assignment_expression "bVar3 = buf[5]" identifier = (subscript_expression "buf[5]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[5];\n    }" { (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" identifier (argument_list "(1,"%s    8-byte ntb input size\n","      ")" ( number_literal , (string_literal ""%s    8-byte ntb input size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[5];" (assignment_expression "bVar3 = buf[5]" identifier = (subscript_expression "buf[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\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,"%s    crc mode\n","      ");\n      bVar3 = buf[5];\n    }" { (expression_statement "__printf_chk(1,"%s    crc mode\n","      ");" (call_expression "__printf_chk(1,"%s    crc mode\n","      ")" identifier (argument_list "(1,"%s    crc mode\n","      ")" ( number_literal , (string_literal ""%s    crc mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[5];" (assignment_expression "bVar3 = buf[5]" identifier = (subscript_expression "buf[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\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,"%s    max datagram size\n","      ");\n      bVar3 = buf[5];\n    }" { (expression_statement "__printf_chk(1,"%s    max datagram size\n","      ");" (call_expression "__printf_chk(1,"%s    max datagram size\n","      ")" identifier (argument_list "(1,"%s    max datagram size\n","      ")" ( number_literal , (string_literal ""%s    max datagram size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[5];" (assignment_expression "bVar3 = buf[5]" identifier = (subscript_expression "buf[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\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,"%s    encapsulated commands\n","      ");\n      bVar3 = buf[5];\n    }" { (expression_statement "__printf_chk(1,"%s    encapsulated commands\n","      ");" (call_expression "__printf_chk(1,"%s    encapsulated commands\n","      ")" identifier (argument_list "(1,"%s    encapsulated commands\n","      ")" ( number_literal , (string_literal ""%s    encapsulated commands\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[5];" (assignment_expression "bVar3 = buf[5]" identifier = (subscript_expression "buf[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = buf[5];\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,"%s    net address\n","      ");\n      bVar3 = buf[5];\n    }" { (expression_statement "__printf_chk(1,"%s    net address\n","      ");" (call_expression "__printf_chk(1,"%s    net address\n","      ")" identifier (argument_list "(1,"%s    net address\n","      ")" ( number_literal , (string_literal ""%s    net address\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[5];" (assignment_expression "bVar3 = buf[5]" identifier = (subscript_expression "buf[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) goto LAB_00018d54;" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    packet filter\n";" (assignment_expression "pcVar5 = "%s    packet filter\n"" identifier = (string_literal ""%s    packet filter\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_00019140;" goto statement_identifier ;)) (case_statement "case '\x1b':\n    pcVar6 = "MBIM";\n    if (*buf != '\f') break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);\n    bVar3 = buf[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto LAB_00018d54;\n    pcVar5 = "%s    max datagram size\n";\nLAB_00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto LAB_00018be1;" case (char_literal "'\x1b'" ' escape_sequence ') : (expression_statement "pcVar6 = "MBIM";" (assignment_expression "pcVar6 = "MBIM"" identifier = (string_literal ""MBIM"" " string_content ")) ;) (if_statement "if (*buf != '\f') break;" if (parenthesized_expression "(*buf != '\f')" ( (binary_expression "*buf != '\f'" (pointer_expression "*buf" * identifier) != (char_literal "'\f'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb]);" (call_expression "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb])" identifier (argument_list "(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",buf[4],buf[3],"      ",*(undefined2 *)(buf + 5),"      ",buf[7],\n                 "      ",buf[8],"      ",*(undefined2 *)(buf + 9),"      ",buf[0xb])" ( number_literal , (string_literal ""%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[4]" identifier [ number_literal ]) , (subscript_expression "buf[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[7]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[8]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined2 *)(buf + 9)" * (cast_expression "(undefined2 *)(buf + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 9)" ( (binary_expression "buf + 9" identifier + number_literal) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[0xb]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = buf[0xb];" (assignment_expression "bVar3 = buf[0xb]" identifier = (subscript_expression "buf[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = buf[0xb];\n    }" { (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" identifier (argument_list "(1,"%s    8-byte ntb input size\n","      ")" ( number_literal , (string_literal ""%s    8-byte ntb input size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = buf[0xb];" (assignment_expression "bVar3 = buf[0xb]" identifier = (subscript_expression "buf[0xb]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 8) == 0) goto LAB_00018d54;" if (parenthesized_expression "((bVar3 & 8) == 0)" ( (binary_expression "(bVar3 & 8) == 0" (parenthesized_expression "(bVar3 & 8)" ( (binary_expression "bVar3 & 8" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    max datagram size\n";" (assignment_expression "pcVar5 = "%s    max datagram size\n"" identifier = (string_literal ""%s    max datagram size\n"" " string_content escape_sequence ")) ;) (labeled_statement "LAB_00019140:\n    pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "__printf_chk(1,pcVar5,"      ");" (call_expression "__printf_chk(1,pcVar5,"      ")" identifier (argument_list "(1,pcVar5,"      ")" ( number_literal , identifier , (string_literal ""      "" " string_content ") ))) ;) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;)) (case_statement "case '\x1c':\n    pcVar6 = "MBIM Extended";\n    if (*buf == '\b') {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }" case (char_literal "'\x1c'" ' escape_sequence ') : (expression_statement "pcVar6 = "MBIM Extended";" (assignment_expression "pcVar6 = "MBIM Extended"" identifier = (string_literal ""MBIM Extended"" " string_content ")) ;) (if_statement "if (*buf == '\b') {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }" if (parenthesized_expression "(*buf == '\b')" ( (binary_expression "*buf == '\b'" (pointer_expression "*buf" * identifier) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));\n      goto LAB_00018be1;\n    }" { (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6));" (call_expression "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6))" identifier (argument_list "(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",buf[4],buf[3],"      ",buf[5],"      ",\n                   *(undefined2 *)(buf + 6))" ( number_literal , (string_literal ""%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "buf[4]" identifier [ number_literal ]) , (subscript_expression "buf[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "buf[5]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined2 *)(buf + 6)" * (cast_expression "(undefined2 *)(buf + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 6)" ( (binary_expression "buf + 6" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_00018be1;" goto statement_identifier ;) }))) })) (expression_statement "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);" (call_expression "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6)" identifier (argument_list "(1,"%sINVALID CDC (%s): ","      ",pcVar6)" ( number_literal , (string_literal ""%sINVALID CDC (%s): "" " string_content ") , (string_literal ""      "" " string_content ") , identifier ))) ;) (expression_statement "dump_bytes(buf,(uint)*buf);" (call_expression "dump_bytes(buf,(uint)*buf)" identifier (argument_list "(buf,(uint)*buf)" ( identifier , (binary_expression "(uint)*buf" (parenthesized_expression "(uint)" ( identifier )) * identifier) ))) ;) (return_statement "return "corrupt comm descriptor";" return (string_literal ""corrupt comm descriptor"" " string_content ") ;) })))
(translation_unit "char * __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}\n\n" (function_definition "char * __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00018a90(undefined4 param_1,byte *param_2)" identifier (parameter_list "(undefined4 param_1,byte *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (switch_statement "switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }" switch (parenthesized_expression "(param_2[2])" ( (subscript_expression "param_2[2]" identifier [ number_literal ]) )) (compound_statement "{\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }" { (case_statement "case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "Header";" (assignment_expression "pcVar6 = "Header"" identifier = (string_literal ""Header"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" identifier = (string_literal ""%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "Call Management";" (assignment_expression "pcVar6 = "Call Management"" identifier = (string_literal ""Call Management"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);" (call_expression "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3])" identifier (argument_list "(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3])" ( number_literal , (string_literal ""%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\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,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    call management\n","      ");" (call_expression "__printf_chk(1,"%s    call management\n","      ")" identifier (argument_list "(1,"%s    call management\n","      ")" ( number_literal , (string_literal ""%s    call management\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\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,"%s    use DataInterface\n","      ");\n    }" { (expression_statement "__printf_chk(1,"%s    use DataInterface\n","      ");" (call_expression "__printf_chk(1,"%s    use DataInterface\n","      ")" identifier (argument_list "(1,"%s    use DataInterface\n","      ")" ( number_literal , (string_literal ""%s    use DataInterface\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) })) (expression_statement "pcVar5 = "%s  bDataInterface          %d\n";" (assignment_expression "pcVar5 = "%s  bDataInterface          %d\n"" identifier = (string_literal ""%s  bDataInterface          %d\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "ACM";" (assignment_expression "pcVar6 = "ACM"" identifier = (string_literal ""ACM"" " string_content ")) ;) (if_statement "if (*param_2 != 4) break;" if (parenthesized_expression "(*param_2 != 4)" ( (binary_expression "*param_2 != 4" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);" (call_expression "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3])" identifier (argument_list "(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3])" ( number_literal , (string_literal ""%sCDC ACM:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\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,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    connection notifications\n","      ");" (call_expression "__printf_chk(1,"%s    connection notifications\n","      ")" identifier (argument_list "(1,"%s    connection notifications\n","      ")" ( number_literal , (string_literal ""%s    connection notifications\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\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,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    sends break\n","      ");" (call_expression "__printf_chk(1,"%s    sends break\n","      ")" identifier (argument_list "(1,"%s    sends break\n","      ")" ( number_literal , (string_literal ""%s    sends break\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\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,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    line coding and serial state\n","      ");" (call_expression "__printf_chk(1,"%s    line coding and serial state\n","      ")" identifier (argument_list "(1,"%s    line coding and serial state\n","      ")" ( number_literal , (string_literal ""%s    line coding and serial state\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\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 "{\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }" { (labeled_statement "code_r0x00018d54:\n      pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (expression_statement "pcVar5 = "%s    get/set/clear comm features\n";" (assignment_expression "pcVar5 = "%s    get/set/clear comm features\n"" identifier = (string_literal ""%s    get/set/clear comm features\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";" default : (expression_statement "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");" (call_expression "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ")" identifier (argument_list "(1,"%sUNRECOGNIZED CDC: ","      ")" ( number_literal , (string_literal ""%sUNRECOGNIZED CDC: "" " string_content ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (return_statement "return "unrecognized comm descriptor";" return (string_literal ""unrecognized comm descriptor"" " string_content ") ;)) (case_statement "case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;" case number_literal : (expression_statement "pcVar6 = "Union";" (assignment_expression "pcVar6 = "Union"" identifier = (string_literal ""Union"" " string_content ")) ;) (if_statement "if (*param_2 < 5) break;" if (parenthesized_expression "(*param_2 < 5)" ( (binary_expression "*param_2 < 5" (pointer_expression "*param_2" * identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (expression_statement "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");" (call_expression "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ")" identifier (argument_list "(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ")" ( number_literal , (string_literal ""%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         "" " string_content escape_sequence string_content escape_sequence string_content ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") ))) ;) (if_statement "if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }" if (parenthesized_expression "(4 < *param_2)" ( (binary_expression "4 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }" { (do_statement "do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);" do (compound_statement "{\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      }" { (expression_statement "pbVar1 = param_2 + iVar7;" (assignment_expression "pbVar1 = param_2 + iVar7" identifier = (binary_expression "param_2 + iVar7" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,&UNK_00022691,*pbVar1);" (call_expression "__printf_chk(1,&UNK_00022691,*pbVar1)" identifier (argument_list "(1,&UNK_00022691,*pbVar1)" ( number_literal , (pointer_expression "&UNK_00022691" & identifier) , (pointer_expression "*pbVar1" * identifier) ))) ;) }) while (parenthesized_expression "(iVar7 < (int)(uint)*param_2)" ( (binary_expression "iVar7 < (int)(uint)*param_2" identifier < (binary_expression "(int)(uint)*param_2" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) )) ;) })) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;)) (case_statement "case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Country Selection";" (assignment_expression "pcVar6 = "Country Selection"" identifier = (string_literal ""Country Selection"" " string_content ")) ;) (if_statement "if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "((5 < *param_2) && ((*param_2 & 1) == 0))" ( (binary_expression "(5 < *param_2) && ((*param_2 & 1) == 0)" (parenthesized_expression "(5 < *param_2)" ( (binary_expression "5 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) && (parenthesized_expression "((*param_2 & 1) == 0)" ( (binary_expression "(*param_2 & 1) == 0" (parenthesized_expression "(*param_2 & 1)" ( (binary_expression "*param_2 & 1" (pointer_expression "*param_2" * identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[3])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[3])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[3])" identifier (argument_list "(param_1,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((param_2[3] != 0) && (*pcVar6 != '\0'))" ( (binary_expression "(param_2[3] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[3] != 0)" ( (binary_expression "param_2[3] != 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);" (call_expression "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5)" identifier (argument_list "(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5)" ( number_literal , (string_literal ""%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier ))) ;) (if_statement "if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }" if (parenthesized_expression "(4 < *param_2)" ( (binary_expression "4 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }" { (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" identifier = number_literal) ;) (do_statement "do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);" do (compound_statement "{\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        }" { (expression_statement "iVar2 = iVar7 + 1;" (assignment_expression "iVar2 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pbVar1 = param_2 + iVar7;" (assignment_expression "pbVar1 = param_2 + iVar7" identifier = (binary_expression "param_2 + iVar7" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (expression_statement "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);" (call_expression "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5)" identifier (argument_list "(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5)" ( number_literal , (string_literal ""%s  wCountryCode          0x%02x%02x\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (pointer_expression "*pbVar1" * identifier) , (subscript_expression "param_2[iVar2]" identifier [ identifier ]) , identifier ))) ;) }) while (parenthesized_expression "(iVar7 < (int)(uint)*param_2)" ( (binary_expression "iVar7 < (int)(uint)*param_2" identifier < (binary_expression "(int)(uint)*param_2" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) )) ;) })) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "Telephone Operations";" (assignment_expression "pcVar6 = "Telephone Operations"" identifier = (string_literal ""Telephone Operations"" " string_content ")) ;) (if_statement "if (*param_2 != 4) break;" if (parenthesized_expression "(*param_2 != 4)" ( (binary_expression "*param_2 != 4" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);" (call_expression "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3])" identifier (argument_list "(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3])" ( number_literal , (string_literal ""%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\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,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    computer centric mode\n","      ");" (call_expression "__printf_chk(1,"%s    computer centric mode\n","      ")" identifier (argument_list "(1,"%s    computer centric mode\n","      ")" ( number_literal , (string_literal ""%s    computer centric mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\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,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }" { (expression_statement "__printf_chk(1,"%s    standalone mode\n","      ");" (call_expression "__printf_chk(1,"%s    standalone mode\n","      ")" identifier (argument_list "(1,"%s    standalone mode\n","      ")" ( number_literal , (string_literal ""%s    standalone mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) goto code_r0x00018d54;" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    simple mode\n";" (assignment_expression "pcVar5 = "%s    simple mode\n"" identifier = (string_literal ""%s    simple mode\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Network Channel Terminal";" (assignment_expression "pcVar6 = "Network Channel Terminal"" identifier = (string_literal ""Network Channel Terminal"" " string_content ")) ;) (if_statement "if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 7)" ( (binary_expression "*param_2 == 7" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[4])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[4])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[4])" identifier (argument_list "(param_1,param_2[4])" ( identifier , (subscript_expression "param_2[4]" identifier [ number_literal ]) ))))) ;) (expression_statement "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);" (call_expression "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6])" identifier (argument_list "(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6])" ( number_literal , (string_literal ""%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[6]" identifier [ number_literal ]) ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Ethernet";" (assignment_expression "pcVar6 = "Ethernet"" identifier = (string_literal ""Ethernet"" " string_content ")) ;) (if_statement "if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 0xd)" ( (binary_expression "*param_2 == 0xd" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[3])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[3])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[3])" identifier (argument_list "(param_1,param_2[3])" ( identifier , (subscript_expression "param_2[3]" identifier [ number_literal ]) ))))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((param_2[3] != 0) && (*pcVar6 != '\0'))" ( (binary_expression "(param_2[3] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[3] != 0)" ( (binary_expression "param_2[3] != 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));" (call_expression "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4))" identifier (argument_list "(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4))" ( number_literal , (string_literal ""%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);" (call_expression "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc])" identifier (argument_list "(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc])" ( number_literal , (string_literal ""%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[0xc]" identifier [ number_literal ]) ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "WHCM version";" (assignment_expression "pcVar6 = "WHCM version"" identifier = (string_literal ""WHCM version"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" identifier = (string_literal ""%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "MDLM";" (assignment_expression "pcVar6 = "MDLM"" identifier = (string_literal ""MDLM"" " string_content ")) ;) (if_statement "if (*param_2 != 0x15) break;" if (parenthesized_expression "(*param_2 != 0x15)" ( (binary_expression "*param_2 != 0x15" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "FUN_00016b50();" (call_expression "FUN_00016b50()" identifier (argument_list "()" ( ))) ;) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";" (assignment_expression "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" identifier = (string_literal ""%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "MDLM detail";" (assignment_expression "pcVar6 = "MDLM detail"" identifier = (string_literal ""MDLM detail"" " string_content ")) ;) (if_statement "if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(4 < *param_2)" ( (binary_expression "4 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");" (call_expression "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ")" identifier (argument_list "(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ")" ( number_literal , (string_literal ""%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         "" " string_content escape_sequence string_content escape_sequence string_content ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;" case number_literal : (expression_statement "pcVar6 = "Device Management";" (assignment_expression "pcVar6 = "Device Management"" identifier = (string_literal ""Device Management"" " string_content ")) ;) (if_statement "if (*param_2 != 7) break;" if (parenthesized_expression "(*param_2 != 7)" ( (binary_expression "*param_2 != 7" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";" (assignment_expression "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" identifier = (string_literal ""%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00018b91;" goto statement_identifier ;)) (case_statement "case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;" case number_literal : (expression_statement "pcVar6 = "OBEX";" (assignment_expression "pcVar6 = "OBEX"" identifier = (string_literal ""OBEX"" " string_content ")) ;) (if_statement "if (*param_2 != 5) break;" if (parenthesized_expression "(*param_2 != 5)" ( (binary_expression "*param_2 != 5" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" identifier = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" identifier = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" identifier = (string_literal ""%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" " string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement "code_r0x00018b91:\n    pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "__printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);" (call_expression "__printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3)" identifier (argument_list "(1,pcVar5,"      ","      ",bVar8,bVar3)" ( number_literal , identifier , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , identifier , identifier ))) ;) (labeled_statement "code_r0x00018be1:\n    free(pcVar6);" statement_identifier : (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;)) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;" case number_literal : (expression_statement "pcVar6 = "Command Set";" (assignment_expression "pcVar6 = "Command Set"" identifier = (string_literal ""Command Set"" " string_content ")) ;) (if_statement "if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 0x16)" ( (binary_expression "*param_2 == 0x16" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[5])" identifier = (cast_expression "(char *)FUN_00021270(param_1,param_2[5])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021270(param_1,param_2[5])" identifier (argument_list "(param_1,param_2[5])" ( identifier , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))))) ;) (expression_statement "uVar4 = FUN_00016b50();" (assignment_expression "uVar4 = FUN_00016b50()" identifier = (call_expression "FUN_00016b50()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" identifier = (string_literal ""(??)"" " string_content ")) ;) (if_statement "if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" if (parenthesized_expression "((param_2[5] != 0) && (*pcVar6 != '\0'))" ( (binary_expression "(param_2[5] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[5] != 0)" ( (binary_expression "param_2[5] != 0" (subscript_expression "param_2[5]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*pcVar6 != '\0')" ( (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" { (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" identifier = identifier) ;) })) (expression_statement "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);" (call_expression "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4)" identifier (argument_list "(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4)" ( number_literal , (string_literal ""%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) , identifier , (string_literal ""      "" " string_content ") , identifier ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) })) (break_statement "break;" break ;)) (case_statement "case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;" case number_literal : (expression_statement "pcVar6 = "NCM";" (assignment_expression "pcVar6 = "NCM"" identifier = (string_literal ""NCM"" " string_content ")) ;) (if_statement "if (*param_2 != 6) break;" if (parenthesized_expression "(*param_2 != 6)" ( (binary_expression "*param_2 != 6" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);" (call_expression "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5])" identifier (argument_list "(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5])" ( number_literal , (string_literal ""%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" identifier (argument_list "(1,"%s    8-byte ntb input size\n","      ")" ( number_literal , (string_literal ""%s    8-byte ntb input size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\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,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    crc mode\n","      ");" (call_expression "__printf_chk(1,"%s    crc mode\n","      ")" identifier (argument_list "(1,"%s    crc mode\n","      ")" ( number_literal , (string_literal ""%s    crc mode\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\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,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    max datagram size\n","      ");" (call_expression "__printf_chk(1,"%s    max datagram size\n","      ")" identifier (argument_list "(1,"%s    max datagram size\n","      ")" ( number_literal , (string_literal ""%s    max datagram size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\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,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    encapsulated commands\n","      ");" (call_expression "__printf_chk(1,"%s    encapsulated commands\n","      ")" identifier (argument_list "(1,"%s    encapsulated commands\n","      ")" ( number_literal , (string_literal ""%s    encapsulated commands\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\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,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }" { (expression_statement "__printf_chk(1,"%s    net address\n","      ");" (call_expression "__printf_chk(1,"%s    net address\n","      ")" identifier (argument_list "(1,"%s    net address\n","      ")" ( number_literal , (string_literal ""%s    net address\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 1) == 0) goto code_r0x00018d54;" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    packet filter\n";" (assignment_expression "pcVar5 = "%s    packet filter\n"" identifier = (string_literal ""%s    packet filter\n"" " string_content escape_sequence ")) ;) (goto_statement "goto code_r0x00019140;" goto statement_identifier ;)) (case_statement "case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;" case number_literal : (expression_statement "pcVar6 = "MBIM";" (assignment_expression "pcVar6 = "MBIM"" identifier = (string_literal ""MBIM"" " string_content ")) ;) (if_statement "if (*param_2 != 0xc) break;" if (parenthesized_expression "(*param_2 != 0xc)" ( (binary_expression "*param_2 != 0xc" (pointer_expression "*param_2" * identifier) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);" (call_expression "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb])" identifier (argument_list "(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb])" ( number_literal , (string_literal ""%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (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) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[7]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[8]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined2 *)(param_2 + 9)" * (cast_expression "(undefined2 *)(param_2 + 9)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 9)" ( (binary_expression "param_2 + 9" identifier + number_literal) )))) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[0xb]" identifier [ number_literal ]) ))) ;) (expression_statement "bVar3 = param_2[0xb];" (assignment_expression "bVar3 = param_2[0xb]" identifier = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }" { (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" identifier (argument_list "(1,"%s    8-byte ntb input size\n","      ")" ( number_literal , (string_literal ""%s    8-byte ntb input size\n"" " string_content escape_sequence ") , (string_literal ""      "" " string_content ") ))) ;) (expression_statement "bVar3 = param_2[0xb];" (assignment_expression "bVar3 = param_2[0xb]" identifier = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) })) (if_statement "if ((bVar3 & 8) == 0) goto code_r0x00018d54;" if (parenthesized_expression "((bVar3 & 8) == 0)" ( (binary_expression "(bVar3 & 8) == 0" (parenthesized_expression "(bVar3 & 8)" ( (binary_expression "bVar3 & 8" identifier & number_literal) )) == number_literal) )) (goto_statement "goto code_r0x00018d54;" goto statement_identifier ;)) (expression_statement "pcVar5 = "%s    max datagram size\n";" (assignment_expression "pcVar5 = "%s    max datagram size\n"" identifier = (string_literal ""%s    max datagram size\n"" " string_content escape_sequence ")) ;) (labeled_statement "code_r0x00019140:\n    pcVar6 = (char *)0x0;" statement_identifier : (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "__printf_chk(1,pcVar5,"      ");" (call_expression "__printf_chk(1,pcVar5,"      ")" identifier (argument_list "(1,pcVar5,"      ")" ( number_literal , identifier , (string_literal ""      "" " string_content ") ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;)) (case_statement "case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" case number_literal : (expression_statement "pcVar6 = "MBIM Extended";" (assignment_expression "pcVar6 = "MBIM Extended"" identifier = (string_literal ""MBIM Extended"" " string_content ")) ;) (if_statement "if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" if (parenthesized_expression "(*param_2 == 8)" ( (binary_expression "*param_2 == 8" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" { (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));" (call_expression "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6))" identifier (argument_list "(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6))" ( number_literal , (string_literal ""%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal ""      "" " string_content ") , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (subscript_expression "param_2[3]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (subscript_expression "param_2[5]" identifier [ number_literal ]) , (string_literal ""      "" " string_content ") , (pointer_expression "*(undefined2 *)(param_2 + 6)" * (cast_expression "(undefined2 *)(param_2 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) ))) ;) (goto_statement "goto code_r0x00018be1;" goto statement_identifier ;) }))) })) (expression_statement "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);" (call_expression "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6)" identifier (argument_list "(1,"%sINVALID CDC (%s): ","      ",pcVar6)" ( number_literal , (string_literal ""%sINVALID CDC (%s): "" " string_content ") , (string_literal ""      "" " string_content ") , identifier ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (return_statement "return "corrupt comm descriptor";" return (string_literal ""corrupt comm descriptor"" " string_content ") ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (switch_statement switch (parenthesized_expression ( (subscript_expression IDENT [ LIT ]) )) (compound_statement { (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement default : (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (string_literal " string_content ") ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (break_statement break ;)) (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 ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") ))) ;) (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 , (pointer_expression & IDENT) , (pointer_expression * IDENT) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) ))) )) (compound_statement { (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 = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (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_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (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 + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") , (pointer_expression * IDENT) , (subscript_expression IDENT [ IDENT ]) , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * IDENT)) )) ;) })) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (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 (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 ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , IDENT , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (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 = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (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_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , IDENT , (string_literal " string_content ") , (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 string_content escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence string_content escape_sequence ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , (string_literal " string_content ") , (string_literal " string_content ") , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (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 = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (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 ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , IDENT , (string_literal " string_content ") , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (break_statement break ;)) (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 string_content escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , (string_literal " string_content ") ))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ") , (string_literal " string_content ") , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (goto_statement goto statement_identifier ;) }))) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return (string_literal " string_content ") ;) })))
(function_definition "char * __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)\n\n{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}" (primitive_type "char") (pointer_declarator "* __regparm3 FUN_00018a90(undefined4 param_1,byte *param_2)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00018a90(undefined4 param_1,byte *param_2)" (identifier "FUN_00018a90") (parameter_list "(undefined4 param_1,byte *param_2)" (( "(") (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"))) () ")")))) (compound_statement "{\n  byte *pbVar1;\n  int iVar2;\n  byte bVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  int iVar7;\n  byte bVar8;\n  \n  switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }\n  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);\n  FUN_00016990();\n  return "corrupt comm descriptor";\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (switch_statement "switch(param_2[2]) {\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }" (switch "switch") (parenthesized_expression "(param_2[2])" (( "(") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) () ")")) (compound_statement "{\n  case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;\n  case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;\n  case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;\n  default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";\n  case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;\n  case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;\n  case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;\n  case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;\n  case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;\n  case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;\n  case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;\n  case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;\n  case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;\n  case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;\n  case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }\n  }" ({ "{") (case_statement "case 0:\n    pcVar6 = "Header";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";\n    goto code_r0x00018b91;" (case "case") (number_literal "0") (: ":") (expression_statement "pcVar6 = "Header";" (assignment_expression "pcVar6 = "Header"" (identifier "pcVar6") (= "=") (string_literal ""Header"" (" """) (string_content "Header") (" """))) (; ";")) (if_statement "if (*param_2 != 5) break;" (if "if") (parenthesized_expression "(*param_2 != 5)" (( "(") (binary_expression "*param_2 != 5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" (identifier "bVar8") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" (identifier "pcVar5") (= "=") (string_literal ""%sCDC Header:\n%s  bcdCDC               %x.%02x\n"" (" """) (string_content "%sCDC Header:") (escape_sequence "\n") (string_content "%s  bcdCDC               %x.%02x") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00018b91;" (goto "goto") (statement_identifier "code_r0x00018b91") (; ";"))) (case_statement "case 1:\n    pcVar6 = "Call Management";\n    if (*param_2 != 5) break;\n    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\n    }\n    pcVar5 = "%s  bDataInterface          %d\n";\n    goto code_r0x00019140;" (case "case") (number_literal "1") (: ":") (expression_statement "pcVar6 = "Call Management";" (assignment_expression "pcVar6 = "Call Management"" (identifier "pcVar6") (= "=") (string_literal ""Call Management"" (" """) (string_content "Call Management") (" """))) (; ";")) (if_statement "if (*param_2 != 5) break;" (if "if") (parenthesized_expression "(*param_2 != 5)" (( "(") (binary_expression "*param_2 != 5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3]);" (call_expression "__printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3])" (identifier "__printf_chk") (argument_list "(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",\n                 param_2[3])" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n"" (" """) (string_content "%sCDC Call Management:") (escape_sequence "\n") (string_content "%s  bmCapabilities       0x%02x") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((bVar3 & 1) != 0) {\n      __printf_chk(1,"%s    call management\n","      ");\n      bVar3 = param_2[3];\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,"%s    call management\n","      ");\n      bVar3 = param_2[3];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    call management\n","      ");" (call_expression "__printf_chk(1,"%s    call management\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    call management\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    call management\n"" (" """) (string_content "%s    call management") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    use DataInterface\n","      ");\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,"%s    use DataInterface\n","      ");\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    use DataInterface\n","      ");" (call_expression "__printf_chk(1,"%s    use DataInterface\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    use DataInterface\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    use DataInterface\n"" (" """) (string_content "%s    use DataInterface") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar5 = "%s  bDataInterface          %d\n";" (assignment_expression "pcVar5 = "%s  bDataInterface          %d\n"" (identifier "pcVar5") (= "=") (string_literal ""%s  bDataInterface          %d\n"" (" """) (string_content "%s  bDataInterface          %d") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00019140;" (goto "goto") (statement_identifier "code_r0x00019140") (; ";"))) (case_statement "case 2:\n    pcVar6 = "ACM";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }\n    pcVar5 = "%s    get/set/clear comm features\n";\n    goto code_r0x00019140;" (case "case") (number_literal "2") (: ":") (expression_statement "pcVar6 = "ACM";" (assignment_expression "pcVar6 = "ACM"" (identifier "pcVar6") (= "=") (string_literal ""ACM"" (" """) (string_content "ACM") (" """))) (; ";")) (if_statement "if (*param_2 != 4) break;" (if "if") (parenthesized_expression "(*param_2 != 4)" (( "(") (binary_expression "*param_2 != 4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);" (call_expression "__printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3])" (identifier "__printf_chk") (argument_list "(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3])" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC ACM:\n%s  bmCapabilities       0x%02x\n"" (" """) (string_content "%sCDC ACM:") (escape_sequence "\n") (string_content "%s  bmCapabilities       0x%02x") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\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,"%s    connection notifications\n","      ");\n      bVar3 = param_2[3];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    connection notifications\n","      ");" (call_expression "__printf_chk(1,"%s    connection notifications\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    connection notifications\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    connection notifications\n"" (" """) (string_content "%s    connection notifications") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\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,"%s    sends break\n","      ");\n      bVar3 = param_2[3];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    sends break\n","      ");" (call_expression "__printf_chk(1,"%s    sends break\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    sends break\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    sends break\n"" (" """) (string_content "%s    sends break") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\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,"%s    line coding and serial state\n","      ");\n      bVar3 = param_2[3];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    line coding and serial state\n","      ");" (call_expression "__printf_chk(1,"%s    line coding and serial state\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    line coding and serial state\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    line coding and serial state\n"" (" """) (string_content "%s    line coding and serial state") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 1) == 0) {\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\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 "{\ncode_r0x00018d54:\n      pcVar6 = (char *)0x0;\n      goto code_r0x00018be1;\n    }" ({ "{") (labeled_statement "code_r0x00018d54:\n      pcVar6 = (char *)0x0;" (statement_identifier "code_r0x00018d54") (: ":") (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";")) (} "}"))) (expression_statement "pcVar5 = "%s    get/set/clear comm features\n";" (assignment_expression "pcVar5 = "%s    get/set/clear comm features\n"" (identifier "pcVar5") (= "=") (string_literal ""%s    get/set/clear comm features\n"" (" """) (string_content "%s    get/set/clear comm features") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00019140;" (goto "goto") (statement_identifier "code_r0x00019140") (; ";"))) (case_statement "default:\n    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");\n    FUN_00016990();\n    return "unrecognized comm descriptor";" (default "default") (: ":") (expression_statement "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");" (call_expression "__printf_chk(1,"%sUNRECOGNIZED CDC: ","      ")" (identifier "__printf_chk") (argument_list "(1,"%sUNRECOGNIZED CDC: ","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%sUNRECOGNIZED CDC: "" (" """) (string_content "%sUNRECOGNIZED CDC: ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" (identifier "FUN_00016990") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return "unrecognized comm descriptor";" (return "return") (string_literal ""unrecognized comm descriptor"" (" """) (string_content "unrecognized comm descriptor") (" """)) (; ";"))) (case_statement "case 6:\n    pcVar6 = "Union";\n    if (*param_2 < 5) break;\n    iVar7 = 4;\n    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");\n    if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }\n    pcVar6 = (char *)0x0;\n    putchar(10);\n    goto code_r0x00018be1;" (case "case") (number_literal "6") (: ":") (expression_statement "pcVar6 = "Union";" (assignment_expression "pcVar6 = "Union"" (identifier "pcVar6") (= "=") (string_literal ""Union"" (" """) (string_content "Union") (" """))) (; ";")) (if_statement "if (*param_2 < 5) break;" (if "if") (parenthesized_expression "(*param_2 < 5)" (( "(") (binary_expression "*param_2 < 5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (number_literal "5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" (identifier "iVar7") (= "=") (number_literal "4")) (; ";")) (expression_statement "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ");" (call_expression "__printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ")" (identifier "__printf_chk") (argument_list "(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",\n                 "      ","      ",param_2[3],"      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         "" (" """) (string_content "%sCDC Union:") (escape_sequence "\n") (string_content "%s  bMasterInterface        %d") (escape_sequence "\n") (string_content "%s  bSlaveInterface         ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (if_statement "if (4 < *param_2) {\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }" (if "if") (parenthesized_expression "(4 < *param_2)" (( "(") (binary_expression "4 < *param_2" (number_literal "4") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n      do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);\n    }" ({ "{") (do_statement "do {\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      } while (iVar7 < (int)(uint)*param_2);" (do "do") (compound_statement "{\n        pbVar1 = param_2 + iVar7;\n        iVar7 = iVar7 + 1;\n        __printf_chk(1,&UNK_00022691,*pbVar1);\n      }" ({ "{") (expression_statement "pbVar1 = param_2 + iVar7;" (assignment_expression "pbVar1 = param_2 + iVar7" (identifier "pbVar1") (= "=") (binary_expression "param_2 + iVar7" (identifier "param_2") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__printf_chk(1,&UNK_00022691,*pbVar1);" (call_expression "__printf_chk(1,&UNK_00022691,*pbVar1)" (identifier "__printf_chk") (argument_list "(1,&UNK_00022691,*pbVar1)" (( "(") (number_literal "1") (, ",") (pointer_expression "&UNK_00022691" (& "&") (identifier "UNK_00022691")) (, ",") (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 < (int)(uint)*param_2)" (( "(") (binary_expression "iVar7 < (int)(uint)*param_2" (identifier "iVar7") (< "<") (binary_expression "(int)(uint)*param_2" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";"))) (case_statement "case 7:\n    pcVar6 = "Country Selection";\n    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }\n    break;" (case "case") (number_literal "7") (: ":") (expression_statement "pcVar6 = "Country Selection";" (assignment_expression "pcVar6 = "Country Selection"" (identifier "pcVar6") (= "=") (string_literal ""Country Selection"" (" """) (string_content "Country Selection") (" """))) (; ";")) (if_statement "if ((5 < *param_2) && ((*param_2 & 1) == 0)) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }" (if "if") (parenthesized_expression "((5 < *param_2) && ((*param_2 & 1) == 0))" (( "(") (binary_expression "(5 < *param_2) && ((*param_2 & 1) == 0)" (parenthesized_expression "(5 < *param_2)" (( "(") (binary_expression "5 < *param_2" (number_literal "5") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (&& "&&") (parenthesized_expression "((*param_2 & 1) == 0)" (( "(") (binary_expression "(*param_2 & 1) == 0" (parenthesized_expression "(*param_2 & 1)" (( "(") (binary_expression "*param_2 & 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);\n      if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }\n      goto code_r0x00018be1;\n    }" ({ "{") (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[3])" (identifier "pcVar6") (= "=") (cast_expression "(char *)FUN_00021270(param_1,param_2[3])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00021270(param_1,param_2[3])" (identifier "FUN_00021270") (argument_list "(param_1,param_2[3])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) () ")"))))) (; ";")) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" (identifier "pcVar5") (= "=") (string_literal ""(??)"" (" """) (string_content "(??)") (" """))) (; ";")) (if_statement "if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" (if "if") (parenthesized_expression "((param_2[3] != 0) && (*pcVar6 != '\0'))" (( "(") (binary_expression "(param_2[3] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[3] != 0)" (( "(") (binary_expression "param_2[3] != 0" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar6 != '\0')" (( "(") (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" ({ "{") (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" (identifier "pcVar5") (= "=") (identifier "pcVar6")) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5);" (call_expression "__printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5)" (identifier "__printf_chk") (argument_list "(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",\n                   param_2[3],pcVar5)" (( "(") (number_literal "1") (, ",") (string_literal ""%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n"" (" """) (string_content "%sCountry Selection:") (escape_sequence "\n") (string_content "%s  iCountryCodeRelDate     %4d %s") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "pcVar5") () ")"))) (; ";")) (if_statement "if (4 < *param_2) {\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }" (if "if") (parenthesized_expression "(4 < *param_2)" (( "(") (binary_expression "4 < *param_2" (number_literal "4") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n        iVar7 = 4;\n        do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);\n      }" ({ "{") (expression_statement "iVar7 = 4;" (assignment_expression "iVar7 = 4" (identifier "iVar7") (= "=") (number_literal "4")) (; ";")) (do_statement "do {\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        } while (iVar7 < (int)(uint)*param_2);" (do "do") (compound_statement "{\n          iVar2 = iVar7 + 1;\n          pbVar1 = param_2 + iVar7;\n          iVar7 = iVar7 + 2;\n          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);\n        }" ({ "{") (expression_statement "iVar2 = iVar7 + 1;" (assignment_expression "iVar2 = iVar7 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar1 = param_2 + iVar7;" (assignment_expression "pbVar1 = param_2 + iVar7" (identifier "pbVar1") (= "=") (binary_expression "param_2 + iVar7" (identifier "param_2") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 2" (identifier "iVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5);" (call_expression "__printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5)" (identifier "__printf_chk") (argument_list "(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],\n                       pcVar5)" (( "(") (number_literal "1") (, ",") (string_literal ""%s  wCountryCode          0x%02x%02x\n"" (" """) (string_content "%s  wCountryCode          0x%02x%02x") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (, ",") (subscript_expression "param_2[iVar2]" (identifier "param_2") ([ "[") (identifier "iVar2") (] "]")) (, ",") (identifier "pcVar5") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 < (int)(uint)*param_2)" (( "(") (binary_expression "iVar7 < (int)(uint)*param_2" (identifier "iVar7") (< "<") (binary_expression "(int)(uint)*param_2" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "param_2"))) () ")")) (; ";")) (} "}"))) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 8:\n    pcVar6 = "Telephone Operations";\n    if (*param_2 != 4) break;\n    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);\n    bVar3 = param_2[3];\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    simple mode\n";\n    goto code_r0x00019140;" (case "case") (number_literal "8") (: ":") (expression_statement "pcVar6 = "Telephone Operations";" (assignment_expression "pcVar6 = "Telephone Operations"" (identifier "pcVar6") (= "=") (string_literal ""Telephone Operations"" (" """) (string_content "Telephone Operations") (" """))) (; ";")) (if_statement "if (*param_2 != 4) break;" (if "if") (parenthesized_expression "(*param_2 != 4)" (( "(") (binary_expression "*param_2 != 4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3]);" (call_expression "__printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3])" (identifier "__printf_chk") (argument_list "(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",\n                 "      ",param_2[3])" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n"" (" """) (string_content "%sCDC Telephone operations:") (escape_sequence "\n") (string_content "%s  bmCapabilities       0x%02x") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\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,"%s    computer centric mode\n","      ");\n      bVar3 = param_2[3];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    computer centric mode\n","      ");" (call_expression "__printf_chk(1,"%s    computer centric mode\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    computer centric mode\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    computer centric mode\n"" (" """) (string_content "%s    computer centric mode") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\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,"%s    standalone mode\n","      ");\n      bVar3 = param_2[3];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    standalone mode\n","      ");" (call_expression "__printf_chk(1,"%s    standalone mode\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    standalone mode\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    standalone mode\n"" (" """) (string_content "%s    standalone mode") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 1) == 0) goto code_r0x00018d54;" (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")) () ")")) (goto_statement "goto code_r0x00018d54;" (goto "goto") (statement_identifier "code_r0x00018d54") (; ";"))) (expression_statement "pcVar5 = "%s    simple mode\n";" (assignment_expression "pcVar5 = "%s    simple mode\n"" (identifier "pcVar5") (= "=") (string_literal ""%s    simple mode\n"" (" """) (string_content "%s    simple mode") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00019140;" (goto "goto") (statement_identifier "code_r0x00019140") (; ";"))) (case_statement "case 10:\n    pcVar6 = "Network Channel Terminal";\n    if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }\n    break;" (case "case") (number_literal "10") (: ":") (expression_statement "pcVar6 = "Network Channel Terminal";" (assignment_expression "pcVar6 = "Network Channel Terminal"" (identifier "pcVar6") (= "=") (string_literal ""Network Channel Terminal"" (" """) (string_content "Network Channel Terminal") (" """))) (; ";")) (if_statement "if (*param_2 == 7) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }" (if "if") (parenthesized_expression "(*param_2 == 7)" (( "(") (binary_expression "*param_2 == 7" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "7")) () ")")) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);\n      __printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);\n      goto code_r0x00018be1;\n    }" ({ "{") (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[4])" (identifier "pcVar6") (= "=") (cast_expression "(char *)FUN_00021270(param_1,param_2[4])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00021270(param_1,param_2[4])" (identifier "FUN_00021270") (argument_list "(param_1,param_2[4])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) () ")"))))) (; ";")) (expression_statement "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6]);" (call_expression "__printf_chk(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6])" (identifier "__printf_chk") (argument_list "(1,\n                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"\n                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],\n                   "      ",param_2[6])" (( "(") (number_literal "1") (, ",") (string_literal ""%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"" (" """) (string_content "%sNetwork Channel Terminal:") (escape_sequence "\n") (string_content "%s  bEntityId               %3d") (escape_sequence "\n") (string_content "%s  iName                   %3d %s") (escape_sequence "\n") (string_content "%s  bChannelIndex           %3d") (escape_sequence "\n") (string_content "%s  bPhysicalInterface      %3d") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "pcVar6") (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) () ")"))) (; ";")) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xf:\n    pcVar6 = "Ethernet";\n    if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }\n    break;" (case "case") (number_literal "0xf") (: ":") (expression_statement "pcVar6 = "Ethernet";" (assignment_expression "pcVar6 = "Ethernet"" (identifier "pcVar6") (= "=") (string_literal ""Ethernet"" (" """) (string_content "Ethernet") (" """))) (; ";")) (if_statement "if (*param_2 == 0xd) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\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      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);\n      pcVar5 = "(??)";\n      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));\n      __printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);\n      goto code_r0x00018be1;\n    }" ({ "{") (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[3])" (identifier "pcVar6") (= "=") (cast_expression "(char *)FUN_00021270(param_1,param_2[3])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00021270(param_1,param_2[3])" (identifier "FUN_00021270") (argument_list "(param_1,param_2[3])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) () ")"))))) (; ";")) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" (identifier "pcVar5") (= "=") (string_literal ""(??)"" (" """) (string_content "(??)") (" """))) (; ";")) (if_statement "if ((param_2[3] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" (if "if") (parenthesized_expression "((param_2[3] != 0) && (*pcVar6 != '\0'))" (( "(") (binary_expression "(param_2[3] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[3] != 0)" (( "(") (binary_expression "param_2[3] != 0" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar6 != '\0')" (( "(") (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" ({ "{") (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" (identifier "pcVar5") (= "=") (identifier "pcVar6")) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));" (call_expression "__printf_chk(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4))" (identifier "__printf_chk") (argument_list "(1,\n                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"\n                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4))" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"" (" """) (string_content "%sCDC Ethernet:") (escape_sequence "\n") (string_content "%s  iMacAddress             %10d %s") (escape_sequence "\n") (string_content "%s  bmEthernetStatistics    0x%08x") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "pcVar5") (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc]);" (call_expression "__printf_chk(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc])" (identifier "__printf_chk") (argument_list "(1,\n                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"\n                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),\n                   "      ",param_2[0xc])" (( "(") (number_literal "1") (, ",") (string_literal ""%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"" (" """) (string_content "%s  wMaxSegmentSize         %10d") (escape_sequence "\n") (string_content "%s  wNumberMCFilters            0x%04x") (escape_sequence "\n") (string_content "%s  bNumberPowerFilters     %10d") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (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")) () ")")))) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (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")) () ")")))) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]")) () ")"))) (; ";")) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x11:\n    pcVar6 = "WHCM version";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";\n    goto code_r0x00018b91;" (case "case") (number_literal "0x11") (: ":") (expression_statement "pcVar6 = "WHCM version";" (assignment_expression "pcVar6 = "WHCM version"" (identifier "pcVar6") (= "=") (string_literal ""WHCM version"" (" """) (string_content "WHCM version") (" """))) (; ";")) (if_statement "if (*param_2 != 5) break;" (if "if") (parenthesized_expression "(*param_2 != 5)" (( "(") (binary_expression "*param_2 != 5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" (identifier "bVar8") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" (identifier "pcVar5") (= "=") (string_literal ""%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n"" (" """) (string_content "%sCDC WHCM:") (escape_sequence "\n") (string_content "%s  bcdVersion           %x.%02x") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00018b91;" (goto "goto") (statement_identifier "code_r0x00018b91") (; ";"))) (case_statement "case 0x12:\n    pcVar6 = "MDLM";\n    if (*param_2 != 0x15) break;\n    FUN_00016b50();\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";\n    goto code_r0x00018b91;" (case "case") (number_literal "0x12") (: ":") (expression_statement "pcVar6 = "MDLM";" (assignment_expression "pcVar6 = "MDLM"" (identifier "pcVar6") (= "=") (string_literal ""MDLM"" (" """) (string_content "MDLM") (" """))) (; ";")) (if_statement "if (*param_2 != 0x15) break;" (if "if") (parenthesized_expression "(*param_2 != 0x15)" (( "(") (binary_expression "*param_2 != 0x15" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "0x15")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "FUN_00016b50();" (call_expression "FUN_00016b50()" (identifier "FUN_00016b50") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" (identifier "bVar8") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";" (assignment_expression "pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" (identifier "pcVar5") (= "=") (string_literal ""%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n"" (" """) (string_content "%sCDC MDLM:") (escape_sequence "\n") (string_content "%s  bcdCDC               %x.%02x") (escape_sequence "\n") (string_content "%s  bGUID               %s") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00018b91;" (goto "goto") (statement_identifier "code_r0x00018b91") (; ";"))) (case_statement "case 0x13:\n    pcVar6 = "MDLM detail";\n    if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }\n    break;" (case "case") (number_literal "0x13") (: ":") (expression_statement "pcVar6 = "MDLM detail";" (assignment_expression "pcVar6 = "MDLM detail"" (identifier "pcVar6") (= "=") (string_literal ""MDLM detail"" (" """) (string_content "MDLM detail") (" """))) (; ";")) (if_statement "if (4 < *param_2) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }" (if "if") (parenthesized_expression "(4 < *param_2)" (( "(") (binary_expression "4 < *param_2" (number_literal "4") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");\n      FUN_00016990();\n      goto code_r0x00018be1;\n    }" ({ "{") (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ");" (call_expression "__printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ")" (identifier "__printf_chk") (argument_list "(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",\n                   "      ","      ",param_2[3],"      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         "" (" """) (string_content "%sCDC MDLM detail:") (escape_sequence "\n") (string_content "%s  bGuidDescriptorType  %02x") (escape_sequence "\n") (string_content "%s  bDetailData         ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" (identifier "FUN_00016990") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x14:\n    pcVar6 = "Device Management";\n    if (*param_2 != 7) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";\n    goto code_r0x00018b91;" (case "case") (number_literal "0x14") (: ":") (expression_statement "pcVar6 = "Device Management";" (assignment_expression "pcVar6 = "Device Management"" (identifier "pcVar6") (= "=") (string_literal ""Device Management"" (" """) (string_content "Device Management") (" """))) (; ";")) (if_statement "if (*param_2 != 7) break;" (if "if") (parenthesized_expression "(*param_2 != 7)" (( "(") (binary_expression "*param_2 != 7" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "7")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" (identifier "bVar8") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";" (assignment_expression "pcVar5 = \n    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" (identifier "pcVar5") (= "=") (string_literal ""%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n"" (" """) (string_content "%sCDC Device Management:") (escape_sequence "\n") (string_content "%s  bcdVersion           %x.%02x") (escape_sequence "\n") (string_content "%s  wMaxCommand          %d") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00018b91;" (goto "goto") (statement_identifier "code_r0x00018b91") (; ";"))) (case_statement "case 0x15:\n    pcVar6 = "OBEX";\n    if (*param_2 != 5) break;\n    bVar3 = param_2[3];\n    bVar8 = param_2[4];\n    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";\ncode_r0x00018b91:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);\ncode_r0x00018be1:\n    free(pcVar6);\n    return (char *)0x0;" (case "case") (number_literal "0x15") (: ":") (expression_statement "pcVar6 = "OBEX";" (assignment_expression "pcVar6 = "OBEX"" (identifier "pcVar6") (= "=") (string_literal ""OBEX"" (" """) (string_content "OBEX") (" """))) (; ";")) (if_statement "if (*param_2 != 5) break;" (if "if") (parenthesized_expression "(*param_2 != 5)" (( "(") (binary_expression "*param_2 != 5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar3 = param_2[3];" (assignment_expression "bVar3 = param_2[3]" (identifier "bVar3") (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "bVar8 = param_2[4];" (assignment_expression "bVar8 = param_2[4]" (identifier "bVar8") (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";" (assignment_expression "pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" (identifier "pcVar5") (= "=") (string_literal ""%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n"" (" """) (string_content "%sCDC OBEX:") (escape_sequence "\n") (string_content "%s  bcdVersion           %x.%02x") (escape_sequence "\n") (" """))) (; ";")) (labeled_statement "code_r0x00018b91:\n    pcVar6 = (char *)0x0;" (statement_identifier "code_r0x00018b91") (: ":") (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "__printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);" (call_expression "__printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3)" (identifier "__printf_chk") (argument_list "(1,pcVar5,"      ","      ",bVar8,bVar3)" (( "(") (number_literal "1") (, ",") (identifier "pcVar5") (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (identifier "bVar8") (, ",") (identifier "bVar3") () ")"))) (; ";")) (labeled_statement "code_r0x00018be1:\n    free(pcVar6);" (statement_identifier "code_r0x00018be1") (: ":") (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" (identifier "free") (argument_list "(pcVar6)" (( "(") (identifier "pcVar6") () ")"))) (; ";"))) (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (case_statement "case 0x16:\n    pcVar6 = "Command Set";\n    if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }\n    break;" (case "case") (number_literal "0x16") (: ":") (expression_statement "pcVar6 = "Command Set";" (assignment_expression "pcVar6 = "Command Set"" (identifier "pcVar6") (= "=") (string_literal ""Command Set"" (" """) (string_content "Command Set") (" """))) (; ";")) (if_statement "if (*param_2 == 0x16) {\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }" (if "if") (parenthesized_expression "(*param_2 == 0x16)" (( "(") (binary_expression "*param_2 == 0x16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "0x16")) () ")")) (compound_statement "{\n      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);\n      uVar4 = FUN_00016b50();\n      pcVar5 = "(??)";\n      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }\n      __printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);\n      goto code_r0x00018be1;\n    }" ({ "{") (expression_statement "pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);" (assignment_expression "pcVar6 = (char *)FUN_00021270(param_1,param_2[5])" (identifier "pcVar6") (= "=") (cast_expression "(char *)FUN_00021270(param_1,param_2[5])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00021270(param_1,param_2[5])" (identifier "FUN_00021270") (argument_list "(param_1,param_2[5])" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) () ")"))))) (; ";")) (expression_statement "uVar4 = FUN_00016b50();" (assignment_expression "uVar4 = FUN_00016b50()" (identifier "uVar4") (= "=") (call_expression "FUN_00016b50()" (identifier "FUN_00016b50") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar5 = "(??)";" (assignment_expression "pcVar5 = "(??)"" (identifier "pcVar5") (= "=") (string_literal ""(??)"" (" """) (string_content "(??)") (" """))) (; ";")) (if_statement "if ((param_2[5] != 0) && (*pcVar6 != '\0')) {\n        pcVar5 = pcVar6;\n      }" (if "if") (parenthesized_expression "((param_2[5] != 0) && (*pcVar6 != '\0'))" (( "(") (binary_expression "(param_2[5] != 0) && (*pcVar6 != '\0')" (parenthesized_expression "(param_2[5] != 0)" (( "(") (binary_expression "param_2[5] != 0" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar6 != '\0')" (( "(") (binary_expression "*pcVar6 != '\0'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        pcVar5 = pcVar6;\n      }" ({ "{") (expression_statement "pcVar5 = pcVar6;" (assignment_expression "pcVar5 = pcVar6" (identifier "pcVar5") (= "=") (identifier "pcVar6")) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4);" (call_expression "__printf_chk(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4)" (identifier "__printf_chk") (argument_list "(1,\n                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",\n                   uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"" (" """) (string_content "%sCDC Command Set:") (escape_sequence "\n") (string_content "%s  bcdVersion           %x.%02x") (escape_sequence "\n") (string_content "%s  iCommandSet          %4d %s") (escape_sequence "\n") (string_content "%s  bGUID                %s") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (, ",") (identifier "pcVar5") (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1a:\n    pcVar6 = "NCM";\n    if (*param_2 != 6) break;\n    __printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);\n    bVar3 = param_2[5];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }\n    if ((bVar3 & 1) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    packet filter\n";\n    goto code_r0x00019140;" (case "case") (number_literal "0x1a") (: ":") (expression_statement "pcVar6 = "NCM";" (assignment_expression "pcVar6 = "NCM"" (identifier "pcVar6") (= "=") (string_literal ""NCM"" (" """) (string_content "NCM") (" """))) (; ";")) (if_statement "if (*param_2 != 6) break;" (if "if") (parenthesized_expression "(*param_2 != 6)" (( "(") (binary_expression "*param_2 != 6" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "6")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);" (call_expression "__printf_chk(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5])" (identifier "__printf_chk") (argument_list "(1,\n                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",\n                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5])" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n"" (" """) (string_content "%sCDC NCM:") (escape_sequence "\n") (string_content "%s  bcdNcmVersion        %x.%02x") (escape_sequence "\n") (string_content "%s  bmNetworkCapabilities 0x%02x") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" (identifier "bVar3") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[5];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    8-byte ntb input size\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    8-byte ntb input size\n"" (" """) (string_content "%s    8-byte ntb input size") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" (identifier "bVar3") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 0x10) != 0) {\n      __printf_chk(1,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\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,"%s    crc mode\n","      ");\n      bVar3 = param_2[5];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    crc mode\n","      ");" (call_expression "__printf_chk(1,"%s    crc mode\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    crc mode\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    crc mode\n"" (" """) (string_content "%s    crc mode") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" (identifier "bVar3") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 8) != 0) {\n      __printf_chk(1,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\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,"%s    max datagram size\n","      ");\n      bVar3 = param_2[5];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    max datagram size\n","      ");" (call_expression "__printf_chk(1,"%s    max datagram size\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    max datagram size\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    max datagram size\n"" (" """) (string_content "%s    max datagram size") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" (identifier "bVar3") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 4) != 0) {\n      __printf_chk(1,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\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,"%s    encapsulated commands\n","      ");\n      bVar3 = param_2[5];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    encapsulated commands\n","      ");" (call_expression "__printf_chk(1,"%s    encapsulated commands\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    encapsulated commands\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    encapsulated commands\n"" (" """) (string_content "%s    encapsulated commands") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" (identifier "bVar3") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 2) != 0) {\n      __printf_chk(1,"%s    net address\n","      ");\n      bVar3 = param_2[5];\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,"%s    net address\n","      ");\n      bVar3 = param_2[5];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    net address\n","      ");" (call_expression "__printf_chk(1,"%s    net address\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    net address\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    net address\n"" (" """) (string_content "%s    net address") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[5];" (assignment_expression "bVar3 = param_2[5]" (identifier "bVar3") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 1) == 0) goto code_r0x00018d54;" (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")) () ")")) (goto_statement "goto code_r0x00018d54;" (goto "goto") (statement_identifier "code_r0x00018d54") (; ";"))) (expression_statement "pcVar5 = "%s    packet filter\n";" (assignment_expression "pcVar5 = "%s    packet filter\n"" (identifier "pcVar5") (= "=") (string_literal ""%s    packet filter\n"" (" """) (string_content "%s    packet filter") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto code_r0x00019140;" (goto "goto") (statement_identifier "code_r0x00019140") (; ";"))) (case_statement "case 0x1b:\n    pcVar6 = "MBIM";\n    if (*param_2 != 0xc) break;\n    __printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);\n    bVar3 = param_2[0xb];\n    if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }\n    if ((bVar3 & 8) == 0) goto code_r0x00018d54;\n    pcVar5 = "%s    max datagram size\n";\ncode_r0x00019140:\n    pcVar6 = (char *)0x0;\n    __printf_chk(1,pcVar5,"      ");\n    goto code_r0x00018be1;" (case "case") (number_literal "0x1b") (: ":") (expression_statement "pcVar6 = "MBIM";" (assignment_expression "pcVar6 = "MBIM"" (identifier "pcVar6") (= "=") (string_literal ""MBIM"" (" """) (string_content "MBIM") (" """))) (; ";")) (if_statement "if (*param_2 != 0xc) break;" (if "if") (parenthesized_expression "(*param_2 != 0xc)" (( "(") (binary_expression "*param_2 != 0xc" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "0xc")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb]);" (call_expression "__printf_chk(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb])" (identifier "__printf_chk") (argument_list "(1,\n                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"\n                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),\n                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),\n                 "      ",param_2[0xb])" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"" (" """) (string_content "%sCDC MBIM:") (escape_sequence "\n") (string_content "%s  bcdMBIMVersion       %x.%02x") (escape_sequence "\n") (string_content "%s  wMaxControlMessage   %d") (escape_sequence "\n") (string_content "%s  bNumberFilters       %d") (escape_sequence "\n") (string_content "%s  bMaxFilterSize       %d") (escape_sequence "\n") (string_content "%s  wMaxSegmentSize      %d") (escape_sequence "\n") (string_content "%s  bmNetworkCapabilities 0x%02x") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (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")) () ")")))) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (pointer_expression "*(undefined2 *)(param_2 + 9)" (* "*") (cast_expression "(undefined2 *)(param_2 + 9)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 9)" (( "(") (binary_expression "param_2 + 9" (identifier "param_2") (+ "+") (number_literal "9")) () ")")))) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[0xb];" (assignment_expression "bVar3 = param_2[0xb]" (identifier "bVar3") (= "=") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (if_statement "if ((bVar3 & 0x20) != 0) {\n      __printf_chk(1,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\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,"%s    8-byte ntb input size\n","      ");\n      bVar3 = param_2[0xb];\n    }" ({ "{") (expression_statement "__printf_chk(1,"%s    8-byte ntb input size\n","      ");" (call_expression "__printf_chk(1,"%s    8-byte ntb input size\n","      ")" (identifier "__printf_chk") (argument_list "(1,"%s    8-byte ntb input size\n","      ")" (( "(") (number_literal "1") (, ",") (string_literal ""%s    8-byte ntb input size\n"" (" """) (string_content "%s    8-byte ntb input size") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (expression_statement "bVar3 = param_2[0xb];" (assignment_expression "bVar3 = param_2[0xb]" (identifier "bVar3") (= "=") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((bVar3 & 8) == 0) goto code_r0x00018d54;" (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")) () ")")) (goto_statement "goto code_r0x00018d54;" (goto "goto") (statement_identifier "code_r0x00018d54") (; ";"))) (expression_statement "pcVar5 = "%s    max datagram size\n";" (assignment_expression "pcVar5 = "%s    max datagram size\n"" (identifier "pcVar5") (= "=") (string_literal ""%s    max datagram size\n"" (" """) (string_content "%s    max datagram size") (escape_sequence "\n") (" """))) (; ";")) (labeled_statement "code_r0x00019140:\n    pcVar6 = (char *)0x0;" (statement_identifier "code_r0x00019140") (: ":") (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "__printf_chk(1,pcVar5,"      ");" (call_expression "__printf_chk(1,pcVar5,"      ")" (identifier "__printf_chk") (argument_list "(1,pcVar5,"      ")" (( "(") (number_literal "1") (, ",") (identifier "pcVar5") (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) () ")"))) (; ";")) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";"))) (case_statement "case 0x1c:\n    pcVar6 = "MBIM Extended";\n    if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" (case "case") (number_literal "0x1c") (: ":") (expression_statement "pcVar6 = "MBIM Extended";" (assignment_expression "pcVar6 = "MBIM Extended"" (identifier "pcVar6") (= "=") (string_literal ""MBIM Extended"" (" """) (string_content "MBIM Extended") (" """))) (; ";")) (if_statement "if (*param_2 == 8) {\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" (if "if") (parenthesized_expression "(*param_2 == 8)" (( "(") (binary_expression "*param_2 == 8" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "8")) () ")")) (compound_statement "{\n      pcVar6 = (char *)0x0;\n      __printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));\n      goto code_r0x00018be1;\n    }" ({ "{") (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6));" (call_expression "__printf_chk(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6))" (identifier "__printf_chk") (argument_list "(1,\n                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"\n                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",\n                   *(undefined2 *)(param_2 + 6))" (( "(") (number_literal "1") (, ",") (string_literal ""%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"" (" """) (string_content "%sCDC MBIM Extended:") (escape_sequence "\n") (string_content "%s  bcdMBIMExtendedVersion          %2x.%02x") (escape_sequence "\n") (string_content "%s  bMaxOutstandingCommandMessages    %3d") (escape_sequence "\n") (string_content "%s  wMTU                            %5d") (escape_sequence "\n") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (pointer_expression "*(undefined2 *)(param_2 + 6)" (* "*") (cast_expression "(undefined2 *)(param_2 + 6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")")))) () ")"))) (; ";")) (goto_statement "goto code_r0x00018be1;" (goto "goto") (statement_identifier "code_r0x00018be1") (; ";")) (} "}")))) (} "}"))) (expression_statement "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);" (call_expression "__printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6)" (identifier "__printf_chk") (argument_list "(1,"%sINVALID CDC (%s): ","      ",pcVar6)" (( "(") (number_literal "1") (, ",") (string_literal ""%sINVALID CDC (%s): "" (" """) (string_content "%sINVALID CDC (%s): ") (" """)) (, ",") (string_literal ""      "" (" """) (string_content "      ") (" """)) (, ",") (identifier "pcVar6") () ")"))) (; ";")) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" (identifier "FUN_00016990") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return "corrupt comm descriptor";" (return "return") (string_literal ""corrupt comm descriptor"" (" """) (string_content "corrupt comm descriptor") (" """)) (; ";")) (} "}")))

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

char * __regparm3 function_1(type_1 *dev,type_2 *var_4,char *indent)

{
  type_2 *puVar1;
  int iVar2;
  type_3 var_2;
  char *pcVar4;
  char *pcVar5;
  char *pcVar6;
  int var_5;
  type_2 uVar8;
  type_2 uVar9;
  
  switch(var_4[2]) {
  case '\0':
    pcVar6 = "Header";
    if (*var_4 != '\x05') break;
    uVar9 = var_4[3];
    uVar8 = var_4[4];
    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";
    goto LAB_00018b91;
  case '\x01':
    pcVar6 = "Call Management";
    if (*var_4 != '\x05') break;
    var_1(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",
                 var_4[3]);
    var_2 = var_4[3];
    if ((var_2 & 1) != 0) {
      var_1(1,"%s    call management\n","      ");
      var_2 = var_4[3];
    }
    if ((var_2 & 2) != 0) {
      var_1(1,"%s    use DataInterface\n","      ");
    }
    pcVar5 = "%s  bDataInterface          %d\n";
    goto LAB_00019140;
  case '\x02':
    pcVar6 = "ACM";
    if (*var_4 != '\x04') break;
    var_1(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",var_4[3]);
    var_2 = var_4[3];
    if ((var_2 & 8) != 0) {
      var_1(1,"%s    connection notifications\n","      ");
      var_2 = var_4[3];
    }
    if ((var_2 & 4) != 0) {
      var_1(1,"%s    sends break\n","      ");
      var_2 = var_4[3];
    }
    if ((var_2 & 2) != 0) {
      var_1(1,"%s    line coding and serial state\n","      ");
      var_2 = var_4[3];
    }
    if ((var_2 & 1) == 0) {
LAB_00018d54:
      pcVar6 = (char *)0x0;
      goto LAB_00018be1;
    }
    pcVar5 = "%s    get/set/clear comm features\n";
    goto LAB_00019140;
  default:
    var_1(1,"%sUNRECOGNIZED CDC: ","      ");
    var_3(var_4,(uint)*var_4);
    return "unrecognized comm descriptor";
  case '\x06':
    pcVar6 = "Union";
    if (*var_4 < 5) break;
    var_5 = 4;
    var_1(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",
                 "      ","      ",var_4[3],"      ");
    if (4 < *var_4) {
      do {
        puVar1 = var_4 + var_5;
        var_5 = var_5 + 1;
        var_1(1,&DAT_00022691,*puVar1);
      } while (var_5 < (int)(uint)*var_4);
    }
    pcVar6 = (char *)0x0;
    var_6(10);
    goto LAB_00018be1;
  case '\a':
    pcVar6 = "Country Selection";
    if ((5 < *var_4) && ((*var_4 & 1) == 0)) {
      pcVar6 = var_7(dev,var_4[3]);
      pcVar5 = "(??)";
      if ((var_4[3] != '\0') && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      var_1(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",
                   var_4[3],pcVar5);
      if (4 < *var_4) {
        var_5 = 4;
        do {
          iVar2 = var_5 + 1;
          puVar1 = var_4 + var_5;
          var_5 = var_5 + 2;
          var_1(1,"%s  wCountryCode          0x%02x%02x\n","      ",*puVar1,var_4[iVar2],pcVar5
                      );
        } while (var_5 < (int)(uint)*var_4);
      }
      goto LAB_00018be1;
    }
    break;
  case '\b':
    pcVar6 = "Telephone Operations";
    if (*var_4 != '\x04') break;
    var_1(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",
                 "      ",var_4[3]);
    var_2 = var_4[3];
    if ((var_2 & 4) != 0) {
      var_1(1,"%s    computer centric mode\n","      ");
      var_2 = var_4[3];
    }
    if ((var_2 & 2) != 0) {
      var_1(1,"%s    standalone mode\n","      ");
      var_2 = var_4[3];
    }
    if ((var_2 & 1) == 0) goto LAB_00018d54;
    pcVar5 = "%s    simple mode\n";
    goto LAB_00019140;
  case '\n':
    pcVar6 = "Network Channel Terminal";
    if (*var_4 == '\a') {
      pcVar6 = var_7(dev,var_4[4]);
      var_1(1,
                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"
                   ,"      ","      ",var_4[3],"      ",var_4[4],pcVar6,"      ",var_4[5],"      ",var_4[6])
      ;
      goto LAB_00018be1;
    }
    break;
  case '\x0f':
    pcVar6 = "Ethernet";
    if (*var_4 == '\r') {
      pcVar6 = var_7(dev,var_4[3]);
      pcVar5 = "(??)";
      if ((var_4[3] != '\0') && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      var_1(1,
                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"
                   ,"      ","      ",var_4[3],pcVar5,"      ",*(type_4 *)(var_4 + 4));
      var_1(1,
                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"
                   ,"      ",*(type_5 *)(var_4 + 8),"      ",*(type_5 *)(var_4 + 10),"      ",
                   var_4[0xc]);
      goto LAB_00018be1;
    }
    break;
  case '\x11':
    pcVar6 = "WHCM version";
    if (*var_4 != '\x05') break;
    uVar9 = var_4[3];
    uVar8 = var_4[4];
    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";
    goto LAB_00018b91;
  case '\x12':
    pcVar6 = "MDLM";
    if (*var_4 != '\x15') break;
    var_8(var_4 + 5);
    uVar9 = var_4[3];
    uVar8 = var_4[4];
    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";
    goto LAB_00018b91;
  case '\x13':
    pcVar6 = "MDLM detail";
    if (4 < *var_4) {
      pcVar6 = (char *)0x0;
      var_1(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",
                   "      ","      ",var_4[3],"      ");
      var_3(var_4 + 4,*var_4 - 4);
      goto LAB_00018be1;
    }
    break;
  case '\x14':
    pcVar6 = "Device Management";
    if (*var_4 != '\a') break;
    uVar9 = var_4[3];
    uVar8 = var_4[4];
    pcVar5 = 
    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";
    goto LAB_00018b91;
  case '\x15':
    pcVar6 = "OBEX";
    if (*var_4 != '\x05') break;
    uVar9 = var_4[3];
    uVar8 = var_4[4];
    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";
LAB_00018b91:
    pcVar6 = (char *)0x0;
    var_1(1,pcVar5,"      ","      ",uVar8,uVar9);
LAB_00018be1:
    var_9(pcVar6);
    return (char *)0x0;
  case '\x16':
    pcVar6 = "Command Set";
    if (*var_4 == '\x16') {
      pcVar6 = var_7(dev,var_4[5]);
      pcVar4 = var_8(var_4 + 6);
      pcVar5 = "(??)";
      if ((var_4[5] != '\0') && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      var_1(1,
                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"
                   ,"      ","      ",var_4[4],var_4[3],"      ",var_4[5],pcVar5,"      ",pcVar4);
      goto LAB_00018be1;
    }
    break;
  case '\x1a':
    pcVar6 = "NCM";
    if (*var_4 != '\x06') break;
    var_1(1,
                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",
                 "      ","      ",var_4[4],var_4[3],"      ",var_4[5]);
    var_2 = var_4[5];
    if ((var_2 & 0x20) != 0) {
      var_1(1,"%s    8-byte ntb input size\n","      ");
      var_2 = var_4[5];
    }
    if ((var_2 & 0x10) != 0) {
      var_1(1,"%s    crc mode\n","      ");
      var_2 = var_4[5];
    }
    if ((var_2 & 8) != 0) {
      var_1(1,"%s    max datagram size\n","      ");
      var_2 = var_4[5];
    }
    if ((var_2 & 4) != 0) {
      var_1(1,"%s    encapsulated commands\n","      ");
      var_2 = var_4[5];
    }
    if ((var_2 & 2) != 0) {
      var_1(1,"%s    net address\n","      ");
      var_2 = var_4[5];
    }
    if ((var_2 & 1) == 0) goto LAB_00018d54;
    pcVar5 = "%s    packet filter\n";
    goto LAB_00019140;
  case '\x1b':
    pcVar6 = "MBIM";
    if (*var_4 != '\f') break;
    var_1(1,
                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"
                 ,"      ","      ",var_4[4],var_4[3],"      ",*(type_5 *)(var_4 + 5),"      ",var_4[7],
                 "      ",var_4[8],"      ",*(type_5 *)(var_4 + 9),"      ",var_4[0xb]);
    var_2 = var_4[0xb];
    if ((var_2 & 0x20) != 0) {
      var_1(1,"%s    8-byte ntb input size\n","      ");
      var_2 = var_4[0xb];
    }
    if ((var_2 & 8) == 0) goto LAB_00018d54;
    pcVar5 = "%s    max datagram size\n";
LAB_00019140:
    pcVar6 = (char *)0x0;
    var_1(1,pcVar5,"      ");
    goto LAB_00018be1;
  case '\x1c':
    pcVar6 = "MBIM Extended";
    if (*var_4 == '\b') {
      pcVar6 = (char *)0x0;
      var_1(1,
                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"
                   ,"      ","      ",var_4[4],var_4[3],"      ",var_4[5],"      ",
                   *(type_5 *)(var_4 + 6));
      goto LAB_00018be1;
    }
  }
  var_1(1,"%sINVALID CDC (%s): ","      ",pcVar6);
  var_3(var_4,(uint)*var_4);
  return "corrupt comm descriptor";
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator (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)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (switch_statement condition: (parenthesized_expression (subscript_expression argument: (identifier) index: (number_literal))) body: (compound_statement (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content)) (string_literal (string_content)) (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: (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content)) (string_literal (string_content)) (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: (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (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)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (string_literal (string_content)))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (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)) (string_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content))))) (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) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (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: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (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_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) 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 (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) (escape_sequence)) (string_literal (string_content)) (pointer_expression argument: (identifier)) (subscript_expression argument: (identifier) index: (identifier)) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (identifier))) right: (identifier))))))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content)) (string_literal (string_content)) (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: (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (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 (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)) (string_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal))))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (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: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (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_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (string_literal (string_content)) (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) (string_content) (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content)) (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))))) (string_literal (string_content)) (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))))) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal))))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)) (string_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (string_literal (string_content)) (string_literal (string_content)) (identifier) (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (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: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (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)) (string_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (string_literal (string_content)) (identifier)))) (goto_statement label: (statement_identifier)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (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_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (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: (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence)))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (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) (string_content) (escape_sequence) (string_content) (escape_sequence)) (string_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (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))))) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (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))))) (string_literal (string_content)) (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: (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) (string_literal (string_content) (escape_sequence)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content) (escape_sequence)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (string_literal (string_content))))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)) (string_literal (string_content)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (string_literal (string_content)) (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)))))))) (goto_statement label: (statement_identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (string_literal (string_content))))))

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

char * __regparm3 MASKED(undefined4 param_1,byte *param_2)

{
  byte *pbVar1;
  int iVar2;
  byte bVar3;
  undefined4 uVar4;
  char *pcVar5;
  char *pcVar6;
  int iVar7;
  byte bVar8;
  
  switch(param_2[2]) {
  case 0:
    pcVar6 = "Header";
    if (*param_2 != 5) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC Header:\n%s  bcdCDC               %x.%02x\n";
    goto code_r0x00018b91;
  case 1:
    pcVar6 = "Call Management";
    if (*param_2 != 5) break;
    __printf_chk(1,"%sCDC Call Management:\n%s  bmCapabilities       0x%02x\n","      ","      ",
                 param_2[3]);
    bVar3 = param_2[3];
    if ((bVar3 & 1) != 0) {
      __printf_chk(1,"%s    call management\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    use DataInterface\n","      ");
    }
    pcVar5 = "%s  bDataInterface          %d\n";
    goto code_r0x00019140;
  case 2:
    pcVar6 = "ACM";
    if (*param_2 != 4) break;
    __printf_chk(1,"%sCDC ACM:\n%s  bmCapabilities       0x%02x\n","      ","      ",param_2[3]);
    bVar3 = param_2[3];
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,"%s    connection notifications\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    sends break\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    line coding and serial state\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 1) == 0) {
code_r0x00018d54:
      pcVar6 = (char *)0x0;
      goto code_r0x00018be1;
    }
    pcVar5 = "%s    get/set/clear comm features\n";
    goto code_r0x00019140;
  default:
    __printf_chk(1,"%sUNRECOGNIZED CDC: ","      ");
    FUN_00016990();
    return "unrecognized comm descriptor";
  case 6:
    pcVar6 = "Union";
    if (*param_2 < 5) break;
    iVar7 = 4;
    __printf_chk(1,"%sCDC Union:\n%s  bMasterInterface        %d\n%s  bSlaveInterface         ",
                 "      ","      ",param_2[3],"      ");
    if (4 < *param_2) {
      do {
        pbVar1 = param_2 + iVar7;
        iVar7 = iVar7 + 1;
        __printf_chk(1,&UNK_00022691,*pbVar1);
      } while (iVar7 < (int)(uint)*param_2);
    }
    pcVar6 = (char *)0x0;
    putchar(10);
    goto code_r0x00018be1;
  case 7:
    pcVar6 = "Country Selection";
    if ((5 < *param_2) && ((*param_2 & 1) == 0)) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);
      pcVar5 = "(??)";
      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,"%sCountry Selection:\n%s  iCountryCodeRelDate     %4d %s\n","      ","      ",
                   param_2[3],pcVar5);
      if (4 < *param_2) {
        iVar7 = 4;
        do {
          iVar2 = iVar7 + 1;
          pbVar1 = param_2 + iVar7;
          iVar7 = iVar7 + 2;
          __printf_chk(1,"%s  wCountryCode          0x%02x%02x\n","      ",*pbVar1,param_2[iVar2],
                       pcVar5);
        } while (iVar7 < (int)(uint)*param_2);
      }
      goto code_r0x00018be1;
    }
    break;
  case 8:
    pcVar6 = "Telephone Operations";
    if (*param_2 != 4) break;
    __printf_chk(1,"%sCDC Telephone operations:\n%s  bmCapabilities       0x%02x\n","      ",
                 "      ",param_2[3]);
    bVar3 = param_2[3];
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    computer centric mode\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    standalone mode\n","      ");
      bVar3 = param_2[3];
    }
    if ((bVar3 & 1) == 0) goto code_r0x00018d54;
    pcVar5 = "%s    simple mode\n";
    goto code_r0x00019140;
  case 10:
    pcVar6 = "Network Channel Terminal";
    if (*param_2 == 7) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[4]);
      __printf_chk(1,
                   "%sNetwork Channel Terminal:\n%s  bEntityId               %3d\n%s  iName                   %3d %s\n%s  bChannelIndex           %3d\n%s  bPhysicalInterface      %3d\n"
                   ,"      ","      ",param_2[3],"      ",param_2[4],pcVar6,"      ",param_2[5],
                   "      ",param_2[6]);
      goto code_r0x00018be1;
    }
    break;
  case 0xf:
    pcVar6 = "Ethernet";
    if (*param_2 == 0xd) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[3]);
      pcVar5 = "(??)";
      if ((param_2[3] != 0) && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,
                   "%sCDC Ethernet:\n%s  iMacAddress             %10d %s\n%s  bmEthernetStatistics    0x%08x\n"
                   ,"      ","      ",param_2[3],pcVar5,"      ",*(undefined4 *)(param_2 + 4));
      __printf_chk(1,
                   "%s  wMaxSegmentSize         %10d\n%s  wNumberMCFilters            0x%04x\n%s  bNumberPowerFilters     %10d\n"
                   ,"      ",*(undefined2 *)(param_2 + 8),"      ",*(undefined2 *)(param_2 + 10),
                   "      ",param_2[0xc]);
      goto code_r0x00018be1;
    }
    break;
  case 0x11:
    pcVar6 = "WHCM version";
    if (*param_2 != 5) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC WHCM:\n%s  bcdVersion           %x.%02x\n";
    goto code_r0x00018b91;
  case 0x12:
    pcVar6 = "MDLM";
    if (*param_2 != 0x15) break;
    FUN_00016b50();
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC MDLM:\n%s  bcdCDC               %x.%02x\n%s  bGUID               %s\n";
    goto code_r0x00018b91;
  case 0x13:
    pcVar6 = "MDLM detail";
    if (4 < *param_2) {
      pcVar6 = (char *)0x0;
      __printf_chk(1,"%sCDC MDLM detail:\n%s  bGuidDescriptorType  %02x\n%s  bDetailData         ",
                   "      ","      ",param_2[3],"      ");
      FUN_00016990();
      goto code_r0x00018be1;
    }
    break;
  case 0x14:
    pcVar6 = "Device Management";
    if (*param_2 != 7) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = 
    "%sCDC Device Management:\n%s  bcdVersion           %x.%02x\n%s  wMaxCommand          %d\n";
    goto code_r0x00018b91;
  case 0x15:
    pcVar6 = "OBEX";
    if (*param_2 != 5) break;
    bVar3 = param_2[3];
    bVar8 = param_2[4];
    pcVar5 = "%sCDC OBEX:\n%s  bcdVersion           %x.%02x\n";
code_r0x00018b91:
    pcVar6 = (char *)0x0;
    __printf_chk(1,pcVar5,"      ","      ",bVar8,bVar3);
code_r0x00018be1:
    free(pcVar6);
    return (char *)0x0;
  case 0x16:
    pcVar6 = "Command Set";
    if (*param_2 == 0x16) {
      pcVar6 = (char *)FUN_00021270(param_1,param_2[5]);
      uVar4 = FUN_00016b50();
      pcVar5 = "(??)";
      if ((param_2[5] != 0) && (*pcVar6 != '\0')) {
        pcVar5 = pcVar6;
      }
      __printf_chk(1,
                   "%sCDC Command Set:\n%s  bcdVersion           %x.%02x\n%s  iCommandSet          %4d %s\n%s  bGUID                %s\n"
                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],pcVar5,"      ",
                   uVar4);
      goto code_r0x00018be1;
    }
    break;
  case 0x1a:
    pcVar6 = "NCM";
    if (*param_2 != 6) break;
    __printf_chk(1,
                 "%sCDC NCM:\n%s  bcdNcmVersion        %x.%02x\n%s  bmNetworkCapabilities 0x%02x\n",
                 "      ","      ",param_2[4],param_2[3],"      ",param_2[5]);
    bVar3 = param_2[5];
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,"%s    8-byte ntb input size\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 0x10) != 0) {
      __printf_chk(1,"%s    crc mode\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 8) != 0) {
      __printf_chk(1,"%s    max datagram size\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 4) != 0) {
      __printf_chk(1,"%s    encapsulated commands\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 2) != 0) {
      __printf_chk(1,"%s    net address\n","      ");
      bVar3 = param_2[5];
    }
    if ((bVar3 & 1) == 0) goto code_r0x00018d54;
    pcVar5 = "%s    packet filter\n";
    goto code_r0x00019140;
  case 0x1b:
    pcVar6 = "MBIM";
    if (*param_2 != 0xc) break;
    __printf_chk(1,
                 "%sCDC MBIM:\n%s  bcdMBIMVersion       %x.%02x\n%s  wMaxControlMessage   %d\n%s  bNumberFilters       %d\n%s  bMaxFilterSize       %d\n%s  wMaxSegmentSize      %d\n%s  bmNetworkCapabilities 0x%02x\n"
                 ,"      ","      ",param_2[4],param_2[3],"      ",*(undefined2 *)(param_2 + 5),
                 "      ",param_2[7],"      ",param_2[8],"      ",*(undefined2 *)(param_2 + 9),
                 "      ",param_2[0xb]);
    bVar3 = param_2[0xb];
    if ((bVar3 & 0x20) != 0) {
      __printf_chk(1,"%s    8-byte ntb input size\n","      ");
      bVar3 = param_2[0xb];
    }
    if ((bVar3 & 8) == 0) goto code_r0x00018d54;
    pcVar5 = "%s    max datagram size\n";
code_r0x00019140:
    pcVar6 = (char *)0x0;
    __printf_chk(1,pcVar5,"      ");
    goto code_r0x00018be1;
  case 0x1c:
    pcVar6 = "MBIM Extended";
    if (*param_2 == 8) {
      pcVar6 = (char *)0x0;
      __printf_chk(1,
                   "%sCDC MBIM Extended:\n%s  bcdMBIMExtendedVersion          %2x.%02x\n%s  bMaxOutstandingCommandMessages    %3d\n%s  wMTU                            %5d\n"
                   ,"      ","      ",param_2[4],param_2[3],"      ",param_2[5],"      ",
                   *(undefined2 *)(param_2 + 6));
      goto code_r0x00018be1;
    }
  }
  __printf_chk(1,"%sINVALID CDC (%s): ","      ",pcVar6);
  FUN_00016990();
  return "corrupt comm descriptor";
}

