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

_Bool show_ata_pt_results_page(uint8_t *resp,int len,opts_t *op)

{
  int iVar1;
  ushort uVar2;
  uint uVar3;
  char *pcVar4;
  int extraout_ECX;
  int extraout_ECX_00;
  char cVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  ushort *puVar9;
  uint uVar10;
  ushort *puVar11;
  int in_GS_OFFSET;
  char str [128];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {
    puts("ATA pass-through results page (sat-2) [0x16]");
  }
  puVar9 = (ushort *)(resp + 4);
  uVar8 = len - 4;
  if (3 < (int)uVar8) {
    cVar5 = op->filter_given;
    do {
      uVar10 = *(byte *)((int)puVar9 + 3) + 4;
      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);
      if (cVar5 == '\0') {
LAB_00018e77:
        if ((uVar3 < 0xf) && (0x11 < uVar10)) {
          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);
          if ((puVar9[3] & 1) == 0) {
            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),
                         *(byte *)((int)puVar9 + 9));
            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),
                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));
          }
          else {
            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),
                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));
            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],
                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),
                         *(byte *)((int)puVar9 + 0xb));
          }
          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],
                       *(byte *)((int)puVar9 + 0x11));
          cVar5 = op->do_pcb;
          iVar7 = extraout_ECX;
        }
        else {
          uVar6 = uVar8;
          if ((int)uVar10 <= (int)uVar8) {
            uVar6 = uVar10;
          }
          if (uVar10 < 0x12) {
            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";
            uVar3 = uVar10;
          }
          else {
            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";
          }
          __printf_chk(1,pcVar4,uVar3);
          hex2stdout(puVar9,uVar6,0);
          cVar5 = op->do_pcb;
          iVar7 = extraout_ECX_00;
        }
        if (cVar5 == '\0') {
          cVar5 = op->filter_given;
        }
        else {
          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);
          __printf_chk(1,&DAT_0002d460,pcVar4);
          cVar5 = op->filter_given;
        }
        if (cVar5 != '\0') break;
      }
      else if (op->filter == uVar3) {
        if (op->do_raw != false) {
          puVar11 = (ushort *)(uVar10 + (int)puVar9);
          do {
            uVar2 = *puVar9;
            puVar9 = (ushort *)((int)puVar9 + 1);
            putchar((uint)(byte)uVar2);
          } while (puVar11 != puVar9);
          break;
        }
        iVar7 = op->do_hex;
        if (iVar7 == 0) goto LAB_00018e77;
        if (iVar7 != 1) {
          iVar7 = -1;
        }
        hex2stdout(puVar9,uVar10,iVar7);
        break;
      }
      uVar8 = uVar8 - uVar10;
      puVar9 = (ushort *)((int)puVar9 + uVar10);
    } while (3 < (int)uVar8);
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return true;
}



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

undefined4 FUN_00018d00(int param_1,int param_2,int param_3)

{
  int iVar1;
  ushort uVar2;
  uint uVar3;
  char *pcVar4;
  undefined4 uVar5;
  char cVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  ushort *puVar10;
  uint uVar11;
  ushort *puVar12;
  int in_GS_OFFSET;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if ((*(int *)(param_3 + 0x30) != 0) ||
     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {
    puts("ATA pass-through results page (sat-2) [0x16]");
  }
  puVar10 = (ushort *)(param_1 + 4);
  uVar9 = param_2 - 4;
  if (3 < (int)uVar9) {
    cVar6 = *(char *)(param_3 + 9);
    do {
      uVar11 = *(byte *)((int)puVar10 + 3) + 4;
      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);
      if (cVar6 == '\0') {
LAB_00018e77:
        if ((uVar3 < 0xf) && (0x11 < uVar11)) {
          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);
          if ((puVar10[3] & 1) == 0) {
            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),
                         *(byte *)((int)puVar10 + 9));
            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),
                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));
          }
          else {
            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),
                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));
            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],
                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),
                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));
          }
          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],
                       *(byte *)((int)puVar10 + 0x11));
          cVar6 = *(char *)(param_3 + 1);
        }
        else {
          uVar7 = uVar9;
          if ((int)uVar11 <= (int)uVar9) {
            uVar7 = uVar11;
          }
          if (uVar11 < 0x12) {
            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";
            uVar3 = uVar11;
          }
          else {
            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";
          }
          __printf_chk(1,pcVar4,uVar3);
          hex2stdout(puVar10,uVar7,0);
          cVar6 = *(char *)(param_3 + 1);
        }
        if (cVar6 == '\0') {
          cVar6 = *(char *)(param_3 + 9);
        }
        else {
          uVar5 = FUN_00014e80();
          __printf_chk(1,&DAT_0002d460,uVar5);
          cVar6 = *(char *)(param_3 + 9);
        }
        if (cVar6 != '\0') break;
      }
      else if (*(uint *)(param_3 + 0x34) == uVar3) {
        if (*(char *)(param_3 + 3) != '\0') {
          puVar12 = (ushort *)(uVar11 + (int)puVar10);
          do {
            uVar2 = *puVar10;
            puVar10 = (ushort *)((int)puVar10 + 1);
            putchar((uint)(byte)uVar2);
          } while (puVar12 != puVar10);
          break;
        }
        iVar8 = *(int *)(param_3 + 0x20);
        if (iVar8 == 0) goto LAB_00018e77;
        if (iVar8 != 1) {
          iVar8 = -1;
        }
        hex2stdout(puVar10,uVar11,iVar8);
        break;
      }
      uVar9 = uVar9 - uVar11;
      puVar10 = (ushort *)((int)puVar10 + uVar11);
    } while (3 < (int)uVar9);
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00024b60();
  }
  return 1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013c20
ADD EBX,0x201f7
SUB ESP,0xac
MOV EAX,dword ptr [ESP + 0xc8]
MOV ESI,dword ptr [ESP + 0xc0]
MOV dword ptr [ESP],EAX
MOV EDX,dword ptr [EAX + 0x30]
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x9c],ECX
XOR ECX,ECX
TEST EDX,EDX
JNZ 0x00018f83
CMP byte ptr [EAX + 0x3],0x0
JZ 0x00018f78
MOV EAX,dword ptr [ESP + 0xc4]
ADD ESI,0x4
LEA EBP,[EAX + -0x4]
CMP EBP,0x3
JLE 0x00018ef8
MOV EAX,dword ptr [ESP]
MOVZX EDX,byte ptr [EAX + 0x9]
LEA EAX,[ESP + 0x1c]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EBX + 0xffff4560]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00018e45
CMP EDI,0x11
JLE 0x00018e80
PUSH EAX
ADD EAX,0x1
PUSH EAX
LEA EAX,[EBX + 0xfffeefc0]
PUSH EAX
PUSH 0x1
CALL 0x00012260
MOVZX EDX,byte ptr [ESI + 0x9]
ADD ESP,0x10
TEST byte ptr [ESI + 0x6],0x1
JZ 0x00018f30
MOVZX EAX,byte ptr [ESI + 0x8]
SUB ESP,0xc
SHL EAX,0x8
ADD EAX,EDX
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0x7]
PUSH EAX
LEA EAX,[EBX + 0xfffeefe8]
PUSH 0x1
PUSH EAX
PUSH 0x1
CALL 0x00012260
MOVZX EAX,byte ptr [ESI + 0xb]
ADD ESP,0x20
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0xd]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0xf]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0xa]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0xc]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0xe]
PUSH EAX
LEA EAX,[EBX + 0xfffef010]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0x20
MOVZX EAX,byte ptr [ESI + 0x11]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0x10]
PUSH EAX
LEA EAX,[EBX + 0xffff4a6e]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0x10
MOV EAX,dword ptr [ESP]
CMP byte ptr [EAX + 0x1],0x0
JNZ 0x00018ec6
MOV EAX,dword ptr [ESP]
MOVZX EDX,byte ptr [EAX + 0x9]
TEST DL,DL
JNZ 0x00018ef8
SUB EBP,EDI
ADD ESI,EDI
CMP EBP,0x3
JLE 0x00018ef8
MOVZX EAX,word ptr [ESI]
MOVZX EDI,byte ptr [ESI + 0x3]
ROL AX,0x8
ADD EDI,0x4
MOVZX EAX,AX
TEST DL,DL
JZ 0x00018e77
MOV ECX,dword ptr [ESP]
CMP dword ptr [ECX + 0x34],EAX
JNZ 0x00018e38
CMP byte ptr [ECX + 0x3],0x0
JNZ 0x00018f9a
MOV EDX,dword ptr [ECX + 0x20]
TEST EDX,EDX
JNZ 0x00018fbb
CMP EAX,0xe
JLE 0x00018d80
CMP EDI,EBP
MOV EDX,EBP
CMOVLE EDX,EDI
MOV dword ptr [ESP + 0x4],EDX
CMP EDI,0x11
JLE 0x00018f20
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xfffee094]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0xc
PUSH 0x0
MOV EDX,dword ptr [ESP + 0xc]
PUSH EDX
PUSH ESI
CALL 0x00012130
ADD ESP,0x10
MOV EAX,dword ptr [ESP]
CMP byte ptr [EAX + 0x1],0x0
JZ 0x00018e29
MOV EDX,dword ptr [ESP + 0x8]
MOVZX EAX,byte ptr [ESI + 0x2]
CALL 0x00014e80
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x14]
PUSH 0x1
CALL 0x00012260
ADD ESP,0x10
MOV EAX,dword ptr [ESP]
MOVZX EDX,byte ptr [EAX + 0x9]
TEST DL,DL
JZ 0x00018e38
LEA ESI,[ESI]
MOV ECX,dword ptr [ESP + 0x9c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,0x1
JNZ 0x00018fd9
ADD ESP,0xac
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
LEA EAX,[EBX + 0xfffef034]
PUSH EDI
JMP 0x00018e9e
SUB ESP,0xc
PUSH EDX
MOVZX EAX,byte ptr [ESI + 0x7]
PUSH EAX
LEA EAX,[EBX + 0xfffeefe8]
PUSH 0x0
PUSH EAX
PUSH 0x1
CALL 0x00012260
MOVZX EAX,byte ptr [ESI + 0xb]
ADD ESP,0x14
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0xd]
PUSH EAX
MOVZX EAX,byte ptr [ESI + 0xf]
PUSH EAX
LEA EAX,[EBX + 0xffff4a8c]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0x20
JMP 0x00018e01
MOV EAX,dword ptr [EAX + 0x20]
TEST EAX,EAX
JNZ 0x00018d4b
SUB ESP,0xc
LEA EAX,[EBX + 0xfffeef90]
PUSH EAX
CALL 0x00012170
ADD ESP,0x10
JMP 0x00018d4b
ADD EDI,ESI
LEA ESI,[ESI]
MOVZX EAX,byte ptr [ESI]
SUB ESP,0xc
ADD ESI,0x1
PUSH EAX
CALL 0x00012230
ADD ESP,0x10
CMP EDI,ESI
JNZ 0x00018fa0
JMP 0x00018ef8
CMP EDX,0x1
MOV EAX,0xffffffff
CMOVNZ EDX,EAX
SUB ESP,0x4
PUSH EDX
PUSH EDI
PUSH ESI
CALL 0x00012130
ADD ESP,0x10
JMP 0x00018ef8
CALL 0x00024b60
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00018d00(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00024b60();\n  }\n  return 1;\n}\n\n" comment (function_definition "undefined4 FUN_00018d00(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00024b60();\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00018d00(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00024b60();\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ushort *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "ushort *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" if (parenthesized_expression "((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0))))" ( (binary_expression "(*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))" (parenthesized_expression "(*(int *)(param_3 + 0x30) != 0)" ( (binary_expression "*(int *)(param_3 + 0x30) != 0" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))" ( (parenthesized_expression "(*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0))" ( (binary_expression "*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)" (binary_expression "*(char *)(param_3 + 3) == '\0'" (pointer_expression "*(char *)(param_3 + 3)" * (cast_expression "(char *)(param_3 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(*(int *)(param_3 + 0x20) == 0)" ( (binary_expression "*(int *)(param_3 + 0x20) == 0" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" { (expression_statement "puts("ATA pass-through results page (sat-2) [0x16]");" (call_expression "puts("ATA pass-through results page (sat-2) [0x16]")" identifier (argument_list "("ATA pass-through results page (sat-2) [0x16]")" ( (string_literal ""ATA pass-through results page (sat-2) [0x16]"" " string_content ") ))) ;) })) (expression_statement "puVar10 = (ushort *)(param_1 + 4);" (assignment_expression "puVar10 = (ushort *)(param_1 + 4)" identifier = (cast_expression "(ushort *)(param_1 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (expression_statement "uVar9 = param_2 - 4;" (assignment_expression "uVar9 = param_2 - 4" identifier = (binary_expression "param_2 - 4" identifier - number_literal)) ;) (if_statement "if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }" if (parenthesized_expression "(3 < (int)uVar9)" ( (binary_expression "3 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }" { (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" identifier = (pointer_expression "*(char *)(param_3 + 9)" * (cast_expression "(char *)(param_3 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);" do (compound_statement "{\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    }" { (expression_statement "uVar11 = *(byte *)((int)puVar10 + 3) + 4;" (assignment_expression "uVar11 = *(byte *)((int)puVar10 + 3) + 4" identifier = (binary_expression "*(byte *)((int)puVar10 + 3) + 4" (pointer_expression "*(byte *)((int)puVar10 + 3)" * (cast_expression "(byte *)((int)puVar10 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 3)" ( (binary_expression "(int)puVar10 + 3" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);" (assignment_expression "uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8)" identifier = (call_expression "(uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*puVar10 << 8 | *puVar10 >> 8)" ( (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" * identifier) << number_literal) | (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" * identifier) >> number_literal)) )))) ;) (if_statement "if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }" { (labeled_statement "LAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" statement_identifier : (if_statement "if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" if (parenthesized_expression "((uVar3 < 0xf) && (0x11 < uVar11))" ( (binary_expression "(uVar3 < 0xf) && (0x11 < uVar11)" (parenthesized_expression "(uVar3 < 0xf)" ( (binary_expression "uVar3 < 0xf" identifier < number_literal) )) && (parenthesized_expression "(0x11 < uVar11)" ( (binary_expression "0x11 < uVar11" number_literal < identifier) ))) )) (compound_statement "{\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }" { (expression_statement "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);" (call_expression "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" identifier (argument_list "(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" ( number_literal , (string_literal ""  Log_index=0x%x (parameter_code=0x%x)\n"" " string_content escape_sequence ") , (binary_expression "uVar3 + 1" identifier + number_literal) , identifier ))) ;) (if_statement "if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" if (parenthesized_expression "((puVar10[3] & 1) == 0)" ( (binary_expression "(puVar10[3] & 1) == 0" (parenthesized_expression "(puVar10[3] & 1)" ( (binary_expression "puVar10[3] & 1" (subscript_expression "puVar10[3]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" { (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9))" identifier (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9))" ( number_literal , (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(byte *)((int)puVar10 + 7)" * (cast_expression "(byte *)((int)puVar10 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 7)" ( (binary_expression "(int)puVar10 + 7" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 9)" * (cast_expression "(byte *)((int)puVar10 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 9)" ( (binary_expression "(int)puVar10 + 9" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" identifier (argument_list "(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" ( number_literal , (string_literal ""    lba=0x%02x%02x%02x\n"" " string_content escape_sequence ") , (pointer_expression "*(byte *)((int)puVar10 + 0xf)" * (cast_expression "(byte *)((int)puVar10 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xf)" ( (binary_expression "(int)puVar10 + 0xf" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xd)" * (cast_expression "(byte *)((int)puVar10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xd)" ( (binary_expression "(int)puVar10 + 0xd" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xb)" * (cast_expression "(byte *)((int)puVar10 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xb)" ( (binary_expression "(int)puVar10 + 0xb" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) }) (else_clause "else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" else (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" { (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)))" identifier (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)))" ( number_literal , (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(byte *)((int)puVar10 + 7)" * (cast_expression "(byte *)((int)puVar10 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 7)" ( (binary_expression "(int)puVar10 + 7" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (call_expression "CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9))" identifier (argument_list "((byte)puVar10[4],*(byte *)((int)puVar10 + 9))" ( (cast_expression "(byte)puVar10[4]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[4]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar10 + 9)" * (cast_expression "(byte *)((int)puVar10 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 9)" ( (binary_expression "(int)puVar10 + 9" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ))) ;) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" identifier (argument_list "(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" ( number_literal , (string_literal ""    lba=0x%02x%02x%02x%02x%02x%02x\n"" " string_content escape_sequence ") , (cast_expression "(byte)puVar10[7]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[7]" identifier [ number_literal ])) , (cast_expression "(byte)puVar10[6]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[6]" identifier [ number_literal ])) , (cast_expression "(byte)puVar10[5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[5]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar10 + 0xf)" * (cast_expression "(byte *)((int)puVar10 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xf)" ( (binary_expression "(int)puVar10 + 0xf" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xd)" * (cast_expression "(byte *)((int)puVar10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xd)" ( (binary_expression "(int)puVar10 + 0xd" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xb)" * (cast_expression "(byte *)((int)puVar10 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xb)" ( (binary_expression "(int)puVar10 + 0xb" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) }))) (expression_statement "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));" (call_expression "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11))" identifier (argument_list "(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11))" ( number_literal , (string_literal ""    device=0x%x  status=0x%x\n"" " string_content escape_sequence ") , (cast_expression "(byte)puVar10[8]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[8]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar10 + 0x11)" * (cast_expression "(byte *)((int)puVar10 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x11)" ( (binary_expression "(int)puVar10 + 0x11" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "cVar6 = *(char *)(param_3 + 1);" (assignment_expression "cVar6 = *(char *)(param_3 + 1)" identifier = (pointer_expression "*(char *)(param_3 + 1)" * (cast_expression "(char *)(param_3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" else (compound_statement "{\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" { (expression_statement "uVar7 = uVar9;" (assignment_expression "uVar7 = uVar9" identifier = identifier) ;) (if_statement "if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }" if (parenthesized_expression "((int)uVar11 <= (int)uVar9)" ( (binary_expression "(int)uVar11 <= (int)uVar9" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar7 = uVar11;\n          }" { (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) })) (if_statement "if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" if (parenthesized_expression "(uVar11 < 0x12)" ( (binary_expression "uVar11 < 0x12" identifier < number_literal) )) (compound_statement "{\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }" { (expression_statement "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n"" identifier = (string_literal ""  short parameter length: %d [parameter_code=0x%x]:\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) }) (else_clause "else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" else (compound_statement "{\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" { (expression_statement "pcVar4 = "  Reserved [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  Reserved [parameter_code=0x%x]:\n"" identifier = (string_literal ""  Reserved [parameter_code=0x%x]:\n"" " string_content escape_sequence ")) ;) }))) (expression_statement "__printf_chk(1,pcVar4,uVar3);" (call_expression "__printf_chk(1,pcVar4,uVar3)" identifier (argument_list "(1,pcVar4,uVar3)" ( number_literal , identifier , identifier ))) ;) (expression_statement "hex2stdout(puVar10,uVar7,0);" (call_expression "hex2stdout(puVar10,uVar7,0)" identifier (argument_list "(puVar10,uVar7,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "cVar6 = *(char *)(param_3 + 1);" (assignment_expression "cVar6 = *(char *)(param_3 + 1)" identifier = (pointer_expression "*(char *)(param_3 + 1)" * (cast_expression "(char *)(param_3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) ))))) ;) })))) (if_statement "if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          cVar6 = *(char *)(param_3 + 9);\n        }" { (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" identifier = (pointer_expression "*(char *)(param_3 + 9)" * (cast_expression "(char *)(param_3 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" else (compound_statement "{\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" { (expression_statement "uVar5 = FUN_00014e80();" (assignment_expression "uVar5 = FUN_00014e80()" identifier = (call_expression "FUN_00014e80()" identifier (argument_list "()" ( )))) ;) (expression_statement "__printf_chk(1,&DAT_0002d460,uVar5);" (call_expression "__printf_chk(1,&DAT_0002d460,uVar5)" identifier (argument_list "(1,&DAT_0002d460,uVar5)" ( number_literal , (pointer_expression "&DAT_0002d460" & identifier) , identifier ))) ;) (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" identifier = (pointer_expression "*(char *)(param_3 + 9)" * (cast_expression "(char *)(param_3 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) ))))) ;) }))) (if_statement "if (cVar6 != '\0') break;" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" else (if_statement "if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" if (parenthesized_expression "(*(uint *)(param_3 + 0x34) == uVar3)" ( (binary_expression "*(uint *)(param_3 + 0x34) == uVar3" (pointer_expression "*(uint *)(param_3 + 0x34)" * (cast_expression "(uint *)(param_3 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" { (if_statement "if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }" if (parenthesized_expression "(*(char *)(param_3 + 3) != '\0')" ( (binary_expression "*(char *)(param_3 + 3) != '\0'" (pointer_expression "*(char *)(param_3 + 3)" * (cast_expression "(char *)(param_3 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }" { (expression_statement "puVar12 = (ushort *)(uVar11 + (int)puVar10);" (assignment_expression "puVar12 = (ushort *)(uVar11 + (int)puVar10)" identifier = (cast_expression "(ushort *)(uVar11 + (int)puVar10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 + (int)puVar10)" ( (binary_expression "uVar11 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);" do (compound_statement "{\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          }" { (expression_statement "uVar2 = *puVar10;" (assignment_expression "uVar2 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = (ushort *)((int)puVar10 + 1);" (assignment_expression "puVar10 = (ushort *)((int)puVar10 + 1)" identifier = (cast_expression "(ushort *)((int)puVar10 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "putchar((uint)(byte)uVar2);" (call_expression "putchar((uint)(byte)uVar2)" identifier (argument_list "((uint)(byte)uVar2)" ( (cast_expression "(uint)(byte)uVar2" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ))) ;) }) while (parenthesized_expression "(puVar12 != puVar10)" ( (binary_expression "puVar12 != puVar10" identifier != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "iVar8 = *(int *)(param_3 + 0x20);" (assignment_expression "iVar8 = *(int *)(param_3 + 0x20)" identifier = (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_00018e77;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018e77;" goto statement_identifier ;)) (if_statement "if (iVar8 != 1) {\n          iVar8 = -1;\n        }" if (parenthesized_expression "(iVar8 != 1)" ( (binary_expression "iVar8 != 1" identifier != number_literal) )) (compound_statement "{\n          iVar8 = -1;\n        }" { (expression_statement "iVar8 = -1;" (assignment_expression "iVar8 = -1" identifier = number_literal) ;) })) (expression_statement "hex2stdout(puVar10,uVar11,iVar8);" (call_expression "hex2stdout(puVar10,uVar11,iVar8)" identifier (argument_list "(puVar10,uVar11,iVar8)" ( identifier , identifier , identifier ))) ;) (break_statement "break;" break ;) })))) (expression_statement "uVar9 = uVar9 - uVar11;" (assignment_expression "uVar9 = uVar9 - uVar11" identifier = (binary_expression "uVar9 - uVar11" identifier - identifier)) ;) (expression_statement "puVar10 = (ushort *)((int)puVar10 + uVar11);" (assignment_expression "puVar10 = (ushort *)((int)puVar10 + uVar11)" identifier = (cast_expression "(ushort *)((int)puVar10 + uVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + uVar11)" ( (binary_expression "(int)puVar10 + uVar11" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(3 < (int)uVar9)" ( (binary_expression "3 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00024b60();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00024b60();\n  }" { comment (expression_statement "FUN_00024b60();" (call_expression "FUN_00024b60()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\n_Bool show_ata_pt_results_page(uint8_t *resp,int len,opts_t *op)\n\n{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  char cVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  ushort *puVar9;\n  uint uVar10;\n  ushort *puVar11;\n  int in_GS_OFFSET;\n  char str [128];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar9 = (ushort *)(resp + 4);\n  uVar8 = len - 4;\n  if (3 < (int)uVar8) {\n    cVar5 = op->filter_given;\n    do {\n      uVar10 = *(byte *)((int)puVar9 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);\n      if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }\n      uVar8 = uVar8 - uVar10;\n      puVar9 = (ushort *)((int)puVar9 + uVar10);\n    } while (3 < (int)uVar8);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return true;\n}\n\n" comment comment (function_definition "_Bool show_ata_pt_results_page(uint8_t *resp,int len,opts_t *op)\n\n{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  char cVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  ushort *puVar9;\n  uint uVar10;\n  ushort *puVar11;\n  int in_GS_OFFSET;\n  char str [128];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar9 = (ushort *)(resp + 4);\n  uVar8 = len - 4;\n  if (3 < (int)uVar8) {\n    cVar5 = op->filter_given;\n    do {\n      uVar10 = *(byte *)((int)puVar9 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);\n      if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }\n      uVar8 = uVar8 - uVar10;\n      puVar9 = (ushort *)((int)puVar9 + uVar10);\n    } while (3 < (int)uVar8);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return true;\n}" type_identifier (function_declarator "show_ata_pt_results_page(uint8_t *resp,int len,opts_t *op)" identifier (parameter_list "(uint8_t *resp,int len,opts_t *op)" ( (parameter_declaration "uint8_t *resp" primitive_type (pointer_declarator "*resp" * identifier)) , (parameter_declaration "int len" primitive_type identifier) , (parameter_declaration "opts_t *op" type_identifier (pointer_declarator "*op" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  int extraout_ECX;\n  int extraout_ECX_00;\n  char cVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  ushort *puVar9;\n  uint uVar10;\n  ushort *puVar11;\n  int in_GS_OFFSET;\n  char str [128];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar9 = (ushort *)(resp + 4);\n  uVar8 = len - 4;\n  if (3 < (int)uVar8) {\n    cVar5 = op->filter_given;\n    do {\n      uVar10 = *(byte *)((int)puVar9 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);\n      if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }\n      uVar8 = uVar8 - uVar10;\n      puVar9 = (ushort *)((int)puVar9 + uVar10);\n    } while (3 < (int)uVar8);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return true;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int extraout_ECX_00;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ushort *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char str [128];" primitive_type (array_declarator "str [128]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" if (parenthesized_expression "((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0))))" ( (binary_expression "(op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))" (parenthesized_expression "(op->verbose != 0)" ( (binary_expression "op->verbose != 0" (field_expression "op->verbose" identifier -> field_identifier) != number_literal) )) || (parenthesized_expression "((op->do_raw == false && (op->do_hex == 0)))" ( (parenthesized_expression "(op->do_raw == false && (op->do_hex == 0))" ( (binary_expression "op->do_raw == false && (op->do_hex == 0)" (binary_expression "op->do_raw == false" (field_expression "op->do_raw" identifier -> field_identifier) == false) && (parenthesized_expression "(op->do_hex == 0)" ( (binary_expression "op->do_hex == 0" (field_expression "op->do_hex" identifier -> field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" { (expression_statement "puts("ATA pass-through results page (sat-2) [0x16]");" (call_expression "puts("ATA pass-through results page (sat-2) [0x16]")" identifier (argument_list "("ATA pass-through results page (sat-2) [0x16]")" ( (string_literal ""ATA pass-through results page (sat-2) [0x16]"" " string_content ") ))) ;) })) (expression_statement "puVar9 = (ushort *)(resp + 4);" (assignment_expression "puVar9 = (ushort *)(resp + 4)" identifier = (cast_expression "(ushort *)(resp + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(resp + 4)" ( (binary_expression "resp + 4" identifier + number_literal) )))) ;) (expression_statement "uVar8 = len - 4;" (assignment_expression "uVar8 = len - 4" identifier = (binary_expression "len - 4" identifier - number_literal)) ;) (if_statement "if (3 < (int)uVar8) {\n    cVar5 = op->filter_given;\n    do {\n      uVar10 = *(byte *)((int)puVar9 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);\n      if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }\n      uVar8 = uVar8 - uVar10;\n      puVar9 = (ushort *)((int)puVar9 + uVar10);\n    } while (3 < (int)uVar8);\n  }" if (parenthesized_expression "(3 < (int)uVar8)" ( (binary_expression "3 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    cVar5 = op->filter_given;\n    do {\n      uVar10 = *(byte *)((int)puVar9 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);\n      if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }\n      uVar8 = uVar8 - uVar10;\n      puVar9 = (ushort *)((int)puVar9 + uVar10);\n    } while (3 < (int)uVar8);\n  }" { (expression_statement "cVar5 = op->filter_given;" (assignment_expression "cVar5 = op->filter_given" identifier = (field_expression "op->filter_given" identifier -> field_identifier)) ;) (do_statement "do {\n      uVar10 = *(byte *)((int)puVar9 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);\n      if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }\n      uVar8 = uVar8 - uVar10;\n      puVar9 = (ushort *)((int)puVar9 + uVar10);\n    } while (3 < (int)uVar8);" do (compound_statement "{\n      uVar10 = *(byte *)((int)puVar9 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);\n      if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }\n      uVar8 = uVar8 - uVar10;\n      puVar9 = (ushort *)((int)puVar9 + uVar10);\n    }" { (expression_statement "uVar10 = *(byte *)((int)puVar9 + 3) + 4;" (assignment_expression "uVar10 = *(byte *)((int)puVar9 + 3) + 4" identifier = (binary_expression "*(byte *)((int)puVar9 + 3) + 4" (pointer_expression "*(byte *)((int)puVar9 + 3)" * (cast_expression "(byte *)((int)puVar9 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 3)" ( (binary_expression "(int)puVar9 + 3" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8);" (assignment_expression "uVar3 = (uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8)" identifier = (call_expression "(uint)(ushort)(*puVar9 << 8 | *puVar9 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*puVar9 << 8 | *puVar9 >> 8)" ( (binary_expression "*puVar9 << 8 | *puVar9 >> 8" (binary_expression "*puVar9 << 8" (pointer_expression "*puVar9" * identifier) << number_literal) | (binary_expression "*puVar9 >> 8" (pointer_expression "*puVar9" * identifier) >> number_literal)) )))) ;) (if_statement "if (cVar5 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }\n      else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }\n        if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }\n        if (cVar5 != '\0') break;\n      }" { (labeled_statement "LAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }" statement_identifier : (if_statement "if ((uVar3 < 0xf) && (0x11 < uVar10)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }\n        else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }" if (parenthesized_expression "((uVar3 < 0xf) && (0x11 < uVar10))" ( (binary_expression "(uVar3 < 0xf) && (0x11 < uVar10)" (parenthesized_expression "(uVar3 < 0xf)" ( (binary_expression "uVar3 < 0xf" identifier < number_literal) )) && (parenthesized_expression "(0x11 < uVar10)" ( (binary_expression "0x11 < uVar10" number_literal < identifier) ))) )) (compound_statement "{\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX;\n        }" { (expression_statement "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);" (call_expression "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" identifier (argument_list "(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" ( number_literal , (string_literal ""  Log_index=0x%x (parameter_code=0x%x)\n"" " string_content escape_sequence ") , (binary_expression "uVar3 + 1" identifier + number_literal) , identifier ))) ;) (if_statement "if ((puVar9[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }" if (parenthesized_expression "((puVar9[3] & 1) == 0)" ( (binary_expression "(puVar9[3] & 1) == 0" (parenthesized_expression "(puVar9[3] & 1)" ( (binary_expression "puVar9[3] & 1" (subscript_expression "puVar9[3]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));\n          }" { (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9))" identifier (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar9 + 7),\n                         *(byte *)((int)puVar9 + 9))" ( number_literal , (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(byte *)((int)puVar9 + 7)" * (cast_expression "(byte *)((int)puVar9 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 7)" ( (binary_expression "(int)puVar9 + 7" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar9 + 9)" * (cast_expression "(byte *)((int)puVar9 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 9)" ( (binary_expression "(int)puVar9 + 9" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb))" identifier (argument_list "(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar9 + 0xf),\n                         *(byte *)((int)puVar9 + 0xd),*(byte *)((int)puVar9 + 0xb))" ( number_literal , (string_literal ""    lba=0x%02x%02x%02x\n"" " string_content escape_sequence ") , (pointer_expression "*(byte *)((int)puVar9 + 0xf)" * (cast_expression "(byte *)((int)puVar9 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 0xf)" ( (binary_expression "(int)puVar9 + 0xf" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar9 + 0xd)" * (cast_expression "(byte *)((int)puVar9 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 0xd)" ( (binary_expression "(int)puVar9 + 0xd" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar9 + 0xb)" * (cast_expression "(byte *)((int)puVar9 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 0xb)" ( (binary_expression "(int)puVar9 + 0xb" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) }) (else_clause "else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }" else (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));\n          }" { (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)))" identifier (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar9 + 7),\n                         CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9)))" ( number_literal , (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(byte *)((int)puVar9 + 7)" * (cast_expression "(byte *)((int)puVar9 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 7)" ( (binary_expression "(int)puVar9 + 7" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (call_expression "CONCAT11((byte)puVar9[4],*(byte *)((int)puVar9 + 9))" identifier (argument_list "((byte)puVar9[4],*(byte *)((int)puVar9 + 9))" ( (cast_expression "(byte)puVar9[4]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[4]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar9 + 9)" * (cast_expression "(byte *)((int)puVar9 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 9)" ( (binary_expression "(int)puVar9 + 9" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ))) ;) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb))" identifier (argument_list "(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar9[7],(byte)puVar9[6],\n                         (byte)puVar9[5],*(byte *)((int)puVar9 + 0xf),*(byte *)((int)puVar9 + 0xd),\n                         *(byte *)((int)puVar9 + 0xb))" ( number_literal , (string_literal ""    lba=0x%02x%02x%02x%02x%02x%02x\n"" " string_content escape_sequence ") , (cast_expression "(byte)puVar9[7]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[7]" identifier [ number_literal ])) , (cast_expression "(byte)puVar9[6]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[6]" identifier [ number_literal ])) , (cast_expression "(byte)puVar9[5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[5]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar9 + 0xf)" * (cast_expression "(byte *)((int)puVar9 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 0xf)" ( (binary_expression "(int)puVar9 + 0xf" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar9 + 0xd)" * (cast_expression "(byte *)((int)puVar9 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 0xd)" ( (binary_expression "(int)puVar9 + 0xd" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar9 + 0xb)" * (cast_expression "(byte *)((int)puVar9 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 0xb)" ( (binary_expression "(int)puVar9 + 0xb" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) }))) (expression_statement "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11));" (call_expression "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11))" identifier (argument_list "(1,"    device=0x%x  status=0x%x\n",(byte)puVar9[8],\n                       *(byte *)((int)puVar9 + 0x11))" ( number_literal , (string_literal ""    device=0x%x  status=0x%x\n"" " string_content escape_sequence ") , (cast_expression "(byte)puVar9[8]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[8]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar9 + 0x11)" * (cast_expression "(byte *)((int)puVar9 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 0x11)" ( (binary_expression "(int)puVar9 + 0x11" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "cVar5 = op->do_pcb;" (assignment_expression "cVar5 = op->do_pcb" identifier = (field_expression "op->do_pcb" identifier -> field_identifier)) ;) (expression_statement "iVar7 = extraout_ECX;" (assignment_expression "iVar7 = extraout_ECX" identifier = identifier) ;) }) (else_clause "else {\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }" else (compound_statement "{\n          uVar6 = uVar8;\n          if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }\n          if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar9,uVar6,0);\n          cVar5 = op->do_pcb;\n          iVar7 = extraout_ECX_00;\n        }" { (expression_statement "uVar6 = uVar8;" (assignment_expression "uVar6 = uVar8" identifier = identifier) ;) (if_statement "if ((int)uVar10 <= (int)uVar8) {\n            uVar6 = uVar10;\n          }" if (parenthesized_expression "((int)uVar10 <= (int)uVar8)" ( (binary_expression "(int)uVar10 <= (int)uVar8" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar6 = uVar10;\n          }" { (expression_statement "uVar6 = uVar10;" (assignment_expression "uVar6 = uVar10" identifier = identifier) ;) })) (if_statement "if (uVar10 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" if (parenthesized_expression "(uVar10 < 0x12)" ( (binary_expression "uVar10 < 0x12" identifier < number_literal) )) (compound_statement "{\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar10;\n          }" { (expression_statement "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n"" identifier = (string_literal ""  short parameter length: %d [parameter_code=0x%x]:\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar3 = uVar10;" (assignment_expression "uVar3 = uVar10" identifier = identifier) ;) }) (else_clause "else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" else (compound_statement "{\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" { (expression_statement "pcVar4 = "  Reserved [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  Reserved [parameter_code=0x%x]:\n"" identifier = (string_literal ""  Reserved [parameter_code=0x%x]:\n"" " string_content escape_sequence ")) ;) }))) (expression_statement "__printf_chk(1,pcVar4,uVar3);" (call_expression "__printf_chk(1,pcVar4,uVar3)" identifier (argument_list "(1,pcVar4,uVar3)" ( number_literal , identifier , identifier ))) ;) (expression_statement "hex2stdout(puVar9,uVar6,0);" (call_expression "hex2stdout(puVar9,uVar6,0)" identifier (argument_list "(puVar9,uVar6,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "cVar5 = op->do_pcb;" (assignment_expression "cVar5 = op->do_pcb" identifier = (field_expression "op->do_pcb" identifier -> field_identifier)) ;) (expression_statement "iVar7 = extraout_ECX_00;" (assignment_expression "iVar7 = extraout_ECX_00" identifier = identifier) ;) })))) (if_statement "if (cVar5 == '\0') {\n          cVar5 = op->filter_given;\n        }\n        else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          cVar5 = op->filter_given;\n        }" { (expression_statement "cVar5 = op->filter_given;" (assignment_expression "cVar5 = op->filter_given" identifier = (field_expression "op->filter_given" identifier -> field_identifier)) ;) }) (else_clause "else {\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }" else (compound_statement "{\n          pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);\n          __printf_chk(1,&DAT_0002d460,pcVar4);\n          cVar5 = op->filter_given;\n        }" { (expression_statement "pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7);" (assignment_expression "pcVar4 = get_pcb_str((uint)(byte)puVar9[1],str,iVar7)" identifier = (call_expression "get_pcb_str((uint)(byte)puVar9[1],str,iVar7)" identifier (argument_list "((uint)(byte)puVar9[1],str,iVar7)" ( (cast_expression "(uint)(byte)puVar9[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar9[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar9[1]" identifier [ number_literal ]))) , identifier , identifier )))) ;) (expression_statement "__printf_chk(1,&DAT_0002d460,pcVar4);" (call_expression "__printf_chk(1,&DAT_0002d460,pcVar4)" identifier (argument_list "(1,&DAT_0002d460,pcVar4)" ( number_literal , (pointer_expression "&DAT_0002d460" & identifier) , identifier ))) ;) (expression_statement "cVar5 = op->filter_given;" (assignment_expression "cVar5 = op->filter_given" identifier = (field_expression "op->filter_given" identifier -> field_identifier)) ;) }))) (if_statement "if (cVar5 != '\0') break;" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }" else (if_statement "if (op->filter == uVar3) {\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }" if (parenthesized_expression "(op->filter == uVar3)" ( (binary_expression "op->filter == uVar3" (field_expression "op->filter" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }\n        iVar7 = op->do_hex;\n        if (iVar7 == 0) goto LAB_00018e77;\n        if (iVar7 != 1) {\n          iVar7 = -1;\n        }\n        hex2stdout(puVar9,uVar10,iVar7);\n        break;\n      }" { (if_statement "if (op->do_raw != false) {\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }" if (parenthesized_expression "(op->do_raw != false)" ( (binary_expression "op->do_raw != false" (field_expression "op->do_raw" identifier -> field_identifier) != false) )) (compound_statement "{\n          puVar11 = (ushort *)(uVar10 + (int)puVar9);\n          do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);\n          break;\n        }" { (expression_statement "puVar11 = (ushort *)(uVar10 + (int)puVar9);" (assignment_expression "puVar11 = (ushort *)(uVar10 + (int)puVar9)" identifier = (cast_expression "(ushort *)(uVar10 + (int)puVar9)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 + (int)puVar9)" ( (binary_expression "uVar10 + (int)puVar9" identifier + (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar11 != puVar9);" do (compound_statement "{\n            uVar2 = *puVar9;\n            puVar9 = (ushort *)((int)puVar9 + 1);\n            putchar((uint)(byte)uVar2);\n          }" { (expression_statement "uVar2 = *puVar9;" (assignment_expression "uVar2 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar9 = (ushort *)((int)puVar9 + 1);" (assignment_expression "puVar9 = (ushort *)((int)puVar9 + 1)" identifier = (cast_expression "(ushort *)((int)puVar9 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 1)" ( (binary_expression "(int)puVar9 + 1" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "putchar((uint)(byte)uVar2);" (call_expression "putchar((uint)(byte)uVar2)" identifier (argument_list "((uint)(byte)uVar2)" ( (cast_expression "(uint)(byte)uVar2" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ))) ;) }) while (parenthesized_expression "(puVar11 != puVar9)" ( (binary_expression "puVar11 != puVar9" identifier != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "iVar7 = op->do_hex;" (assignment_expression "iVar7 = op->do_hex" identifier = (field_expression "op->do_hex" identifier -> field_identifier)) ;) (if_statement "if (iVar7 == 0) goto LAB_00018e77;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018e77;" goto statement_identifier ;)) (if_statement "if (iVar7 != 1) {\n          iVar7 = -1;\n        }" if (parenthesized_expression "(iVar7 != 1)" ( (binary_expression "iVar7 != 1" identifier != number_literal) )) (compound_statement "{\n          iVar7 = -1;\n        }" { (expression_statement "iVar7 = -1;" (assignment_expression "iVar7 = -1" identifier = number_literal) ;) })) (expression_statement "hex2stdout(puVar9,uVar10,iVar7);" (call_expression "hex2stdout(puVar9,uVar10,iVar7)" identifier (argument_list "(puVar9,uVar10,iVar7)" ( identifier , identifier , identifier ))) ;) (break_statement "break;" break ;) })))) (expression_statement "uVar8 = uVar8 - uVar10;" (assignment_expression "uVar8 = uVar8 - uVar10" identifier = (binary_expression "uVar8 - uVar10" identifier - identifier)) ;) (expression_statement "puVar9 = (ushort *)((int)puVar9 + uVar10);" (assignment_expression "puVar9 = (ushort *)((int)puVar9 + uVar10)" identifier = (cast_expression "(ushort *)((int)puVar9 + uVar10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + uVar10)" ( (binary_expression "(int)puVar9 + uVar10" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(3 < (int)uVar8)" ( (binary_expression "3 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return true;" return true ;) })))
(translation_unit "undefined4 FUN_00018d00(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00018d00(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00018d00(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "ushort *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "ushort *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" if (parenthesized_expression "((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0))))" ( (binary_expression "(*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))" (parenthesized_expression "(*(int *)(param_3 + 0x30) != 0)" ( (binary_expression "*(int *)(param_3 + 0x30) != 0" (pointer_expression "*(int *)(param_3 + 0x30)" * (cast_expression "(int *)(param_3 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x30)" ( (binary_expression "param_3 + 0x30" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))" ( (parenthesized_expression "(*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0))" ( (binary_expression "*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)" (binary_expression "*(char *)(param_3 + 3) == '\0'" (pointer_expression "*(char *)(param_3 + 3)" * (cast_expression "(char *)(param_3 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(*(int *)(param_3 + 0x20) == 0)" ( (binary_expression "*(int *)(param_3 + 0x20) == 0" (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" { (expression_statement "puts("ATA pass-through results page (sat-2) [0x16]");" (call_expression "puts("ATA pass-through results page (sat-2) [0x16]")" identifier (argument_list "("ATA pass-through results page (sat-2) [0x16]")" ( (string_literal ""ATA pass-through results page (sat-2) [0x16]"" " string_content ") ))) ;) })) (expression_statement "puVar10 = (ushort *)(param_1 + 4);" (assignment_expression "puVar10 = (ushort *)(param_1 + 4)" identifier = (cast_expression "(ushort *)(param_1 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ;) (expression_statement "uVar9 = param_2 - 4;" (assignment_expression "uVar9 = param_2 - 4" identifier = (binary_expression "param_2 - 4" identifier - number_literal)) ;) (if_statement "if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }" if (parenthesized_expression "(3 < (int)uVar9)" ( (binary_expression "3 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }" { (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" identifier = (pointer_expression "*(char *)(param_3 + 9)" * (cast_expression "(char *)(param_3 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) ))))) ;) (do_statement "do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);" do (compound_statement "{\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    }" { (expression_statement "uVar11 = *(byte *)((int)puVar10 + 3) + 4;" (assignment_expression "uVar11 = *(byte *)((int)puVar10 + 3) + 4" identifier = (binary_expression "*(byte *)((int)puVar10 + 3) + 4" (pointer_expression "*(byte *)((int)puVar10 + 3)" * (cast_expression "(byte *)((int)puVar10 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 3)" ( (binary_expression "(int)puVar10 + 3" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal)) ;) (expression_statement "uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);" (assignment_expression "uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8)" identifier = (call_expression "(uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*puVar10 << 8 | *puVar10 >> 8)" ( (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" * identifier) << number_literal) | (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" * identifier) >> number_literal)) )))) ;) (if_statement "if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }" { (labeled_statement "LAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" statement_identifier : (if_statement "if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" if (parenthesized_expression "((uVar3 < 0xf) && (0x11 < uVar11))" ( (binary_expression "(uVar3 < 0xf) && (0x11 < uVar11)" (parenthesized_expression "(uVar3 < 0xf)" ( (binary_expression "uVar3 < 0xf" identifier < number_literal) )) && (parenthesized_expression "(0x11 < uVar11)" ( (binary_expression "0x11 < uVar11" number_literal < identifier) ))) )) (compound_statement "{\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }" { (expression_statement "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);" (call_expression "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" identifier (argument_list "(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" ( number_literal , (string_literal ""  Log_index=0x%x (parameter_code=0x%x)\n"" " string_content escape_sequence ") , (binary_expression "uVar3 + 1" identifier + number_literal) , identifier ))) ;) (if_statement "if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" if (parenthesized_expression "((puVar10[3] & 1) == 0)" ( (binary_expression "(puVar10[3] & 1) == 0" (parenthesized_expression "(puVar10[3] & 1)" ( (binary_expression "puVar10[3] & 1" (subscript_expression "puVar10[3]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" { (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9))" identifier (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9))" ( number_literal , (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(byte *)((int)puVar10 + 7)" * (cast_expression "(byte *)((int)puVar10 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 7)" ( (binary_expression "(int)puVar10 + 7" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 9)" * (cast_expression "(byte *)((int)puVar10 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 9)" ( (binary_expression "(int)puVar10 + 9" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" identifier (argument_list "(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" ( number_literal , (string_literal ""    lba=0x%02x%02x%02x\n"" " string_content escape_sequence ") , (pointer_expression "*(byte *)((int)puVar10 + 0xf)" * (cast_expression "(byte *)((int)puVar10 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xf)" ( (binary_expression "(int)puVar10 + 0xf" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xd)" * (cast_expression "(byte *)((int)puVar10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xd)" ( (binary_expression "(int)puVar10 + 0xd" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xb)" * (cast_expression "(byte *)((int)puVar10 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xb)" ( (binary_expression "(int)puVar10 + 0xb" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) }) (else_clause "else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" else (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" { (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)))" identifier (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)))" ( number_literal , (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(byte *)((int)puVar10 + 7)" * (cast_expression "(byte *)((int)puVar10 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 7)" ( (binary_expression "(int)puVar10 + 7" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (call_expression "CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9))" identifier (argument_list "((byte)puVar10[4],*(byte *)((int)puVar10 + 9))" ( (cast_expression "(byte)puVar10[4]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[4]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar10 + 9)" * (cast_expression "(byte *)((int)puVar10 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 9)" ( (binary_expression "(int)puVar10 + 9" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ))) ;) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" identifier (argument_list "(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" ( number_literal , (string_literal ""    lba=0x%02x%02x%02x%02x%02x%02x\n"" " string_content escape_sequence ") , (cast_expression "(byte)puVar10[7]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[7]" identifier [ number_literal ])) , (cast_expression "(byte)puVar10[6]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[6]" identifier [ number_literal ])) , (cast_expression "(byte)puVar10[5]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[5]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar10 + 0xf)" * (cast_expression "(byte *)((int)puVar10 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xf)" ( (binary_expression "(int)puVar10 + 0xf" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xd)" * (cast_expression "(byte *)((int)puVar10 + 0xd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xd)" ( (binary_expression "(int)puVar10 + 0xd" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(byte *)((int)puVar10 + 0xb)" * (cast_expression "(byte *)((int)puVar10 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0xb)" ( (binary_expression "(int)puVar10 + 0xb" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) }))) (expression_statement "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));" (call_expression "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11))" identifier (argument_list "(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11))" ( number_literal , (string_literal ""    device=0x%x  status=0x%x\n"" " string_content escape_sequence ") , (cast_expression "(byte)puVar10[8]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar10[8]" identifier [ number_literal ])) , (pointer_expression "*(byte *)((int)puVar10 + 0x11)" * (cast_expression "(byte *)((int)puVar10 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x11)" ( (binary_expression "(int)puVar10 + 0x11" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "cVar6 = *(char *)(param_3 + 1);" (assignment_expression "cVar6 = *(char *)(param_3 + 1)" identifier = (pointer_expression "*(char *)(param_3 + 1)" * (cast_expression "(char *)(param_3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" else (compound_statement "{\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" { (expression_statement "uVar7 = uVar9;" (assignment_expression "uVar7 = uVar9" identifier = identifier) ;) (if_statement "if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }" if (parenthesized_expression "((int)uVar11 <= (int)uVar9)" ( (binary_expression "(int)uVar11 <= (int)uVar9" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar7 = uVar11;\n          }" { (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) })) (if_statement "if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" if (parenthesized_expression "(uVar11 < 0x12)" ( (binary_expression "uVar11 < 0x12" identifier < number_literal) )) (compound_statement "{\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }" { (expression_statement "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n"" identifier = (string_literal ""  short parameter length: %d [parameter_code=0x%x]:\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) }) (else_clause "else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" else (compound_statement "{\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" { (expression_statement "pcVar4 = "  Reserved [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  Reserved [parameter_code=0x%x]:\n"" identifier = (string_literal ""  Reserved [parameter_code=0x%x]:\n"" " string_content escape_sequence ")) ;) }))) (expression_statement "__printf_chk(1,pcVar4,uVar3);" (call_expression "__printf_chk(1,pcVar4,uVar3)" identifier (argument_list "(1,pcVar4,uVar3)" ( number_literal , identifier , identifier ))) ;) (expression_statement "hex2stdout(puVar10,uVar7,0);" (call_expression "hex2stdout(puVar10,uVar7,0)" identifier (argument_list "(puVar10,uVar7,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "cVar6 = *(char *)(param_3 + 1);" (assignment_expression "cVar6 = *(char *)(param_3 + 1)" identifier = (pointer_expression "*(char *)(param_3 + 1)" * (cast_expression "(char *)(param_3 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) ))))) ;) })))) (if_statement "if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          cVar6 = *(char *)(param_3 + 9);\n        }" { (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" identifier = (pointer_expression "*(char *)(param_3 + 9)" * (cast_expression "(char *)(param_3 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" else (compound_statement "{\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" { (expression_statement "uVar5 = FUN_00014e80();" (assignment_expression "uVar5 = FUN_00014e80()" identifier = (call_expression "FUN_00014e80()" identifier (argument_list "()" ( )))) ;) (expression_statement "__printf_chk(1,&DAT_0002d460,uVar5);" (call_expression "__printf_chk(1,&DAT_0002d460,uVar5)" identifier (argument_list "(1,&DAT_0002d460,uVar5)" ( number_literal , (pointer_expression "&DAT_0002d460" & identifier) , identifier ))) ;) (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" identifier = (pointer_expression "*(char *)(param_3 + 9)" * (cast_expression "(char *)(param_3 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 9)" ( (binary_expression "param_3 + 9" identifier + number_literal) ))))) ;) }))) (if_statement "if (cVar6 != '\0') break;" if (parenthesized_expression "(cVar6 != '\0')" ( (binary_expression "cVar6 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" else (if_statement "if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" if (parenthesized_expression "(*(uint *)(param_3 + 0x34) == uVar3)" ( (binary_expression "*(uint *)(param_3 + 0x34) == uVar3" (pointer_expression "*(uint *)(param_3 + 0x34)" * (cast_expression "(uint *)(param_3 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x34)" ( (binary_expression "param_3 + 0x34" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" { (if_statement "if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }" if (parenthesized_expression "(*(char *)(param_3 + 3) != '\0')" ( (binary_expression "*(char *)(param_3 + 3) != '\0'" (pointer_expression "*(char *)(param_3 + 3)" * (cast_expression "(char *)(param_3 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 3)" ( (binary_expression "param_3 + 3" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }" { (expression_statement "puVar12 = (ushort *)(uVar11 + (int)puVar10);" (assignment_expression "puVar12 = (ushort *)(uVar11 + (int)puVar10)" identifier = (cast_expression "(ushort *)(uVar11 + (int)puVar10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 + (int)puVar10)" ( (binary_expression "uVar11 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);" do (compound_statement "{\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          }" { (expression_statement "uVar2 = *puVar10;" (assignment_expression "uVar2 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = (ushort *)((int)puVar10 + 1);" (assignment_expression "puVar10 = (ushort *)((int)puVar10 + 1)" identifier = (cast_expression "(ushort *)((int)puVar10 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "putchar((uint)(byte)uVar2);" (call_expression "putchar((uint)(byte)uVar2)" identifier (argument_list "((uint)(byte)uVar2)" ( (cast_expression "(uint)(byte)uVar2" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ))) ;) }) while (parenthesized_expression "(puVar12 != puVar10)" ( (binary_expression "puVar12 != puVar10" identifier != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "iVar8 = *(int *)(param_3 + 0x20);" (assignment_expression "iVar8 = *(int *)(param_3 + 0x20)" identifier = (pointer_expression "*(int *)(param_3 + 0x20)" * (cast_expression "(int *)(param_3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x20)" ( (binary_expression "param_3 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) goto LAB_00018e77;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00018e77;" goto statement_identifier ;)) (if_statement "if (iVar8 != 1) {\n          iVar8 = -1;\n        }" if (parenthesized_expression "(iVar8 != 1)" ( (binary_expression "iVar8 != 1" identifier != number_literal) )) (compound_statement "{\n          iVar8 = -1;\n        }" { (expression_statement "iVar8 = -1;" (assignment_expression "iVar8 = -1" identifier = number_literal) ;) })) (expression_statement "hex2stdout(puVar10,uVar11,iVar8);" (call_expression "hex2stdout(puVar10,uVar11,iVar8)" identifier (argument_list "(puVar10,uVar11,iVar8)" ( identifier , identifier , identifier ))) ;) (break_statement "break;" break ;) })))) (expression_statement "uVar9 = uVar9 - uVar11;" (assignment_expression "uVar9 = uVar9 - uVar11" identifier = (binary_expression "uVar9 - uVar11" identifier - identifier)) ;) (expression_statement "puVar10 = (ushort *)((int)puVar10 + uVar11);" (assignment_expression "puVar10 = (ushort *)((int)puVar10 + uVar11)" identifier = (cast_expression "(ushort *)((int)puVar10 + uVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + uVar11)" ( (binary_expression "(int)puVar10 + uVar11" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(3 < (int)uVar9)" ( (binary_expression "3 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_00024b60();\n  }" { (expression_statement "FUN_00024b60();" (call_expression "FUN_00024b60()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (binary_expression (pointer_expression * IDENT) << LIT) | (binary_expression (pointer_expression * IDENT) >> LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (binary_expression IDENT + LIT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (break_statement break ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (break_statement break ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00018d00(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_00018d00(int param_1,int param_2,int param_3)" (identifier "FUN_00018d00") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  ushort uVar2;\n  uint uVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  char cVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  ushort *puVar10;\n  uint uVar11;\n  ushort *puVar12;\n  int in_GS_OFFSET;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }\n  puVar10 = (ushort *)(param_1 + 4);\n  uVar9 = param_2 - 4;\n  if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "char cVar6;" (primitive_type "char") (identifier "cVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "ushort *puVar10;" (type_identifier "ushort") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "ushort *puVar12;" (type_identifier "ushort") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" (if "if") (parenthesized_expression "((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0))))" (( "(") (binary_expression "(*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))" (parenthesized_expression "(*(int *)(param_3 + 0x30) != 0)" (( "(") (binary_expression "*(int *)(param_3 + 0x30) != 0" (pointer_expression "*(int *)(param_3 + 0x30)" (* "*") (cast_expression "(int *)(param_3 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x30)" (( "(") (binary_expression "param_3 + 0x30" (identifier "param_3") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))" (( "(") (parenthesized_expression "(*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0))" (( "(") (binary_expression "*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)" (binary_expression "*(char *)(param_3 + 3) == '\0'" (pointer_expression "*(char *)(param_3 + 3)" (* "*") (cast_expression "(char *)(param_3 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 3)" (( "(") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(*(int *)(param_3 + 0x20) == 0)" (( "(") (binary_expression "*(int *)(param_3 + 0x20) == 0" (pointer_expression "*(int *)(param_3 + 0x20)" (* "*") (cast_expression "(int *)(param_3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    puts("ATA pass-through results page (sat-2) [0x16]");\n  }" ({ "{") (expression_statement "puts("ATA pass-through results page (sat-2) [0x16]");" (call_expression "puts("ATA pass-through results page (sat-2) [0x16]")" (identifier "puts") (argument_list "("ATA pass-through results page (sat-2) [0x16]")" (( "(") (string_literal ""ATA pass-through results page (sat-2) [0x16]"" (" """) (string_content "ATA pass-through results page (sat-2) [0x16]") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar10 = (ushort *)(param_1 + 4);" (assignment_expression "puVar10 = (ushort *)(param_1 + 4)" (identifier "puVar10") (= "=") (cast_expression "(ushort *)(param_1 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar9 = param_2 - 4;" (assignment_expression "uVar9 = param_2 - 4" (identifier "uVar9") (= "=") (binary_expression "param_2 - 4" (identifier "param_2") (- "-") (number_literal "4"))) (; ";")) (if_statement "if (3 < (int)uVar9) {\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }" (if "if") (parenthesized_expression "(3 < (int)uVar9)" (( "(") (binary_expression "3 < (int)uVar9" (number_literal "3") (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (compound_statement "{\n    cVar6 = *(char *)(param_3 + 9);\n    do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);\n  }" ({ "{") (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(param_3 + 9)" (* "*") (cast_expression "(char *)(param_3 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 9)" (( "(") (binary_expression "param_3 + 9" (identifier "param_3") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (do_statement "do {\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    } while (3 < (int)uVar9);" (do "do") (compound_statement "{\n      uVar11 = *(byte *)((int)puVar10 + 3) + 4;\n      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);\n      if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }\n      uVar9 = uVar9 - uVar11;\n      puVar10 = (ushort *)((int)puVar10 + uVar11);\n    }" ({ "{") (expression_statement "uVar11 = *(byte *)((int)puVar10 + 3) + 4;" (assignment_expression "uVar11 = *(byte *)((int)puVar10 + 3) + 4" (identifier "uVar11") (= "=") (binary_expression "*(byte *)((int)puVar10 + 3) + 4" (pointer_expression "*(byte *)((int)puVar10 + 3)" (* "*") (cast_expression "(byte *)((int)puVar10 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 3)" (( "(") (binary_expression "(int)puVar10 + 3" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "3")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);" (assignment_expression "uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8)" (identifier "uVar3") (= "=") (call_expression "(uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(ushort)" (( "(") (identifier "ushort") () ")"))) (argument_list "(*puVar10 << 8 | *puVar10 >> 8)" (( "(") (binary_expression "*puVar10 << 8 | *puVar10 >> 8" (binary_expression "*puVar10 << 8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*puVar10 >> 8" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (>> ">>") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if (cVar6 == '\0') {\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" (if "if") (parenthesized_expression "(cVar6 == '\0')" (( "(") (binary_expression "cVar6 == '\0'" (identifier "cVar6") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        if (cVar6 != '\0') break;\n      }" ({ "{") (labeled_statement "LAB_00018e77:\n        if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" (statement_identifier "LAB_00018e77") (: ":") (if_statement "if ((uVar3 < 0xf) && (0x11 < uVar11)) {\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }\n        else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" (if "if") (parenthesized_expression "((uVar3 < 0xf) && (0x11 < uVar11))" (( "(") (binary_expression "(uVar3 < 0xf) && (0x11 < uVar11)" (parenthesized_expression "(uVar3 < 0xf)" (( "(") (binary_expression "uVar3 < 0xf" (identifier "uVar3") (< "<") (number_literal "0xf")) () ")")) (&& "&&") (parenthesized_expression "(0x11 < uVar11)" (( "(") (binary_expression "0x11 < uVar11" (number_literal "0x11") (< "<") (identifier "uVar11")) () ")"))) () ")")) (compound_statement "{\n          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);\n          if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));\n          cVar6 = *(char *)(param_3 + 1);\n        }" ({ "{") (expression_statement "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);" (call_expression "__printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" (identifier "__printf_chk") (argument_list "(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3)" (( "(") (number_literal "1") (, ",") (string_literal ""  Log_index=0x%x (parameter_code=0x%x)\n"" (" """) (string_content "  Log_index=0x%x (parameter_code=0x%x)") (escape_sequence "\n") (" """)) (, ",") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (, ",") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if ((puVar10[3] & 1) == 0) {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }\n          else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" (if "if") (parenthesized_expression "((puVar10[3] & 1) == 0)" (( "(") (binary_expression "(puVar10[3] & 1) == 0" (parenthesized_expression "(puVar10[3] & 1)" (( "(") (binary_expression "puVar10[3] & 1" (subscript_expression "puVar10[3]" (identifier "puVar10") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));\n            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" ({ "{") (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9))" (identifier "__printf_chk") (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),\n                         *(byte *)((int)puVar10 + 9))" (( "(") (number_literal "1") (, ",") (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" (" """) (string_content "    extend=%d  error=0x%x count=0x%x") (escape_sequence "\n") (" """)) (, ",") (number_literal "0") (, ",") (pointer_expression "*(byte *)((int)puVar10 + 7)" (* "*") (cast_expression "(byte *)((int)puVar10 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 7)" (( "(") (binary_expression "(int)puVar10 + 7" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "7")) () ")")))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 9)" (* "*") (cast_expression "(byte *)((int)puVar10 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 9)" (( "(") (binary_expression "(int)puVar10 + 9" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "9")) () ")")))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" (identifier "__printf_chk") (argument_list "(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" (( "(") (number_literal "1") (, ",") (string_literal ""    lba=0x%02x%02x%02x\n"" (" """) (string_content "    lba=0x%02x%02x%02x") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 0xf)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0xf)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0xf)" (( "(") (binary_expression "(int)puVar10 + 0xf" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0xf")) () ")")))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 0xd)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0xd)" (( "(") (binary_expression "(int)puVar10 + 0xd" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0xd")) () ")")))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 0xb)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0xb)" (( "(") (binary_expression "(int)puVar10 + 0xb" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0xb")) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" (else "else") (compound_statement "{\n            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));\n            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));\n          }" ({ "{") (expression_statement "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));" (call_expression "__printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)))" (identifier "__printf_chk") (argument_list "(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),\n                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)))" (( "(") (number_literal "1") (, ",") (string_literal ""    extend=%d  error=0x%x count=0x%x\n"" (" """) (string_content "    extend=%d  error=0x%x count=0x%x") (escape_sequence "\n") (" """)) (, ",") (number_literal "1") (, ",") (pointer_expression "*(byte *)((int)puVar10 + 7)" (* "*") (cast_expression "(byte *)((int)puVar10 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 7)" (( "(") (binary_expression "(int)puVar10 + 7" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "7")) () ")")))) (, ",") (call_expression "CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9))" (identifier "CONCAT11") (argument_list "((byte)puVar10[4],*(byte *)((int)puVar10 + 9))" (( "(") (cast_expression "(byte)puVar10[4]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar10[4]" (identifier "puVar10") ([ "[") (number_literal "4") (] "]"))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 9)" (* "*") (cast_expression "(byte *)((int)puVar10 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 9)" (( "(") (binary_expression "(int)puVar10 + 9" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "9")) () ")")))) () ")"))) () ")"))) (; ";")) (expression_statement "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));" (call_expression "__printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" (identifier "__printf_chk") (argument_list "(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],\n                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),\n                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb))" (( "(") (number_literal "1") (, ",") (string_literal ""    lba=0x%02x%02x%02x%02x%02x%02x\n"" (" """) (string_content "    lba=0x%02x%02x%02x%02x%02x%02x") (escape_sequence "\n") (" """)) (, ",") (cast_expression "(byte)puVar10[7]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar10[7]" (identifier "puVar10") ([ "[") (number_literal "7") (] "]"))) (, ",") (cast_expression "(byte)puVar10[6]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar10[6]" (identifier "puVar10") ([ "[") (number_literal "6") (] "]"))) (, ",") (cast_expression "(byte)puVar10[5]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar10[5]" (identifier "puVar10") ([ "[") (number_literal "5") (] "]"))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 0xf)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0xf)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0xf)" (( "(") (binary_expression "(int)puVar10 + 0xf" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0xf")) () ")")))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 0xd)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0xd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0xd)" (( "(") (binary_expression "(int)puVar10 + 0xd" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0xd")) () ")")))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 0xb)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0xb)" (( "(") (binary_expression "(int)puVar10 + 0xb" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0xb")) () ")")))) () ")"))) (; ";")) (} "}")))) (expression_statement "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11));" (call_expression "__printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11))" (identifier "__printf_chk") (argument_list "(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],\n                       *(byte *)((int)puVar10 + 0x11))" (( "(") (number_literal "1") (, ",") (string_literal ""    device=0x%x  status=0x%x\n"" (" """) (string_content "    device=0x%x  status=0x%x") (escape_sequence "\n") (" """)) (, ",") (cast_expression "(byte)puVar10[8]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar10[8]" (identifier "puVar10") ([ "[") (number_literal "8") (] "]"))) (, ",") (pointer_expression "*(byte *)((int)puVar10 + 0x11)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x11)" (( "(") (binary_expression "(int)puVar10 + 0x11" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x11")) () ")")))) () ")"))) (; ";")) (expression_statement "cVar6 = *(char *)(param_3 + 1);" (assignment_expression "cVar6 = *(char *)(param_3 + 1)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(param_3 + 1)" (* "*") (cast_expression "(char *)(param_3 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 1)" (( "(") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" (else "else") (compound_statement "{\n          uVar7 = uVar9;\n          if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }\n          if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }\n          __printf_chk(1,pcVar4,uVar3);\n          hex2stdout(puVar10,uVar7,0);\n          cVar6 = *(char *)(param_3 + 1);\n        }" ({ "{") (expression_statement "uVar7 = uVar9;" (assignment_expression "uVar7 = uVar9" (identifier "uVar7") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((int)uVar11 <= (int)uVar9) {\n            uVar7 = uVar11;\n          }" (if "if") (parenthesized_expression "((int)uVar11 <= (int)uVar9)" (( "(") (binary_expression "(int)uVar11 <= (int)uVar9" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (<= "<=") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (compound_statement "{\n            uVar7 = uVar11;\n          }" ({ "{") (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" (identifier "uVar7") (= "=") (identifier "uVar11")) (; ";")) (} "}"))) (if_statement "if (uVar11 < 0x12) {\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }\n          else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" (if "if") (parenthesized_expression "(uVar11 < 0x12)" (( "(") (binary_expression "uVar11 < 0x12" (identifier "uVar11") (< "<") (number_literal "0x12")) () ")")) (compound_statement "{\n            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";\n            uVar3 = uVar11;\n          }" ({ "{") (expression_statement "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n"" (identifier "pcVar4") (= "=") (string_literal ""  short parameter length: %d [parameter_code=0x%x]:\n"" (" """) (string_content "  short parameter length: %d [parameter_code=0x%x]:") (escape_sequence "\n") (" """))) (; ";")) (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" (identifier "uVar3") (= "=") (identifier "uVar11")) (; ";")) (} "}")) (else_clause "else {\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" (else "else") (compound_statement "{\n            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";\n          }" ({ "{") (expression_statement "pcVar4 = "  Reserved [parameter_code=0x%x]:\n";" (assignment_expression "pcVar4 = "  Reserved [parameter_code=0x%x]:\n"" (identifier "pcVar4") (= "=") (string_literal ""  Reserved [parameter_code=0x%x]:\n"" (" """) (string_content "  Reserved [parameter_code=0x%x]:") (escape_sequence "\n") (" """))) (; ";")) (} "}")))) (expression_statement "__printf_chk(1,pcVar4,uVar3);" (call_expression "__printf_chk(1,pcVar4,uVar3)" (identifier "__printf_chk") (argument_list "(1,pcVar4,uVar3)" (( "(") (number_literal "1") (, ",") (identifier "pcVar4") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "hex2stdout(puVar10,uVar7,0);" (call_expression "hex2stdout(puVar10,uVar7,0)" (identifier "hex2stdout") (argument_list "(puVar10,uVar7,0)" (( "(") (identifier "puVar10") (, ",") (identifier "uVar7") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "cVar6 = *(char *)(param_3 + 1);" (assignment_expression "cVar6 = *(char *)(param_3 + 1)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(param_3 + 1)" (* "*") (cast_expression "(char *)(param_3 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 1)" (( "(") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}"))))) (if_statement "if (cVar6 == '\0') {\n          cVar6 = *(char *)(param_3 + 9);\n        }\n        else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" (if "if") (parenthesized_expression "(cVar6 == '\0')" (( "(") (binary_expression "cVar6 == '\0'" (identifier "cVar6") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          cVar6 = *(char *)(param_3 + 9);\n        }" ({ "{") (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(param_3 + 9)" (* "*") (cast_expression "(char *)(param_3 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 9)" (( "(") (binary_expression "param_3 + 9" (identifier "param_3") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" (else "else") (compound_statement "{\n          uVar5 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar5);\n          cVar6 = *(char *)(param_3 + 9);\n        }" ({ "{") (expression_statement "uVar5 = FUN_00014e80();" (assignment_expression "uVar5 = FUN_00014e80()" (identifier "uVar5") (= "=") (call_expression "FUN_00014e80()" (identifier "FUN_00014e80") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "__printf_chk(1,&DAT_0002d460,uVar5);" (call_expression "__printf_chk(1,&DAT_0002d460,uVar5)" (identifier "__printf_chk") (argument_list "(1,&DAT_0002d460,uVar5)" (( "(") (number_literal "1") (, ",") (pointer_expression "&DAT_0002d460" (& "&") (identifier "DAT_0002d460")) (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "cVar6 = *(char *)(param_3 + 9);" (assignment_expression "cVar6 = *(char *)(param_3 + 9)" (identifier "cVar6") (= "=") (pointer_expression "*(char *)(param_3 + 9)" (* "*") (cast_expression "(char *)(param_3 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 9)" (( "(") (binary_expression "param_3 + 9" (identifier "param_3") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (cVar6 != '\0') break;" (if "if") (parenthesized_expression "(cVar6 != '\0')" (( "(") (binary_expression "cVar6 != '\0'" (identifier "cVar6") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" (else "else") (if_statement "if (*(uint *)(param_3 + 0x34) == uVar3) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_3 + 0x34) == uVar3)" (( "(") (binary_expression "*(uint *)(param_3 + 0x34) == uVar3" (pointer_expression "*(uint *)(param_3 + 0x34)" (* "*") (cast_expression "(uint *)(param_3 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x34)" (( "(") (binary_expression "param_3 + 0x34" (identifier "param_3") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (identifier "uVar3")) () ")")) (compound_statement "{\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }\n        iVar8 = *(int *)(param_3 + 0x20);\n        if (iVar8 == 0) goto LAB_00018e77;\n        if (iVar8 != 1) {\n          iVar8 = -1;\n        }\n        hex2stdout(puVar10,uVar11,iVar8);\n        break;\n      }" ({ "{") (if_statement "if (*(char *)(param_3 + 3) != '\0') {\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }" (if "if") (parenthesized_expression "(*(char *)(param_3 + 3) != '\0')" (( "(") (binary_expression "*(char *)(param_3 + 3) != '\0'" (pointer_expression "*(char *)(param_3 + 3)" (* "*") (cast_expression "(char *)(param_3 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 3)" (( "(") (binary_expression "param_3 + 3" (identifier "param_3") (+ "+") (number_literal "3")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          puVar12 = (ushort *)(uVar11 + (int)puVar10);\n          do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);\n          break;\n        }" ({ "{") (expression_statement "puVar12 = (ushort *)(uVar11 + (int)puVar10);" (assignment_expression "puVar12 = (ushort *)(uVar11 + (int)puVar10)" (identifier "puVar12") (= "=") (cast_expression "(ushort *)(uVar11 + (int)puVar10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar11 + (int)puVar10)" (( "(") (binary_expression "uVar11 + (int)puVar10" (identifier "uVar11") (+ "+") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) () ")")))) (; ";")) (do_statement "do {\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          } while (puVar12 != puVar10);" (do "do") (compound_statement "{\n            uVar2 = *puVar10;\n            puVar10 = (ushort *)((int)puVar10 + 1);\n            putchar((uint)(byte)uVar2);\n          }" ({ "{") (expression_statement "uVar2 = *puVar10;" (assignment_expression "uVar2 = *puVar10" (identifier "uVar2") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "puVar10 = (ushort *)((int)puVar10 + 1);" (assignment_expression "puVar10 = (ushort *)((int)puVar10 + 1)" (identifier "puVar10") (= "=") (cast_expression "(ushort *)((int)puVar10 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 1)" (( "(") (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "putchar((uint)(byte)uVar2);" (call_expression "putchar((uint)(byte)uVar2)" (identifier "putchar") (argument_list "((uint)(byte)uVar2)" (( "(") (cast_expression "(uint)(byte)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar12 != puVar10)" (( "(") (binary_expression "puVar12 != puVar10" (identifier "puVar12") (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar8 = *(int *)(param_3 + 0x20);" (assignment_expression "iVar8 = *(int *)(param_3 + 0x20)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_3 + 0x20)" (* "*") (cast_expression "(int *)(param_3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x20)" (( "(") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) goto LAB_00018e77;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018e77;" (goto "goto") (statement_identifier "LAB_00018e77") (; ";"))) (if_statement "if (iVar8 != 1) {\n          iVar8 = -1;\n        }" (if "if") (parenthesized_expression "(iVar8 != 1)" (( "(") (binary_expression "iVar8 != 1" (identifier "iVar8") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          iVar8 = -1;\n        }" ({ "{") (expression_statement "iVar8 = -1;" (assignment_expression "iVar8 = -1" (identifier "iVar8") (= "=") (number_literal "-1")) (; ";")) (} "}"))) (expression_statement "hex2stdout(puVar10,uVar11,iVar8);" (call_expression "hex2stdout(puVar10,uVar11,iVar8)" (identifier "hex2stdout") (argument_list "(puVar10,uVar11,iVar8)" (( "(") (identifier "puVar10") (, ",") (identifier "uVar11") (, ",") (identifier "iVar8") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))))) (expression_statement "uVar9 = uVar9 - uVar11;" (assignment_expression "uVar9 = uVar9 - uVar11" (identifier "uVar9") (= "=") (binary_expression "uVar9 - uVar11" (identifier "uVar9") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "puVar10 = (ushort *)((int)puVar10 + uVar11);" (assignment_expression "puVar10 = (ushort *)((int)puVar10 + uVar11)" (identifier "puVar10") (= "=") (cast_expression "(ushort *)((int)puVar10 + uVar11)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + uVar11)" (( "(") (binary_expression "(int)puVar10 + uVar11" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (identifier "uVar11")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(3 < (int)uVar9)" (( "(") (binary_expression "3 < (int)uVar9" (number_literal "3") (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (; ";")) (} "}"))) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }" (if "if") (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_00024b60();\n  }" ({ "{") (expression_statement "FUN_00024b60();" (call_expression "FUN_00024b60()" (identifier "FUN_00024b60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

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

type_1 function_1(uint8_t *var_3,int var_4,type_2 *op)

{
  int var_17;
  type_3 uVar2;
  type_4 var_6;
  char *pcVar4;
  int extraout_ECX;
  int extraout_ECX_00;
  char var_5;
  type_4 uVar6;
  int var_15;
  type_4 var_16;
  type_3 *var_14;
  type_4 var_7;
  type_3 *var_13;
  int var_1;
  char str [128];
  
  var_17 = *(int *)(var_1 + 0x14);
  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {
    var_2("ATA pass-through results page (sat-2) [0x16]");
  }
  var_14 = (type_3 *)(var_3 + 4);
  var_16 = var_4 - 4;
  if (3 < (int)var_16) {
    var_5 = op->filter_given;
    do {
      var_7 = *(type_5 *)((int)var_14 + 3) + 4;
      var_6 = (type_4)(type_3)(*var_14 << 8 | *var_14 >> 8);
      if (var_5 == '\0') {
LAB_00018e77:
        if ((var_6 < 0xf) && (0x11 < var_7)) {
          var_8(1,"  Log_index=0x%x (parameter_code=0x%x)\n",var_6 + 1,var_6);
          if ((var_14[3] & 1) == 0) {
            var_8(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(type_5 *)((int)var_14 + 7),
                         *(type_5 *)((int)var_14 + 9));
            var_8(1,"    lba=0x%02x%02x%02x\n",*(type_5 *)((int)var_14 + 0xf),
                         *(type_5 *)((int)var_14 + 0xd),*(type_5 *)((int)var_14 + 0xb));
          }
          else {
            var_8(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(type_5 *)((int)var_14 + 7),
                         var_9((type_5)var_14[4],*(type_5 *)((int)var_14 + 9)));
            var_8(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(type_5)var_14[7],(type_5)var_14[6],
                         (type_5)var_14[5],*(type_5 *)((int)var_14 + 0xf),*(type_5 *)((int)var_14 + 0xd),
                         *(type_5 *)((int)var_14 + 0xb));
          }
          var_8(1,"    device=0x%x  status=0x%x\n",(type_5)var_14[8],
                       *(type_5 *)((int)var_14 + 0x11));
          var_5 = op->do_pcb;
          var_15 = extraout_ECX;
        }
        else {
          uVar6 = var_16;
          if ((int)var_7 <= (int)var_16) {
            uVar6 = var_7;
          }
          if (var_7 < 0x12) {
            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";
            var_6 = var_7;
          }
          else {
            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";
          }
          var_8(1,pcVar4,var_6);
          var_10(var_14,uVar6,0);
          var_5 = op->do_pcb;
          var_15 = extraout_ECX_00;
        }
        if (var_5 == '\0') {
          var_5 = op->filter_given;
        }
        else {
          pcVar4 = var_11((type_4)(type_5)var_14[1],str,var_15);
          var_8(1,&DAT_0002d460,pcVar4);
          var_5 = op->filter_given;
        }
        if (var_5 != '\0') break;
      }
      else if (op->filter == var_6) {
        if (op->do_raw != false) {
          var_13 = (type_3 *)(var_7 + (int)var_14);
          do {
            uVar2 = *var_14;
            var_14 = (type_3 *)((int)var_14 + 1);
            var_12((type_4)(type_5)uVar2);
          } while (var_13 != var_14);
          break;
        }
        var_15 = op->do_hex;
        if (var_15 == 0) goto LAB_00018e77;
        if (var_15 != 1) {
          var_15 = -1;
        }
        var_10(var_14,var_7,var_15);
        break;
      }
      var_16 = var_16 - var_7;
      var_14 = (type_3 *)((int)var_14 + var_7);
    } while (3 < (int)var_16);
  }
  if (var_17 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_18();
  }
  return true;
}


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

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

undefined4 MASKED(int param_1,int param_2,int param_3)

{
  int iVar1;
  ushort uVar2;
  uint uVar3;
  char *pcVar4;
  undefined4 uVar5;
  char cVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  ushort *puVar10;
  uint uVar11;
  ushort *puVar12;
  int in_GS_OFFSET;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if ((*(int *)(param_3 + 0x30) != 0) ||
     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {
    puts("ATA pass-through results page (sat-2) [0x16]");
  }
  puVar10 = (ushort *)(param_1 + 4);
  uVar9 = param_2 - 4;
  if (3 < (int)uVar9) {
    cVar6 = *(char *)(param_3 + 9);
    do {
      uVar11 = *(byte *)((int)puVar10 + 3) + 4;
      uVar3 = (uint)(ushort)(*puVar10 << 8 | *puVar10 >> 8);
      if (cVar6 == '\0') {
LAB_00018e77:
        if ((uVar3 < 0xf) && (0x11 < uVar11)) {
          __printf_chk(1,"  Log_index=0x%x (parameter_code=0x%x)\n",uVar3 + 1,uVar3);
          if ((puVar10[3] & 1) == 0) {
            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",0,*(byte *)((int)puVar10 + 7),
                         *(byte *)((int)puVar10 + 9));
            __printf_chk(1,"    lba=0x%02x%02x%02x\n",*(byte *)((int)puVar10 + 0xf),
                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));
          }
          else {
            __printf_chk(1,"    extend=%d  error=0x%x count=0x%x\n",1,*(byte *)((int)puVar10 + 7),
                         CONCAT11((byte)puVar10[4],*(byte *)((int)puVar10 + 9)));
            __printf_chk(1,"    lba=0x%02x%02x%02x%02x%02x%02x\n",(byte)puVar10[7],(byte)puVar10[6],
                         (byte)puVar10[5],*(byte *)((int)puVar10 + 0xf),
                         *(byte *)((int)puVar10 + 0xd),*(byte *)((int)puVar10 + 0xb));
          }
          __printf_chk(1,"    device=0x%x  status=0x%x\n",(byte)puVar10[8],
                       *(byte *)((int)puVar10 + 0x11));
          cVar6 = *(char *)(param_3 + 1);
        }
        else {
          uVar7 = uVar9;
          if ((int)uVar11 <= (int)uVar9) {
            uVar7 = uVar11;
          }
          if (uVar11 < 0x12) {
            pcVar4 = "  short parameter length: %d [parameter_code=0x%x]:\n";
            uVar3 = uVar11;
          }
          else {
            pcVar4 = "  Reserved [parameter_code=0x%x]:\n";
          }
          __printf_chk(1,pcVar4,uVar3);
          hex2stdout(puVar10,uVar7,0);
          cVar6 = *(char *)(param_3 + 1);
        }
        if (cVar6 == '\0') {
          cVar6 = *(char *)(param_3 + 9);
        }
        else {
          uVar5 = FUN_00014e80();
          __printf_chk(1,&DAT_0002d460,uVar5);
          cVar6 = *(char *)(param_3 + 9);
        }
        if (cVar6 != '\0') break;
      }
      else if (*(uint *)(param_3 + 0x34) == uVar3) {
        if (*(char *)(param_3 + 3) != '\0') {
          puVar12 = (ushort *)(uVar11 + (int)puVar10);
          do {
            uVar2 = *puVar10;
            puVar10 = (ushort *)((int)puVar10 + 1);
            putchar((uint)(byte)uVar2);
          } while (puVar12 != puVar10);
          break;
        }
        iVar8 = *(int *)(param_3 + 0x20);
        if (iVar8 == 0) goto LAB_00018e77;
        if (iVar8 != 1) {
          iVar8 = -1;
        }
        hex2stdout(puVar10,uVar11,iVar8);
        break;
      }
      uVar9 = uVar9 - uVar11;
      puVar10 = (ushort *)((int)puVar10 + uVar11);
    } while (3 < (int)uVar9);
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00024b60();
  }
  return 1;
}

