
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

void __regparm3 dump_ccid_device(uchar *buf)

{
  undefined *puVar1;
  byte bVar2;
  char *pcVar3;
  uint uVar4;
  char *pcVar5;
  FILE *pFVar6;
  char *pcVar7;
  
  if (*buf < 0x36) {
    puts("      Warning: Descriptor too short");
    return;
  }
  __printf_chk(1,
               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"
               ,*buf,buf[1],buf[3],buf[2]);
  puVar1 = PTR_stdout_00037ff0;
  if ((buf[3] != '\x01') || (buf[2] != '\0')) {
    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);
  }
  putc(10,*(FILE **)puVar1);
  bVar2 = buf[5];
  pcVar3 = "";
  pcVar7 = "1.8V ";
  if ((bVar2 & 4) == 0) {
    pcVar7 = pcVar3;
  }
  pcVar5 = "3.0V ";
  if ((bVar2 & 2) == 0) {
    pcVar5 = pcVar3;
  }
  if ((bVar2 & 1) != 0) {
    pcVar3 = "5.0V ";
  }
  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",buf[4]
               ,bVar2,pcVar3,pcVar5,pcVar7);
  uVar4 = *(uint *)(buf + 6);
  __printf_chk(1,"        dwProtocols         %5u ",uVar4);
  if ((uVar4 & 1) == 0) {
    pFVar6 = *(FILE **)puVar1;
  }
  else {
    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 2) != 0) {
    fwrite(&DAT_0002240e,1,4,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 0xfffffffc) != 0) {
    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(buf + 10));
  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(buf + 0xe));
  __printf_chk(1,"        bNumClockSupported  %5u\n",buf[0x12]);
  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(buf + 0x13));
  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(buf + 0x17));
  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",buf[0x1b]);
  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(buf + 0x1c));
  uVar4 = *(uint *)(buf + 0x20);
  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);
  if ((uVar4 & 1) != 0) {
    fwrite(" 2-wire",1,7,*(FILE **)puVar1);
  }
  pFVar6 = *(FILE **)puVar1;
  if ((uVar4 & 2) != 0) {
    fwrite(" 3-wire",1,7,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 4) != 0) {
    fwrite(&DAT_0002243e,1,4,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  uVar4 = *(uint *)(buf + 0x24);
  __printf_chk(1,"        dwMechanical     %08X ",uVar4);
  if ((uVar4 & 1) != 0) {
    fwrite(" accept",1,7,*(FILE **)puVar1);
  }
  pFVar6 = *(FILE **)puVar1;
  if ((uVar4 & 2) != 0) {
    fwrite(" eject",1,6,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 4) != 0) {
    fwrite(" capture",1,8,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 8) != 0) {
    fwrite(" lock",1,5,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  uVar4 = *(uint *)(buf + 0x28);
  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);
  if ((uVar4 & 2) != 0) {
    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);
  }
  if ((uVar4 & 4) != 0) {
    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);
  }
  if ((uVar4 & 8) != 0) {
    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x10) != 0) {
    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x20) != 0) {
    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x40) == 0) {
    if ((uVar4 & 0x80) == 0) {
      if ((uVar4 & 0xc0) != 0) {
        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);
      }
    }
    else {
      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);
    }
  }
  else {
    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x100) != 0) {
    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x200) != 0) {
    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x400) != 0) {
    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x10000) == 0) {
    if ((uVar4 & 0x20000) == 0) {
      if ((uVar4 & 0x40000) == 0) {
        if ((uVar4 & 0x70000) != 0) {
          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);
        }
      }
      else {
        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);
      }
    }
    else {
      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);
    }
  }
  else {
    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);
  }
  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(buf + 0x2c));
  __printf_chk(1,"        bClassGetResponse    ");
  uVar4 = (uint)buf[0x30];
  if (buf[0x30] == 0xff) {
    uVar4 = 5;
    fwrite("echo\n",1,5,*(FILE **)puVar1);
  }
  else {
    __printf_chk(1,"  %02X\n",uVar4);
  }
  __printf_chk(1,"        bClassEnvelope       ",uVar4);
  if (buf[0x31] == 0xff) {
    uVar4 = 5;
    fwrite("echo\n",1,5,*(FILE **)puVar1);
  }
  else {
    uVar4 = (uint)buf[0x30];
    __printf_chk(1,"  %02X\n",uVar4);
  }
  __printf_chk(1,"        wlcdLayout           ",uVar4);
  pFVar6 = (FILE *)(uint)buf[0x33];
  if ((buf[0x32] == '\0') && (buf[0x33] == 0)) {
    pFVar6 = *(FILE **)puVar1;
    fwrite("none\n",1,5,pFVar6);
  }
  else {
    __printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);
  }
  __printf_chk(1,"        bPINSupport         %5u ",buf[0x34],pFVar6);
  bVar2 = buf[0x34];
  if ((bVar2 & 1) != 0) {
    fwrite(" verification",1,0xd,*(FILE **)puVar1);
    bVar2 = buf[0x34];
  }
  pFVar6 = *(FILE **)puVar1;
  if ((bVar2 & 2) != 0) {
    fwrite(" modification",1,0xd,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",buf[0x35]);
  if (0x36 < *buf) {
    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);
    dump_bytes(buf + 0x36,*buf - 0x36);
    return;
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

void __regparm3 FUN_00018260(byte *param_1)

{
  undefined *puVar1;
  byte bVar2;
  char *pcVar3;
  uint uVar4;
  char *pcVar5;
  FILE *pFVar6;
  char *pcVar7;
  
  if (*param_1 < 0x36) {
    puts("      Warning: Descriptor too short");
    return;
  }
  __printf_chk(1,
               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"
               ,*param_1,param_1[1],param_1[3],param_1[2]);
  puVar1 = PTR_stdout_00037ff0;
  if ((param_1[3] != 1) || (param_1[2] != 0)) {
    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);
  }
  putc(10,*(FILE **)puVar1);
  bVar2 = param_1[5];
  pcVar3 = "";
  pcVar7 = "1.8V ";
  if ((bVar2 & 4) == 0) {
    pcVar7 = pcVar3;
  }
  pcVar5 = "3.0V ";
  if ((bVar2 & 2) == 0) {
    pcVar5 = pcVar3;
  }
  if ((bVar2 & 1) != 0) {
    pcVar3 = "5.0V ";
  }
  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",
               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);
  uVar4 = *(uint *)(param_1 + 6);
  __printf_chk(1,"        dwProtocols         %5u ",uVar4);
  if ((uVar4 & 1) == 0) {
    pFVar6 = *(FILE **)puVar1;
  }
  else {
    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 2) != 0) {
    fwrite(&DAT_0002240e,1,4,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 0xfffffffc) != 0) {
    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));
  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));
  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);
  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));
  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));
  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);
  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));
  uVar4 = *(uint *)(param_1 + 0x20);
  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);
  if ((uVar4 & 1) != 0) {
    fwrite(" 2-wire",1,7,*(FILE **)puVar1);
  }
  pFVar6 = *(FILE **)puVar1;
  if ((uVar4 & 2) != 0) {
    fwrite(" 3-wire",1,7,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 4) != 0) {
    fwrite(&DAT_0002243e,1,4,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  uVar4 = *(uint *)(param_1 + 0x24);
  __printf_chk(1,"        dwMechanical     %08X ",uVar4);
  if ((uVar4 & 1) != 0) {
    fwrite(" accept",1,7,*(FILE **)puVar1);
  }
  pFVar6 = *(FILE **)puVar1;
  if ((uVar4 & 2) != 0) {
    fwrite(" eject",1,6,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 4) != 0) {
    fwrite(" capture",1,8,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 8) != 0) {
    fwrite(" lock",1,5,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  uVar4 = *(uint *)(param_1 + 0x28);
  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);
  if ((uVar4 & 2) != 0) {
    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);
  }
  if ((uVar4 & 4) != 0) {
    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);
  }
  if ((uVar4 & 8) != 0) {
    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x10) != 0) {
    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x20) != 0) {
    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x40) == 0) {
    if ((uVar4 & 0x80) == 0) {
      if ((uVar4 & 0xc0) != 0) {
        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);
      }
    }
    else {
      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);
    }
  }
  else {
    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x100) != 0) {
    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x200) != 0) {
    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x400) != 0) {
    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x10000) == 0) {
    if ((uVar4 & 0x20000) == 0) {
      if ((uVar4 & 0x40000) == 0) {
        if ((uVar4 & 0x70000) != 0) {
          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);
        }
      }
      else {
        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);
      }
    }
    else {
      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);
    }
  }
  else {
    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);
  }
  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));
  __printf_chk(1,"        bClassGetResponse    ");
  uVar4 = (uint)param_1[0x30];
  if (param_1[0x30] == 0xff) {
    uVar4 = 5;
    fwrite("echo\n",1,5,*(FILE **)puVar1);
  }
  else {
    __printf_chk(1,"  %02X\n",uVar4);
  }
  __printf_chk(1,"        bClassEnvelope       ",uVar4);
  if (param_1[0x31] == 0xff) {
    uVar4 = 5;
    fwrite("echo\n",1,5,*(FILE **)puVar1);
  }
  else {
    uVar4 = (uint)param_1[0x30];
    __printf_chk(1,"  %02X\n",uVar4);
  }
  __printf_chk(1,"        wlcdLayout           ",uVar4);
  pFVar6 = (FILE *)(uint)param_1[0x33];
  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {
    pFVar6 = *(FILE **)puVar1;
    fwrite("none\n",1,5,pFVar6);
  }
  else {
    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);
  }
  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);
  bVar2 = param_1[0x34];
  if ((bVar2 & 1) != 0) {
    fwrite(" verification",1,0xd,*(FILE **)puVar1);
    bVar2 = param_1[0x34];
  }
  pFVar6 = *(FILE **)puVar1;
  if ((bVar2 & 2) != 0) {
    fwrite(" modification",1,0xd,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);
  if (0x36 < *param_1) {
    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);
    FUN_00016990();
    return;
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00016850
ADD EBX,0x1fd95
SUB ESP,0x1c
MOVZX EAX,byte ptr [EAX]
CMP AL,0x35
JBE 0x00018580
MOVZX EDX,byte ptr [ESI + 0x2]
SUB ESP,0x8
PUSH EDX
MOVZX EDX,byte ptr [ESI + 0x3]
PUSH EDX
MOVZX EDX,byte ptr [ESI + 0x1]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffebf0c]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x20
CMP byte ptr [ESI + 0x3],0x1
JNZ 0x000182b3
CMP byte ptr [ESI + 0x2],0x0
JZ 0x000189e0
MOV EDI,dword ptr [EBX + 0xfffffff0]
LEA EAX,[EBX + 0xfffebf98]
PUSH dword ptr [EDI]
PUSH 0x2a
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
SUB ESP,0x8
PUSH dword ptr [EDI]
LEA EBP,[EBX + 0xfffea3f7]
PUSH 0xa
CALL 0x000163a0
MOVZX EAX,byte ptr [ESI + 0x5]
LEA ECX,[EBX + 0xfffea3fd]
MOV EDX,EAX
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0xc
LEA EAX,[EBX + 0xfffeaf3f]
TEST DL,0x4
CMOVZ EBP,EAX
TEST DL,0x2
CMOVZ ECX,EAX
AND EDX,0x1
LEA EDX,[EBX + 0xfffea403]
PUSH EBP
CMOVNZ EAX,EDX
PUSH ECX
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0x4]
PUSH dword ptr [ESP + 0x1c]
PUSH EAX
LEA EAX,[EBX + 0xfffebfc4]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOV EBP,dword ptr [ESI + 0x6]
ADD ESP,0x1c
LEA EAX,[EBX + 0xfffec010]
PUSH EBP
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
TEST EBP,0x1
JNZ 0x00018780
MOV EAX,dword ptr [EDI]
TEST EBP,0x2
JNZ 0x000187a3
AND EBP,0xfffffffc
JNZ 0x000187c2
SUB ESP,0x8
PUSH EAX
PUSH 0xa
CALL 0x000163a0
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec034]
PUSH dword ptr [ESI + 0xa]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec058]
PUSH dword ptr [ESI + 0xe]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOVZX EAX,byte ptr [ESI + 0x12]
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffec07c]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec0a0]
PUSH dword ptr [ESI + 0x13]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec0c4]
PUSH dword ptr [ESI + 0x17]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOVZX EAX,byte ptr [ESI + 0x1b]
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffec0e8]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec10c]
PUSH dword ptr [ESI + 0x1c]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOV EBP,dword ptr [ESI + 0x20]
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec130]
PUSH EBP
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
TEST EBP,0x1
JNZ 0x00018940
MOV EAX,dword ptr [EDI]
TEST EBP,0x2
JNZ 0x00018920
AND EBP,0x4
JNZ 0x00018900
SUB ESP,0x8
PUSH EAX
PUSH 0xa
CALL 0x000163a0
MOV EBP,dword ptr [ESI + 0x24]
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec150]
PUSH EBP
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
TEST EBP,0x1
JNZ 0x000188e0
MOV EAX,dword ptr [EDI]
TEST EBP,0x2
JNZ 0x000188c0
TEST EBP,0x4
JNZ 0x000188a0
AND EBP,0x8
JNZ 0x00018880
SUB ESP,0x8
PUSH EAX
PUSH 0xa
CALL 0x000163a0
MOV EBP,dword ptr [ESI + 0x28]
ADD ESP,0xc
LEA EAX,[EBX + 0xfffec170]
PUSH EBP
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
TEST EBP,0x2
JNZ 0x00018860
TEST EBP,0x4
JNZ 0x00018840
TEST EBP,0x8
JNZ 0x00018820
TEST EBP,0x10
JNZ 0x00018800
TEST EBP,0x20
JNZ 0x000187e0
TEST EBP,0x40
JNZ 0x000185a0
TEST EBP,0x80
JNZ 0x00018a30
TEST EBP,0xc0
JNZ 0x00018a10
TEST EBP,0x100
JNZ 0x000185c1
TEST EBP,0x200
JNZ 0x000185e2
TEST EBP,0x400
JNZ 0x00018603
TEST EBP,0x10000
JNZ 0x00018624
TEST EBP,0x20000
JNZ 0x00018a70
TEST EBP,0x40000
JNZ 0x000189f0
AND EBP,0x70000
JZ 0x00018639
LEA EAX,[EBX + 0xfffec394]
PUSH dword ptr [EDI]
PUSH 0x2d
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x00018639
SUB ESP,0xc
LEA EAX,[EBX + 0xfffeb7f0]
PUSH EAX
CALL 0x00016180
ADD ESP,0x10
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0xfffec22c]
PUSH dword ptr [EDI]
PUSH 0x32
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
TEST EBP,0x100
JZ 0x0001851d
LEA EAX,[EBX + 0xfffec2b8]
PUSH dword ptr [EDI]
PUSH 0x2e
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
TEST EBP,0x200
JZ 0x00018529
LEA EAX,[EBX + 0xfffec2e8]
PUSH dword ptr [EDI]
PUSH 0x2d
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
TEST EBP,0x400
JZ 0x00018535
LEA EAX,[EBX + 0xfffea47e]
PUSH dword ptr [EDI]
PUSH 0x1d
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
TEST EBP,0x10000
JZ 0x00018541
LEA EAX,[EBX + 0xfffec318]
PUSH dword ptr [EDI]
PUSH 0x1e
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
SUB ESP,0x4
LEA EAX,[EBX + 0xfffec3c4]
PUSH dword ptr [ESI + 0x2c]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
POP EAX
LEA EAX,[EBX + 0xfffea49c]
POP EDX
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOVZX EAX,byte ptr [ESI + 0x30]
ADD ESP,0x10
CMP AL,0xff
JZ 0x00018980
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xfffea4c0]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
SUB ESP,0x8
LEA EAX,[EBX + 0xfffea4c8]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
CMP byte ptr [ESI + 0x31],0xff
JZ 0x00018960
MOVZX EAX,byte ptr [ESI + 0x30]
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xfffea4c0]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
SUB ESP,0x8
LEA EAX,[EBX + 0xfffea4e6]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOVZX EAX,byte ptr [ESI + 0x32]
ADD ESP,0x10
MOVZX EDX,byte ptr [ESI + 0x33]
TEST AL,AL
JNZ 0x000186e0
TEST DL,DL
JZ 0x00018a50
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xfffea50a]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
MOVZX EAX,byte ptr [ESI + 0x34]
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xfffec3e8]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
MOVZX EAX,byte ptr [ESI + 0x34]
ADD ESP,0x10
TEST AL,0x1
JNZ 0x000189c0
MOV EDX,dword ptr [EDI]
TEST AL,0x2
JNZ 0x000189a0
SUB ESP,0x8
PUSH EDX
PUSH 0xa
CALL 0x000163a0
MOVZX EAX,byte ptr [ESI + 0x35]
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffec40c]
PUSH EAX
PUSH 0x1
CALL 0x000162e0
ADD ESP,0x10
CMP byte ptr [ESI],0x36
JBE 0x00018592
LEA EAX,[EBX + 0xfffea538]
PUSH dword ptr [EDI]
PUSH 0x19
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOVZX EDX,byte ptr [ESI]
ADD ESP,0x2c
LEA EAX,[ESI + 0x36]
POP EBX
POP ESI
SUB EDX,0x36
POP EDI
POP EBP
JMP 0x00016990
LEA EAX,[EBX + 0xfffea409]
PUSH dword ptr [EDI]
PUSH 0x4
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
MOV EAX,dword ptr [EDI]
TEST EBP,0x2
JZ 0x0001835d
PUSH EAX
LEA EAX,[EBX + 0xfffea40e]
PUSH 0x4
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
AND EBP,0xfffffffc
MOV EAX,dword ptr [EDI]
JZ 0x00018366
PUSH EAX
LEA EAX,[EBX + 0xfffea413]
PUSH 0x1a
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
JMP 0x00018366
LEA EAX,[EBX + 0xfffec208]
PUSH dword ptr [EDI]
PUSH 0x20
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x000184ed
LEA EAX,[EBX + 0xfffea461]
PUSH dword ptr [EDI]
PUSH 0x1c
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x000184e1
LEA EAX,[EBX + 0xfffec1e4]
PUSH dword ptr [EDI]
PUSH 0x21
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x000184d5
LEA EAX,[EBX + 0xfffec1bc]
PUSH dword ptr [EDI]
PUSH 0x24
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x000184c9
LEA EAX,[EBX + 0xfffec190]
PUSH dword ptr [EDI]
PUSH 0x2a
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x000184bd
PUSH EAX
LEA EAX,[EBX + 0xfffea45b]
PUSH 0x5
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
JMP 0x0001848e
PUSH EAX
LEA EAX,[EBX + 0xfffea452]
PUSH 0x8
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
JMP 0x00018485
PUSH EAX
LEA EAX,[EBX + 0xfffea44b]
PUSH 0x6
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
JMP 0x00018479
LEA EAX,[EBX + 0xfffea443]
PUSH dword ptr [EDI]
PUSH 0x7
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x0001846b
PUSH EAX
LEA EAX,[EBX + 0xfffea43e]
PUSH 0x4
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
JMP 0x0001843c
PUSH EAX
LEA EAX,[EBX + 0xfffea436]
PUSH 0x7
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
JMP 0x00018433
LEA EAX,[EBX + 0xfffea42e]
PUSH dword ptr [EDI]
PUSH 0x7
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x00018425
LEA EAX,[EBX + 0xfffea4ba]
PUSH dword ptr [EDI]
PUSH 0x5
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x000186b8
LEA EAX,[EBX + 0xfffea4ba]
PUSH dword ptr [EDI]
PUSH 0x5
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x00018681
LEA EAX,[EBX + 0xfffea52a]
PUSH EDX
PUSH 0xd
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOV EDX,dword ptr [EDI]
ADD ESP,0x10
JMP 0x00018722
LEA EAX,[EBX + 0xfffea51c]
PUSH dword ptr [EDI]
PUSH 0xd
PUSH 0x1
PUSH EAX
CALL 0x00016130
MOVZX EAX,byte ptr [ESI + 0x34]
ADD ESP,0x10
JMP 0x00018718
MOV EDI,dword ptr [EBX + 0xfffffff0]
JMP 0x000182ce
LEA EAX,[EBX + 0xfffec360]
PUSH dword ptr [EDI]
PUSH 0x31
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x00018639
LEA EAX,[EBX + 0xfffec284]
PUSH dword ptr [EDI]
PUSH 0x32
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x00018511
LEA EAX,[EBX + 0xfffec260]
PUSH dword ptr [EDI]
PUSH 0x20
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x00018511
LEA EAX,[EBX + 0xfffea504]
PUSH dword ptr [EDI]
PUSH 0x5
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x000186f3
LEA EAX,[EBX + 0xfffec338]
PUSH dword ptr [EDI]
PUSH 0x24
PUSH 0x1
PUSH EAX
CALL 0x00016130
ADD ESP,0x10
JMP 0x00018639
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n\nvoid __regparm3 FUN_00018260(byte *param_1)\n\n{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}\n\n" comment comment (function_definition "void __regparm3 FUN_00018260(byte *param_1)\n\n{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00018260(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "FILE *pFVar6;" type_identifier (pointer_declarator "*pFVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (if_statement "if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }" if (parenthesized_expression "(*param_1 < 0x36)" ( (binary_expression "*param_1 < 0x36" (pointer_expression "*param_1" * identifier) < number_literal) )) (compound_statement "{\n    puts("      Warning: Descriptor too short");\n    return;\n  }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) (return_statement "return;" return ;) })) (expression_statement "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);" (call_expression "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2])" identifier (argument_list "(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2])" ( number_literal , (string_literal ""      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*param_1" * identifier) , (subscript_expression "param_1[1]" identifier [ number_literal ]) , (subscript_expression "param_1[3]" identifier [ number_literal ]) , (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar1 = PTR_stdout_00037ff0;" (assignment_expression "puVar1 = PTR_stdout_00037ff0" identifier = identifier) ;) (if_statement "if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" if (parenthesized_expression "((param_1[3] != 1) || (param_1[2] != 0))" ( (binary_expression "(param_1[3] != 1) || (param_1[2] != 0)" (parenthesized_expression "(param_1[3] != 1)" ( (binary_expression "param_1[3] != 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" { (expression_statement "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);" (call_expression "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" identifier (argument_list "("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" ( (string_literal ""  (Warning: Only accurate for version 1.0)"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stdout_00037ff0" * (cast_expression "(FILE **)PTR_stdout_00037ff0" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "putc(10,*(FILE **)puVar1);" (call_expression "putc(10,*(FILE **)puVar1)" identifier (argument_list "(10,*(FILE **)puVar1)" ( number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "bVar2 = param_1[5];" (assignment_expression "bVar2 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ identifier = (string_literal """" " ")) ;) (expression_statement "pcVar7 = "1.8V ";" (assignment_expression "pcVar7 = "1.8V "" identifier = (string_literal ""1.8V "" " string_content ")) ;) (if_statement "if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar7 = pcVar3;\n  }" { (expression_statement "pcVar7 = pcVar3;" (assignment_expression "pcVar7 = pcVar3" identifier = identifier) ;) })) (expression_statement "pcVar5 = "3.0V ";" (assignment_expression "pcVar5 = "3.0V "" identifier = (string_literal ""3.0V "" " string_content ")) ;) (if_statement "if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }" if (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar5 = pcVar3;\n  }" { (expression_statement "pcVar5 = pcVar3;" (assignment_expression "pcVar5 = pcVar3" identifier = identifier) ;) })) (if_statement "if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar3 = "5.0V ";\n  }" { (expression_statement "pcVar3 = "5.0V ";" (assignment_expression "pcVar3 = "5.0V "" identifier = (string_literal ""5.0V "" " string_content ")) ;) })) (expression_statement "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);" (call_expression "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7)" identifier (argument_list "(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7)" ( number_literal , (string_literal ""        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_1[4]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 6);" (assignment_expression "uVar4 = *(uint *)(param_1 + 6)" identifier = (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwProtocols         %5u ",uVar4);" (call_expression "__printf_chk(1,"        dwProtocols         %5u ",uVar4)" identifier (argument_list "(1,"        dwProtocols         %5u ",uVar4)" ( number_literal , (string_literal ""        dwProtocols         %5u "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }) (else_clause "else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" else (compound_statement "{\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1)" identifier (argument_list "(&DAT_00022409,1,4,*(FILE **)puVar1)" ( (pointer_expression "&DAT_00022409" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }))) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_0002240e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002240e,1,4,pFVar6)" identifier (argument_list "(&DAT_0002240e,1,4,pFVar6)" ( (pointer_expression "&DAT_0002240e" & identifier) , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 0xfffffffc) != 0)" ( (binary_expression "(uVar4 & 0xfffffffc) != 0" (parenthesized_expression "(uVar4 & 0xfffffffc)" ( (binary_expression "uVar4 & 0xfffffffc" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" (Invalid values detected)",1,0x1a,pFVar6);" (call_expression "fwrite(" (Invalid values detected)",1,0x1a,pFVar6)" identifier (argument_list "(" (Invalid values detected)",1,0x1a,pFVar6)" ( (string_literal "" (Invalid values detected)"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));" (call_expression "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10))" identifier (argument_list "(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10))" ( number_literal , (string_literal ""        dwDefaultClock      %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 10)" * (cast_expression "(undefined4 *)(param_1 + 10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));" (call_expression "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe))" identifier (argument_list "(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe))" ( number_literal , (string_literal ""        dwMaxiumumClock     %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0xe)" * (cast_expression "(undefined4 *)(param_1 + 0xe)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);" (call_expression "__printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12])" identifier (argument_list "(1,"        bNumClockSupported  %5u\n",param_1[0x12])" ( number_literal , (string_literal ""        bNumClockSupported  %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x12]" identifier [ number_literal ]) ))) ;) (expression_statement "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));" (call_expression "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13))" identifier (argument_list "(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13))" ( number_literal , (string_literal ""        dwDataRate        %7u bps\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x13)" * (cast_expression "(undefined4 *)(param_1 + 0x13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13)" ( (binary_expression "param_1 + 0x13" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));" (call_expression "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17))" identifier (argument_list "(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17))" ( number_literal , (string_literal ""        dwMaxDataRate     %7u bps\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x17)" * (cast_expression "(undefined4 *)(param_1 + 0x17)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x17)" ( (binary_expression "param_1 + 0x17" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);" (call_expression "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b])" identifier (argument_list "(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b])" ( number_literal , (string_literal ""        bNumDataRatesSupp.  %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x1b]" identifier [ number_literal ]) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));" (call_expression "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c))" identifier (argument_list "(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c))" ( number_literal , (string_literal ""        dwMaxIFSD           %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x20);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x20)" identifier = (pointer_expression "*(uint *)(param_1 + 0x20)" * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4)" identifier (argument_list "(1,"        dwSyncProtocols  %08X ",uVar4)" ( number_literal , (string_literal ""        dwSyncProtocols  %08X "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite(" 2-wire",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" 2-wire",1,7,*(FILE **)puVar1)" identifier (argument_list "(" 2-wire",1,7,*(FILE **)puVar1)" ( (string_literal "" 2-wire"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" 3-wire",1,7,pFVar6);" (call_expression "fwrite(" 3-wire",1,7,pFVar6)" identifier (argument_list "(" 3-wire",1,7,pFVar6)" ( (string_literal "" 3-wire"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_0002243e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002243e,1,4,pFVar6)" identifier (argument_list "(&DAT_0002243e,1,4,pFVar6)" ( (pointer_expression "&DAT_0002243e" & identifier) , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x24);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x24)" identifier = (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwMechanical     %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwMechanical     %08X ",uVar4)" identifier (argument_list "(1,"        dwMechanical     %08X ",uVar4)" ( number_literal , (string_literal ""        dwMechanical     %08X "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite(" accept",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" accept",1,7,*(FILE **)puVar1)" identifier (argument_list "(" accept",1,7,*(FILE **)puVar1)" ( (string_literal "" accept"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" eject",1,6,pFVar6);" (call_expression "fwrite(" eject",1,6,pFVar6)" identifier (argument_list "(" eject",1,6,pFVar6)" ( (string_literal "" eject"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" capture",1,8,pFVar6);" (call_expression "fwrite(" capture",1,8,pFVar6)" identifier (argument_list "(" capture",1,8,pFVar6)" ( (string_literal "" capture"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" lock",1,5,pFVar6);" (call_expression "fwrite(" lock",1,5,pFVar6)" identifier (argument_list "(" lock",1,5,pFVar6)" ( (string_literal "" lock"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x28)" identifier = (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwFeatures       %08X\n",uVar4);" (call_expression "__printf_chk(1,"        dwFeatures       %08X\n",uVar4)" identifier (argument_list "(1,"        dwFeatures       %08X\n",uVar4)" ( number_literal , (string_literal ""        dwFeatures       %08X\n"" " string_content escape_sequence ") , identifier ))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);" (call_expression "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" identifier (argument_list "("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" ( (string_literal ""          Auto configuration based on ATR\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" identifier (argument_list "("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" ( (string_literal ""          Auto activation on insert\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);" (call_expression "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" identifier (argument_list "("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" ( (string_literal ""          Auto voltage selection\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x10) != 0)" ( (binary_expression "(uVar4 & 0x10) != 0" (parenthesized_expression "(uVar4 & 0x10)" ( (binary_expression "uVar4 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);" (call_expression "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" identifier (argument_list "("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" ( (string_literal ""          Auto clock change\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x20) != 0)" ( (binary_expression "(uVar4 & 0x20) != 0" (parenthesized_expression "(uVar4 & 0x20)" ( (binary_expression "uVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" identifier (argument_list "("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" ( (string_literal ""          Auto baud rate change\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x40) == 0)" ( (binary_expression "(uVar4 & 0x40) == 0" (parenthesized_expression "(uVar4 & 0x40)" ( (binary_expression "uVar4 & 0x40" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }" { (if_statement "if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" if (parenthesized_expression "((uVar4 & 0x80) == 0)" ( (binary_expression "(uVar4 & 0x80) == 0" (parenthesized_expression "(uVar4 & 0x80)" ( (binary_expression "uVar4 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }" { (if_statement "if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" if (parenthesized_expression "((uVar4 & 0xc0) != 0)" ( (binary_expression "(uVar4 & 0xc0) != 0" (parenthesized_expression "(uVar4 & 0xc0)" ( (binary_expression "uVar4 & 0xc0" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" { (expression_statement "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" identifier (argument_list "("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" ( (string_literal ""        WARNING: conflicting negotiation features\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) }) (else_clause "else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" { (expression_statement "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" identifier (argument_list "("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" ( (string_literal ""          Auto PPS made by CCID\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" else (compound_statement "{\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" identifier (argument_list "("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" ( (string_literal ""          Auto parameter negotiation made by CCID\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (if_statement "if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x100) != 0)" ( (binary_expression "(uVar4 & 0x100) != 0" (parenthesized_expression "(uVar4 & 0x100)" ( (binary_expression "uVar4 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);" (call_expression "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" identifier (argument_list "("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" ( (string_literal ""          CCID can set ICC in clock stop mode\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x200) != 0)" ( (binary_expression "(uVar4 & 0x200) != 0" (parenthesized_expression "(uVar4 & 0x200)" ( (binary_expression "uVar4 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" identifier (argument_list "("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" ( (string_literal ""          NAD value other than 0x00 accepted\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);" (call_expression "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" identifier (argument_list "("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" ( (string_literal ""          Auto IFSD exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x10000) == 0)" ( (binary_expression "(uVar4 & 0x10000) == 0" (parenthesized_expression "(uVar4 & 0x10000)" ( (binary_expression "uVar4 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }" { (if_statement "if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" if (parenthesized_expression "((uVar4 & 0x20000) == 0)" ( (binary_expression "(uVar4 & 0x20000) == 0" (parenthesized_expression "(uVar4 & 0x20000)" ( (binary_expression "uVar4 & 0x20000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }" { (if_statement "if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" if (parenthesized_expression "((uVar4 & 0x40000) == 0)" ( (binary_expression "(uVar4 & 0x40000) == 0" (parenthesized_expression "(uVar4 & 0x40000)" ( (binary_expression "uVar4 & 0x40000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }" { (if_statement "if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" if (parenthesized_expression "((uVar4 & 0x70000) != 0)" ( (binary_expression "(uVar4 & 0x70000) != 0" (parenthesized_expression "(uVar4 & 0x70000)" ( (binary_expression "uVar4 & 0x70000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" { (expression_statement "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" identifier (argument_list "("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" ( (string_literal ""        WARNING: conflicting exchange levels\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) }) (else_clause "else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" else (compound_statement "{\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" { (expression_statement "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);" (call_expression "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" identifier (argument_list "("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" ( (string_literal ""          Short and extended APDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" { (expression_statement "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" identifier (argument_list "("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" ( (string_literal ""          Short APDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" else (compound_statement "{\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);" (call_expression "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" identifier (argument_list "("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" ( (string_literal ""          TPDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));" (call_expression "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c))" identifier (argument_list "(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c))" ( number_literal , (string_literal ""        dwMaxCCIDMsgLen     %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bClassGetResponse    ");" (call_expression "__printf_chk(1,"        bClassGetResponse    ")" identifier (argument_list "(1,"        bClassGetResponse    ")" ( number_literal , (string_literal ""        bClassGetResponse    "" " string_content ") ))) ;) (expression_statement "uVar4 = (uint)param_1[0x30];" (assignment_expression "uVar4 = (uint)param_1[0x30]" identifier = (cast_expression "(uint)param_1[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x30]" identifier [ number_literal ]))) ;) (if_statement "if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" if (parenthesized_expression "(param_1[0x30] == 0xff)" ( (binary_expression "param_1[0x30] == 0xff" (subscript_expression "param_1[0x30]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" { (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" identifier (argument_list "("echo\n",1,5,*(FILE **)puVar1)" ( (string_literal ""echo\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" else (compound_statement "{\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" { (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" identifier (argument_list "(1,"  %02X\n",uVar4)" ( number_literal , (string_literal ""  %02X\n"" " string_content escape_sequence ") , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        bClassEnvelope       ",uVar4);" (call_expression "__printf_chk(1,"        bClassEnvelope       ",uVar4)" identifier (argument_list "(1,"        bClassEnvelope       ",uVar4)" ( number_literal , (string_literal ""        bClassEnvelope       "" " string_content ") , identifier ))) ;) (if_statement "if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" if (parenthesized_expression "(param_1[0x31] == 0xff)" ( (binary_expression "param_1[0x31] == 0xff" (subscript_expression "param_1[0x31]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" { (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" identifier (argument_list "("echo\n",1,5,*(FILE **)puVar1)" ( (string_literal ""echo\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" else (compound_statement "{\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" { (expression_statement "uVar4 = (uint)param_1[0x30];" (assignment_expression "uVar4 = (uint)param_1[0x30]" identifier = (cast_expression "(uint)param_1[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x30]" identifier [ number_literal ]))) ;) (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" identifier (argument_list "(1,"  %02X\n",uVar4)" ( number_literal , (string_literal ""  %02X\n"" " string_content escape_sequence ") , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        wlcdLayout           ",uVar4);" (call_expression "__printf_chk(1,"        wlcdLayout           ",uVar4)" identifier (argument_list "(1,"        wlcdLayout           ",uVar4)" ( number_literal , (string_literal ""        wlcdLayout           "" " string_content ") , identifier ))) ;) (expression_statement "pFVar6 = (FILE *)(uint)param_1[0x33];" (assignment_expression "pFVar6 = (FILE *)(uint)param_1[0x33]" identifier = (cast_expression "(FILE *)(uint)param_1[0x33]" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)param_1[0x33]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x33]" identifier [ number_literal ])))) ;) (if_statement "if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" if (parenthesized_expression "((param_1[0x32] == 0) && (param_1[0x33] == 0))" ( (binary_expression "(param_1[0x32] == 0) && (param_1[0x33] == 0)" (parenthesized_expression "(param_1[0x32] == 0)" ( (binary_expression "param_1[0x32] == 0" (subscript_expression "param_1[0x32]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_1[0x33] == 0)" ( (binary_expression "param_1[0x33] == 0" (subscript_expression "param_1[0x33]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }" { (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "fwrite("none\n",1,5,pFVar6);" (call_expression "fwrite("none\n",1,5,pFVar6)" identifier (argument_list "("none\n",1,5,pFVar6)" ( (string_literal ""none\n"" " string_content escape_sequence ") , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" else (compound_statement "{\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" { (expression_statement "__printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);" (call_expression "__printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6)" identifier (argument_list "(1,"%u cols %u lines\n",param_1[0x32],pFVar6)" ( number_literal , (string_literal ""%u cols %u lines\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x32]" identifier [ number_literal ]) , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);" (call_expression "__printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6)" identifier (argument_list "(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6)" ( number_literal , (string_literal ""        bPINSupport         %5u "" " string_content ") , (subscript_expression "param_1[0x34]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "bVar2 = param_1[0x34];" (assignment_expression "bVar2 = param_1[0x34]" identifier = (subscript_expression "param_1[0x34]" identifier [ number_literal ])) ;) (if_statement "if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }" { (expression_statement "fwrite(" verification",1,0xd,*(FILE **)puVar1);" (call_expression "fwrite(" verification",1,0xd,*(FILE **)puVar1)" identifier (argument_list "(" verification",1,0xd,*(FILE **)puVar1)" ( (string_literal "" verification"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "bVar2 = param_1[0x34];" (assignment_expression "bVar2 = param_1[0x34]" identifier = (subscript_expression "param_1[0x34]" identifier [ number_literal ])) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" modification",1,0xd,pFVar6);" (call_expression "fwrite(" modification",1,0xd,pFVar6)" identifier (argument_list "(" modification",1,0xd,pFVar6)" ( (string_literal "" modification"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);" (call_expression "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35])" identifier (argument_list "(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35])" ( number_literal , (string_literal ""        bMaxCCIDBusySlots   %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x35]" identifier [ number_literal ]) ))) ;) (if_statement "if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }" if (parenthesized_expression "(0x36 < *param_1)" ( (binary_expression "0x36 < *param_1" number_literal < (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }" { (expression_statement "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1)" identifier (argument_list "(&DAT_00022538,1,0x19,*(FILE **)puVar1)" ( (pointer_expression "&DAT_00022538" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n\nvoid __regparm3 dump_ccid_device(uchar *buf)\n\n{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*buf < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*buf,buf[1],buf[3],buf[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((buf[3] != '\x01') || (buf[2] != '\0')) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = buf[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",buf[4]\n               ,bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(buf + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(buf + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(buf + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",buf[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(buf + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(buf + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",buf[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(buf + 0x1c));\n  uVar4 = *(uint *)(buf + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(buf + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(buf + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(buf + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)buf[0x30];\n  if (buf[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (buf[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)buf[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)buf[0x33];\n  if ((buf[0x32] == '\0') && (buf[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",buf[0x34],pFVar6);\n  bVar2 = buf[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = buf[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",buf[0x35]);\n  if (0x36 < *buf) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    dump_bytes(buf + 0x36,*buf - 0x36);\n    return;\n  }\n  return;\n}\n\n" comment comment (function_definition "void __regparm3 dump_ccid_device(uchar *buf)\n\n{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*buf < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*buf,buf[1],buf[3],buf[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((buf[3] != '\x01') || (buf[2] != '\0')) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = buf[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",buf[4]\n               ,bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(buf + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(buf + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(buf + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",buf[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(buf + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(buf + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",buf[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(buf + 0x1c));\n  uVar4 = *(uint *)(buf + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(buf + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(buf + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(buf + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)buf[0x30];\n  if (buf[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (buf[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)buf[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)buf[0x33];\n  if ((buf[0x32] == '\0') && (buf[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",buf[0x34],pFVar6);\n  bVar2 = buf[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = buf[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",buf[0x35]);\n  if (0x36 < *buf) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    dump_bytes(buf + 0x36,*buf - 0x36);\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "dump_ccid_device(uchar *buf)" identifier (parameter_list "(uchar *buf)" ( (parameter_declaration "uchar *buf" type_identifier (pointer_declarator "*buf" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*buf < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*buf,buf[1],buf[3],buf[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((buf[3] != '\x01') || (buf[2] != '\0')) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = buf[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",buf[4]\n               ,bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(buf + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(buf + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(buf + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",buf[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(buf + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(buf + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",buf[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(buf + 0x1c));\n  uVar4 = *(uint *)(buf + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(buf + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(buf + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(buf + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)buf[0x30];\n  if (buf[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (buf[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)buf[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)buf[0x33];\n  if ((buf[0x32] == '\0') && (buf[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",buf[0x34],pFVar6);\n  bVar2 = buf[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = buf[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",buf[0x35]);\n  if (0x36 < *buf) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    dump_bytes(buf + 0x36,*buf - 0x36);\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "FILE *pFVar6;" type_identifier (pointer_declarator "*pFVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (if_statement "if (*buf < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }" if (parenthesized_expression "(*buf < 0x36)" ( (binary_expression "*buf < 0x36" (pointer_expression "*buf" * identifier) < number_literal) )) (compound_statement "{\n    puts("      Warning: Descriptor too short");\n    return;\n  }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) (return_statement "return;" return ;) })) (expression_statement "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*buf,buf[1],buf[3],buf[2]);" (call_expression "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*buf,buf[1],buf[3],buf[2])" identifier (argument_list "(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*buf,buf[1],buf[3],buf[2])" ( number_literal , (string_literal ""      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*buf" * identifier) , (subscript_expression "buf[1]" identifier [ number_literal ]) , (subscript_expression "buf[3]" identifier [ number_literal ]) , (subscript_expression "buf[2]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar1 = PTR_stdout_00037ff0;" (assignment_expression "puVar1 = PTR_stdout_00037ff0" identifier = identifier) ;) (if_statement "if ((buf[3] != '\x01') || (buf[2] != '\0')) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" if (parenthesized_expression "((buf[3] != '\x01') || (buf[2] != '\0'))" ( (binary_expression "(buf[3] != '\x01') || (buf[2] != '\0')" (parenthesized_expression "(buf[3] != '\x01')" ( (binary_expression "buf[3] != '\x01'" (subscript_expression "buf[3]" identifier [ number_literal ]) != (char_literal "'\x01'" ' escape_sequence ')) )) || (parenthesized_expression "(buf[2] != '\0')" ( (binary_expression "buf[2] != '\0'" (subscript_expression "buf[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" { (expression_statement "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);" (call_expression "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" identifier (argument_list "("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" ( (string_literal ""  (Warning: Only accurate for version 1.0)"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stdout_00037ff0" * (cast_expression "(FILE **)PTR_stdout_00037ff0" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "putc(10,*(FILE **)puVar1);" (call_expression "putc(10,*(FILE **)puVar1)" identifier (argument_list "(10,*(FILE **)puVar1)" ( number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "bVar2 = buf[5];" (assignment_expression "bVar2 = buf[5]" identifier = (subscript_expression "buf[5]" identifier [ number_literal ])) ;) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ identifier = (string_literal """" " ")) ;) (expression_statement "pcVar7 = "1.8V ";" (assignment_expression "pcVar7 = "1.8V "" identifier = (string_literal ""1.8V "" " string_content ")) ;) (if_statement "if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar7 = pcVar3;\n  }" { (expression_statement "pcVar7 = pcVar3;" (assignment_expression "pcVar7 = pcVar3" identifier = identifier) ;) })) (expression_statement "pcVar5 = "3.0V ";" (assignment_expression "pcVar5 = "3.0V "" identifier = (string_literal ""3.0V "" " string_content ")) ;) (if_statement "if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }" if (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar5 = pcVar3;\n  }" { (expression_statement "pcVar5 = pcVar3;" (assignment_expression "pcVar5 = pcVar3" identifier = identifier) ;) })) (if_statement "if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar3 = "5.0V ";\n  }" { (expression_statement "pcVar3 = "5.0V ";" (assignment_expression "pcVar3 = "5.0V "" identifier = (string_literal ""5.0V "" " string_content ")) ;) })) (expression_statement "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",buf[4]\n               ,bVar2,pcVar3,pcVar5,pcVar7);" (call_expression "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",buf[4]\n               ,bVar2,pcVar3,pcVar5,pcVar7)" identifier (argument_list "(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",buf[4]\n               ,bVar2,pcVar3,pcVar5,pcVar7)" ( number_literal , (string_literal ""        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "buf[4]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(buf + 6);" (assignment_expression "uVar4 = *(uint *)(buf + 6)" identifier = (pointer_expression "*(uint *)(buf + 6)" * (cast_expression "(uint *)(buf + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 6)" ( (binary_expression "buf + 6" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwProtocols         %5u ",uVar4);" (call_expression "__printf_chk(1,"        dwProtocols         %5u ",uVar4)" identifier (argument_list "(1,"        dwProtocols         %5u ",uVar4)" ( number_literal , (string_literal ""        dwProtocols         %5u "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }) (else_clause "else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" else (compound_statement "{\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1)" identifier (argument_list "(&DAT_00022409,1,4,*(FILE **)puVar1)" ( (pointer_expression "&DAT_00022409" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }))) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_0002240e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002240e,1,4,pFVar6)" identifier (argument_list "(&DAT_0002240e,1,4,pFVar6)" ( (pointer_expression "&DAT_0002240e" & identifier) , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 0xfffffffc) != 0)" ( (binary_expression "(uVar4 & 0xfffffffc) != 0" (parenthesized_expression "(uVar4 & 0xfffffffc)" ( (binary_expression "uVar4 & 0xfffffffc" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" (Invalid values detected)",1,0x1a,pFVar6);" (call_expression "fwrite(" (Invalid values detected)",1,0x1a,pFVar6)" identifier (argument_list "(" (Invalid values detected)",1,0x1a,pFVar6)" ( (string_literal "" (Invalid values detected)"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(buf + 10));" (call_expression "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(buf + 10))" identifier (argument_list "(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(buf + 10))" ( number_literal , (string_literal ""        dwDefaultClock      %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(buf + 10)" * (cast_expression "(undefined4 *)(buf + 10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 10)" ( (binary_expression "buf + 10" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(buf + 0xe));" (call_expression "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(buf + 0xe))" identifier (argument_list "(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(buf + 0xe))" ( number_literal , (string_literal ""        dwMaxiumumClock     %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(buf + 0xe)" * (cast_expression "(undefined4 *)(buf + 0xe)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0xe)" ( (binary_expression "buf + 0xe" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bNumClockSupported  %5u\n",buf[0x12]);" (call_expression "__printf_chk(1,"        bNumClockSupported  %5u\n",buf[0x12])" identifier (argument_list "(1,"        bNumClockSupported  %5u\n",buf[0x12])" ( number_literal , (string_literal ""        bNumClockSupported  %5u\n"" " string_content escape_sequence ") , (subscript_expression "buf[0x12]" identifier [ number_literal ]) ))) ;) (expression_statement "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(buf + 0x13));" (call_expression "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(buf + 0x13))" identifier (argument_list "(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(buf + 0x13))" ( number_literal , (string_literal ""        dwDataRate        %7u bps\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(buf + 0x13)" * (cast_expression "(undefined4 *)(buf + 0x13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0x13)" ( (binary_expression "buf + 0x13" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(buf + 0x17));" (call_expression "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(buf + 0x17))" identifier (argument_list "(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(buf + 0x17))" ( number_literal , (string_literal ""        dwMaxDataRate     %7u bps\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(buf + 0x17)" * (cast_expression "(undefined4 *)(buf + 0x17)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0x17)" ( (binary_expression "buf + 0x17" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",buf[0x1b]);" (call_expression "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",buf[0x1b])" identifier (argument_list "(1,"        bNumDataRatesSupp.  %5u\n",buf[0x1b])" ( number_literal , (string_literal ""        bNumDataRatesSupp.  %5u\n"" " string_content escape_sequence ") , (subscript_expression "buf[0x1b]" identifier [ number_literal ]) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(buf + 0x1c));" (call_expression "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(buf + 0x1c))" identifier (argument_list "(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(buf + 0x1c))" ( number_literal , (string_literal ""        dwMaxIFSD           %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(buf + 0x1c)" * (cast_expression "(undefined4 *)(buf + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0x1c)" ( (binary_expression "buf + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar4 = *(uint *)(buf + 0x20);" (assignment_expression "uVar4 = *(uint *)(buf + 0x20)" identifier = (pointer_expression "*(uint *)(buf + 0x20)" * (cast_expression "(uint *)(buf + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0x20)" ( (binary_expression "buf + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4)" identifier (argument_list "(1,"        dwSyncProtocols  %08X ",uVar4)" ( number_literal , (string_literal ""        dwSyncProtocols  %08X "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite(" 2-wire",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" 2-wire",1,7,*(FILE **)puVar1)" identifier (argument_list "(" 2-wire",1,7,*(FILE **)puVar1)" ( (string_literal "" 2-wire"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" 3-wire",1,7,pFVar6);" (call_expression "fwrite(" 3-wire",1,7,pFVar6)" identifier (argument_list "(" 3-wire",1,7,pFVar6)" ( (string_literal "" 3-wire"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_0002243e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002243e,1,4,pFVar6)" identifier (argument_list "(&DAT_0002243e,1,4,pFVar6)" ( (pointer_expression "&DAT_0002243e" & identifier) , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(buf + 0x24);" (assignment_expression "uVar4 = *(uint *)(buf + 0x24)" identifier = (pointer_expression "*(uint *)(buf + 0x24)" * (cast_expression "(uint *)(buf + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0x24)" ( (binary_expression "buf + 0x24" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwMechanical     %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwMechanical     %08X ",uVar4)" identifier (argument_list "(1,"        dwMechanical     %08X ",uVar4)" ( number_literal , (string_literal ""        dwMechanical     %08X "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite(" accept",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" accept",1,7,*(FILE **)puVar1)" identifier (argument_list "(" accept",1,7,*(FILE **)puVar1)" ( (string_literal "" accept"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" eject",1,6,pFVar6);" (call_expression "fwrite(" eject",1,6,pFVar6)" identifier (argument_list "(" eject",1,6,pFVar6)" ( (string_literal "" eject"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" capture",1,8,pFVar6);" (call_expression "fwrite(" capture",1,8,pFVar6)" identifier (argument_list "(" capture",1,8,pFVar6)" ( (string_literal "" capture"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" lock",1,5,pFVar6);" (call_expression "fwrite(" lock",1,5,pFVar6)" identifier (argument_list "(" lock",1,5,pFVar6)" ( (string_literal "" lock"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(buf + 0x28);" (assignment_expression "uVar4 = *(uint *)(buf + 0x28)" identifier = (pointer_expression "*(uint *)(buf + 0x28)" * (cast_expression "(uint *)(buf + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0x28)" ( (binary_expression "buf + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwFeatures       %08X\n",uVar4);" (call_expression "__printf_chk(1,"        dwFeatures       %08X\n",uVar4)" identifier (argument_list "(1,"        dwFeatures       %08X\n",uVar4)" ( number_literal , (string_literal ""        dwFeatures       %08X\n"" " string_content escape_sequence ") , identifier ))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);" (call_expression "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" identifier (argument_list "("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" ( (string_literal ""          Auto configuration based on ATR\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" identifier (argument_list "("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" ( (string_literal ""          Auto activation on insert\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);" (call_expression "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" identifier (argument_list "("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" ( (string_literal ""          Auto voltage selection\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x10) != 0)" ( (binary_expression "(uVar4 & 0x10) != 0" (parenthesized_expression "(uVar4 & 0x10)" ( (binary_expression "uVar4 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);" (call_expression "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" identifier (argument_list "("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" ( (string_literal ""          Auto clock change\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x20) != 0)" ( (binary_expression "(uVar4 & 0x20) != 0" (parenthesized_expression "(uVar4 & 0x20)" ( (binary_expression "uVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" identifier (argument_list "("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" ( (string_literal ""          Auto baud rate change\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x40) == 0)" ( (binary_expression "(uVar4 & 0x40) == 0" (parenthesized_expression "(uVar4 & 0x40)" ( (binary_expression "uVar4 & 0x40" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }" { (if_statement "if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" if (parenthesized_expression "((uVar4 & 0x80) == 0)" ( (binary_expression "(uVar4 & 0x80) == 0" (parenthesized_expression "(uVar4 & 0x80)" ( (binary_expression "uVar4 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }" { (if_statement "if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" if (parenthesized_expression "((uVar4 & 0xc0) != 0)" ( (binary_expression "(uVar4 & 0xc0) != 0" (parenthesized_expression "(uVar4 & 0xc0)" ( (binary_expression "uVar4 & 0xc0" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" { (expression_statement "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" identifier (argument_list "("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" ( (string_literal ""        WARNING: conflicting negotiation features\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) }) (else_clause "else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" { (expression_statement "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" identifier (argument_list "("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" ( (string_literal ""          Auto PPS made by CCID\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" else (compound_statement "{\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" identifier (argument_list "("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" ( (string_literal ""          Auto parameter negotiation made by CCID\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (if_statement "if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x100) != 0)" ( (binary_expression "(uVar4 & 0x100) != 0" (parenthesized_expression "(uVar4 & 0x100)" ( (binary_expression "uVar4 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);" (call_expression "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" identifier (argument_list "("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" ( (string_literal ""          CCID can set ICC in clock stop mode\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x200) != 0)" ( (binary_expression "(uVar4 & 0x200) != 0" (parenthesized_expression "(uVar4 & 0x200)" ( (binary_expression "uVar4 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" identifier (argument_list "("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" ( (string_literal ""          NAD value other than 0x00 accepted\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);" (call_expression "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" identifier (argument_list "("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" ( (string_literal ""          Auto IFSD exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x10000) == 0)" ( (binary_expression "(uVar4 & 0x10000) == 0" (parenthesized_expression "(uVar4 & 0x10000)" ( (binary_expression "uVar4 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }" { (if_statement "if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" if (parenthesized_expression "((uVar4 & 0x20000) == 0)" ( (binary_expression "(uVar4 & 0x20000) == 0" (parenthesized_expression "(uVar4 & 0x20000)" ( (binary_expression "uVar4 & 0x20000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }" { (if_statement "if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" if (parenthesized_expression "((uVar4 & 0x40000) == 0)" ( (binary_expression "(uVar4 & 0x40000) == 0" (parenthesized_expression "(uVar4 & 0x40000)" ( (binary_expression "uVar4 & 0x40000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }" { (if_statement "if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" if (parenthesized_expression "((uVar4 & 0x70000) != 0)" ( (binary_expression "(uVar4 & 0x70000) != 0" (parenthesized_expression "(uVar4 & 0x70000)" ( (binary_expression "uVar4 & 0x70000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" { (expression_statement "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" identifier (argument_list "("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" ( (string_literal ""        WARNING: conflicting exchange levels\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) }) (else_clause "else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" else (compound_statement "{\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" { (expression_statement "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);" (call_expression "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" identifier (argument_list "("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" ( (string_literal ""          Short and extended APDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" { (expression_statement "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" identifier (argument_list "("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" ( (string_literal ""          Short APDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" else (compound_statement "{\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);" (call_expression "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" identifier (argument_list "("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" ( (string_literal ""          TPDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(buf + 0x2c));" (call_expression "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(buf + 0x2c))" identifier (argument_list "(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(buf + 0x2c))" ( number_literal , (string_literal ""        dwMaxCCIDMsgLen     %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(buf + 0x2c)" * (cast_expression "(undefined4 *)(buf + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + 0x2c)" ( (binary_expression "buf + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bClassGetResponse    ");" (call_expression "__printf_chk(1,"        bClassGetResponse    ")" identifier (argument_list "(1,"        bClassGetResponse    ")" ( number_literal , (string_literal ""        bClassGetResponse    "" " string_content ") ))) ;) (expression_statement "uVar4 = (uint)buf[0x30];" (assignment_expression "uVar4 = (uint)buf[0x30]" identifier = (cast_expression "(uint)buf[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0x30]" identifier [ number_literal ]))) ;) (if_statement "if (buf[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" if (parenthesized_expression "(buf[0x30] == 0xff)" ( (binary_expression "buf[0x30] == 0xff" (subscript_expression "buf[0x30]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" { (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" identifier (argument_list "("echo\n",1,5,*(FILE **)puVar1)" ( (string_literal ""echo\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" else (compound_statement "{\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" { (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" identifier (argument_list "(1,"  %02X\n",uVar4)" ( number_literal , (string_literal ""  %02X\n"" " string_content escape_sequence ") , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        bClassEnvelope       ",uVar4);" (call_expression "__printf_chk(1,"        bClassEnvelope       ",uVar4)" identifier (argument_list "(1,"        bClassEnvelope       ",uVar4)" ( number_literal , (string_literal ""        bClassEnvelope       "" " string_content ") , identifier ))) ;) (if_statement "if (buf[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)buf[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" if (parenthesized_expression "(buf[0x31] == 0xff)" ( (binary_expression "buf[0x31] == 0xff" (subscript_expression "buf[0x31]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" { (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" identifier (argument_list "("echo\n",1,5,*(FILE **)puVar1)" ( (string_literal ""echo\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n    uVar4 = (uint)buf[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" else (compound_statement "{\n    uVar4 = (uint)buf[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" { (expression_statement "uVar4 = (uint)buf[0x30];" (assignment_expression "uVar4 = (uint)buf[0x30]" identifier = (cast_expression "(uint)buf[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0x30]" identifier [ number_literal ]))) ;) (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" identifier (argument_list "(1,"  %02X\n",uVar4)" ( number_literal , (string_literal ""  %02X\n"" " string_content escape_sequence ") , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        wlcdLayout           ",uVar4);" (call_expression "__printf_chk(1,"        wlcdLayout           ",uVar4)" identifier (argument_list "(1,"        wlcdLayout           ",uVar4)" ( number_literal , (string_literal ""        wlcdLayout           "" " string_content ") , identifier ))) ;) (expression_statement "pFVar6 = (FILE *)(uint)buf[0x33];" (assignment_expression "pFVar6 = (FILE *)(uint)buf[0x33]" identifier = (cast_expression "(FILE *)(uint)buf[0x33]" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)buf[0x33]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "buf[0x33]" identifier [ number_literal ])))) ;) (if_statement "if ((buf[0x32] == '\0') && (buf[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);\n  }" if (parenthesized_expression "((buf[0x32] == '\0') && (buf[0x33] == 0))" ( (binary_expression "(buf[0x32] == '\0') && (buf[0x33] == 0)" (parenthesized_expression "(buf[0x32] == '\0')" ( (binary_expression "buf[0x32] == '\0'" (subscript_expression "buf[0x32]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(buf[0x33] == 0)" ( (binary_expression "buf[0x33] == 0" (subscript_expression "buf[0x33]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }" { (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "fwrite("none\n",1,5,pFVar6);" (call_expression "fwrite("none\n",1,5,pFVar6)" identifier (argument_list "("none\n",1,5,pFVar6)" ( (string_literal ""none\n"" " string_content escape_sequence ") , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    __printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);\n  }" else (compound_statement "{\n    __printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);\n  }" { (expression_statement "__printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6);" (call_expression "__printf_chk(1,"%u cols %u lines\n",buf[0x32],pFVar6)" identifier (argument_list "(1,"%u cols %u lines\n",buf[0x32],pFVar6)" ( number_literal , (string_literal ""%u cols %u lines\n"" " string_content escape_sequence ") , (subscript_expression "buf[0x32]" identifier [ number_literal ]) , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        bPINSupport         %5u ",buf[0x34],pFVar6);" (call_expression "__printf_chk(1,"        bPINSupport         %5u ",buf[0x34],pFVar6)" identifier (argument_list "(1,"        bPINSupport         %5u ",buf[0x34],pFVar6)" ( number_literal , (string_literal ""        bPINSupport         %5u "" " string_content ") , (subscript_expression "buf[0x34]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "bVar2 = buf[0x34];" (assignment_expression "bVar2 = buf[0x34]" identifier = (subscript_expression "buf[0x34]" identifier [ number_literal ])) ;) (if_statement "if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = buf[0x34];\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = buf[0x34];\n  }" { (expression_statement "fwrite(" verification",1,0xd,*(FILE **)puVar1);" (call_expression "fwrite(" verification",1,0xd,*(FILE **)puVar1)" identifier (argument_list "(" verification",1,0xd,*(FILE **)puVar1)" ( (string_literal "" verification"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "bVar2 = buf[0x34];" (assignment_expression "bVar2 = buf[0x34]" identifier = (subscript_expression "buf[0x34]" identifier [ number_literal ])) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" modification",1,0xd,pFVar6);" (call_expression "fwrite(" modification",1,0xd,pFVar6)" identifier (argument_list "(" modification",1,0xd,pFVar6)" ( (string_literal "" modification"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",buf[0x35]);" (call_expression "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",buf[0x35])" identifier (argument_list "(1,"        bMaxCCIDBusySlots   %5u\n",buf[0x35])" ( number_literal , (string_literal ""        bMaxCCIDBusySlots   %5u\n"" " string_content escape_sequence ") , (subscript_expression "buf[0x35]" identifier [ number_literal ]) ))) ;) (if_statement "if (0x36 < *buf) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    dump_bytes(buf + 0x36,*buf - 0x36);\n    return;\n  }" if (parenthesized_expression "(0x36 < *buf)" ( (binary_expression "0x36 < *buf" number_literal < (pointer_expression "*buf" * identifier)) )) (compound_statement "{\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    dump_bytes(buf + 0x36,*buf - 0x36);\n    return;\n  }" { (expression_statement "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1)" identifier (argument_list "(&DAT_00022538,1,0x19,*(FILE **)puVar1)" ( (pointer_expression "&DAT_00022538" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "dump_bytes(buf + 0x36,*buf - 0x36);" (call_expression "dump_bytes(buf + 0x36,*buf - 0x36)" identifier (argument_list "(buf + 0x36,*buf - 0x36)" ( (binary_expression "buf + 0x36" identifier + number_literal) , (binary_expression "*buf - 0x36" (pointer_expression "*buf" * identifier) - number_literal) ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_00018260(byte *param_1)\n\n{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00018260(byte *param_1)\n\n{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00018260(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "FILE *pFVar6;" type_identifier (pointer_declarator "*pFVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (if_statement "if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }" if (parenthesized_expression "(*param_1 < 0x36)" ( (binary_expression "*param_1 < 0x36" (pointer_expression "*param_1" * identifier) < number_literal) )) (compound_statement "{\n    puts("      Warning: Descriptor too short");\n    return;\n  }" { (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" identifier (argument_list "("      Warning: Descriptor too short")" ( (string_literal ""      Warning: Descriptor too short"" " string_content ") ))) ;) (return_statement "return;" return ;) })) (expression_statement "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);" (call_expression "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2])" identifier (argument_list "(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2])" ( number_literal , (string_literal ""      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*param_1" * identifier) , (subscript_expression "param_1[1]" identifier [ number_literal ]) , (subscript_expression "param_1[3]" identifier [ number_literal ]) , (subscript_expression "param_1[2]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar1 = PTR_stdout_00037ff0;" (assignment_expression "puVar1 = PTR_stdout_00037ff0" identifier = identifier) ;) (if_statement "if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" if (parenthesized_expression "((param_1[3] != 1) || (param_1[2] != 0))" ( (binary_expression "(param_1[3] != 1) || (param_1[2] != 0)" (parenthesized_expression "(param_1[3] != 1)" ( (binary_expression "param_1[3] != 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" { (expression_statement "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);" (call_expression "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" identifier (argument_list "("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" ( (string_literal ""  (Warning: Only accurate for version 1.0)"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)PTR_stdout_00037ff0" * (cast_expression "(FILE **)PTR_stdout_00037ff0" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "putc(10,*(FILE **)puVar1);" (call_expression "putc(10,*(FILE **)puVar1)" identifier (argument_list "(10,*(FILE **)puVar1)" ( number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "bVar2 = param_1[5];" (assignment_expression "bVar2 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ identifier = (string_literal """" " ")) ;) (expression_statement "pcVar7 = "1.8V ";" (assignment_expression "pcVar7 = "1.8V "" identifier = (string_literal ""1.8V "" " string_content ")) ;) (if_statement "if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar7 = pcVar3;\n  }" { (expression_statement "pcVar7 = pcVar3;" (assignment_expression "pcVar7 = pcVar3" identifier = identifier) ;) })) (expression_statement "pcVar5 = "3.0V ";" (assignment_expression "pcVar5 = "3.0V "" identifier = (string_literal ""3.0V "" " string_content ")) ;) (if_statement "if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }" if (parenthesized_expression "((bVar2 & 2) == 0)" ( (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pcVar5 = pcVar3;\n  }" { (expression_statement "pcVar5 = pcVar3;" (assignment_expression "pcVar5 = pcVar3" identifier = identifier) ;) })) (if_statement "if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    pcVar3 = "5.0V ";\n  }" { (expression_statement "pcVar3 = "5.0V ";" (assignment_expression "pcVar3 = "5.0V "" identifier = (string_literal ""5.0V "" " string_content ")) ;) })) (expression_statement "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);" (call_expression "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7)" identifier (argument_list "(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7)" ( number_literal , (string_literal ""        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n"" " string_content escape_sequence string_content escape_sequence ") , (subscript_expression "param_1[4]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 6);" (assignment_expression "uVar4 = *(uint *)(param_1 + 6)" identifier = (pointer_expression "*(uint *)(param_1 + 6)" * (cast_expression "(uint *)(param_1 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwProtocols         %5u ",uVar4);" (call_expression "__printf_chk(1,"        dwProtocols         %5u ",uVar4)" identifier (argument_list "(1,"        dwProtocols         %5u ",uVar4)" ( number_literal , (string_literal ""        dwProtocols         %5u "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 1) == 0)" ( (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }) (else_clause "else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" else (compound_statement "{\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1)" identifier (argument_list "(&DAT_00022409,1,4,*(FILE **)puVar1)" ( (pointer_expression "&DAT_00022409" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }))) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_0002240e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002240e,1,4,pFVar6)" identifier (argument_list "(&DAT_0002240e,1,4,pFVar6)" ( (pointer_expression "&DAT_0002240e" & identifier) , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 0xfffffffc) != 0)" ( (binary_expression "(uVar4 & 0xfffffffc) != 0" (parenthesized_expression "(uVar4 & 0xfffffffc)" ( (binary_expression "uVar4 & 0xfffffffc" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" (Invalid values detected)",1,0x1a,pFVar6);" (call_expression "fwrite(" (Invalid values detected)",1,0x1a,pFVar6)" identifier (argument_list "(" (Invalid values detected)",1,0x1a,pFVar6)" ( (string_literal "" (Invalid values detected)"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));" (call_expression "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10))" identifier (argument_list "(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10))" ( number_literal , (string_literal ""        dwDefaultClock      %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 10)" * (cast_expression "(undefined4 *)(param_1 + 10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));" (call_expression "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe))" identifier (argument_list "(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe))" ( number_literal , (string_literal ""        dwMaxiumumClock     %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0xe)" * (cast_expression "(undefined4 *)(param_1 + 0xe)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);" (call_expression "__printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12])" identifier (argument_list "(1,"        bNumClockSupported  %5u\n",param_1[0x12])" ( number_literal , (string_literal ""        bNumClockSupported  %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x12]" identifier [ number_literal ]) ))) ;) (expression_statement "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));" (call_expression "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13))" identifier (argument_list "(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13))" ( number_literal , (string_literal ""        dwDataRate        %7u bps\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x13)" * (cast_expression "(undefined4 *)(param_1 + 0x13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13)" ( (binary_expression "param_1 + 0x13" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));" (call_expression "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17))" identifier (argument_list "(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17))" ( number_literal , (string_literal ""        dwMaxDataRate     %7u bps\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x17)" * (cast_expression "(undefined4 *)(param_1 + 0x17)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x17)" ( (binary_expression "param_1 + 0x17" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);" (call_expression "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b])" identifier (argument_list "(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b])" ( number_literal , (string_literal ""        bNumDataRatesSupp.  %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x1b]" identifier [ number_literal ]) ))) ;) (expression_statement "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));" (call_expression "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c))" identifier (argument_list "(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c))" ( number_literal , (string_literal ""        dwMaxIFSD           %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x20);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x20)" identifier = (pointer_expression "*(uint *)(param_1 + 0x20)" * (cast_expression "(uint *)(param_1 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4)" identifier (argument_list "(1,"        dwSyncProtocols  %08X ",uVar4)" ( number_literal , (string_literal ""        dwSyncProtocols  %08X "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite(" 2-wire",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" 2-wire",1,7,*(FILE **)puVar1)" identifier (argument_list "(" 2-wire",1,7,*(FILE **)puVar1)" ( (string_literal "" 2-wire"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" 3-wire",1,7,pFVar6);" (call_expression "fwrite(" 3-wire",1,7,pFVar6)" identifier (argument_list "(" 3-wire",1,7,pFVar6)" ( (string_literal "" 3-wire"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(&DAT_0002243e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002243e,1,4,pFVar6)" identifier (argument_list "(&DAT_0002243e,1,4,pFVar6)" ( (pointer_expression "&DAT_0002243e" & identifier) , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x24);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x24)" identifier = (pointer_expression "*(uint *)(param_1 + 0x24)" * (cast_expression "(uint *)(param_1 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwMechanical     %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwMechanical     %08X ",uVar4)" identifier (argument_list "(1,"        dwMechanical     %08X ",uVar4)" ( number_literal , (string_literal ""        dwMechanical     %08X "" " string_content ") , identifier ))) ;) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite(" accept",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" accept",1,7,*(FILE **)puVar1)" identifier (argument_list "(" accept",1,7,*(FILE **)puVar1)" ( (string_literal "" accept"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" eject",1,6,pFVar6);" (call_expression "fwrite(" eject",1,6,pFVar6)" identifier (argument_list "(" eject",1,6,pFVar6)" ( (string_literal "" eject"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" capture",1,8,pFVar6);" (call_expression "fwrite(" capture",1,8,pFVar6)" identifier (argument_list "(" capture",1,8,pFVar6)" ( (string_literal "" capture"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" lock",1,5,pFVar6);" (call_expression "fwrite(" lock",1,5,pFVar6)" identifier (argument_list "(" lock",1,5,pFVar6)" ( (string_literal "" lock"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x28)" identifier = (pointer_expression "*(uint *)(param_1 + 0x28)" * (cast_expression "(uint *)(param_1 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__printf_chk(1,"        dwFeatures       %08X\n",uVar4);" (call_expression "__printf_chk(1,"        dwFeatures       %08X\n",uVar4)" identifier (argument_list "(1,"        dwFeatures       %08X\n",uVar4)" ( number_literal , (string_literal ""        dwFeatures       %08X\n"" " string_content escape_sequence ") , identifier ))) ;) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);" (call_expression "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" identifier (argument_list "("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" ( (string_literal ""          Auto configuration based on ATR\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" identifier (argument_list "("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" ( (string_literal ""          Auto activation on insert\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 8) != 0)" ( (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);" (call_expression "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" identifier (argument_list "("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" ( (string_literal ""          Auto voltage selection\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x10) != 0)" ( (binary_expression "(uVar4 & 0x10) != 0" (parenthesized_expression "(uVar4 & 0x10)" ( (binary_expression "uVar4 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);" (call_expression "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" identifier (argument_list "("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" ( (string_literal ""          Auto clock change\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x20) != 0)" ( (binary_expression "(uVar4 & 0x20) != 0" (parenthesized_expression "(uVar4 & 0x20)" ( (binary_expression "uVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" identifier (argument_list "("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" ( (string_literal ""          Auto baud rate change\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x40) == 0)" ( (binary_expression "(uVar4 & 0x40) == 0" (parenthesized_expression "(uVar4 & 0x40)" ( (binary_expression "uVar4 & 0x40" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }" { (if_statement "if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" if (parenthesized_expression "((uVar4 & 0x80) == 0)" ( (binary_expression "(uVar4 & 0x80) == 0" (parenthesized_expression "(uVar4 & 0x80)" ( (binary_expression "uVar4 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }" { (if_statement "if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" if (parenthesized_expression "((uVar4 & 0xc0) != 0)" ( (binary_expression "(uVar4 & 0xc0) != 0" (parenthesized_expression "(uVar4 & 0xc0)" ( (binary_expression "uVar4 & 0xc0" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" { (expression_statement "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" identifier (argument_list "("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" ( (string_literal ""        WARNING: conflicting negotiation features\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) }) (else_clause "else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" { (expression_statement "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" identifier (argument_list "("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" ( (string_literal ""          Auto PPS made by CCID\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" else (compound_statement "{\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" identifier (argument_list "("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" ( (string_literal ""          Auto parameter negotiation made by CCID\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (if_statement "if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x100) != 0)" ( (binary_expression "(uVar4 & 0x100) != 0" (parenthesized_expression "(uVar4 & 0x100)" ( (binary_expression "uVar4 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);" (call_expression "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" identifier (argument_list "("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" ( (string_literal ""          CCID can set ICC in clock stop mode\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x200) != 0)" ( (binary_expression "(uVar4 & 0x200) != 0" (parenthesized_expression "(uVar4 & 0x200)" ( (binary_expression "uVar4 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" identifier (argument_list "("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" ( (string_literal ""          NAD value other than 0x00 accepted\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);" (call_expression "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" identifier (argument_list "("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" ( (string_literal ""          Auto IFSD exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) (if_statement "if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" if (parenthesized_expression "((uVar4 & 0x10000) == 0)" ( (binary_expression "(uVar4 & 0x10000) == 0" (parenthesized_expression "(uVar4 & 0x10000)" ( (binary_expression "uVar4 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }" { (if_statement "if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" if (parenthesized_expression "((uVar4 & 0x20000) == 0)" ( (binary_expression "(uVar4 & 0x20000) == 0" (parenthesized_expression "(uVar4 & 0x20000)" ( (binary_expression "uVar4 & 0x20000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }" { (if_statement "if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" if (parenthesized_expression "((uVar4 & 0x40000) == 0)" ( (binary_expression "(uVar4 & 0x40000) == 0" (parenthesized_expression "(uVar4 & 0x40000)" ( (binary_expression "uVar4 & 0x40000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }" { (if_statement "if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" if (parenthesized_expression "((uVar4 & 0x70000) != 0)" ( (binary_expression "(uVar4 & 0x70000) != 0" (parenthesized_expression "(uVar4 & 0x70000)" ( (binary_expression "uVar4 & 0x70000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" { (expression_statement "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" identifier (argument_list "("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" ( (string_literal ""        WARNING: conflicting exchange levels\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) })) }) (else_clause "else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" else (compound_statement "{\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" { (expression_statement "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);" (call_expression "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" identifier (argument_list "("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" ( (string_literal ""          Short and extended APDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" else (compound_statement "{\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" { (expression_statement "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" identifier (argument_list "("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" ( (string_literal ""          Short APDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) }) (else_clause "else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" else (compound_statement "{\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" { (expression_statement "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);" (call_expression "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" identifier (argument_list "("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" ( (string_literal ""          TPDU level exchange\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }))) (expression_statement "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));" (call_expression "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c))" identifier (argument_list "(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c))" ( number_literal , (string_literal ""        dwMaxCCIDMsgLen     %5u\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"        bClassGetResponse    ");" (call_expression "__printf_chk(1,"        bClassGetResponse    ")" identifier (argument_list "(1,"        bClassGetResponse    ")" ( number_literal , (string_literal ""        bClassGetResponse    "" " string_content ") ))) ;) (expression_statement "uVar4 = (uint)param_1[0x30];" (assignment_expression "uVar4 = (uint)param_1[0x30]" identifier = (cast_expression "(uint)param_1[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x30]" identifier [ number_literal ]))) ;) (if_statement "if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" if (parenthesized_expression "(param_1[0x30] == 0xff)" ( (binary_expression "param_1[0x30] == 0xff" (subscript_expression "param_1[0x30]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" { (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" identifier (argument_list "("echo\n",1,5,*(FILE **)puVar1)" ( (string_literal ""echo\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" else (compound_statement "{\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" { (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" identifier (argument_list "(1,"  %02X\n",uVar4)" ( number_literal , (string_literal ""  %02X\n"" " string_content escape_sequence ") , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        bClassEnvelope       ",uVar4);" (call_expression "__printf_chk(1,"        bClassEnvelope       ",uVar4)" identifier (argument_list "(1,"        bClassEnvelope       ",uVar4)" ( number_literal , (string_literal ""        bClassEnvelope       "" " string_content ") , identifier ))) ;) (if_statement "if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" if (parenthesized_expression "(param_1[0x31] == 0xff)" ( (binary_expression "param_1[0x31] == 0xff" (subscript_expression "param_1[0x31]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" { (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" identifier (argument_list "("echo\n",1,5,*(FILE **)puVar1)" ( (string_literal ""echo\n"" " string_content escape_sequence ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) }) (else_clause "else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" else (compound_statement "{\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" { (expression_statement "uVar4 = (uint)param_1[0x30];" (assignment_expression "uVar4 = (uint)param_1[0x30]" identifier = (cast_expression "(uint)param_1[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x30]" identifier [ number_literal ]))) ;) (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" identifier (argument_list "(1,"  %02X\n",uVar4)" ( number_literal , (string_literal ""  %02X\n"" " string_content escape_sequence ") , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        wlcdLayout           ",uVar4);" (call_expression "__printf_chk(1,"        wlcdLayout           ",uVar4)" identifier (argument_list "(1,"        wlcdLayout           ",uVar4)" ( number_literal , (string_literal ""        wlcdLayout           "" " string_content ") , identifier ))) ;) (expression_statement "pFVar6 = (FILE *)(uint)param_1[0x33];" (assignment_expression "pFVar6 = (FILE *)(uint)param_1[0x33]" identifier = (cast_expression "(FILE *)(uint)param_1[0x33]" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)param_1[0x33]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[0x33]" identifier [ number_literal ])))) ;) (if_statement "if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" if (parenthesized_expression "((param_1[0x32] == 0) && (param_1[0x33] == 0))" ( (binary_expression "(param_1[0x32] == 0) && (param_1[0x33] == 0)" (parenthesized_expression "(param_1[0x32] == 0)" ( (binary_expression "param_1[0x32] == 0" (subscript_expression "param_1[0x32]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(param_1[0x33] == 0)" ( (binary_expression "param_1[0x33] == 0" (subscript_expression "param_1[0x33]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }" { (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "fwrite("none\n",1,5,pFVar6);" (call_expression "fwrite("none\n",1,5,pFVar6)" identifier (argument_list "("none\n",1,5,pFVar6)" ( (string_literal ""none\n"" " string_content escape_sequence ") , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" else (compound_statement "{\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" { (expression_statement "__printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);" (call_expression "__printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6)" identifier (argument_list "(1,"%u cols %u lines\n",param_1[0x32],pFVar6)" ( number_literal , (string_literal ""%u cols %u lines\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x32]" identifier [ number_literal ]) , identifier ))) ;) }))) (expression_statement "__printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);" (call_expression "__printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6)" identifier (argument_list "(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6)" ( number_literal , (string_literal ""        bPINSupport         %5u "" " string_content ") , (subscript_expression "param_1[0x34]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "bVar2 = param_1[0x34];" (assignment_expression "bVar2 = param_1[0x34]" identifier = (subscript_expression "param_1[0x34]" identifier [ number_literal ])) ;) (if_statement "if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }" { (expression_statement "fwrite(" verification",1,0xd,*(FILE **)puVar1);" (call_expression "fwrite(" verification",1,0xd,*(FILE **)puVar1)" identifier (argument_list "(" verification",1,0xd,*(FILE **)puVar1)" ( (string_literal "" verification"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "bVar2 = param_1[0x34];" (assignment_expression "bVar2 = param_1[0x34]" identifier = (subscript_expression "param_1[0x34]" identifier [ number_literal ])) ;) })) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" { (expression_statement "fwrite(" modification",1,0xd,pFVar6);" (call_expression "fwrite(" modification",1,0xd,pFVar6)" identifier (argument_list "(" modification",1,0xd,pFVar6)" ( (string_literal "" modification"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" identifier = (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) })) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" identifier (argument_list "(10,pFVar6)" ( number_literal , identifier ))) ;) (expression_statement "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);" (call_expression "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35])" identifier (argument_list "(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35])" ( number_literal , (string_literal ""        bMaxCCIDBusySlots   %5u\n"" " string_content escape_sequence ") , (subscript_expression "param_1[0x35]" identifier [ number_literal ]) ))) ;) (if_statement "if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }" if (parenthesized_expression "(0x36 < *param_1)" ( (binary_expression "0x36 < *param_1" number_literal < (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }" { (expression_statement "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1)" identifier (argument_list "(&DAT_00022538,1,0x19,*(FILE **)puVar1)" ( (pointer_expression "&DAT_00022538" & identifier) , number_literal , number_literal , (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ))) ;) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (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 ") , (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 ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (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 ") , (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 ") , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (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 ") ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , LIT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) (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 ( (string_literal " string_content ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_00018260(byte *param_1)\n\n{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00018260(byte *param_1)" (identifier "FUN_00018260") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  byte bVar2;\n  char *pcVar3;\n  uint uVar4;\n  char *pcVar5;\n  FILE *pFVar6;\n  char *pcVar7;\n  \n  if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }\n  __printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);\n  puVar1 = PTR_stdout_00037ff0;\n  if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }\n  putc(10,*(FILE **)puVar1);\n  bVar2 = param_1[5];\n  pcVar3 = "";\n  pcVar7 = "1.8V ";\n  if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }\n  pcVar5 = "3.0V ";\n  if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }\n  if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }\n  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);\n  uVar4 = *(uint *)(param_1 + 6);\n  __printf_chk(1,"        dwProtocols         %5u ",uVar4);\n  if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));\n  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));\n  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);\n  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));\n  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));\n  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);\n  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));\n  uVar4 = *(uint *)(param_1 + 0x20);\n  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x24);\n  __printf_chk(1,"        dwMechanical     %08X ",uVar4);\n  if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  uVar4 = *(uint *)(param_1 + 0x28);\n  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);\n  if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }\n  if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }\n  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));\n  __printf_chk(1,"        bClassGetResponse    ");\n  uVar4 = (uint)param_1[0x30];\n  if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        bClassEnvelope       ",uVar4);\n  if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }\n  __printf_chk(1,"        wlcdLayout           ",uVar4);\n  pFVar6 = (FILE *)(uint)param_1[0x33];\n  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }\n  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);\n  bVar2 = param_1[0x34];\n  if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }\n  pFVar6 = *(FILE **)puVar1;\n  if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }\n  putc(10,pFVar6);\n  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);\n  if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "FILE *pFVar6;" (type_identifier "FILE") (pointer_declarator "*pFVar6" (* "*") (identifier "pFVar6")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (if_statement "if (*param_1 < 0x36) {\n    puts("      Warning: Descriptor too short");\n    return;\n  }" (if "if") (parenthesized_expression "(*param_1 < 0x36)" (( "(") (binary_expression "*param_1 < 0x36" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (< "<") (number_literal "0x36")) () ")")) (compound_statement "{\n    puts("      Warning: Descriptor too short");\n    return;\n  }" ({ "{") (expression_statement "puts("      Warning: Descriptor too short");" (call_expression "puts("      Warning: Descriptor too short")" (identifier "puts") (argument_list "("      Warning: Descriptor too short")" (( "(") (string_literal ""      Warning: Descriptor too short"" (" """) (string_content "      Warning: Descriptor too short") (" """)) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2]);" (call_expression "__printf_chk(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2])" (identifier "__printf_chk") (argument_list "(1,\n               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"\n               ,*param_1,param_1[1],param_1[3],param_1[2])" (( "(") (number_literal "1") (, ",") (string_literal ""      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"" (" """) (string_content "      ChipCard Interface Descriptor:") (escape_sequence "\n") (string_content "        bLength             %5u") (escape_sequence "\n") (string_content "        bDescriptorType     %5u") (escape_sequence "\n") (string_content "        bcdCCID             %2x.%02x") (" """)) (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) () ")"))) (; ";")) (expression_statement "puVar1 = PTR_stdout_00037ff0;" (assignment_expression "puVar1 = PTR_stdout_00037ff0" (identifier "puVar1") (= "=") (identifier "PTR_stdout_00037ff0")) (; ";")) (if_statement "if ((param_1[3] != 1) || (param_1[2] != 0)) {\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" (if "if") (parenthesized_expression "((param_1[3] != 1) || (param_1[2] != 0))" (( "(") (binary_expression "(param_1[3] != 1) || (param_1[2] != 0)" (parenthesized_expression "(param_1[3] != 1)" (( "(") (binary_expression "param_1[3] != 1" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);\n  }" ({ "{") (expression_statement "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);" (call_expression "fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" (identifier "fwrite") (argument_list "("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0)" (( "(") (string_literal ""  (Warning: Only accurate for version 1.0)"" (" """) (string_content "  (Warning: Only accurate for version 1.0)") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x2a") (, ",") (pointer_expression "*(FILE **)PTR_stdout_00037ff0" (* "*") (cast_expression "(FILE **)PTR_stdout_00037ff0" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stdout_00037ff0"))) () ")"))) (; ";")) (} "}"))) (expression_statement "putc(10,*(FILE **)puVar1);" (call_expression "putc(10,*(FILE **)puVar1)" (identifier "putc") (argument_list "(10,*(FILE **)puVar1)" (( "(") (number_literal "10") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (expression_statement "bVar2 = param_1[5];" (assignment_expression "bVar2 = param_1[5]" (identifier "bVar2") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "pcVar3 = "";" (assignment_expression "pcVar3 = """ (identifier "pcVar3") (= "=") (string_literal """" (" """) (" """))) (; ";")) (expression_statement "pcVar7 = "1.8V ";" (assignment_expression "pcVar7 = "1.8V "" (identifier "pcVar7") (= "=") (string_literal ""1.8V "" (" """) (string_content "1.8V ") (" """))) (; ";")) (if_statement "if ((bVar2 & 4) == 0) {\n    pcVar7 = pcVar3;\n  }" (if "if") (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar7 = pcVar3;\n  }" ({ "{") (expression_statement "pcVar7 = pcVar3;" (assignment_expression "pcVar7 = pcVar3" (identifier "pcVar7") (= "=") (identifier "pcVar3")) (; ";")) (} "}"))) (expression_statement "pcVar5 = "3.0V ";" (assignment_expression "pcVar5 = "3.0V "" (identifier "pcVar5") (= "=") (string_literal ""3.0V "" (" """) (string_content "3.0V ") (" """))) (; ";")) (if_statement "if ((bVar2 & 2) == 0) {\n    pcVar5 = pcVar3;\n  }" (if "if") (parenthesized_expression "((bVar2 & 2) == 0)" (( "(") (binary_expression "(bVar2 & 2) == 0" (parenthesized_expression "(bVar2 & 2)" (( "(") (binary_expression "bVar2 & 2" (identifier "bVar2") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar5 = pcVar3;\n  }" ({ "{") (expression_statement "pcVar5 = pcVar3;" (assignment_expression "pcVar5 = pcVar3" (identifier "pcVar5") (= "=") (identifier "pcVar3")) (; ";")) (} "}"))) (if_statement "if ((bVar2 & 1) != 0) {\n    pcVar3 = "5.0V ";\n  }" (if "if") (parenthesized_expression "((bVar2 & 1) != 0)" (( "(") (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar3 = "5.0V ";\n  }" ({ "{") (expression_statement "pcVar3 = "5.0V ";" (assignment_expression "pcVar3 = "5.0V "" (identifier "pcVar3") (= "=") (string_literal ""5.0V "" (" """) (string_content "5.0V ") (" """))) (; ";")) (} "}"))) (expression_statement "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);" (call_expression "__printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7)" (identifier "__printf_chk") (argument_list "(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",\n               param_1[4],bVar2,pcVar3,pcVar5,pcVar7)" (( "(") (number_literal "1") (, ",") (string_literal ""        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n"" (" """) (string_content "        nMaxSlotIndex       %5u") (escape_sequence "\n") (string_content "        bVoltageSupport     %5u  %s%s%s") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "bVar2") (, ",") (identifier "pcVar3") (, ",") (identifier "pcVar5") (, ",") (identifier "pcVar7") () ")"))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_1 + 6);" (assignment_expression "uVar4 = *(uint *)(param_1 + 6)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 6)" (* "*") (cast_expression "(uint *)(param_1 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "__printf_chk(1,"        dwProtocols         %5u ",uVar4);" (call_expression "__printf_chk(1,"        dwProtocols         %5u ",uVar4)" (identifier "__printf_chk") (argument_list "(1,"        dwProtocols         %5u ",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""        dwProtocols         %5u "" (" """) (string_content "        dwProtocols         %5u ") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if ((uVar4 & 1) == 0) {\n    pFVar6 = *(FILE **)puVar1;\n  }\n  else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 1) == 0)" (( "(") (binary_expression "(uVar4 & 1) == 0" (parenthesized_expression "(uVar4 & 1)" (( "(") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}")) (else_clause "else {\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" (else "else") (compound_statement "{\n    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022409,1,4,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "(&DAT_00022409,1,4,*(FILE **)puVar1)" (( "(") (pointer_expression "&DAT_00022409" (& "&") (identifier "DAT_00022409")) (, ",") (number_literal "1") (, ",") (number_literal "4") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}")))) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 2) != 0)" (( "(") (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" (( "(") (binary_expression "uVar4 & 2" (identifier "uVar4") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(&DAT_0002240e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(&DAT_0002240e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002240e,1,4,pFVar6)" (identifier "fwrite") (argument_list "(&DAT_0002240e,1,4,pFVar6)" (( "(") (pointer_expression "&DAT_0002240e" (& "&") (identifier "DAT_0002240e")) (, ",") (number_literal "1") (, ",") (number_literal "4") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0xfffffffc) != 0) {\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 0xfffffffc) != 0)" (( "(") (binary_expression "(uVar4 & 0xfffffffc) != 0" (parenthesized_expression "(uVar4 & 0xfffffffc)" (( "(") (binary_expression "uVar4 & 0xfffffffc" (identifier "uVar4") (& "&") (number_literal "0xfffffffc")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(" (Invalid values detected)",1,0x1a,pFVar6);" (call_expression "fwrite(" (Invalid values detected)",1,0x1a,pFVar6)" (identifier "fwrite") (argument_list "(" (Invalid values detected)",1,0x1a,pFVar6)" (( "(") (string_literal "" (Invalid values detected)"" (" """) (string_content " (Invalid values detected)") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x1a") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" (identifier "putc") (argument_list "(10,pFVar6)" (( "(") (number_literal "10") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));" (call_expression "__printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10))" (identifier "__printf_chk") (argument_list "(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10))" (( "(") (number_literal "1") (, ",") (string_literal ""        dwDefaultClock      %5u\n"" (" """) (string_content "        dwDefaultClock      %5u") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));" (call_expression "__printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe))" (identifier "__printf_chk") (argument_list "(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe))" (( "(") (number_literal "1") (, ",") (string_literal ""        dwMaxiumumClock     %5u\n"" (" """) (string_content "        dwMaxiumumClock     %5u") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0xe)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) () ")")))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);" (call_expression "__printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12])" (identifier "__printf_chk") (argument_list "(1,"        bNumClockSupported  %5u\n",param_1[0x12])" (( "(") (number_literal "1") (, ",") (string_literal ""        bNumClockSupported  %5u\n"" (" """) (string_content "        bNumClockSupported  %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));" (call_expression "__printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13))" (identifier "__printf_chk") (argument_list "(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13))" (( "(") (number_literal "1") (, ",") (string_literal ""        dwDataRate        %7u bps\n"" (" """) (string_content "        dwDataRate        %7u bps") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x13)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x13)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13)" (( "(") (binary_expression "param_1 + 0x13" (identifier "param_1") (+ "+") (number_literal "0x13")) () ")")))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));" (call_expression "__printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17))" (identifier "__printf_chk") (argument_list "(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17))" (( "(") (number_literal "1") (, ",") (string_literal ""        dwMaxDataRate     %7u bps\n"" (" """) (string_content "        dwMaxDataRate     %7u bps") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x17)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x17)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x17)" (( "(") (binary_expression "param_1 + 0x17" (identifier "param_1") (+ "+") (number_literal "0x17")) () ")")))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);" (call_expression "__printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b])" (identifier "__printf_chk") (argument_list "(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b])" (( "(") (number_literal "1") (, ",") (string_literal ""        bNumDataRatesSupp.  %5u\n"" (" """) (string_content "        bNumDataRatesSupp.  %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_1[0x1b]" (identifier "param_1") ([ "[") (number_literal "0x1b") (] "]")) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));" (call_expression "__printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c))" (identifier "__printf_chk") (argument_list "(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c))" (( "(") (number_literal "1") (, ",") (string_literal ""        dwMaxIFSD           %5u\n"" (" """) (string_content "        dwMaxIFSD           %5u") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_1 + 0x20);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x20)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 0x20)" (* "*") (cast_expression "(uint *)(param_1 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwSyncProtocols  %08X ",uVar4)" (identifier "__printf_chk") (argument_list "(1,"        dwSyncProtocols  %08X ",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""        dwSyncProtocols  %08X "" (" """) (string_content "        dwSyncProtocols  %08X ") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 1) != 0)" (( "(") (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" (( "(") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" 2-wire",1,7,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite(" 2-wire",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" 2-wire",1,7,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "(" 2-wire",1,7,*(FILE **)puVar1)" (( "(") (string_literal "" 2-wire"" (" """) (string_content " 2-wire") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "7") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 2) != 0)" (( "(") (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" (( "(") (binary_expression "uVar4 & 2" (identifier "uVar4") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" 3-wire",1,7,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(" 3-wire",1,7,pFVar6);" (call_expression "fwrite(" 3-wire",1,7,pFVar6)" (identifier "fwrite") (argument_list "(" 3-wire",1,7,pFVar6)" (( "(") (string_literal "" 3-wire"" (" """) (string_content " 3-wire") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "7") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 4) != 0)" (( "(") (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" (( "(") (binary_expression "uVar4 & 4" (identifier "uVar4") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(&DAT_0002243e,1,4,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(&DAT_0002243e,1,4,pFVar6);" (call_expression "fwrite(&DAT_0002243e,1,4,pFVar6)" (identifier "fwrite") (argument_list "(&DAT_0002243e,1,4,pFVar6)" (( "(") (pointer_expression "&DAT_0002243e" (& "&") (identifier "DAT_0002243e")) (, ",") (number_literal "1") (, ",") (number_literal "4") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" (identifier "putc") (argument_list "(10,pFVar6)" (( "(") (number_literal "10") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_1 + 0x24);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x24)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 0x24)" (* "*") (cast_expression "(uint *)(param_1 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "__printf_chk(1,"        dwMechanical     %08X ",uVar4);" (call_expression "__printf_chk(1,"        dwMechanical     %08X ",uVar4)" (identifier "__printf_chk") (argument_list "(1,"        dwMechanical     %08X ",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""        dwMechanical     %08X "" (" """) (string_content "        dwMechanical     %08X ") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if ((uVar4 & 1) != 0) {\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 1) != 0)" (( "(") (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" (( "(") (binary_expression "uVar4 & 1" (identifier "uVar4") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" accept",1,7,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite(" accept",1,7,*(FILE **)puVar1);" (call_expression "fwrite(" accept",1,7,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "(" accept",1,7,*(FILE **)puVar1)" (( "(") (string_literal "" accept"" (" """) (string_content " accept") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "7") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 2) != 0)" (( "(") (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" (( "(") (binary_expression "uVar4 & 2" (identifier "uVar4") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" eject",1,6,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(" eject",1,6,pFVar6);" (call_expression "fwrite(" eject",1,6,pFVar6)" (identifier "fwrite") (argument_list "(" eject",1,6,pFVar6)" (( "(") (string_literal "" eject"" (" """) (string_content " eject") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "6") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 4) != 0)" (( "(") (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" (( "(") (binary_expression "uVar4 & 4" (identifier "uVar4") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" capture",1,8,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(" capture",1,8,pFVar6);" (call_expression "fwrite(" capture",1,8,pFVar6)" (identifier "fwrite") (argument_list "(" capture",1,8,pFVar6)" (( "(") (string_literal "" capture"" (" """) (string_content " capture") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "8") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((uVar4 & 8) != 0)" (( "(") (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" (( "(") (binary_expression "uVar4 & 8" (identifier "uVar4") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" lock",1,5,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(" lock",1,5,pFVar6);" (call_expression "fwrite(" lock",1,5,pFVar6)" (identifier "fwrite") (argument_list "(" lock",1,5,pFVar6)" (( "(") (string_literal "" lock"" (" """) (string_content " lock") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "5") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" (identifier "putc") (argument_list "(10,pFVar6)" (( "(") (number_literal "10") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_1 + 0x28);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x28)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 0x28)" (* "*") (cast_expression "(uint *)(param_1 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "__printf_chk(1,"        dwFeatures       %08X\n",uVar4);" (call_expression "__printf_chk(1,"        dwFeatures       %08X\n",uVar4)" (identifier "__printf_chk") (argument_list "(1,"        dwFeatures       %08X\n",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""        dwFeatures       %08X\n"" (" """) (string_content "        dwFeatures       %08X") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if ((uVar4 & 2) != 0) {\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 2) != 0)" (( "(") (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" (( "(") (binary_expression "uVar4 & 2" (identifier "uVar4") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);" (call_expression "fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto configuration based on ATR\n"" (" """) (string_content "          Auto configuration based on ATR") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x2a") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 4) != 0) {\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 4) != 0)" (( "(") (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" (( "(") (binary_expression "uVar4 & 4" (identifier "uVar4") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto activation on insert\n"" (" """) (string_content "          Auto activation on insert") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x24") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 8) != 0) {\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 8) != 0)" (( "(") (binary_expression "(uVar4 & 8) != 0" (parenthesized_expression "(uVar4 & 8)" (( "(") (binary_expression "uVar4 & 8" (identifier "uVar4") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);" (call_expression "fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto voltage selection\n"" (" """) (string_content "          Auto voltage selection") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x21") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x10) != 0) {\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x10) != 0)" (( "(") (binary_expression "(uVar4 & 0x10) != 0" (parenthesized_expression "(uVar4 & 0x10)" (( "(") (binary_expression "uVar4 & 0x10" (identifier "uVar4") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);" (call_expression "fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto clock change\n",1,0x1c,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto clock change\n"" (" """) (string_content "          Auto clock change") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x1c") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x20) != 0) {\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x20) != 0)" (( "(") (binary_expression "(uVar4 & 0x20) != 0" (parenthesized_expression "(uVar4 & 0x20)" (( "(") (binary_expression "uVar4 & 0x20" (identifier "uVar4") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto baud rate change\n"" (" """) (string_content "          Auto baud rate change") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x20") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x40) == 0) {\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x40) == 0)" (( "(") (binary_expression "(uVar4 & 0x40) == 0" (parenthesized_expression "(uVar4 & 0x40)" (( "(") (binary_expression "uVar4 & 0x40" (identifier "uVar4") (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }\n  }" ({ "{") (if_statement "if ((uVar4 & 0x80) == 0) {\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" (if "if") (parenthesized_expression "((uVar4 & 0x80) == 0)" (( "(") (binary_expression "(uVar4 & 0x80) == 0" (parenthesized_expression "(uVar4 & 0x80)" (( "(") (binary_expression "uVar4 & 0x80" (identifier "uVar4") (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }\n    }" ({ "{") (if_statement "if ((uVar4 & 0xc0) != 0) {\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" (if "if") (parenthesized_expression "((uVar4 & 0xc0) != 0)" (( "(") (binary_expression "(uVar4 & 0xc0) != 0" (parenthesized_expression "(uVar4 & 0xc0)" (( "(") (binary_expression "uVar4 & 0xc0" (identifier "uVar4") (& "&") (number_literal "0xc0")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);\n      }" ({ "{") (expression_statement "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1)" (( "(") (string_literal ""        WARNING: conflicting negotiation features\n"" (" """) (string_content "        WARNING: conflicting negotiation features") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x32") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" (else "else") (compound_statement "{\n      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);\n    }" ({ "{") (expression_statement "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);" (call_expression "fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto PPS made by CCID\n"" (" """) (string_content "          Auto PPS made by CCID") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x20") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" (else "else") (compound_statement "{\n    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);" (call_expression "fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto parameter negotiation made by CCID\n"" (" """) (string_content "          Auto parameter negotiation made by CCID") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x32") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")))) (if_statement "if ((uVar4 & 0x100) != 0) {\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x100) != 0)" (( "(") (binary_expression "(uVar4 & 0x100) != 0" (parenthesized_expression "(uVar4 & 0x100)" (( "(") (binary_expression "uVar4 & 0x100" (identifier "uVar4") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);" (call_expression "fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1)" (( "(") (string_literal ""          CCID can set ICC in clock stop mode\n"" (" """) (string_content "          CCID can set ICC in clock stop mode") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x2e") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x200) != 0) {\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x200) != 0)" (( "(") (binary_expression "(uVar4 & 0x200) != 0" (parenthesized_expression "(uVar4 & 0x200)" (( "(") (binary_expression "uVar4 & 0x200" (identifier "uVar4") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1)" (( "(") (string_literal ""          NAD value other than 0x00 accepted\n"" (" """) (string_content "          NAD value other than 0x00 accepted") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x2d") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x400) != 0) {\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x400) != 0)" (( "(") (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" (( "(") (binary_expression "uVar4 & 0x400" (identifier "uVar4") (& "&") (number_literal "0x400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);" (call_expression "fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1)" (( "(") (string_literal ""          Auto IFSD exchange\n"" (" """) (string_content "          Auto IFSD exchange") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x1d") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x10000) == 0) {\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }\n  else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" (if "if") (parenthesized_expression "((uVar4 & 0x10000) == 0)" (( "(") (binary_expression "(uVar4 & 0x10000) == 0" (parenthesized_expression "(uVar4 & 0x10000)" (( "(") (binary_expression "uVar4 & 0x10000" (identifier "uVar4") (& "&") (number_literal "0x10000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }\n  }" ({ "{") (if_statement "if ((uVar4 & 0x20000) == 0) {\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }\n    else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" (if "if") (parenthesized_expression "((uVar4 & 0x20000) == 0)" (( "(") (binary_expression "(uVar4 & 0x20000) == 0" (parenthesized_expression "(uVar4 & 0x20000)" (( "(") (binary_expression "uVar4 & 0x20000" (identifier "uVar4") (& "&") (number_literal "0x20000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }\n    }" ({ "{") (if_statement "if ((uVar4 & 0x40000) == 0) {\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }\n      else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" (if "if") (parenthesized_expression "((uVar4 & 0x40000) == 0)" (( "(") (binary_expression "(uVar4 & 0x40000) == 0" (parenthesized_expression "(uVar4 & 0x40000)" (( "(") (binary_expression "uVar4 & 0x40000" (identifier "uVar4") (& "&") (number_literal "0x40000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }\n      }" ({ "{") (if_statement "if ((uVar4 & 0x70000) != 0) {\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" (if "if") (parenthesized_expression "((uVar4 & 0x70000) != 0)" (( "(") (binary_expression "(uVar4 & 0x70000) != 0" (parenthesized_expression "(uVar4 & 0x70000)" (( "(") (binary_expression "uVar4 & 0x70000" (identifier "uVar4") (& "&") (number_literal "0x70000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);\n        }" ({ "{") (expression_statement "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);" (call_expression "fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1)" (( "(") (string_literal ""        WARNING: conflicting exchange levels\n"" (" """) (string_content "        WARNING: conflicting exchange levels") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x2d") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" (else "else") (compound_statement "{\n        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);\n      }" ({ "{") (expression_statement "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);" (call_expression "fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1)" (( "(") (string_literal ""          Short and extended APDU level exchange\n"" (" """) (string_content "          Short and extended APDU level exchange") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x31") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" (else "else") (compound_statement "{\n      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);\n    }" ({ "{") (expression_statement "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);" (call_expression "fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1)" (( "(") (string_literal ""          Short APDU level exchange\n"" (" """) (string_content "          Short APDU level exchange") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x24") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" (else "else") (compound_statement "{\n    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);" (call_expression "fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1)" (( "(") (string_literal ""          TPDU level exchange\n"" (" """) (string_content "          TPDU level exchange") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0x1e") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")))) (expression_statement "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));" (call_expression "__printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c))" (identifier "__printf_chk") (argument_list "(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c))" (( "(") (number_literal "1") (, ",") (string_literal ""        dwMaxCCIDMsgLen     %5u\n"" (" """) (string_content "        dwMaxCCIDMsgLen     %5u") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        bClassGetResponse    ");" (call_expression "__printf_chk(1,"        bClassGetResponse    ")" (identifier "__printf_chk") (argument_list "(1,"        bClassGetResponse    ")" (( "(") (number_literal "1") (, ",") (string_literal ""        bClassGetResponse    "" (" """) (string_content "        bClassGetResponse    ") (" """)) () ")"))) (; ";")) (expression_statement "uVar4 = (uint)param_1[0x30];" (assignment_expression "uVar4 = (uint)param_1[0x30]" (identifier "uVar4") (= "=") (cast_expression "(uint)param_1[0x30]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x30]" (identifier "param_1") ([ "[") (number_literal "0x30") (] "]")))) (; ";")) (if_statement "if (param_1[0x30] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" (if "if") (parenthesized_expression "(param_1[0x30] == 0xff)" (( "(") (binary_expression "param_1[0x30] == 0xff" (subscript_expression "param_1[0x30]" (identifier "param_1") ([ "[") (number_literal "0x30") (] "]")) (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" (identifier "uVar4") (= "=") (number_literal "5")) (; ";")) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("echo\n",1,5,*(FILE **)puVar1)" (( "(") (string_literal ""echo\n"" (" """) (string_content "echo") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "5") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" (else "else") (compound_statement "{\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" ({ "{") (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" (identifier "__printf_chk") (argument_list "(1,"  %02X\n",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""  %02X\n"" (" """) (string_content "  %02X") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")))) (expression_statement "__printf_chk(1,"        bClassEnvelope       ",uVar4);" (call_expression "__printf_chk(1,"        bClassEnvelope       ",uVar4)" (identifier "__printf_chk") (argument_list "(1,"        bClassEnvelope       ",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""        bClassEnvelope       "" (" """) (string_content "        bClassEnvelope       ") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if (param_1[0x31] == 0xff) {\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }\n  else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" (if "if") (parenthesized_expression "(param_1[0x31] == 0xff)" (( "(") (binary_expression "param_1[0x31] == 0xff" (subscript_expression "param_1[0x31]" (identifier "param_1") ([ "[") (number_literal "0x31") (] "]")) (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n    uVar4 = 5;\n    fwrite("echo\n",1,5,*(FILE **)puVar1);\n  }" ({ "{") (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" (identifier "uVar4") (= "=") (number_literal "5")) (; ";")) (expression_statement "fwrite("echo\n",1,5,*(FILE **)puVar1);" (call_expression "fwrite("echo\n",1,5,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "("echo\n",1,5,*(FILE **)puVar1)" (( "(") (string_literal ""echo\n"" (" """) (string_content "echo") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "5") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" (else "else") (compound_statement "{\n    uVar4 = (uint)param_1[0x30];\n    __printf_chk(1,"  %02X\n",uVar4);\n  }" ({ "{") (expression_statement "uVar4 = (uint)param_1[0x30];" (assignment_expression "uVar4 = (uint)param_1[0x30]" (identifier "uVar4") (= "=") (cast_expression "(uint)param_1[0x30]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x30]" (identifier "param_1") ([ "[") (number_literal "0x30") (] "]")))) (; ";")) (expression_statement "__printf_chk(1,"  %02X\n",uVar4);" (call_expression "__printf_chk(1,"  %02X\n",uVar4)" (identifier "__printf_chk") (argument_list "(1,"  %02X\n",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""  %02X\n"" (" """) (string_content "  %02X") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")))) (expression_statement "__printf_chk(1,"        wlcdLayout           ",uVar4);" (call_expression "__printf_chk(1,"        wlcdLayout           ",uVar4)" (identifier "__printf_chk") (argument_list "(1,"        wlcdLayout           ",uVar4)" (( "(") (number_literal "1") (, ",") (string_literal ""        wlcdLayout           "" (" """) (string_content "        wlcdLayout           ") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "pFVar6 = (FILE *)(uint)param_1[0x33];" (assignment_expression "pFVar6 = (FILE *)(uint)param_1[0x33]" (identifier "pFVar6") (= "=") (cast_expression "(FILE *)(uint)param_1[0x33]" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)param_1[0x33]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[0x33]" (identifier "param_1") ([ "[") (number_literal "0x33") (] "]"))))) (; ";")) (if_statement "if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }\n  else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" (if "if") (parenthesized_expression "((param_1[0x32] == 0) && (param_1[0x33] == 0))" (( "(") (binary_expression "(param_1[0x32] == 0) && (param_1[0x33] == 0)" (parenthesized_expression "(param_1[0x32] == 0)" (( "(") (binary_expression "param_1[0x32] == 0" (subscript_expression "param_1[0x32]" (identifier "param_1") ([ "[") (number_literal "0x32") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[0x33] == 0)" (( "(") (binary_expression "param_1[0x33] == 0" (subscript_expression "param_1[0x33]" (identifier "param_1") ([ "[") (number_literal "0x33") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    pFVar6 = *(FILE **)puVar1;\n    fwrite("none\n",1,5,pFVar6);\n  }" ({ "{") (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (expression_statement "fwrite("none\n",1,5,pFVar6);" (call_expression "fwrite("none\n",1,5,pFVar6)" (identifier "fwrite") (argument_list "("none\n",1,5,pFVar6)" (( "(") (string_literal ""none\n"" (" """) (string_content "none") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "5") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" (else "else") (compound_statement "{\n    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);\n  }" ({ "{") (expression_statement "__printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);" (call_expression "__printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6)" (identifier "__printf_chk") (argument_list "(1,"%u cols %u lines\n",param_1[0x32],pFVar6)" (( "(") (number_literal "1") (, ",") (string_literal ""%u cols %u lines\n"" (" """) (string_content "%u cols %u lines") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_1[0x32]" (identifier "param_1") ([ "[") (number_literal "0x32") (] "]")) (, ",") (identifier "pFVar6") () ")"))) (; ";")) (} "}")))) (expression_statement "__printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);" (call_expression "__printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6)" (identifier "__printf_chk") (argument_list "(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6)" (( "(") (number_literal "1") (, ",") (string_literal ""        bPINSupport         %5u "" (" """) (string_content "        bPINSupport         %5u ") (" """)) (, ",") (subscript_expression "param_1[0x34]" (identifier "param_1") ([ "[") (number_literal "0x34") (] "]")) (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "bVar2 = param_1[0x34];" (assignment_expression "bVar2 = param_1[0x34]" (identifier "bVar2") (= "=") (subscript_expression "param_1[0x34]" (identifier "param_1") ([ "[") (number_literal "0x34") (] "]"))) (; ";")) (if_statement "if ((bVar2 & 1) != 0) {\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }" (if "if") (parenthesized_expression "((bVar2 & 1) != 0)" (( "(") (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" verification",1,0xd,*(FILE **)puVar1);\n    bVar2 = param_1[0x34];\n  }" ({ "{") (expression_statement "fwrite(" verification",1,0xd,*(FILE **)puVar1);" (call_expression "fwrite(" verification",1,0xd,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "(" verification",1,0xd,*(FILE **)puVar1)" (( "(") (string_literal "" verification"" (" """) (string_content " verification") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0xd") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (expression_statement "bVar2 = param_1[0x34];" (assignment_expression "bVar2 = param_1[0x34]" (identifier "bVar2") (= "=") (subscript_expression "param_1[0x34]" (identifier "param_1") ([ "[") (number_literal "0x34") (] "]"))) (; ";")) (} "}"))) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (if_statement "if ((bVar2 & 2) != 0) {\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" (if "if") (parenthesized_expression "((bVar2 & 2) != 0)" (( "(") (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" (( "(") (binary_expression "bVar2 & 2" (identifier "bVar2") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    fwrite(" modification",1,0xd,pFVar6);\n    pFVar6 = *(FILE **)puVar1;\n  }" ({ "{") (expression_statement "fwrite(" modification",1,0xd,pFVar6);" (call_expression "fwrite(" modification",1,0xd,pFVar6)" (identifier "fwrite") (argument_list "(" modification",1,0xd,pFVar6)" (( "(") (string_literal "" modification"" (" """) (string_content " modification") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "0xd") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "pFVar6 = *(FILE **)puVar1;" (assignment_expression "pFVar6 = *(FILE **)puVar1" (identifier "pFVar6") (= "=") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) (; ";")) (} "}"))) (expression_statement "putc(10,pFVar6);" (call_expression "putc(10,pFVar6)" (identifier "putc") (argument_list "(10,pFVar6)" (( "(") (number_literal "10") (, ",") (identifier "pFVar6") () ")"))) (; ";")) (expression_statement "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);" (call_expression "__printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35])" (identifier "__printf_chk") (argument_list "(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35])" (( "(") (number_literal "1") (, ",") (string_literal ""        bMaxCCIDBusySlots   %5u\n"" (" """) (string_content "        bMaxCCIDBusySlots   %5u") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "param_1[0x35]" (identifier "param_1") ([ "[") (number_literal "0x35") (] "]")) () ")"))) (; ";")) (if_statement "if (0x36 < *param_1) {\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }" (if "if") (parenthesized_expression "(0x36 < *param_1)" (( "(") (binary_expression "0x36 < *param_1" (number_literal "0x36") (< "<") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (compound_statement "{\n    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);\n    FUN_00016990();\n    return;\n  }" ({ "{") (expression_statement "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);" (call_expression "fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1)" (identifier "fwrite") (argument_list "(&DAT_00022538,1,0x19,*(FILE **)puVar1)" (( "(") (pointer_expression "&DAT_00022538" (& "&") (identifier "DAT_00022538")) (, ",") (number_literal "1") (, ",") (number_literal "0x19") (, ",") (pointer_expression "*(FILE **)puVar1" (* "*") (cast_expression "(FILE **)puVar1" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1"))) () ")"))) (; ";")) (expression_statement "FUN_00016990();" (call_expression "FUN_00016990()" (identifier "FUN_00016990") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

void __regparm3 function_1(type_1 *var_6)

{
  type_2 *puVar1;
  type_3 var_5;
  char *pcVar3;
  type_4 var_7;
  char *pcVar5;
  type_5 *pFVar6;
  char *pcVar7;
  
  if (*var_6 < 0x36) {
    var_1("      Warning: Descriptor too short");
    return;
  }
  var_2(1,
               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"
               ,*var_6,var_6[1],var_6[3],var_6[2]);
  puVar1 = PTR_stdout_00037ff0;
  if ((var_6[3] != '\x01') || (var_6[2] != '\0')) {
    var_3("  (Warning: Only accurate for version 1.0)",1,0x2a,*(type_5 **)PTR_stdout_00037ff0);
  }
  var_4(10,*(type_5 **)puVar1);
  var_5 = var_6[5];
  pcVar3 = "";
  pcVar7 = "1.8V ";
  if ((var_5 & 4) == 0) {
    pcVar7 = pcVar3;
  }
  pcVar5 = "3.0V ";
  if ((var_5 & 2) == 0) {
    pcVar5 = pcVar3;
  }
  if ((var_5 & 1) != 0) {
    pcVar3 = "5.0V ";
  }
  var_2(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",var_6[4]
               ,var_5,pcVar3,pcVar5,pcVar7);
  var_7 = *(type_4 *)(var_6 + 6);
  var_2(1,"        dwProtocols         %5u ",var_7);
  if ((var_7 & 1) == 0) {
    pFVar6 = *(type_5 **)puVar1;
  }
  else {
    var_3(&DAT_00022409,1,4,*(type_5 **)puVar1);
    pFVar6 = *(type_5 **)puVar1;
  }
  if ((var_7 & 2) != 0) {
    var_3(&DAT_0002240e,1,4,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  if ((var_7 & 0xfffffffc) != 0) {
    var_3(" (Invalid values detected)",1,0x1a,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  var_4(10,pFVar6);
  var_2(1,"        dwDefaultClock      %5u\n",*(type_6 *)(var_6 + 10));
  var_2(1,"        dwMaxiumumClock     %5u\n",*(type_6 *)(var_6 + 0xe));
  var_2(1,"        bNumClockSupported  %5u\n",var_6[0x12]);
  var_2(1,"        dwDataRate        %7u bps\n",*(type_6 *)(var_6 + 0x13));
  var_2(1,"        dwMaxDataRate     %7u bps\n",*(type_6 *)(var_6 + 0x17));
  var_2(1,"        bNumDataRatesSupp.  %5u\n",var_6[0x1b]);
  var_2(1,"        dwMaxIFSD           %5u\n",*(type_6 *)(var_6 + 0x1c));
  var_7 = *(type_4 *)(var_6 + 0x20);
  var_2(1,"        dwSyncProtocols  %08X ",var_7);
  if ((var_7 & 1) != 0) {
    var_3(" 2-wire",1,7,*(type_5 **)puVar1);
  }
  pFVar6 = *(type_5 **)puVar1;
  if ((var_7 & 2) != 0) {
    var_3(" 3-wire",1,7,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  if ((var_7 & 4) != 0) {
    var_3(&DAT_0002243e,1,4,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  var_4(10,pFVar6);
  var_7 = *(type_4 *)(var_6 + 0x24);
  var_2(1,"        dwMechanical     %08X ",var_7);
  if ((var_7 & 1) != 0) {
    var_3(" accept",1,7,*(type_5 **)puVar1);
  }
  pFVar6 = *(type_5 **)puVar1;
  if ((var_7 & 2) != 0) {
    var_3(" eject",1,6,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  if ((var_7 & 4) != 0) {
    var_3(" capture",1,8,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  if ((var_7 & 8) != 0) {
    var_3(" lock",1,5,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  var_4(10,pFVar6);
  var_7 = *(type_4 *)(var_6 + 0x28);
  var_2(1,"        dwFeatures       %08X\n",var_7);
  if ((var_7 & 2) != 0) {
    var_3("          Auto configuration based on ATR\n",1,0x2a,*(type_5 **)puVar1);
  }
  if ((var_7 & 4) != 0) {
    var_3("          Auto activation on insert\n",1,0x24,*(type_5 **)puVar1);
  }
  if ((var_7 & 8) != 0) {
    var_3("          Auto voltage selection\n",1,0x21,*(type_5 **)puVar1);
  }
  if ((var_7 & 0x10) != 0) {
    var_3("          Auto clock change\n",1,0x1c,*(type_5 **)puVar1);
  }
  if ((var_7 & 0x20) != 0) {
    var_3("          Auto baud rate change\n",1,0x20,*(type_5 **)puVar1);
  }
  if ((var_7 & 0x40) == 0) {
    if ((var_7 & 0x80) == 0) {
      if ((var_7 & 0xc0) != 0) {
        var_3("        WARNING: conflicting negotiation features\n",1,0x32,*(type_5 **)puVar1);
      }
    }
    else {
      var_3("          Auto PPS made by CCID\n",1,0x20,*(type_5 **)puVar1);
    }
  }
  else {
    var_3("          Auto parameter negotiation made by CCID\n",1,0x32,*(type_5 **)puVar1);
  }
  if ((var_7 & 0x100) != 0) {
    var_3("          CCID can set ICC in clock stop mode\n",1,0x2e,*(type_5 **)puVar1);
  }
  if ((var_7 & 0x200) != 0) {
    var_3("          NAD value other than 0x00 accepted\n",1,0x2d,*(type_5 **)puVar1);
  }
  if ((var_7 & 0x400) != 0) {
    var_3("          Auto IFSD exchange\n",1,0x1d,*(type_5 **)puVar1);
  }
  if ((var_7 & 0x10000) == 0) {
    if ((var_7 & 0x20000) == 0) {
      if ((var_7 & 0x40000) == 0) {
        if ((var_7 & 0x70000) != 0) {
          var_3("        WARNING: conflicting exchange levels\n",1,0x2d,*(type_5 **)puVar1);
        }
      }
      else {
        var_3("          Short and extended APDU level exchange\n",1,0x31,*(type_5 **)puVar1);
      }
    }
    else {
      var_3("          Short APDU level exchange\n",1,0x24,*(type_5 **)puVar1);
    }
  }
  else {
    var_3("          TPDU level exchange\n",1,0x1e,*(type_5 **)puVar1);
  }
  var_2(1,"        dwMaxCCIDMsgLen     %5u\n",*(type_6 *)(var_6 + 0x2c));
  var_2(1,"        bClassGetResponse    ");
  var_7 = (type_4)var_6[0x30];
  if (var_6[0x30] == 0xff) {
    var_7 = 5;
    var_3("echo\n",1,5,*(type_5 **)puVar1);
  }
  else {
    var_2(1,"  %02X\n",var_7);
  }
  var_2(1,"        bClassEnvelope       ",var_7);
  if (var_6[0x31] == 0xff) {
    var_7 = 5;
    var_3("echo\n",1,5,*(type_5 **)puVar1);
  }
  else {
    var_7 = (type_4)var_6[0x30];
    var_2(1,"  %02X\n",var_7);
  }
  var_2(1,"        wlcdLayout           ",var_7);
  pFVar6 = (type_5 *)(type_4)var_6[0x33];
  if ((var_6[0x32] == '\0') && (var_6[0x33] == 0)) {
    pFVar6 = *(type_5 **)puVar1;
    var_3("none\n",1,5,pFVar6);
  }
  else {
    var_2(1,"%u cols %u lines\n",var_6[0x32],pFVar6);
  }
  var_2(1,"        bPINSupport         %5u ",var_6[0x34],pFVar6);
  var_5 = var_6[0x34];
  if ((var_5 & 1) != 0) {
    var_3(" verification",1,0xd,*(type_5 **)puVar1);
    var_5 = var_6[0x34];
  }
  pFVar6 = *(type_5 **)puVar1;
  if ((var_5 & 2) != 0) {
    var_3(" modification",1,0xd,pFVar6);
    pFVar6 = *(type_5 **)puVar1;
  }
  var_4(10,pFVar6);
  var_2(1,"        bMaxCCIDBusySlots   %5u\n",var_6[0x35]);
  if (0x36 < *var_6) {
    var_3(&DAT_00022538,1,0x19,*(type_5 **)puVar1);
    var_8(var_6 + 0x36,*var_6 - 0x36);
    return;
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))) (return_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)) (pointer_expression argument: (identifier)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_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: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (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 (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (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 (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (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 (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (number_literal) (number_literal) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier)))) (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 (string_literal (string_content)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

void __regparm3 MASKED(byte *param_1)

{
  undefined *puVar1;
  byte bVar2;
  char *pcVar3;
  uint uVar4;
  char *pcVar5;
  FILE *pFVar6;
  char *pcVar7;
  
  if (*param_1 < 0x36) {
    puts("      Warning: Descriptor too short");
    return;
  }
  __printf_chk(1,
               "      ChipCard Interface Descriptor:\n        bLength             %5u\n        bDescriptorType     %5u\n        bcdCCID             %2x.%02x"
               ,*param_1,param_1[1],param_1[3],param_1[2]);
  puVar1 = PTR_stdout_00037ff0;
  if ((param_1[3] != 1) || (param_1[2] != 0)) {
    fwrite("  (Warning: Only accurate for version 1.0)",1,0x2a,*(FILE **)PTR_stdout_00037ff0);
  }
  putc(10,*(FILE **)puVar1);
  bVar2 = param_1[5];
  pcVar3 = "";
  pcVar7 = "1.8V ";
  if ((bVar2 & 4) == 0) {
    pcVar7 = pcVar3;
  }
  pcVar5 = "3.0V ";
  if ((bVar2 & 2) == 0) {
    pcVar5 = pcVar3;
  }
  if ((bVar2 & 1) != 0) {
    pcVar3 = "5.0V ";
  }
  __printf_chk(1,"        nMaxSlotIndex       %5u\n        bVoltageSupport     %5u  %s%s%s\n",
               param_1[4],bVar2,pcVar3,pcVar5,pcVar7);
  uVar4 = *(uint *)(param_1 + 6);
  __printf_chk(1,"        dwProtocols         %5u ",uVar4);
  if ((uVar4 & 1) == 0) {
    pFVar6 = *(FILE **)puVar1;
  }
  else {
    fwrite(&DAT_00022409,1,4,*(FILE **)puVar1);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 2) != 0) {
    fwrite(&DAT_0002240e,1,4,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 0xfffffffc) != 0) {
    fwrite(" (Invalid values detected)",1,0x1a,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  __printf_chk(1,"        dwDefaultClock      %5u\n",*(undefined4 *)(param_1 + 10));
  __printf_chk(1,"        dwMaxiumumClock     %5u\n",*(undefined4 *)(param_1 + 0xe));
  __printf_chk(1,"        bNumClockSupported  %5u\n",param_1[0x12]);
  __printf_chk(1,"        dwDataRate        %7u bps\n",*(undefined4 *)(param_1 + 0x13));
  __printf_chk(1,"        dwMaxDataRate     %7u bps\n",*(undefined4 *)(param_1 + 0x17));
  __printf_chk(1,"        bNumDataRatesSupp.  %5u\n",param_1[0x1b]);
  __printf_chk(1,"        dwMaxIFSD           %5u\n",*(undefined4 *)(param_1 + 0x1c));
  uVar4 = *(uint *)(param_1 + 0x20);
  __printf_chk(1,"        dwSyncProtocols  %08X ",uVar4);
  if ((uVar4 & 1) != 0) {
    fwrite(" 2-wire",1,7,*(FILE **)puVar1);
  }
  pFVar6 = *(FILE **)puVar1;
  if ((uVar4 & 2) != 0) {
    fwrite(" 3-wire",1,7,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 4) != 0) {
    fwrite(&DAT_0002243e,1,4,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  uVar4 = *(uint *)(param_1 + 0x24);
  __printf_chk(1,"        dwMechanical     %08X ",uVar4);
  if ((uVar4 & 1) != 0) {
    fwrite(" accept",1,7,*(FILE **)puVar1);
  }
  pFVar6 = *(FILE **)puVar1;
  if ((uVar4 & 2) != 0) {
    fwrite(" eject",1,6,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 4) != 0) {
    fwrite(" capture",1,8,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  if ((uVar4 & 8) != 0) {
    fwrite(" lock",1,5,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  uVar4 = *(uint *)(param_1 + 0x28);
  __printf_chk(1,"        dwFeatures       %08X\n",uVar4);
  if ((uVar4 & 2) != 0) {
    fwrite("          Auto configuration based on ATR\n",1,0x2a,*(FILE **)puVar1);
  }
  if ((uVar4 & 4) != 0) {
    fwrite("          Auto activation on insert\n",1,0x24,*(FILE **)puVar1);
  }
  if ((uVar4 & 8) != 0) {
    fwrite("          Auto voltage selection\n",1,0x21,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x10) != 0) {
    fwrite("          Auto clock change\n",1,0x1c,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x20) != 0) {
    fwrite("          Auto baud rate change\n",1,0x20,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x40) == 0) {
    if ((uVar4 & 0x80) == 0) {
      if ((uVar4 & 0xc0) != 0) {
        fwrite("        WARNING: conflicting negotiation features\n",1,0x32,*(FILE **)puVar1);
      }
    }
    else {
      fwrite("          Auto PPS made by CCID\n",1,0x20,*(FILE **)puVar1);
    }
  }
  else {
    fwrite("          Auto parameter negotiation made by CCID\n",1,0x32,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x100) != 0) {
    fwrite("          CCID can set ICC in clock stop mode\n",1,0x2e,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x200) != 0) {
    fwrite("          NAD value other than 0x00 accepted\n",1,0x2d,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x400) != 0) {
    fwrite("          Auto IFSD exchange\n",1,0x1d,*(FILE **)puVar1);
  }
  if ((uVar4 & 0x10000) == 0) {
    if ((uVar4 & 0x20000) == 0) {
      if ((uVar4 & 0x40000) == 0) {
        if ((uVar4 & 0x70000) != 0) {
          fwrite("        WARNING: conflicting exchange levels\n",1,0x2d,*(FILE **)puVar1);
        }
      }
      else {
        fwrite("          Short and extended APDU level exchange\n",1,0x31,*(FILE **)puVar1);
      }
    }
    else {
      fwrite("          Short APDU level exchange\n",1,0x24,*(FILE **)puVar1);
    }
  }
  else {
    fwrite("          TPDU level exchange\n",1,0x1e,*(FILE **)puVar1);
  }
  __printf_chk(1,"        dwMaxCCIDMsgLen     %5u\n",*(undefined4 *)(param_1 + 0x2c));
  __printf_chk(1,"        bClassGetResponse    ");
  uVar4 = (uint)param_1[0x30];
  if (param_1[0x30] == 0xff) {
    uVar4 = 5;
    fwrite("echo\n",1,5,*(FILE **)puVar1);
  }
  else {
    __printf_chk(1,"  %02X\n",uVar4);
  }
  __printf_chk(1,"        bClassEnvelope       ",uVar4);
  if (param_1[0x31] == 0xff) {
    uVar4 = 5;
    fwrite("echo\n",1,5,*(FILE **)puVar1);
  }
  else {
    uVar4 = (uint)param_1[0x30];
    __printf_chk(1,"  %02X\n",uVar4);
  }
  __printf_chk(1,"        wlcdLayout           ",uVar4);
  pFVar6 = (FILE *)(uint)param_1[0x33];
  if ((param_1[0x32] == 0) && (param_1[0x33] == 0)) {
    pFVar6 = *(FILE **)puVar1;
    fwrite("none\n",1,5,pFVar6);
  }
  else {
    __printf_chk(1,"%u cols %u lines\n",param_1[0x32],pFVar6);
  }
  __printf_chk(1,"        bPINSupport         %5u ",param_1[0x34],pFVar6);
  bVar2 = param_1[0x34];
  if ((bVar2 & 1) != 0) {
    fwrite(" verification",1,0xd,*(FILE **)puVar1);
    bVar2 = param_1[0x34];
  }
  pFVar6 = *(FILE **)puVar1;
  if ((bVar2 & 2) != 0) {
    fwrite(" modification",1,0xd,pFVar6);
    pFVar6 = *(FILE **)puVar1;
  }
  putc(10,pFVar6);
  __printf_chk(1,"        bMaxCCIDBusySlots   %5u\n",param_1[0x35]);
  if (0x36 < *param_1) {
    fwrite(&DAT_00022538,1,0x19,*(FILE **)puVar1);
    FUN_00016990();
    return;
  }
  return;
}

