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

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

{
  int iVar1;
  byte bVar2;
  int iVar3;
  ushort uVar4;
  uint uVar5;
  char *pcVar6;
  byte *pbVar7;
  int maxoutlen;
  char cVar8;
  uint uVar9;
  int iVar10;
  ushort *puVar11;
  uint uVar12;
  ushort *puVar13;
  int in_GS_OFFSET;
  int local_c8;
  char str [128];
  
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {
    puts("Non-medium error page  [0x6]");
  }
  puVar11 = (ushort *)(resp + 4);
  local_c8 = len + -4;
  if (3 < local_c8) {
    cVar8 = op->filter_given;
    do {
      uVar12 = (uint)*(byte *)((int)puVar11 + 3);
      iVar1 = uVar12 + 4;
      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);
      if (cVar8 == '\0') {
LAB_0001f85c:
        if (uVar5 == 0) {
          __printf_chk(1,"  Non-medium error count");
        }
        else if (uVar5 < 0x8000) {
          __printf_chk(1,"  Reserved [0x%x]",uVar5);
        }
        else {
          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);
        }
        uVar5 = 0;
        uVar9 = 0;
        if (uVar12 - 1 < 8) {
          uVar5 = (uint)(byte)puVar11[2];
          uVar9 = 0;
          pbVar7 = (byte *)((int)puVar11 + 5);
          if (1 < uVar12) {
            do {
              bVar2 = *pbVar7;
              pbVar7 = pbVar7 + 1;
              uVar9 = uVar9 << 8 | uVar5 >> 0x18;
              uVar5 = (uint)bVar2 | uVar5 << 8;
            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));
          }
        }
        __printf_chk(1," = %llu",uVar5,uVar9);
        putchar(10);
        if (op->do_pcb != false) {
          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);
          __printf_chk(1,&DAT_0002d460,pcVar6);
        }
        cVar8 = op->filter_given;
        if ((_Bool)cVar8 != false) break;
      }
      else if (op->filter == uVar5) {
        if (op->do_raw != false) {
          puVar13 = (ushort *)(iVar1 + (int)puVar11);
          do {
            uVar4 = *puVar11;
            puVar11 = (ushort *)((int)puVar11 + 1);
            putchar((uint)(byte)uVar4);
          } while (puVar13 != puVar11);
          break;
        }
        iVar10 = op->do_hex;
        if (iVar10 == 0) goto LAB_0001f85c;
        if (iVar10 != 1) {
          iVar10 = -1;
        }
        hex2stdout(puVar11,iVar1,iVar10);
        break;
      }
      local_c8 = local_c8 - iVar1;
      puVar11 = (ushort *)((int)puVar11 + iVar1);
    } while (3 < local_c8);
  }
  if (iVar3 != *(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_0001f7a0(int param_1,int param_2,int param_3)

{
  int iVar1;
  byte bVar2;
  int iVar3;
  ushort uVar4;
  uint uVar5;
  undefined4 uVar6;
  byte *pbVar7;
  char cVar8;
  uint uVar9;
  int iVar10;
  ushort *puVar11;
  uint uVar12;
  ushort *puVar13;
  int in_GS_OFFSET;
  int local_c8;
  
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  if ((*(int *)(param_3 + 0x30) != 0) ||
     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {
    puts("Non-medium error page  [0x6]");
  }
  puVar11 = (ushort *)(param_1 + 4);
  local_c8 = param_2 + -4;
  if (3 < local_c8) {
    cVar8 = *(char *)(param_3 + 9);
    do {
      uVar12 = (uint)*(byte *)((int)puVar11 + 3);
      iVar1 = uVar12 + 4;
      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);
      if (cVar8 == '\0') {
LAB_0001f85c:
        if (uVar5 == 0) {
          __printf_chk(1,"  Non-medium error count");
        }
        else if (uVar5 < 0x8000) {
          __printf_chk(1,"  Reserved [0x%x]",uVar5);
        }
        else {
          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);
        }
        uVar5 = 0;
        uVar9 = 0;
        if (uVar12 - 1 < 8) {
          uVar5 = (uint)(byte)puVar11[2];
          uVar9 = 0;
          pbVar7 = (byte *)((int)puVar11 + 5);
          if (1 < uVar12) {
            do {
              bVar2 = *pbVar7;
              pbVar7 = pbVar7 + 1;
              uVar9 = uVar9 << 8 | uVar5 >> 0x18;
              uVar5 = (uint)bVar2 | uVar5 << 8;
            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));
          }
        }
        __printf_chk(1," = %llu",uVar5,uVar9);
        putchar(10);
        if (*(char *)(param_3 + 1) != '\0') {
          uVar6 = FUN_00014e80();
          __printf_chk(1,&DAT_0002d460,uVar6);
        }
        cVar8 = *(char *)(param_3 + 9);
        if (cVar8 != '\0') break;
      }
      else if (*(uint *)(param_3 + 0x34) == uVar5) {
        if (*(char *)(param_3 + 3) != '\0') {
          puVar13 = (ushort *)(iVar1 + (int)puVar11);
          do {
            uVar4 = *puVar11;
            puVar11 = (ushort *)((int)puVar11 + 1);
            putchar((uint)(byte)uVar4);
          } while (puVar13 != puVar11);
          break;
        }
        iVar10 = *(int *)(param_3 + 0x20);
        if (iVar10 == 0) goto LAB_0001f85c;
        if (iVar10 != 1) {
          iVar10 = -1;
        }
        hex2stdout(puVar11,iVar1,iVar10);
        break;
      }
      local_c8 = local_c8 - iVar1;
      puVar11 = (ushort *)((int)puVar11 + iVar1);
    } while (3 < local_c8);
  }
  if (iVar3 != *(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,0x19757
SUB ESP,0xbc
MOV EAX,dword ptr [ESP + 0xd8]
MOV EBP,dword ptr [ESP + 0xd0]
MOV dword ptr [ESP + 0x8],EAX
MOV ECX,dword ptr [EAX + 0x30]
MOV EDX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xac],EDX
XOR EDX,EDX
TEST ECX,ECX
JNZ 0x0001f9bb
CMP byte ptr [EAX + 0x3],0x0
JZ 0x0001f9b0
MOV EAX,dword ptr [ESP + 0xd4]
ADD EBP,0x4
SUB EAX,0x4
MOV dword ptr [ESP + 0x4],EAX
CMP EAX,0x3
JLE 0x0001f91a
MOV EAX,dword ptr [ESP + 0x8]
MOVZX EDX,byte ptr [EAX + 0x9]
LEA EAX,[EBX + 0xffff5b05]
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[ESP + 0x2c]
MOV dword ptr [ESP + 0x1c],EAX
MOVZX EAX,word ptr [EBP]
MOVZX ESI,byte ptr [EBP + 0x3]
ROL AX,0x8
LEA ECX,[ESI + 0x4]
MOVZX EAX,AX
MOV dword ptr [ESP + 0xc],ECX
TEST DL,DL
JZ 0x0001f85c
MOV ECX,dword ptr [ESP + 0x8]
CMP dword ptr [ECX + 0x34],EAX
JNZ 0x0001f903
CMP byte ptr [ECX + 0x3],0x0
JNZ 0x0001f9d2
MOV EDX,dword ptr [ECX + 0x20]
TEST EDX,EDX
JNZ 0x0001f9fc
TEST EAX,EAX
JZ 0x0001f990
CMP EAX,0x7fff
JG 0x0001f940
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xffff596e]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0x10
LEA ECX,[ESI + -0x1]
XOR EAX,EAX
XOR EDX,EDX
CMP ECX,0x7
JA 0x0001f8d1
MOVZX EAX,byte ptr [EBP + 0x4]
XOR EDX,EDX
LEA ECX,[EBP + 0x5]
CMP ESI,0x1
JLE 0x0001f8d1
LEA EDI,[EBP + ESI*0x1 + 0x4]
MOV dword ptr [ESP + 0x18],EBP
MOV dword ptr [ESP + 0x10],EDI
LEA ESI,[ESI]
MOV ESI,EAX
MOVZX EBP,byte ptr [ECX]
MOV EDI,EDX
ADD ECX,0x1
SHL ESI,0x8
SHLD EDI,EAX,0x8
OR EBP,ESI
MOV EDX,EDI
MOV EAX,EBP
CMP ECX,dword ptr [ESP + 0x10]
JNZ 0x0001f8b0
MOV EBP,dword ptr [ESP + 0x18]
PUSH EDX
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
PUSH 0x1
CALL 0x00012260
MOV dword ptr [ESP],0xa
CALL 0x00012230
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
CMP byte ptr [EAX + 0x1],0x0
JNZ 0x0001f960
MOV EAX,dword ptr [ESP + 0x8]
MOVZX EDX,byte ptr [EAX + 0x9]
TEST DL,DL
JNZ 0x0001f91a
MOV EDI,dword ptr [ESP + 0xc]
SUB dword ptr [ESP + 0x4],EDI
MOV EAX,dword ptr [ESP + 0x4]
ADD EBP,EDI
CMP EAX,0x3
JG 0x0001f820
MOV EDX,dword ptr [ESP + 0xac]
XOR EDX,dword ptr GS:[0x14]
MOV EAX,0x1
JNZ 0x0001fa1d
ADD ESP,0xbc
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xffff5980]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0x10
JMP 0x0001f884
MOV EDX,dword ptr [ESP + 0x1c]
MOVZX EAX,byte ptr [EBP + 0x2]
CALL 0x00014e80
SUB ESP,0x4
PUSH EAX
LEA EAX,[EBX + 0xffff4560]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0x10
JMP 0x0001f8f7
SUB ESP,0x8
LEA EAX,[EBX + 0xffff5955]
PUSH EAX
PUSH 0x1
CALL 0x00012260
ADD ESP,0x10
JMP 0x0001f884
MOV EDX,dword ptr [EAX + 0x20]
TEST EDX,EDX
JNZ 0x0001f7ec
SUB ESP,0xc
LEA EAX,[EBX + 0xffff5938]
PUSH EAX
CALL 0x00012170
ADD ESP,0x10
JMP 0x0001f7ec
MOV EDI,dword ptr [ESP + 0xc]
ADD EDI,EBP
LEA ESI,[ESI]
NOP
MOVZX EAX,byte ptr [EBP]
SUB ESP,0xc
ADD EBP,0x1
PUSH EAX
CALL 0x00012230
ADD ESP,0x10
CMP EDI,EBP
JNZ 0x0001f9e0
JMP 0x0001f91a
CMP EDX,0x1
MOV EAX,0xffffffff
CMOVNZ EDX,EAX
SUB ESP,0x4
PUSH EDX
PUSH dword ptr [ESP + 0x14]
PUSH EBP
CALL 0x00012130
ADD ESP,0x10
JMP 0x0001f91a
CALL 0x00024b60
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_0001f7a0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(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_0001f7a0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00024b60();\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_0001f7a0(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  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(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 "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "ushort *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("Non-medium error page  [0x6]");\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("Non-medium error page  [0x6]");\n  }" { (expression_statement "puts("Non-medium error page  [0x6]");" (call_expression "puts("Non-medium error page  [0x6]")" identifier (argument_list "("Non-medium error page  [0x6]")" ( (string_literal ""Non-medium error page  [0x6]"" " string_content ") ))) ;) })) (expression_statement "puVar11 = (ushort *)(param_1 + 4);" (assignment_expression "puVar11 = (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 "local_c8 = param_2 + -4;" (assignment_expression "local_c8 = param_2 + -4" identifier = (binary_expression "param_2 + -4" identifier + number_literal)) ;) (if_statement "if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" if (parenthesized_expression "(3 < local_c8)" ( (binary_expression "3 < local_c8" number_literal < identifier) )) (compound_statement "{\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" { (expression_statement "cVar8 = *(char *)(param_3 + 9);" (assignment_expression "cVar8 = *(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      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);" do (compound_statement "{\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    }" { (expression_statement "uVar12 = (uint)*(byte *)((int)puVar11 + 3);" (assignment_expression "uVar12 = (uint)*(byte *)((int)puVar11 + 3)" identifier = (binary_expression "(uint)*(byte *)((int)puVar11 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar11 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 3)" ( (binary_expression "(int)puVar11 + 3" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar1 = uVar12 + 4;" (assignment_expression "iVar1 = uVar12 + 4" identifier = (binary_expression "uVar12 + 4" identifier + number_literal)) ;) (expression_statement "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);" (assignment_expression "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" identifier = (call_expression "(uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*puVar11 << 8 | *puVar11 >> 8)" ( (binary_expression "*puVar11 << 8 | *puVar11 >> 8" (binary_expression "*puVar11 << 8" (pointer_expression "*puVar11" * identifier) << number_literal) | (binary_expression "*puVar11 >> 8" (pointer_expression "*puVar11" * identifier) >> number_literal)) )))) ;) (if_statement "if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }" { (labeled_statement "LAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" statement_identifier : (if_statement "if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          __printf_chk(1,"  Non-medium error count");\n        }" { (expression_statement "__printf_chk(1,"  Non-medium error count");" (call_expression "__printf_chk(1,"  Non-medium error count")" identifier (argument_list "(1,"  Non-medium error count")" ( number_literal , (string_literal ""  Non-medium error count"" " string_content ") ))) ;) }) (else_clause "else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" else (if_statement "if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" if (parenthesized_expression "(uVar5 < 0x8000)" ( (binary_expression "uVar5 < 0x8000" identifier < number_literal) )) (compound_statement "{\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }" { (expression_statement "__printf_chk(1,"  Reserved [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Reserved [0x%x]",uVar5)" identifier (argument_list "(1,"  Reserved [0x%x]",uVar5)" ( number_literal , (string_literal ""  Reserved [0x%x]"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" else (compound_statement "{\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" { (expression_statement "__printf_chk(1,"  Vendor specific [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Vendor specific [0x%x]",uVar5)" identifier (argument_list "(1,"  Vendor specific [0x%x]",uVar5)" ( number_literal , (string_literal ""  Vendor specific [0x%x]"" " string_content ") , identifier ))) ;) })))))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" if (parenthesized_expression "(uVar12 - 1 < 8)" ( (binary_expression "uVar12 - 1 < 8" (binary_expression "uVar12 - 1" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" { (expression_statement "uVar5 = (uint)(byte)puVar11[2];" (assignment_expression "uVar5 = (uint)(byte)puVar11[2]" identifier = (cast_expression "(uint)(byte)puVar11[2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar11[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar11[2]" identifier [ number_literal ])))) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = (byte *)((int)puVar11 + 5);" (assignment_expression "pbVar7 = (byte *)((int)puVar11 + 5)" identifier = (cast_expression "(byte *)((int)puVar11 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 5)" ( (binary_expression "(int)puVar11 + 5" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" if (parenthesized_expression "(1 < uVar12)" ( (binary_expression "1 < uVar12" number_literal < identifier) )) (compound_statement "{\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" { (do_statement "do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));" do (compound_statement "{\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            }" { (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar9 << 8 | uVar5 >> 0x18;" (assignment_expression "uVar9 = uVar9 << 8 | uVar5 >> 0x18" identifier = (binary_expression "uVar9 << 8 | uVar5 >> 0x18" (binary_expression "uVar9 << 8" identifier << number_literal) | (binary_expression "uVar5 >> 0x18" identifier >> number_literal))) ;) (expression_statement "uVar5 = (uint)bVar2 | uVar5 << 8;" (assignment_expression "uVar5 = (uint)bVar2 | uVar5 << 8" identifier = (binary_expression "(uint)bVar2 | uVar5 << 8" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "uVar5 << 8" identifier << number_literal))) ;) }) while (parenthesized_expression "(pbVar7 != (byte *)((int)puVar11 + uVar12 + 4))" ( (binary_expression "pbVar7 != (byte *)((int)puVar11 + uVar12 + 4)" identifier != (cast_expression "(byte *)((int)puVar11 + uVar12 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + uVar12 + 4)" ( (binary_expression "(int)puVar11 + uVar12 + 4" (binary_expression "(int)puVar11 + uVar12" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) )) ;) })) })) (expression_statement "__printf_chk(1," = %llu",uVar5,uVar9);" (call_expression "__printf_chk(1," = %llu",uVar5,uVar9)" identifier (argument_list "(1," = %llu",uVar5,uVar9)" ( number_literal , (string_literal "" = %llu"" " string_content ") , identifier , identifier ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (if_statement "if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }" if (parenthesized_expression "(*(char *)(param_3 + 1) != '\0')" ( (binary_expression "*(char *)(param_3 + 1) != '\0'" (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) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }" { (expression_statement "uVar6 = FUN_00014e80();" (assignment_expression "uVar6 = FUN_00014e80()" identifier = (call_expression "FUN_00014e80()" identifier (argument_list "()" ( )))) ;) (expression_statement "__printf_chk(1,&DAT_0002d460,uVar6);" (call_expression "__printf_chk(1,&DAT_0002d460,uVar6)" identifier (argument_list "(1,&DAT_0002d460,uVar6)" ( number_literal , (pointer_expression "&DAT_0002d460" & identifier) , identifier ))) ;) })) (expression_statement "cVar8 = *(char *)(param_3 + 9);" (assignment_expression "cVar8 = *(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 (cVar8 != '\0') break;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" else (if_statement "if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" if (parenthesized_expression "(*(uint *)(param_3 + 0x34) == uVar5)" ( (binary_expression "*(uint *)(param_3 + 0x34) == uVar5" (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          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" { (if_statement "if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\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          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }" { (expression_statement "puVar13 = (ushort *)(iVar1 + (int)puVar11);" (assignment_expression "puVar13 = (ushort *)(iVar1 + (int)puVar11)" identifier = (cast_expression "(ushort *)(iVar1 + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + (int)puVar11)" ( (binary_expression "iVar1 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);" do (compound_statement "{\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          }" { (expression_statement "uVar4 = *puVar11;" (assignment_expression "uVar4 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = (ushort *)((int)puVar11 + 1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + 1)" identifier = (cast_expression "(ushort *)((int)puVar11 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 1)" ( (binary_expression "(int)puVar11 + 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "putchar((uint)(byte)uVar4);" (call_expression "putchar((uint)(byte)uVar4)" identifier (argument_list "((uint)(byte)uVar4)" ( (cast_expression "(uint)(byte)uVar4" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ))) ;) }) while (parenthesized_expression "(puVar13 != puVar11)" ( (binary_expression "puVar13 != puVar11" identifier != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "iVar10 = *(int *)(param_3 + 0x20);" (assignment_expression "iVar10 = *(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 (iVar10 == 0) goto LAB_0001f85c;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001f85c;" goto statement_identifier ;)) (if_statement "if (iVar10 != 1) {\n          iVar10 = -1;\n        }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n          iVar10 = -1;\n        }" { (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) })) (expression_statement "hex2stdout(puVar11,iVar1,iVar10);" (call_expression "hex2stdout(puVar11,iVar1,iVar10)" identifier (argument_list "(puVar11,iVar1,iVar10)" ( identifier , identifier , identifier ))) ;) (break_statement "break;" break ;) })))) (expression_statement "local_c8 = local_c8 - iVar1;" (assignment_expression "local_c8 = local_c8 - iVar1" identifier = (binary_expression "local_c8 - iVar1" identifier - identifier)) ;) (expression_statement "puVar11 = (ushort *)((int)puVar11 + iVar1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + iVar1)" identifier = (cast_expression "(ushort *)((int)puVar11 + iVar1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + iVar1)" ( (binary_expression "(int)puVar11 + iVar1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(3 < local_c8)" ( (binary_expression "3 < local_c8" number_literal < identifier) )) ;) })) (if_statement "if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00024b60();\n  }" if (parenthesized_expression "(iVar3 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* 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_non_medium_error_page(uint8_t *resp,int len,opts_t *op)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  char *pcVar6;\n  byte *pbVar7;\n  int maxoutlen;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  char str [128];\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(resp + 4);\n  local_c8 = len + -4;\n  if (3 < local_c8) {\n    cVar8 = op->filter_given;\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(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_non_medium_error_page(uint8_t *resp,int len,opts_t *op)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  char *pcVar6;\n  byte *pbVar7;\n  int maxoutlen;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  char str [128];\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(resp + 4);\n  local_c8 = len + -4;\n  if (3 < local_c8) {\n    cVar8 = op->filter_given;\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(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_non_medium_error_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  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  char *pcVar6;\n  byte *pbVar7;\n  int maxoutlen;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  char str [128];\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(resp + 4);\n  local_c8 = len + -4;\n  if (3 < local_c8) {\n    cVar8 = op->filter_given;\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(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 "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int maxoutlen;" primitive_type identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "ushort *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "char str [128];" primitive_type (array_declarator "str [128]" identifier [ number_literal ]) ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {\n    puts("Non-medium error page  [0x6]");\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("Non-medium error page  [0x6]");\n  }" { (expression_statement "puts("Non-medium error page  [0x6]");" (call_expression "puts("Non-medium error page  [0x6]")" identifier (argument_list "("Non-medium error page  [0x6]")" ( (string_literal ""Non-medium error page  [0x6]"" " string_content ") ))) ;) })) (expression_statement "puVar11 = (ushort *)(resp + 4);" (assignment_expression "puVar11 = (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 "local_c8 = len + -4;" (assignment_expression "local_c8 = len + -4" identifier = (binary_expression "len + -4" identifier + number_literal)) ;) (if_statement "if (3 < local_c8) {\n    cVar8 = op->filter_given;\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" if (parenthesized_expression "(3 < local_c8)" ( (binary_expression "3 < local_c8" number_literal < identifier) )) (compound_statement "{\n    cVar8 = op->filter_given;\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" { (expression_statement "cVar8 = op->filter_given;" (assignment_expression "cVar8 = op->filter_given" identifier = (field_expression "op->filter_given" identifier -> field_identifier)) ;) (do_statement "do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);" do (compound_statement "{\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    }" { (expression_statement "uVar12 = (uint)*(byte *)((int)puVar11 + 3);" (assignment_expression "uVar12 = (uint)*(byte *)((int)puVar11 + 3)" identifier = (binary_expression "(uint)*(byte *)((int)puVar11 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar11 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 3)" ( (binary_expression "(int)puVar11 + 3" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar1 = uVar12 + 4;" (assignment_expression "iVar1 = uVar12 + 4" identifier = (binary_expression "uVar12 + 4" identifier + number_literal)) ;) (expression_statement "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);" (assignment_expression "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" identifier = (call_expression "(uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*puVar11 << 8 | *puVar11 >> 8)" ( (binary_expression "*puVar11 << 8 | *puVar11 >> 8" (binary_expression "*puVar11 << 8" (pointer_expression "*puVar11" * identifier) << number_literal) | (binary_expression "*puVar11 >> 8" (pointer_expression "*puVar11" * identifier) >> number_literal)) )))) ;) (if_statement "if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }\n      else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }\n        cVar8 = op->filter_given;\n        if ((_Bool)cVar8 != false) break;\n      }" { (labeled_statement "LAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" statement_identifier : (if_statement "if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          __printf_chk(1,"  Non-medium error count");\n        }" { (expression_statement "__printf_chk(1,"  Non-medium error count");" (call_expression "__printf_chk(1,"  Non-medium error count")" identifier (argument_list "(1,"  Non-medium error count")" ( number_literal , (string_literal ""  Non-medium error count"" " string_content ") ))) ;) }) (else_clause "else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" else (if_statement "if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" if (parenthesized_expression "(uVar5 < 0x8000)" ( (binary_expression "uVar5 < 0x8000" identifier < number_literal) )) (compound_statement "{\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }" { (expression_statement "__printf_chk(1,"  Reserved [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Reserved [0x%x]",uVar5)" identifier (argument_list "(1,"  Reserved [0x%x]",uVar5)" ( number_literal , (string_literal ""  Reserved [0x%x]"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" else (compound_statement "{\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" { (expression_statement "__printf_chk(1,"  Vendor specific [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Vendor specific [0x%x]",uVar5)" identifier (argument_list "(1,"  Vendor specific [0x%x]",uVar5)" ( number_literal , (string_literal ""  Vendor specific [0x%x]"" " string_content ") , identifier ))) ;) })))))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" if (parenthesized_expression "(uVar12 - 1 < 8)" ( (binary_expression "uVar12 - 1 < 8" (binary_expression "uVar12 - 1" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" { (expression_statement "uVar5 = (uint)(byte)puVar11[2];" (assignment_expression "uVar5 = (uint)(byte)puVar11[2]" identifier = (cast_expression "(uint)(byte)puVar11[2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar11[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar11[2]" identifier [ number_literal ])))) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = (byte *)((int)puVar11 + 5);" (assignment_expression "pbVar7 = (byte *)((int)puVar11 + 5)" identifier = (cast_expression "(byte *)((int)puVar11 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 5)" ( (binary_expression "(int)puVar11 + 5" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" if (parenthesized_expression "(1 < uVar12)" ( (binary_expression "1 < uVar12" number_literal < identifier) )) (compound_statement "{\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" { (do_statement "do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));" do (compound_statement "{\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            }" { (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar9 << 8 | uVar5 >> 0x18;" (assignment_expression "uVar9 = uVar9 << 8 | uVar5 >> 0x18" identifier = (binary_expression "uVar9 << 8 | uVar5 >> 0x18" (binary_expression "uVar9 << 8" identifier << number_literal) | (binary_expression "uVar5 >> 0x18" identifier >> number_literal))) ;) (expression_statement "uVar5 = (uint)bVar2 | uVar5 << 8;" (assignment_expression "uVar5 = (uint)bVar2 | uVar5 << 8" identifier = (binary_expression "(uint)bVar2 | uVar5 << 8" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "uVar5 << 8" identifier << number_literal))) ;) }) while (parenthesized_expression "(pbVar7 != (byte *)((int)puVar11 + uVar12 + 4))" ( (binary_expression "pbVar7 != (byte *)((int)puVar11 + uVar12 + 4)" identifier != (cast_expression "(byte *)((int)puVar11 + uVar12 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + uVar12 + 4)" ( (binary_expression "(int)puVar11 + uVar12 + 4" (binary_expression "(int)puVar11 + uVar12" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) )) ;) })) })) (expression_statement "__printf_chk(1," = %llu",uVar5,uVar9);" (call_expression "__printf_chk(1," = %llu",uVar5,uVar9)" identifier (argument_list "(1," = %llu",uVar5,uVar9)" ( number_literal , (string_literal "" = %llu"" " string_content ") , identifier , identifier ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (if_statement "if (op->do_pcb != false) {\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }" if (parenthesized_expression "(op->do_pcb != false)" ( (binary_expression "op->do_pcb != false" (field_expression "op->do_pcb" identifier -> field_identifier) != false) )) (compound_statement "{\n          pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);\n          __printf_chk(1,&DAT_0002d460,pcVar6);\n        }" { (expression_statement "pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen);" (assignment_expression "pcVar6 = get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen)" identifier = (call_expression "get_pcb_str((uint)(byte)puVar11[1],str,maxoutlen)" identifier (argument_list "((uint)(byte)puVar11[1],str,maxoutlen)" ( (cast_expression "(uint)(byte)puVar11[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar11[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) , identifier , identifier )))) ;) (expression_statement "__printf_chk(1,&DAT_0002d460,pcVar6);" (call_expression "__printf_chk(1,&DAT_0002d460,pcVar6)" identifier (argument_list "(1,&DAT_0002d460,pcVar6)" ( number_literal , (pointer_expression "&DAT_0002d460" & identifier) , identifier ))) ;) })) (expression_statement "cVar8 = op->filter_given;" (assignment_expression "cVar8 = op->filter_given" identifier = (field_expression "op->filter_given" identifier -> field_identifier)) ;) (if_statement "if ((_Bool)cVar8 != false) break;" if (parenthesized_expression "((_Bool)cVar8 != false)" ( (binary_expression "(_Bool)cVar8 != false" (cast_expression "(_Bool)cVar8" ( (type_descriptor "_Bool" type_identifier) ) identifier) != false) )) (break_statement "break;" break ;)) }) (else_clause "else if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" else (if_statement "if (op->filter == uVar5) {\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" if (parenthesized_expression "(op->filter == uVar5)" ( (binary_expression "op->filter == uVar5" (field_expression "op->filter" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = op->do_hex;\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" { (if_statement "if (op->do_raw != false) {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\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          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }" { (expression_statement "puVar13 = (ushort *)(iVar1 + (int)puVar11);" (assignment_expression "puVar13 = (ushort *)(iVar1 + (int)puVar11)" identifier = (cast_expression "(ushort *)(iVar1 + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + (int)puVar11)" ( (binary_expression "iVar1 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);" do (compound_statement "{\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          }" { (expression_statement "uVar4 = *puVar11;" (assignment_expression "uVar4 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = (ushort *)((int)puVar11 + 1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + 1)" identifier = (cast_expression "(ushort *)((int)puVar11 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 1)" ( (binary_expression "(int)puVar11 + 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "putchar((uint)(byte)uVar4);" (call_expression "putchar((uint)(byte)uVar4)" identifier (argument_list "((uint)(byte)uVar4)" ( (cast_expression "(uint)(byte)uVar4" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ))) ;) }) while (parenthesized_expression "(puVar13 != puVar11)" ( (binary_expression "puVar13 != puVar11" identifier != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "iVar10 = op->do_hex;" (assignment_expression "iVar10 = op->do_hex" identifier = (field_expression "op->do_hex" identifier -> field_identifier)) ;) (if_statement "if (iVar10 == 0) goto LAB_0001f85c;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001f85c;" goto statement_identifier ;)) (if_statement "if (iVar10 != 1) {\n          iVar10 = -1;\n        }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n          iVar10 = -1;\n        }" { (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) })) (expression_statement "hex2stdout(puVar11,iVar1,iVar10);" (call_expression "hex2stdout(puVar11,iVar1,iVar10)" identifier (argument_list "(puVar11,iVar1,iVar10)" ( identifier , identifier , identifier ))) ;) (break_statement "break;" break ;) })))) (expression_statement "local_c8 = local_c8 - iVar1;" (assignment_expression "local_c8 = local_c8 - iVar1" identifier = (binary_expression "local_c8 - iVar1" identifier - identifier)) ;) (expression_statement "puVar11 = (ushort *)((int)puVar11 + iVar1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + iVar1)" identifier = (cast_expression "(ushort *)((int)puVar11 + iVar1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + iVar1)" ( (binary_expression "(int)puVar11 + iVar1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(3 < local_c8)" ( (binary_expression "3 < local_c8" number_literal < identifier) )) ;) })) (if_statement "if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar3 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* 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_0001f7a0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_0001f7a0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_0001f7a0(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  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "ushort *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(param_3 + 0x30) != 0) ||\n     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {\n    puts("Non-medium error page  [0x6]");\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("Non-medium error page  [0x6]");\n  }" { (expression_statement "puts("Non-medium error page  [0x6]");" (call_expression "puts("Non-medium error page  [0x6]")" identifier (argument_list "("Non-medium error page  [0x6]")" ( (string_literal ""Non-medium error page  [0x6]"" " string_content ") ))) ;) })) (expression_statement "puVar11 = (ushort *)(param_1 + 4);" (assignment_expression "puVar11 = (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 "local_c8 = param_2 + -4;" (assignment_expression "local_c8 = param_2 + -4" identifier = (binary_expression "param_2 + -4" identifier + number_literal)) ;) (if_statement "if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" if (parenthesized_expression "(3 < local_c8)" ( (binary_expression "3 < local_c8" number_literal < identifier) )) (compound_statement "{\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" { (expression_statement "cVar8 = *(char *)(param_3 + 9);" (assignment_expression "cVar8 = *(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      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);" do (compound_statement "{\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    }" { (expression_statement "uVar12 = (uint)*(byte *)((int)puVar11 + 3);" (assignment_expression "uVar12 = (uint)*(byte *)((int)puVar11 + 3)" identifier = (binary_expression "(uint)*(byte *)((int)puVar11 + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar11 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 3)" ( (binary_expression "(int)puVar11 + 3" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar1 = uVar12 + 4;" (assignment_expression "iVar1 = uVar12 + 4" identifier = (binary_expression "uVar12 + 4" identifier + number_literal)) ;) (expression_statement "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);" (assignment_expression "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" identifier = (call_expression "(uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ushort)" ( identifier ))) (argument_list "(*puVar11 << 8 | *puVar11 >> 8)" ( (binary_expression "*puVar11 << 8 | *puVar11 >> 8" (binary_expression "*puVar11 << 8" (pointer_expression "*puVar11" * identifier) << number_literal) | (binary_expression "*puVar11 >> 8" (pointer_expression "*puVar11" * identifier) >> number_literal)) )))) ;) (if_statement "if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" if (parenthesized_expression "(cVar8 == '\0')" ( (binary_expression "cVar8 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }" { (labeled_statement "LAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" statement_identifier : (if_statement "if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          __printf_chk(1,"  Non-medium error count");\n        }" { (expression_statement "__printf_chk(1,"  Non-medium error count");" (call_expression "__printf_chk(1,"  Non-medium error count")" identifier (argument_list "(1,"  Non-medium error count")" ( number_literal , (string_literal ""  Non-medium error count"" " string_content ") ))) ;) }) (else_clause "else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" else (if_statement "if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" if (parenthesized_expression "(uVar5 < 0x8000)" ( (binary_expression "uVar5 < 0x8000" identifier < number_literal) )) (compound_statement "{\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }" { (expression_statement "__printf_chk(1,"  Reserved [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Reserved [0x%x]",uVar5)" identifier (argument_list "(1,"  Reserved [0x%x]",uVar5)" ( number_literal , (string_literal ""  Reserved [0x%x]"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" else (compound_statement "{\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" { (expression_statement "__printf_chk(1,"  Vendor specific [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Vendor specific [0x%x]",uVar5)" identifier (argument_list "(1,"  Vendor specific [0x%x]",uVar5)" ( number_literal , (string_literal ""  Vendor specific [0x%x]"" " string_content ") , identifier ))) ;) })))))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" if (parenthesized_expression "(uVar12 - 1 < 8)" ( (binary_expression "uVar12 - 1 < 8" (binary_expression "uVar12 - 1" identifier - number_literal) < number_literal) )) (compound_statement "{\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" { (expression_statement "uVar5 = (uint)(byte)puVar11[2];" (assignment_expression "uVar5 = (uint)(byte)puVar11[2]" identifier = (cast_expression "(uint)(byte)puVar11[2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar11[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar11[2]" identifier [ number_literal ])))) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = (byte *)((int)puVar11 + 5);" (assignment_expression "pbVar7 = (byte *)((int)puVar11 + 5)" identifier = (cast_expression "(byte *)((int)puVar11 + 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 5)" ( (binary_expression "(int)puVar11 + 5" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" if (parenthesized_expression "(1 < uVar12)" ( (binary_expression "1 < uVar12" number_literal < identifier) )) (compound_statement "{\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" { (do_statement "do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));" do (compound_statement "{\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            }" { (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar9 << 8 | uVar5 >> 0x18;" (assignment_expression "uVar9 = uVar9 << 8 | uVar5 >> 0x18" identifier = (binary_expression "uVar9 << 8 | uVar5 >> 0x18" (binary_expression "uVar9 << 8" identifier << number_literal) | (binary_expression "uVar5 >> 0x18" identifier >> number_literal))) ;) (expression_statement "uVar5 = (uint)bVar2 | uVar5 << 8;" (assignment_expression "uVar5 = (uint)bVar2 | uVar5 << 8" identifier = (binary_expression "(uint)bVar2 | uVar5 << 8" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) | (binary_expression "uVar5 << 8" identifier << number_literal))) ;) }) while (parenthesized_expression "(pbVar7 != (byte *)((int)puVar11 + uVar12 + 4))" ( (binary_expression "pbVar7 != (byte *)((int)puVar11 + uVar12 + 4)" identifier != (cast_expression "(byte *)((int)puVar11 + uVar12 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + uVar12 + 4)" ( (binary_expression "(int)puVar11 + uVar12 + 4" (binary_expression "(int)puVar11 + uVar12" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) )) ;) })) })) (expression_statement "__printf_chk(1," = %llu",uVar5,uVar9);" (call_expression "__printf_chk(1," = %llu",uVar5,uVar9)" identifier (argument_list "(1," = %llu",uVar5,uVar9)" ( number_literal , (string_literal "" = %llu"" " string_content ") , identifier , identifier ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (if_statement "if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }" if (parenthesized_expression "(*(char *)(param_3 + 1) != '\0')" ( (binary_expression "*(char *)(param_3 + 1) != '\0'" (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) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }" { (expression_statement "uVar6 = FUN_00014e80();" (assignment_expression "uVar6 = FUN_00014e80()" identifier = (call_expression "FUN_00014e80()" identifier (argument_list "()" ( )))) ;) (expression_statement "__printf_chk(1,&DAT_0002d460,uVar6);" (call_expression "__printf_chk(1,&DAT_0002d460,uVar6)" identifier (argument_list "(1,&DAT_0002d460,uVar6)" ( number_literal , (pointer_expression "&DAT_0002d460" & identifier) , identifier ))) ;) })) (expression_statement "cVar8 = *(char *)(param_3 + 9);" (assignment_expression "cVar8 = *(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 (cVar8 != '\0') break;" if (parenthesized_expression "(cVar8 != '\0')" ( (binary_expression "cVar8 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" else (if_statement "if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" if (parenthesized_expression "(*(uint *)(param_3 + 0x34) == uVar5)" ( (binary_expression "*(uint *)(param_3 + 0x34) == uVar5" (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          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" { (if_statement "if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\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          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }" { (expression_statement "puVar13 = (ushort *)(iVar1 + (int)puVar11);" (assignment_expression "puVar13 = (ushort *)(iVar1 + (int)puVar11)" identifier = (cast_expression "(ushort *)(iVar1 + (int)puVar11)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + (int)puVar11)" ( (binary_expression "iVar1 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (do_statement "do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);" do (compound_statement "{\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          }" { (expression_statement "uVar4 = *puVar11;" (assignment_expression "uVar4 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = (ushort *)((int)puVar11 + 1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + 1)" identifier = (cast_expression "(ushort *)((int)puVar11 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 1)" ( (binary_expression "(int)puVar11 + 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "putchar((uint)(byte)uVar4);" (call_expression "putchar((uint)(byte)uVar4)" identifier (argument_list "((uint)(byte)uVar4)" ( (cast_expression "(uint)(byte)uVar4" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)uVar4" ( (type_descriptor "byte" type_identifier) ) identifier)) ))) ;) }) while (parenthesized_expression "(puVar13 != puVar11)" ( (binary_expression "puVar13 != puVar11" identifier != identifier) )) ;) (break_statement "break;" break ;) })) (expression_statement "iVar10 = *(int *)(param_3 + 0x20);" (assignment_expression "iVar10 = *(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 (iVar10 == 0) goto LAB_0001f85c;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001f85c;" goto statement_identifier ;)) (if_statement "if (iVar10 != 1) {\n          iVar10 = -1;\n        }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n          iVar10 = -1;\n        }" { (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) })) (expression_statement "hex2stdout(puVar11,iVar1,iVar10);" (call_expression "hex2stdout(puVar11,iVar1,iVar10)" identifier (argument_list "(puVar11,iVar1,iVar10)" ( identifier , identifier , identifier ))) ;) (break_statement "break;" break ;) })))) (expression_statement "local_c8 = local_c8 - iVar1;" (assignment_expression "local_c8 = local_c8 - iVar1" identifier = (binary_expression "local_c8 - iVar1" identifier - identifier)) ;) (expression_statement "puVar11 = (ushort *)((int)puVar11 + iVar1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + iVar1)" identifier = (cast_expression "(ushort *)((int)puVar11 + iVar1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + iVar1)" ( (binary_expression "(int)puVar11 + iVar1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(3 < local_c8)" ( (binary_expression "3 < local_c8" number_literal < identifier) )) ;) })) (if_statement "if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }" if (parenthesized_expression "(iVar3 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 ;) (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 < 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 (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT ))) ;) })))))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (binary_expression IDENT << LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) )) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (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 = (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 < 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_0001f7a0(int param_1,int param_2,int param_3)\n\n{\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_0001f7a0(int param_1,int param_2,int param_3)" (identifier "FUN_0001f7a0") (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  byte bVar2;\n  int iVar3;\n  ushort uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  byte *pbVar7;\n  char cVar8;\n  uint uVar9;\n  int iVar10;\n  ushort *puVar11;\n  uint uVar12;\n  ushort *puVar13;\n  int in_GS_OFFSET;\n  int local_c8;\n  \n  iVar3 = *(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("Non-medium error page  [0x6]");\n  }\n  puVar11 = (ushort *)(param_1 + 4);\n  local_c8 = param_2 + -4;\n  if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }\n  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "ushort uVar4;" (type_identifier "ushort") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "char cVar8;" (primitive_type "char") (identifier "cVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "ushort *puVar11;" (type_identifier "ushort") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "ushort *puVar13;" (type_identifier "ushort") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int local_c8;" (primitive_type "int") (identifier "local_c8") (; ";")) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar3") (= "=") (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("Non-medium error page  [0x6]");\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("Non-medium error page  [0x6]");\n  }" ({ "{") (expression_statement "puts("Non-medium error page  [0x6]");" (call_expression "puts("Non-medium error page  [0x6]")" (identifier "puts") (argument_list "("Non-medium error page  [0x6]")" (( "(") (string_literal ""Non-medium error page  [0x6]"" (" """) (string_content "Non-medium error page  [0x6]") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar11 = (ushort *)(param_1 + 4);" (assignment_expression "puVar11 = (ushort *)(param_1 + 4)" (identifier "puVar11") (= "=") (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 "local_c8 = param_2 + -4;" (assignment_expression "local_c8 = param_2 + -4" (identifier "local_c8") (= "=") (binary_expression "param_2 + -4" (identifier "param_2") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (3 < local_c8) {\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" (if "if") (parenthesized_expression "(3 < local_c8)" (( "(") (binary_expression "3 < local_c8" (number_literal "3") (< "<") (identifier "local_c8")) () ")")) (compound_statement "{\n    cVar8 = *(char *)(param_3 + 9);\n    do {\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);\n  }" ({ "{") (expression_statement "cVar8 = *(char *)(param_3 + 9);" (assignment_expression "cVar8 = *(char *)(param_3 + 9)" (identifier "cVar8") (= "=") (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      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    } while (3 < local_c8);" (do "do") (compound_statement "{\n      uVar12 = (uint)*(byte *)((int)puVar11 + 3);\n      iVar1 = uVar12 + 4;\n      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);\n      if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }\n      local_c8 = local_c8 - iVar1;\n      puVar11 = (ushort *)((int)puVar11 + iVar1);\n    }" ({ "{") (expression_statement "uVar12 = (uint)*(byte *)((int)puVar11 + 3);" (assignment_expression "uVar12 = (uint)*(byte *)((int)puVar11 + 3)" (identifier "uVar12") (= "=") (binary_expression "(uint)*(byte *)((int)puVar11 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar11 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + 3)" (( "(") (binary_expression "(int)puVar11 + 3" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "iVar1 = uVar12 + 4;" (assignment_expression "iVar1 = uVar12 + 4" (identifier "iVar1") (= "=") (binary_expression "uVar12 + 4" (identifier "uVar12") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);" (assignment_expression "uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" (identifier "uVar5") (= "=") (call_expression "(uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8)" (call_expression "(uint)(ushort)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(ushort)" (( "(") (identifier "ushort") () ")"))) (argument_list "(*puVar11 << 8 | *puVar11 >> 8)" (( "(") (binary_expression "*puVar11 << 8 | *puVar11 >> 8" (binary_expression "*puVar11 << 8" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "*puVar11 >> 8" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (>> ">>") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if (cVar8 == '\0') {\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }\n      else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" (if "if") (parenthesized_expression "(cVar8 == '\0')" (( "(") (binary_expression "cVar8 == '\0'" (identifier "cVar8") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }\n        uVar5 = 0;\n        uVar9 = 0;\n        if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }\n        __printf_chk(1," = %llu",uVar5,uVar9);\n        putchar(10);\n        if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }\n        cVar8 = *(char *)(param_3 + 9);\n        if (cVar8 != '\0') break;\n      }" ({ "{") (labeled_statement "LAB_0001f85c:\n        if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" (statement_identifier "LAB_0001f85c") (: ":") (if_statement "if (uVar5 == 0) {\n          __printf_chk(1,"  Non-medium error count");\n        }\n        else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          __printf_chk(1,"  Non-medium error count");\n        }" ({ "{") (expression_statement "__printf_chk(1,"  Non-medium error count");" (call_expression "__printf_chk(1,"  Non-medium error count")" (identifier "__printf_chk") (argument_list "(1,"  Non-medium error count")" (( "(") (number_literal "1") (, ",") (string_literal ""  Non-medium error count"" (" """) (string_content "  Non-medium error count") (" """)) () ")"))) (; ";")) (} "}")) (else_clause "else if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" (else "else") (if_statement "if (uVar5 < 0x8000) {\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }\n        else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" (if "if") (parenthesized_expression "(uVar5 < 0x8000)" (( "(") (binary_expression "uVar5 < 0x8000" (identifier "uVar5") (< "<") (number_literal "0x8000")) () ")")) (compound_statement "{\n          __printf_chk(1,"  Reserved [0x%x]",uVar5);\n        }" ({ "{") (expression_statement "__printf_chk(1,"  Reserved [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Reserved [0x%x]",uVar5)" (identifier "__printf_chk") (argument_list "(1,"  Reserved [0x%x]",uVar5)" (( "(") (number_literal "1") (, ",") (string_literal ""  Reserved [0x%x]"" (" """) (string_content "  Reserved [0x%x]") (" """)) (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" (else "else") (compound_statement "{\n          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);\n        }" ({ "{") (expression_statement "__printf_chk(1,"  Vendor specific [0x%x]",uVar5);" (call_expression "__printf_chk(1,"  Vendor specific [0x%x]",uVar5)" (identifier "__printf_chk") (argument_list "(1,"  Vendor specific [0x%x]",uVar5)" (( "(") (number_literal "1") (, ",") (string_literal ""  Vendor specific [0x%x]"" (" """) (string_content "  Vendor specific [0x%x]") (" """)) (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}"))))))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar12 - 1 < 8) {\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" (if "if") (parenthesized_expression "(uVar12 - 1 < 8)" (( "(") (binary_expression "uVar12 - 1 < 8" (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1")) (< "<") (number_literal "8")) () ")")) (compound_statement "{\n          uVar5 = (uint)(byte)puVar11[2];\n          uVar9 = 0;\n          pbVar7 = (byte *)((int)puVar11 + 5);\n          if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }\n        }" ({ "{") (expression_statement "uVar5 = (uint)(byte)puVar11[2];" (assignment_expression "uVar5 = (uint)(byte)puVar11[2]" (identifier "uVar5") (= "=") (cast_expression "(uint)(byte)puVar11[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar11[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = (byte *)((int)puVar11 + 5);" (assignment_expression "pbVar7 = (byte *)((int)puVar11 + 5)" (identifier "pbVar7") (= "=") (cast_expression "(byte *)((int)puVar11 + 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + 5)" (( "(") (binary_expression "(int)puVar11 + 5" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (number_literal "5")) () ")")))) (; ";")) (if_statement "if (1 < uVar12) {\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" (if "if") (parenthesized_expression "(1 < uVar12)" (( "(") (binary_expression "1 < uVar12" (number_literal "1") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n            do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));\n          }" ({ "{") (do_statement "do {\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));" (do "do") (compound_statement "{\n              bVar2 = *pbVar7;\n              pbVar7 = pbVar7 + 1;\n              uVar9 = uVar9 << 8 | uVar5 >> 0x18;\n              uVar5 = (uint)bVar2 | uVar5 << 8;\n            }" ({ "{") (expression_statement "bVar2 = *pbVar7;" (assignment_expression "bVar2 = *pbVar7" (identifier "bVar2") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar9 = uVar9 << 8 | uVar5 >> 0x18;" (assignment_expression "uVar9 = uVar9 << 8 | uVar5 >> 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar9 << 8 | uVar5 >> 0x18" (binary_expression "uVar9 << 8" (identifier "uVar9") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar5 >> 0x18" (identifier "uVar5") (>> ">>") (number_literal "0x18")))) (; ";")) (expression_statement "uVar5 = (uint)bVar2 | uVar5 << 8;" (assignment_expression "uVar5 = (uint)bVar2 | uVar5 << 8" (identifier "uVar5") (= "=") (binary_expression "(uint)bVar2 | uVar5 << 8" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (| "|") (binary_expression "uVar5 << 8" (identifier "uVar5") (<< "<<") (number_literal "8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar7 != (byte *)((int)puVar11 + uVar12 + 4))" (( "(") (binary_expression "pbVar7 != (byte *)((int)puVar11 + uVar12 + 4)" (identifier "pbVar7") (!= "!=") (cast_expression "(byte *)((int)puVar11 + uVar12 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + uVar12 + 4)" (( "(") (binary_expression "(int)puVar11 + uVar12 + 4" (binary_expression "(int)puVar11 + uVar12" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (identifier "uVar12")) (+ "+") (number_literal "4")) () ")")))) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "__printf_chk(1," = %llu",uVar5,uVar9);" (call_expression "__printf_chk(1," = %llu",uVar5,uVar9)" (identifier "__printf_chk") (argument_list "(1," = %llu",uVar5,uVar9)" (( "(") (number_literal "1") (, ",") (string_literal "" = %llu"" (" """) (string_content " = %llu") (" """)) (, ",") (identifier "uVar5") (, ",") (identifier "uVar9") () ")"))) (; ";")) (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (if_statement "if (*(char *)(param_3 + 1) != '\0') {\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }" (if "if") (parenthesized_expression "(*(char *)(param_3 + 1) != '\0')" (( "(") (binary_expression "*(char *)(param_3 + 1) != '\0'" (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")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar6 = FUN_00014e80();\n          __printf_chk(1,&DAT_0002d460,uVar6);\n        }" ({ "{") (expression_statement "uVar6 = FUN_00014e80();" (assignment_expression "uVar6 = FUN_00014e80()" (identifier "uVar6") (= "=") (call_expression "FUN_00014e80()" (identifier "FUN_00014e80") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "__printf_chk(1,&DAT_0002d460,uVar6);" (call_expression "__printf_chk(1,&DAT_0002d460,uVar6)" (identifier "__printf_chk") (argument_list "(1,&DAT_0002d460,uVar6)" (( "(") (number_literal "1") (, ",") (pointer_expression "&DAT_0002d460" (& "&") (identifier "DAT_0002d460")) (, ",") (identifier "uVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "cVar8 = *(char *)(param_3 + 9);" (assignment_expression "cVar8 = *(char *)(param_3 + 9)" (identifier "cVar8") (= "=") (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 (cVar8 != '\0') break;" (if "if") (parenthesized_expression "(cVar8 != '\0')" (( "(") (binary_expression "cVar8 != '\0'" (identifier "cVar8") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" (else "else") (if_statement "if (*(uint *)(param_3 + 0x34) == uVar5) {\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_3 + 0x34) == uVar5)" (( "(") (binary_expression "*(uint *)(param_3 + 0x34) == uVar5" (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 "uVar5")) () ")")) (compound_statement "{\n        if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }\n        iVar10 = *(int *)(param_3 + 0x20);\n        if (iVar10 == 0) goto LAB_0001f85c;\n        if (iVar10 != 1) {\n          iVar10 = -1;\n        }\n        hex2stdout(puVar11,iVar1,iVar10);\n        break;\n      }" ({ "{") (if_statement "if (*(char *)(param_3 + 3) != '\0') {\n          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\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          puVar13 = (ushort *)(iVar1 + (int)puVar11);\n          do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);\n          break;\n        }" ({ "{") (expression_statement "puVar13 = (ushort *)(iVar1 + (int)puVar11);" (assignment_expression "puVar13 = (ushort *)(iVar1 + (int)puVar11)" (identifier "puVar13") (= "=") (cast_expression "(ushort *)(iVar1 + (int)puVar11)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + (int)puVar11)" (( "(") (binary_expression "iVar1 + (int)puVar11" (identifier "iVar1") (+ "+") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11"))) () ")")))) (; ";")) (do_statement "do {\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          } while (puVar13 != puVar11);" (do "do") (compound_statement "{\n            uVar4 = *puVar11;\n            puVar11 = (ushort *)((int)puVar11 + 1);\n            putchar((uint)(byte)uVar4);\n          }" ({ "{") (expression_statement "uVar4 = *puVar11;" (assignment_expression "uVar4 = *puVar11" (identifier "uVar4") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = (ushort *)((int)puVar11 + 1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + 1)" (identifier "puVar11") (= "=") (cast_expression "(ushort *)((int)puVar11 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + 1)" (( "(") (binary_expression "(int)puVar11 + 1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "putchar((uint)(byte)uVar4);" (call_expression "putchar((uint)(byte)uVar4)" (identifier "putchar") (argument_list "((uint)(byte)uVar4)" (( "(") (cast_expression "(uint)(byte)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)uVar4" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar4"))) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar13 != puVar11)" (( "(") (binary_expression "puVar13 != puVar11" (identifier "puVar13") (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar10 = *(int *)(param_3 + 0x20);" (assignment_expression "iVar10 = *(int *)(param_3 + 0x20)" (identifier "iVar10") (= "=") (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 (iVar10 == 0) goto LAB_0001f85c;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001f85c;" (goto "goto") (statement_identifier "LAB_0001f85c") (; ";"))) (if_statement "if (iVar10 != 1) {\n          iVar10 = -1;\n        }" (if "if") (parenthesized_expression "(iVar10 != 1)" (( "(") (binary_expression "iVar10 != 1" (identifier "iVar10") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          iVar10 = -1;\n        }" ({ "{") (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" (identifier "iVar10") (= "=") (number_literal "-1")) (; ";")) (} "}"))) (expression_statement "hex2stdout(puVar11,iVar1,iVar10);" (call_expression "hex2stdout(puVar11,iVar1,iVar10)" (identifier "hex2stdout") (argument_list "(puVar11,iVar1,iVar10)" (( "(") (identifier "puVar11") (, ",") (identifier "iVar1") (, ",") (identifier "iVar10") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))))) (expression_statement "local_c8 = local_c8 - iVar1;" (assignment_expression "local_c8 = local_c8 - iVar1" (identifier "local_c8") (= "=") (binary_expression "local_c8 - iVar1" (identifier "local_c8") (- "-") (identifier "iVar1"))) (; ";")) (expression_statement "puVar11 = (ushort *)((int)puVar11 + iVar1);" (assignment_expression "puVar11 = (ushort *)((int)puVar11 + iVar1)" (identifier "puVar11") (= "=") (cast_expression "(ushort *)((int)puVar11 + iVar1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + iVar1)" (( "(") (binary_expression "(int)puVar11 + iVar1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (identifier "iVar1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(3 < local_c8)" (( "(") (binary_expression "3 < local_c8" (number_literal "3") (< "<") (identifier "local_c8")) () ")")) (; ";")) (} "}"))) (if_statement "if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00024b60();\n  }" (if "if") (parenthesized_expression "(iVar3 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar3 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar3") (!= "!=") (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_14;
  type_3 bVar2;
  int var_19;
  type_4 uVar4;
  type_5 var_8;
  char *pcVar6;
  type_3 *var_10;
  int maxoutlen;
  char var_7;
  type_5 var_11;
  int var_17;
  type_4 *var_16;
  type_5 var_6;
  type_4 *var_15;
  int var_1;
  int var_5;
  char str [128];
  
  var_19 = *(int *)(var_1 + 0x14);
  if ((op->verbose != 0) || ((op->do_raw == false && (op->do_hex == 0)))) {
    var_2("Non-medium error page  [0x6]");
  }
  var_16 = (type_4 *)(var_3 + 4);
  var_5 = var_4 + -4;
  if (3 < var_5) {
    var_7 = op->filter_given;
    do {
      var_6 = (type_5)*(type_3 *)((int)var_16 + 3);
      var_14 = var_6 + 4;
      var_8 = (type_5)(type_4)(*var_16 << 8 | *var_16 >> 8);
      if (var_7 == '\0') {
LAB_0001f85c:
        if (var_8 == 0) {
          var_9(1,"  Non-medium error count");
        }
        else if (var_8 < 0x8000) {
          var_9(1,"  Reserved [0x%x]",var_8);
        }
        else {
          var_9(1,"  Vendor specific [0x%x]",var_8);
        }
        var_8 = 0;
        var_11 = 0;
        if (var_6 - 1 < 8) {
          var_8 = (type_5)(type_3)var_16[2];
          var_11 = 0;
          var_10 = (type_3 *)((int)var_16 + 5);
          if (1 < var_6) {
            do {
              bVar2 = *var_10;
              var_10 = var_10 + 1;
              var_11 = var_11 << 8 | var_8 >> 0x18;
              var_8 = (type_5)bVar2 | var_8 << 8;
            } while (var_10 != (type_3 *)((int)var_16 + var_6 + 4));
          }
        }
        var_9(1," = %llu",var_8,var_11);
        var_12(10);
        if (op->do_pcb != false) {
          pcVar6 = var_13((type_5)(type_3)var_16[1],str,maxoutlen);
          var_9(1,&DAT_0002d460,pcVar6);
        }
        var_7 = op->filter_given;
        if ((type_1)var_7 != false) break;
      }
      else if (op->filter == var_8) {
        if (op->do_raw != false) {
          var_15 = (type_4 *)(var_14 + (int)var_16);
          do {
            uVar4 = *var_16;
            var_16 = (type_4 *)((int)var_16 + 1);
            var_12((type_5)(type_3)uVar4);
          } while (var_15 != var_16);
          break;
        }
        var_17 = op->do_hex;
        if (var_17 == 0) goto LAB_0001f85c;
        if (var_17 != 1) {
          var_17 = -1;
        }
        var_18(var_16,var_14,var_17);
        break;
      }
      var_5 = var_5 - var_14;
      var_16 = (type_4 *)((int)var_16 + var_14);
    } while (3 < var_5);
  }
  if (var_19 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_20();
  }
  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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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)) (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: (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: (parenthesized_expression (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (number_literal))))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))) (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: (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: (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;
  byte bVar2;
  int iVar3;
  ushort uVar4;
  uint uVar5;
  undefined4 uVar6;
  byte *pbVar7;
  char cVar8;
  uint uVar9;
  int iVar10;
  ushort *puVar11;
  uint uVar12;
  ushort *puVar13;
  int in_GS_OFFSET;
  int local_c8;
  
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  if ((*(int *)(param_3 + 0x30) != 0) ||
     ((*(char *)(param_3 + 3) == '\0' && (*(int *)(param_3 + 0x20) == 0)))) {
    puts("Non-medium error page  [0x6]");
  }
  puVar11 = (ushort *)(param_1 + 4);
  local_c8 = param_2 + -4;
  if (3 < local_c8) {
    cVar8 = *(char *)(param_3 + 9);
    do {
      uVar12 = (uint)*(byte *)((int)puVar11 + 3);
      iVar1 = uVar12 + 4;
      uVar5 = (uint)(ushort)(*puVar11 << 8 | *puVar11 >> 8);
      if (cVar8 == '\0') {
LAB_0001f85c:
        if (uVar5 == 0) {
          __printf_chk(1,"  Non-medium error count");
        }
        else if (uVar5 < 0x8000) {
          __printf_chk(1,"  Reserved [0x%x]",uVar5);
        }
        else {
          __printf_chk(1,"  Vendor specific [0x%x]",uVar5);
        }
        uVar5 = 0;
        uVar9 = 0;
        if (uVar12 - 1 < 8) {
          uVar5 = (uint)(byte)puVar11[2];
          uVar9 = 0;
          pbVar7 = (byte *)((int)puVar11 + 5);
          if (1 < uVar12) {
            do {
              bVar2 = *pbVar7;
              pbVar7 = pbVar7 + 1;
              uVar9 = uVar9 << 8 | uVar5 >> 0x18;
              uVar5 = (uint)bVar2 | uVar5 << 8;
            } while (pbVar7 != (byte *)((int)puVar11 + uVar12 + 4));
          }
        }
        __printf_chk(1," = %llu",uVar5,uVar9);
        putchar(10);
        if (*(char *)(param_3 + 1) != '\0') {
          uVar6 = FUN_00014e80();
          __printf_chk(1,&DAT_0002d460,uVar6);
        }
        cVar8 = *(char *)(param_3 + 9);
        if (cVar8 != '\0') break;
      }
      else if (*(uint *)(param_3 + 0x34) == uVar5) {
        if (*(char *)(param_3 + 3) != '\0') {
          puVar13 = (ushort *)(iVar1 + (int)puVar11);
          do {
            uVar4 = *puVar11;
            puVar11 = (ushort *)((int)puVar11 + 1);
            putchar((uint)(byte)uVar4);
          } while (puVar13 != puVar11);
          break;
        }
        iVar10 = *(int *)(param_3 + 0x20);
        if (iVar10 == 0) goto LAB_0001f85c;
        if (iVar10 != 1) {
          iVar10 = -1;
        }
        hex2stdout(puVar11,iVar1,iVar10);
        break;
      }
      local_c8 = local_c8 - iVar1;
      puVar11 = (ushort *)((int)puVar11 + iVar1);
    } while (3 < local_c8);
  }
  if (iVar3 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00024b60();
  }
  return 1;
}

